From e52931258f9a7a327c866c1708113c157e7ad4d2 Mon Sep 17 00:00:00 2001 From: samba <samba@autistici.org> Date: Sun, 19 May 2019 22:12:28 +0200 Subject: [PATCH] [auto] plugin: nextgen-gallery 3.2.2 --- .../plugins/nextgen-gallery/changelog.txt | 48 + .../plugins/nextgen-gallery/composer.json | 2 +- .../freemius/assets/css/admin/common.css | 4 +- .../freemius/assets/css/admin/common.min.css | 2 +- .../freemius/assets/css/admin/connect.css | 106 + .../freemius/assets/css/admin/connect.min.css | 2 +- .../assets/css/admin/dialog-boxes.css | 51 +- .../assets/css/admin/dialog-boxes.min.css | 2 +- .../freemius/assets/img/nextgen-gallery.png | Bin 25988 -> 28891 bytes .../freemius/assets/scss/_colors.scss | 11 + .../freemius/assets/scss/admin/_buttons.scss | 28 + .../scss/admin/_plugin-upgrade-notice.scss | 8 + .../admin/_subscription-cancellation.scss | 30 + .../freemius/assets/scss/admin/common.scss | 6 +- .../assets/scss/admin/dialog-boxes.scss | 4 +- .../freemius/includes/class-freemius.php | 1375 ++- .../freemius/includes/class-fs-api.php | 18 +- .../includes/class-fs-plugin-updater.php | 386 +- .../freemius/includes/class-fs-storage.php | 4 +- .../includes/entities/class-fs-plugin.php | 22 + .../includes/entities/class-fs-site.php | 2 + .../freemius/includes/fs-core-functions.php | 206 +- .../includes/fs-essential-functions.php | 6 +- .../includes/fs-plugin-info-dialog.php | 44 +- .../freemius/includes/i18n.php | 6 +- .../managers/class-fs-admin-menu-manager.php | 22 +- .../class-fs-admin-notice-manager.php | 74 + .../fs-essential-functions-1.1.7.1.php | 8 +- .../fs-essential-functions-2.2.1.php | 45 + .../freemius/languages/freemius-da_DK.mo | Bin 243 -> 51989 bytes .../freemius/languages/freemius-da_DK.po | 2440 ++++- .../freemius/languages/freemius-en.mo | Bin 48279 -> 51498 bytes .../freemius/languages/freemius-en.po | 973 +- .../freemius/languages/freemius-es_ES.mo | Bin 51453 -> 54784 bytes .../freemius/languages/freemius-es_ES.po | 1106 ++- .../freemius/languages/freemius-fr_FR.mo | Bin 52553 -> 56037 bytes .../freemius/languages/freemius-fr_FR.po | 1102 ++- .../freemius/languages/freemius-he_IL.mo | Bin 51365 -> 54579 bytes .../freemius/languages/freemius-he_IL.po | 1098 ++- .../freemius/languages/freemius-hu_HU.mo | Bin 0 -> 52634 bytes .../freemius/languages/freemius-hu_HU.po | 2433 +++++ .../freemius/languages/freemius-it_IT.mo | Bin 50788 -> 53871 bytes .../freemius/languages/freemius-it_IT.po | 1101 ++- .../freemius/languages/freemius-ja_JP.mo | Bin 57224 -> 60016 bytes .../freemius/languages/freemius-ja_JP.po | 1104 ++- .../freemius/languages/freemius-nl_NL.mo | Bin 50763 -> 54133 bytes .../freemius/languages/freemius-nl_NL.po | 1151 +-- .../freemius/languages/freemius-ru_RU.mo | Bin 65758 -> 68404 bytes .../freemius/languages/freemius-ru_RU.po | 1101 ++- .../freemius/languages/freemius.pot | 943 +- .../nextgen-gallery/freemius/start.php | 29 +- .../freemius/templates/account.php | 115 +- .../templates/account/partials/addon.php | 693 +- .../templates/account/partials/site.php | 15 +- .../freemius/templates/add-ons.php | 2 +- .../freemius/templates/admin-notice.php | 30 +- .../freemius/templates/checkout.php | 4 +- .../freemius/templates/connect.php | 12 +- .../freemius/templates/contact.php | 6 +- .../freemius/templates/debug.php | 6 +- .../templates/forms/deactivation/form.php | 129 +- .../premium-versions-upgrade-handler.php | 32 +- .../premium-versions-upgrade-metadata.php | 18 +- .../forms/subscription-cancellation.php | 277 + .../freemius/templates/pricing.php | 4 +- .../freemius/templates/tabs.php | 4 + .../plugins/nextgen-gallery/nggallery.php | 135 +- .../non_pope/class.photocrati_installer.php | 42 +- .../pope/lib/class.component_registry.php | 2 +- .../class.nextgen_product_installer.php | 14 + .../modules/ajax/module.ajax.php | 2 +- .../modules/ajax/package.module.ajax.php | 17 +- .../attach_to_post/module.attach_to_post.php | 14 +- .../package.module.attach_to_post.php | 27 +- .../attach_to_post/static/attach_to_post.css | 161 +- .../static/attach_to_post.min.css | 2 +- .../static/attach_to_post_dialog.css | 51 +- .../static/attach_to_post_dialog.min.css | 2 +- .../attach_to_post/static/display_tab.js | 23 +- .../attach_to_post/static/display_tab.min.js | 2 +- .../attach_to_post/static/iframely.css | 51 +- .../attach_to_post/static/iframely.min.css | 2 +- .../attach_to_post/static/igw_button.png | Bin 45524 -> 28891 bytes .../attach_to_post/templates/display_tab.php | 2 +- .../modules/datamapper/module.datamapper.php | 2 +- .../datamapper/package.module.datamapper.php | 10 + .../module.dynamic_thumbnails.php | 11 +- .../package.module.dynamic_thumbnails.php | 456 +- .../modules/fs/module.fs.php | 2 +- .../modules/fs/package.module.fs.php | 93 +- .../modules/i18n/lang/nggallery-da_DK.po | 4 +- .../modules/i18n/lang/nggallery-sv_SE.po | 8 +- .../modules/i18n/lang/nggallery.po | 4 +- .../modules/i18n/module.i18n.php | 9 +- .../imagify/lib/class-imagify-partner.php | 2 +- .../modules/imagify/module.imagify.php | 2 +- .../modules/lightbox/module.lightbox.php | 2 +- .../nextgen_simple_lightbox_init.js | 26 +- .../nextgen_simple_lightbox_init.min.js | 2 +- .../modules/mvc/module.mvc.php | 4 +- .../modules/mvc/package.module.mvc.php | 136 +- .../module.nextgen_addgallery_page.php | 2 +- ...package.module.nextgen_addgallery_page.php | 54 +- .../static/media-library-import.js | 5 +- .../static/media-library-import.min.js | 2 +- .../nextgen_addgallery_page/static/styles.css | 34 +- .../static/styles.min.css | 2 +- .../templates/import_folder.php | 17 +- .../templates/import_media_library.php | 1 - .../templates/upload_images.php | 4 +- .../nextgen_admin/module.nextgen_admin.php | 981 +- .../package.module.nextgen_admin.php | 117 +- .../nextgen_admin/static/dropdown_arrow.png | Bin 0 -> 5367 bytes .../nextgen_admin/static/imagely_icon.png | Bin 25988 -> 28891 bytes .../static/nextgen_admin_page.css | 370 +- .../static/nextgen_admin_page.js | 2 +- .../static/nextgen_admin_page.min.css | 2 +- .../static/nextgen_admin_page.min.js | 2 +- .../nextgen_admin/static/nextgen_wizards.css | 6 +- .../nextgen_admin/static/nextgen_wizards.js | 30 +- .../static/nextgen_wizards.min.css | 2 +- .../static/nextgen_wizards.min.js | 2 +- .../nextgen_admin/static/tourist/tourist.css | 6 +- .../static/tourist/tourist.min.css | 2 +- .../templates/nextgen_admin_page.php | 3 + .../module.nextgen_basic_album.php | 2 +- .../module.nextgen_basic_gallery.php | 2 +- .../templates/thumbnails/default-view.php | 5 +- .../templates/thumbnails/index.php | 3 +- .../module.nextgen_basic_imagebrowser.php | 2 +- .../module.nextgen_basic_singlepic.php | 2 +- .../module.nextgen_basic_tagcloud.php | 2 +- .../nextgen_block/module.nextgen_block.php | 2 +- .../nextgen_block/static/build/block.min.js | 2 +- .../static/build/block.min.js.map | 2 +- .../static/build/post-thumbnail.min.js | 2 +- .../static/build/post-thumbnail.min.js.map | 2 +- .../modules/nextgen_block/static/editor.css | 66 +- .../nextgen_block/static/editor.min.css | 2 +- .../nextgen_block/static/src/block.min.js | 3 +- .../nextgen_block/static/src/icons.min.js | 15 +- .../static/src/post-thumbnail.min.js | 3 +- .../nextgen_data/module.nextgen_data.php | 23 +- .../package.module.nextgen_data.php | 8053 +++++++++-------- .../pel-0.9.6/class.exif_writer.php | 31 +- .../module.nextgen_gallery_display.php | 44 +- .../nextgen_gallery_display_settings.css | 6 + .../nextgen_gallery_display_settings.min.css | 2 +- .../module.nextgen_other_options.php | 2 +- .../package.module.nextgen_other_options.php | 49 +- .../templates/lightbox_library_tab.php | 2 +- .../module.nextgen_pro_upgrade.php | 2 +- .../package.module.nextgen_pro_upgrade.php | 2 +- .../nextgen_pro_upgrade/static/style.css | 16 +- .../nextgen_pro_upgrade/static/style.min.css | 2 +- .../nextgen_pro_upgrade/templates/plus.php | 2 +- .../nextgen_pro_upgrade/templates/pro.php | 2 +- .../module.nextgen_settings.php | 9 +- .../nextgen_xmlrpc/module.nextgen_xmlrpc.php | 2 +- .../package.module.nextgen_xmlrpc.php | 17 +- .../modules/ngglegacy/admin/admin.php | 2 +- .../modules/ngglegacy/admin/album.php | 4 +- .../modules/ngglegacy/admin/css/nggadmin.css | 198 +- .../ngglegacy/admin/css/nggadmin.min.css | 2 +- .../ngglegacy/admin/css/tags-admin.css | 14 +- .../ngglegacy/admin/css/tags-admin.min.css | 2 +- .../ngglegacy/admin/edit-thumbnail.php | 4 +- .../modules/ngglegacy/admin/functions.php | 2 +- .../ngglegacy/admin/images/imagely_icon.png | Bin 25101 -> 21802 bytes .../modules/ngglegacy/admin/install.php | 31 +- .../modules/ngglegacy/admin/manage-images.php | 46 +- .../modules/ngglegacy/admin/manage.php | 24 +- .../modules/ngglegacy/admin/overview.php | 10 +- .../modules/ngglegacy/admin/rotate.php | 25 +- .../modules/ngglegacy/module.ngglegacy.php | 20 +- .../modules/ngglegacy/static/overview.css | 28 +- .../modules/ngglegacy/static/overview.min.css | 2 +- .../modules/router/module.router.php | 2 +- .../modules/router/package.module.router.php | 8 +- .../modules/security/module.security.php | 100 +- .../static_assets/module.static_assets.php | 118 + .../package.module.static_assets.php | 1 + .../module.third_party_compat.php | 8 +- .../module.wordpress_routing.php | 2 +- .../package.module.wordpress_routing.php | 51 +- .../product.photocrati_nextgen.php | 15 +- wp-content/plugins/nextgen-gallery/readme.txt | 84 +- 187 files changed, 19513 insertions(+), 11091 deletions(-) create mode 100644 wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/_buttons.scss create mode 100644 wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/_plugin-upgrade-notice.scss create mode 100644 wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/_subscription-cancellation.scss create mode 100644 wp-content/plugins/nextgen-gallery/freemius/includes/supplements/fs-essential-functions-2.2.1.php create mode 100644 wp-content/plugins/nextgen-gallery/freemius/languages/freemius-hu_HU.mo create mode 100644 wp-content/plugins/nextgen-gallery/freemius/languages/freemius-hu_HU.po create mode 100644 wp-content/plugins/nextgen-gallery/freemius/templates/forms/subscription-cancellation.php create mode 100644 wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/dropdown_arrow.png create mode 100644 wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/static_assets/module.static_assets.php create mode 100644 wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/static_assets/package.module.static_assets.php diff --git a/wp-content/plugins/nextgen-gallery/changelog.txt b/wp-content/plugins/nextgen-gallery/changelog.txt index 49caccf77..d5546a880 100644 --- a/wp-content/plugins/nextgen-gallery/changelog.txt +++ b/wp-content/plugins/nextgen-gallery/changelog.txt @@ -1,6 +1,54 @@ NextGEN Gallery by Imagely += V3.2.2 - 05.09.2019 = +* Changed: Updated video Links +* Changed: Branding updates in Readme.txt file + += V3.2.1 - 05.08.2019 = +* Fixed: Missing settings after Reset with NextGEN Plus +* Fixed: Small styling issues with WordPress 5.2 + += V3.2.0 - 05.07.2019 = +* NEW: Branding update +* NEW: API methods for detecting NextGEN provided pages and custom post types +* Fixed: Missing menus after Reset +* Fixed: Ajax pagination with Simplelightbox +* Fixed: Datamapper query cache not purged after saving an entity +* Fixed: Gallery folder not created when using Manage Galleries -> New Gallery +* Fixed: Notifications not appearing on all Nextgen-provided pages +* Fixed: Gallery wizard conflicting with NextGEN Pro ecommerce wizard +* Fixed: Upgrade to pro button +* Fixed: NGG activation transient not given a time-to-live value + += V3.1.17 - 04.02.2019 = +* Fixed: Preview images for display types giving get_static_abspath error +* Fixed: Compatibility with the Imagely Lightroom plugin + += V3.1.14 - 03.26.2019 = +* Changed: Restored original behavior of ngg_after_new_images_added hook +* Changed: Images with EXIF rotation metadata are now rotated automatically at upload +* Changed: Moved confirmation message presented after editing a thumbnail +* Fixed: Ability to import zips of images +* Fixed: Gallery folder not created on filesystem after adding new gallery +* Fixed: IGW not working with Gutenberg / Block Editor +* Fixed: Compatibility with EWWW Image Optimizer +* Fixed: Compatibility with Elementor +* Fixed: Compatibility with Imagify +* Fixed: NextGen 3.1.11 passed an incorrect path to load_plugin_textdomain() +* Fixed: Simplelightbox initialization was opening more than once for certain images + += V3.1.11 - 03.20.2019 = +* NEW: Many performance enhancements +* Fixed: Broken Overview page on WordPress 5.1 +* Fixed: Problem with notices not being dismissible +* Fixed: Recover images from backup generating errors +* Fixed: Manage Tags the only menu option after activating +* Fixed: Compatibility with environments which don't have mime_content_type function + += V3.1.7 - 02.26.2019 = +* Changed: Upgraded Freemius SDK to latest release + = V3.1.6 - 01.16.2019 = * NEW: Option to control caching duration of random widget galleries * Secured: DB record serialization diff --git a/wp-content/plugins/nextgen-gallery/composer.json b/wp-content/plugins/nextgen-gallery/composer.json index 92300aaa4..2b65118e8 100644 --- a/wp-content/plugins/nextgen-gallery/composer.json +++ b/wp-content/plugins/nextgen-gallery/composer.json @@ -1,6 +1,6 @@ { "name": "imagely/nextgen-gallery", - "description": "The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 24 million downloads.", + "description": "The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 25 million downloads.", "keywords": ["nextgen", "nextgen gallery", "gallery", "galleries", "image", "images", "image gallery", "photo", "photos", "photo gallery", "picture", "pictures", "picture gallery", "album", "albums", "photo albums", "image album", "media", "media gallery", "thumbnails", "thumbnail gallery", "thumbnail galleries", "slideshow", "slideshows", "slideshow gallery", "slideshow galleries", "fancybox", "lightbox", "responsive", "responsive gallery", "responsive galleries", "singlepic", "watermarks", "watermarking", "photography", "photographer"], "homepage": "https://www.imagely.com/", "license": "GPLv2", diff --git a/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/common.css b/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/common.css index 99384d124..555b55d5b 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/common.css +++ b/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/common.css @@ -1,2 +1,2 @@ -.theme-browser .theme .fs-premium-theme-badge{position:absolute;top:10px;right:0;background:#71ae00;color:#fff;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);font-size:1.1em}#iframe{line-height:0;font-size:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media (max-width: 600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}} -.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px !important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2 !important;background-color:#f2fcff !important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,0.3);color:#fff;padding:2px 10px;position:absolute;top:100%;bottom:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:bold;cursor:auto}div.fs-notice.updated,div.fs-notice.success,div.fs-notice.promotion{display:block !important}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;-moz-box-shadow:0 2px 2px rgba(6,113,6,0.3);-webkit-box-shadow:0 2px 2px rgba(6,113,6,0.3);box-shadow:0 2px 2px rgba(6,113,6,0.3);opacity:0.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 600px){.fs-secure-notice{display:none}}@media screen and (max-width: 500px){#fs_promo_tab{display:none}}@media screen and (max-width: 782px){.fs-secure-notice{left:0;top:46px;text-align:center}}span.fs-submenu-item.fs-sub:before{content:'\21B3';padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:'\21B2'}.fs-submenu-item.pricing.upgrade-mode{color:greenyellow}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{border:0;width:20px;height:20px;margin-right:5px;vertical-align:sub;display:inline-block;background:url("/wp-admin/images/wpspin_light-2x.gif");background-size:contain}.wrap.fs-section h2{text-align:left} +.theme-browser .theme .fs-premium-theme-badge{position:absolute;top:10px;right:0;background:#71ae00;color:#fff;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:bold;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);box-shadow:0 2px 1px -1px rgba(0,0,0,0.3);font-size:1.1em}#fs_frame{line-height:0;font-size:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media (max-width: 600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}} +.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px !important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2 !important;background-color:#f2fcff !important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,0.3);color:#fff;padding:2px 10px;position:absolute;top:100%;bottom:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:bold;cursor:auto}div.fs-notice.updated,div.fs-notice.success,div.fs-notice.promotion{display:block !important}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;-moz-box-shadow:0 2px 2px rgba(6,113,6,0.3);-webkit-box-shadow:0 2px 2px rgba(6,113,6,0.3);box-shadow:0 2px 2px rgba(6,113,6,0.3);opacity:0.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width: 960px){.fs-secure-notice{left:36px}}@media screen and (max-width: 600px){.fs-secure-notice{display:none}}@media screen and (max-width: 500px){#fs_promo_tab{display:none}}@media screen and (max-width: 782px){.fs-secure-notice{left:0;top:46px;text-align:center}}span.fs-submenu-item.fs-sub:before{content:'\21B3';padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:'\21B2'}.fs-submenu-item.pricing.upgrade-mode{color:greenyellow}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{border:0;width:20px;height:20px;margin-right:5px;vertical-align:sub;display:inline-block;background:url("/wp-admin/images/wpspin_light-2x.gif");background-size:contain}.wrap.fs-section h2{text-align:left}.plugins p.fs-upgrade-notice{border:0;background-color:#d54e21;padding:10px;color:#f9f9f9;margin-top:10px} diff --git a/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/common.min.css b/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/common.min.css index 733e9f259..c81181298 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/common.min.css +++ b/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/common.min.css @@ -1 +1 @@ -.theme-browser .theme .fs-premium-theme-badge{position:absolute;top:10px;right:0;background:#71ae00;color:#fff;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:700;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.3);box-shadow:0 2px 1px -1px rgba(0,0,0,.3);font-size:1.1em}#iframe{line-height:0;font-size:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media (max-width:600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px!important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2!important;background-color:#f2fcff!important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,.3);color:#fff;padding:2px 10px;position:absolute;top:100%;bottom:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:700;cursor:auto}div.fs-notice.promotion,div.fs-notice.success,div.fs-notice.updated{display:block!important}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;-moz-box-shadow:0 2px 2px rgba(6,113,6,.3);-webkit-box-shadow:0 2px 2px rgba(6,113,6,.3);box-shadow:0 2px 2px rgba(6,113,6,.3);opacity:.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width:960px){.fs-secure-notice{left:36px}}@media screen and (max-width:600px){.fs-secure-notice{display:none}}@media screen and (max-width:500px){#fs_promo_tab{display:none}}@media screen and (max-width:782px){.fs-secure-notice{left:0;top:46px;text-align:center}}span.fs-submenu-item.fs-sub:before{content:'\21B3';padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:'\21B2'}.fs-submenu-item.pricing.upgrade-mode{color:#adff2f}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{border:0;width:20px;height:20px;margin-right:5px;vertical-align:sub;display:inline-block;background:url(/wp-admin/images/wpspin_light-2x.gif);background-size:contain}.wrap.fs-section h2{text-align:left} \ No newline at end of file +.theme-browser .theme .fs-premium-theme-badge{position:absolute;top:10px;right:0;background:#71ae00;color:#fff;text-transform:uppercase;padding:5px 10px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;font-weight:700;border-right:0;-moz-box-shadow:0 2px 1px -1px rgba(0,0,0,.3);-webkit-box-shadow:0 2px 1px -1px rgba(0,0,0,.3);box-shadow:0 2px 1px -1px rgba(0,0,0,.3);font-size:1.1em}#fs_frame{line-height:0;font-size:0}.fs-full-size-wrapper{margin:40px 0 -65px -20px}@media (max-width:600px){.fs-full-size-wrapper{margin:0 0 -65px -10px}}.fs-notice{position:relative}.fs-notice.fs-has-title{margin-bottom:30px!important}.fs-notice.success{color:green}.fs-notice.promotion{border-color:#00a0d2!important;background-color:#f2fcff!important}.fs-notice .fs-notice-body{margin:.5em 0;padding:2px}.fs-notice .fs-close{cursor:pointer;color:#aaa;float:right}.fs-notice .fs-close:hover{color:#666}.fs-notice .fs-close>*{margin-top:7px;display:inline-block}.fs-notice label.fs-plugin-title{background:rgba(0,0,0,.3);color:#fff;padding:2px 10px;position:absolute;top:100%;bottom:auto;right:auto;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;left:10px;font-size:12px;font-weight:700;cursor:auto}div.fs-notice.promotion,div.fs-notice.success,div.fs-notice.updated{display:block!important}.rtl .fs-notice .fs-close{float:left}.fs-secure-notice{position:fixed;top:32px;left:160px;right:0;background:#ebfdeb;padding:10px 20px;color:green;z-index:9999;-moz-box-shadow:0 2px 2px rgba(6,113,6,.3);-webkit-box-shadow:0 2px 2px rgba(6,113,6,.3);box-shadow:0 2px 2px rgba(6,113,6,.3);opacity:.95;filter:alpha(opacity=95)}.fs-secure-notice:hover{opacity:1;filter:alpha(opacity=100)}.fs-secure-notice a.fs-security-proof{color:green;text-decoration:none}@media screen and (max-width:960px){.fs-secure-notice{left:36px}}@media screen and (max-width:600px){.fs-secure-notice{display:none}}@media screen and (max-width:500px){#fs_promo_tab{display:none}}@media screen and (max-width:782px){.fs-secure-notice{left:0;top:46px;text-align:center}}span.fs-submenu-item.fs-sub:before{content:'\21B3';padding:0 5px}.rtl span.fs-submenu-item.fs-sub:before{content:'\21B2'}.fs-submenu-item.pricing.upgrade-mode{color:#adff2f}.fs-submenu-item.pricing.trial-mode{color:#83e2ff}#adminmenu .update-plugins.fs-trial{background-color:#00b9eb}.fs-ajax-spinner{border:0;width:20px;height:20px;margin-right:5px;vertical-align:sub;display:inline-block;background:url(/wp-admin/images/wpspin_light-2x.gif);background-size:contain}.wrap.fs-section h2{text-align:left}.plugins p.fs-upgrade-notice{border:0;background-color:#d54e21;padding:10px;color:#f9f9f9;margin-top:10px} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/connect.css b/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/connect.css index ec5fea509..aee10d535 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/connect.css +++ b/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/connect.css @@ -1 +1,107 @@ #fs_connect{width:480px;-moz-box-shadow:0px 1px 2px rgba(0,0,0,0.3);-webkit-box-shadow:0px 1px 2px rgba(0,0,0,0.3);box-shadow:0px 1px 2px rgba(0,0,0,0.3);margin:20px 0}@media screen and (max-width: 479px){#fs_connect{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;width:auto;margin:0 0 0 -10px}}#fs_connect .fs-content{background:#fff;padding:15px 20px}#fs_connect .fs-content .fs-error{background:snow;color:#d3135a;border:1px solid #d3135a;-moz-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);box-shadow:0 1px 1px 0 rgba(0,0,0,0.1);text-align:center;padding:5px;margin-bottom:10px}#fs_connect .fs-content p{margin:0;padding:0;font-size:1.2em}#fs_connect .fs-license-key-container{position:relative;width:280px;margin:10px auto 0 auto}#fs_connect .fs-license-key-container input{width:100%}#fs_connect .fs-license-key-container .dashicons{position:absolute;top:5px;right:5px}#fs_connect.require-license-key #sites_list_container td{cursor:pointer}#fs_connect #delegate_to_site_admins{margin-right:15px;float:right;height:26px;vertical-align:middle;line-height:37px;font-weight:bold;border-bottom:1px dashed;text-decoration:none}#fs_connect #delegate_to_site_admins.rtl{margin-left:15px;margin-right:0}#fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}#fs_connect .fs-actions .button{padding:0 10px 1px;line-height:35px;height:37px;font-size:16px;margin-bottom:0}#fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}#fs_connect .fs-actions .button.button-primary{padding-right:15px;padding-left:15px}#fs_connect .fs-actions .button.button-primary:after{content:' \279C'}#fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}#fs_connect .fs-actions .button.button-secondary{float:right}#fs_connect.fs-anonymous-disabled .fs-actions .button.button-primary{width:100%}#fs_connect .fs-permissions{padding:10px 20px;background:#FEFEFE;-moz-transition:background 0.5s ease;-o-transition:background 0.5s ease;-ms-transition:background 0.5s ease;-webkit-transition:background 0.5s ease;transition:background 0.5s ease}#fs_connect .fs-permissions .fs-license-sync-disclaimer{text-align:center;margin-top:0}#fs_connect .fs-permissions .fs-trigger{font-size:0.9em;text-decoration:none;text-align:center;display:block}#fs_connect .fs-permissions ul{height:0;overflow:hidden;margin:0}#fs_connect .fs-permissions ul li{margin-bottom:12px}#fs_connect .fs-permissions ul li:last-child{margin-bottom:0}#fs_connect .fs-permissions ul li i.dashicons{float:left;font-size:40px;width:40px;height:40px}#fs_connect .fs-permissions ul li div{margin-left:55px}#fs_connect .fs-permissions ul li div span{font-weight:bold;text-transform:uppercase;color:#23282d}#fs_connect .fs-permissions ul li div p{margin:2px 0 0 0}#fs_connect .fs-permissions.fs-open{background:#fff}#fs_connect .fs-permissions.fs-open ul{height:auto;margin:20px 20px 10px 20px}@media screen and (max-width: 479px){#fs_connect .fs-permissions{background:#fff}#fs_connect .fs-permissions .fs-trigger{display:none}#fs_connect .fs-permissions ul{height:auto;margin:20px}}#fs_connect .fs-freemium-licensing{padding:8px;background:#777;color:#fff}#fs_connect .fs-freemium-licensing p{text-align:center;display:block;margin:0;padding:0}#fs_connect .fs-freemium-licensing a{color:#C2EEFF;text-decoration:underline}#fs_connect .fs-visual{padding:12px;line-height:0;background:#fafafa;height:80px;position:relative}#fs_connect .fs-visual .fs-site-icon{position:absolute;left:20px;top:10px}#fs_connect .fs-visual .fs-connect-logo{position:absolute;right:20px;top:10px}#fs_connect .fs-visual .fs-plugin-icon{position:absolute;top:10px;left:50%;margin-left:-40px}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-site-icon,#fs_connect .fs-visual img,#fs_connect .fs-visual object{width:80px;height:80px}#fs_connect .fs-visual .dashicons-wordpress{font-size:64px;background:#01749a;color:#fff;width:64px;height:64px;padding:8px}#fs_connect .fs-visual .dashicons-plus{position:absolute;top:50%;font-size:30px;margin-top:-10px;color:#bbb}#fs_connect .fs-visual .dashicons-plus.fs-first{left:28%}#fs_connect .fs-visual .dashicons-plus.fs-second{left:65%}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-connect-logo,#fs_connect .fs-visual .fs-site-icon{border:1px solid #ccc;padding:1px;background:#fff}#fs_connect .fs-terms{text-align:center;font-size:0.85em;padding:5px;background:rgba(0,0,0,0.05)}#fs_connect .fs-terms,#fs_connect .fs-terms a{color:#999}#fs_connect .fs-terms a{text-decoration:none}#multisite_options_container{margin-top:10px;border:1px solid #ccc;padding:5px}#multisite_options_container a{text-decoration:none}#multisite_options_container a:focus{box-shadow:none}#multisite_options_container a.selected{font-weight:bold}#multisite_options_container.apply-on-all-sites{border:0 none;padding:0}#multisite_options_container.apply-on-all-sites #all_sites_options{border-spacing:0}#multisite_options_container.apply-on-all-sites #all_sites_options td:not(:first-child){display:none}#multisite_options_container #sites_list_container{display:none;overflow:auto}#multisite_options_container #sites_list_container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-tooltip-trigger{position:relative}.fs-tooltip-trigger:not(a){cursor:help}.fs-tooltip-trigger .fs-tooltip{opacity:0;visibility:hidden;-moz-transition:opacity 0.3s ease-in-out;-o-transition:opacity 0.3s ease-in-out;-ms-transition:opacity 0.3s ease-in-out;-webkit-transition:opacity 0.3s ease-in-out;transition:opacity 0.3s ease-in-out;position:absolute;background:rgba(0,0,0,0.8);color:#fff;font-family:'arial', serif;font-size:12px;padding:10px;z-index:999999;bottom:100%;margin-bottom:5px;left:0;right:0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,0.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,0.2);box-shadow:1px 1px 1px rgba(0,0,0,0.2);line-height:1.3em;font-weight:bold;text-align:left}.rtl .fs-tooltip-trigger .fs-tooltip{text-align:right}.fs-tooltip-trigger .fs-tooltip::after{content:' ';display:block;width:0;height:0;border-style:solid;border-width:5px 5px 0 5px;border-color:rgba(0,0,0,0.8) transparent transparent transparent;position:absolute;top:100%;left:21px}.rtl .fs-tooltip-trigger .fs-tooltip::after{right:21px;left:auto}.fs-tooltip-trigger:hover .fs-tooltip{visibility:visible;opacity:1}#fs_marketing_optin{display:none;margin-top:10px;border:1px solid #ccc;padding:10px;line-height:1.5em}#fs_marketing_optin .fs-message{display:block;margin-bottom:5px;font-size:1.05em;font-weight:600}#fs_marketing_optin.error{border:1px solid #d3135a;background:#fee}#fs_marketing_optin.error .fs-message{color:#d3135a}#fs_marketing_optin .fs-input-container{margin-top:5px}#fs_marketing_optin .fs-input-container label{margin-top:5px;display:block}#fs_marketing_optin .fs-input-container label input{float:left;margin:1px 0 0 0}#fs_marketing_optin .fs-input-container label:first-child{display:block;margin-bottom:2px}#fs_marketing_optin .fs-input-label{display:block;margin-left:20px}#fs_marketing_optin .fs-input-label .underlined{text-decoration:underline}.rtl #fs_marketing_optin .fs-input-container label input{float:right}.rtl #fs_marketing_optin .fs-input-label{margin-left:0;margin-right:20px}.rtl #fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}.rtl #fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}.rtl #fs_connect .fs-actions .button.button-primary:after{content:' \000bb'}.rtl #fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}.rtl #fs_connect .fs-actions .button.button-secondary{float:left}.rtl #fs_connect .fs-permissions ul li div{margin-right:55px;margin-left:0}.rtl #fs_connect .fs-permissions ul li i.dashicons{float:right}.rtl #fs_connect .fs-visual .fs-site-icon{right:20px;left:auto}.rtl #fs_connect .fs-visual .fs-connect-logo{right:auto;left:20px}#fs_theme_connect_wrapper{position:fixed;top:0;height:100%;width:100%;z-index:99990;background:rgba(0,0,0,0.75);text-align:center;overflow-y:auto}#fs_theme_connect_wrapper:before{content:"";display:inline-block;vertical-align:middle;height:100%}#fs_theme_connect_wrapper>button.close{color:white;cursor:pointer;height:40px;width:40px;position:absolute;right:0;border:0;background-color:transparent;top:32px}#fs_theme_connect_wrapper #fs_connect{top:0;text-align:left;display:inline-block;vertical-align:middle;margin-top:52px;margin-bottom:20px}#fs_theme_connect_wrapper #fs_connect .fs-terms{background:rgba(140,140,140,0.64)}#fs_theme_connect_wrapper #fs_connect .fs-terms,#fs_theme_connect_wrapper #fs_connect .fs-terms a{color:#c5c5c5}.wp-pointer-content #fs_connect{margin:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.fs-opt-in-pointer .wp-pointer-content{padding:0}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow{border-bottom-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow-inner{border-bottom-color:#fafafa}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow{border-top-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow-inner{border-top-color:#fafafa}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow{border-right-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow-inner{border-right-color:#fafafa}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow{border-left-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow-inner{border-left-color:#fafafa} + +/* Customizations for Imagely opt in form */ + +#fs_connect { + box-shadow: none; + border: 1px solid #e0e0e0; + margin-left: 10px; +} + +#fs_connect .fs-content p { + font-size: 17px; + font-family: Lato, sans-serif; + font-weight: 300; +} + +#fs_connect a { + color: #9fbb1a; +} + +#fs_connect a:hover { + color: #b8d433; +} + +#fs_connect .fs-visual { + padding: 30px 20px !important; + background: #fff; +} + +#fs_connect .fs-visual .fs-plugin-icon, +#fs_connect .fs-visual .fs-connect-logo, +#fs_connect .fs-visual .fs-site-icon { + border: none; + padding: 0; + top: 30px; +} + +#fs_connect .fs-content { + padding: 30px 20px; +} + +#fs_connect .fs-actions, +#fs_connect .fs-permissions, +#fs_connect .fs-permissions.fs-open, +#fs_connect .fs-terms { + background: black; + color: #fff; + padding: 0 !important; +} + +#fs_connect .fs-actions { + padding: 30px 20px !important; +} + +#fs_connect .fs-permissions ul li i.dashicons { + color: #9fbb1a; +} + +#fs_connect .fs-permissions.fs-open ul { + margin-bottom: 0; + padding-bottom: 20px; +} + +#fs_connect .fs-permissions ul li div span { + color: #fff; +} + +#fs_connect .fs-terms { + padding-bottom: 15px !important; +} + +#fs_connect .fs-actions .button.button-primary { + background-color: #9fbb1a !important; + color: #fff !important; + border: none !important; + box-shadow: none !important; + text-shadow: none !important; + height: 35px !important; + padding: 0 24px !important; + line-height: 35px; + width: auto !important; + border-radius: 0; + text-transform: uppercase; + font-size: 12px; + letter-spacing: .5px; + font-family: Lato, sans-serif; +} + +#fs_connect .fs-actions .button.button-secondary { + border: none !important; + box-shadow: none !important; + text-shadow: none !important; + height: 35px !important; + padding: 0 24px !important; + line-height: 35px; + width: auto !important; + border-radius: 0; + text-transform: uppercase; + font-size: 12px; + letter-spacing: .5px; + font-family: Lato, sans-serif; +} + +#fs_connect .fs-permissions a:hover, +#fs_connect .fs-terms a:hover { + color: #fff; +} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/connect.min.css b/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/connect.min.css index e73df72e9..c30f3656e 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/connect.min.css +++ b/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/connect.min.css @@ -1 +1 @@ -#fs_connect{width:480px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3);margin:20px 0}@media screen and (max-width:479px){#fs_connect{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;width:auto;margin:0 0 0 -10px}}#fs_connect .fs-content{background:#fff;padding:15px 20px}#fs_connect .fs-content .fs-error{background:snow;color:#d3135a;border:1px solid #d3135a;-moz-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);text-align:center;padding:5px;margin-bottom:10px}#fs_connect .fs-content p{margin:0;padding:0;font-size:1.2em}#fs_connect .fs-license-key-container{position:relative;width:280px;margin:10px auto 0}#fs_connect .fs-license-key-container input,#fs_connect.fs-anonymous-disabled .fs-actions .button.button-primary{width:100%}#fs_connect .fs-license-key-container .dashicons{position:absolute;top:5px;right:5px}#fs_connect.require-license-key #sites_list_container td{cursor:pointer}#fs_connect #delegate_to_site_admins{margin-right:15px;float:right;height:26px;vertical-align:middle;line-height:37px;font-weight:700;border-bottom:1px dashed;text-decoration:none}#fs_connect #delegate_to_site_admins.rtl{margin-left:15px;margin-right:0}#fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}#fs_connect .fs-actions .button{padding:0 10px 1px;line-height:35px;height:37px;font-size:16px;margin-bottom:0}#fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}#fs_connect .fs-actions .button.button-primary{padding-right:15px;padding-left:15px}#fs_connect .fs-actions .button.button-primary:after{content:' \279C'}#fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}#fs_connect .fs-actions .button.button-secondary{float:right}#fs_connect .fs-permissions{padding:10px 20px;background:#FEFEFE;-moz-transition:background .5s ease;-o-transition:background .5s ease;-ms-transition:background .5s ease;-webkit-transition:background .5s ease;transition:background .5s ease}#fs_connect .fs-permissions .fs-license-sync-disclaimer{text-align:center;margin-top:0}#fs_connect .fs-permissions .fs-trigger{font-size:.9em;text-decoration:none;text-align:center;display:block}#fs_connect .fs-permissions ul{height:0;overflow:hidden;margin:0}#fs_connect .fs-permissions ul li{margin-bottom:12px}#fs_connect .fs-permissions ul li:last-child{margin-bottom:0}#fs_connect .fs-permissions ul li i.dashicons{float:left;font-size:40px;width:40px;height:40px}#fs_connect .fs-permissions ul li div{margin-left:55px}#fs_connect .fs-permissions ul li div span{font-weight:700;text-transform:uppercase;color:#23282d}#fs_connect .fs-permissions ul li div p{margin:2px 0 0}#fs_connect .fs-permissions.fs-open{background:#fff}#fs_connect .fs-permissions.fs-open ul{height:auto;margin:20px 20px 10px}@media screen and (max-width:479px){#fs_connect .fs-permissions{background:#fff}#fs_connect .fs-permissions .fs-trigger{display:none}#fs_connect .fs-permissions ul{height:auto;margin:20px}}#fs_connect .fs-freemium-licensing{padding:8px;background:#777;color:#fff}#fs_connect .fs-freemium-licensing p{text-align:center;display:block;margin:0;padding:0}#fs_connect .fs-freemium-licensing a{color:#C2EEFF;text-decoration:underline}#fs_connect .fs-terms a,#multisite_options_container a{text-decoration:none}#fs_connect .fs-visual{padding:12px;line-height:0;background:#fafafa;height:80px;position:relative}#fs_connect .fs-visual .fs-site-icon{position:absolute;left:20px;top:10px}#fs_connect .fs-visual .fs-connect-logo{position:absolute;right:20px;top:10px}#fs_connect .fs-visual .fs-plugin-icon{position:absolute;top:10px;left:50%;margin-left:-40px}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-site-icon,#fs_connect .fs-visual img,#fs_connect .fs-visual object{width:80px;height:80px}#fs_connect .fs-visual .dashicons-wordpress{font-size:64px;background:#01749a;color:#fff;width:64px;height:64px;padding:8px}#fs_connect .fs-visual .dashicons-plus{position:absolute;top:50%;font-size:30px;margin-top:-10px;color:#bbb}#fs_connect .fs-visual .dashicons-plus.fs-first{left:28%}#fs_connect .fs-visual .dashicons-plus.fs-second{left:65%}#fs_connect .fs-visual .fs-connect-logo,#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-site-icon{border:1px solid #ccc;padding:1px;background:#fff}#fs_connect .fs-terms{text-align:center;font-size:.85em;padding:5px;background:rgba(0,0,0,.05)}#fs_connect .fs-terms,#fs_connect .fs-terms a{color:#999}#multisite_options_container{margin-top:10px;border:1px solid #ccc;padding:5px}#multisite_options_container a:focus{box-shadow:none}#multisite_options_container a.selected{font-weight:700}#multisite_options_container.apply-on-all-sites{border:0;padding:0}#multisite_options_container.apply-on-all-sites #all_sites_options{border-spacing:0}#multisite_options_container.apply-on-all-sites #all_sites_options td:not(:first-child){display:none}#multisite_options_container #sites_list_container{display:none;overflow:auto}#multisite_options_container #sites_list_container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-tooltip-trigger{position:relative}.fs-tooltip-trigger:not(a){cursor:help}.fs-tooltip-trigger .fs-tooltip{opacity:0;visibility:hidden;-moz-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;-ms-transition:opacity .3s ease-in-out;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;position:absolute;background:rgba(0,0,0,.8);color:#fff;font-family:arial,serif;font-size:12px;padding:10px;z-index:999999;bottom:100%;margin-bottom:5px;left:0;right:0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.2);box-shadow:1px 1px 1px rgba(0,0,0,.2);line-height:1.3em;font-weight:700;text-align:left}.rtl .fs-tooltip-trigger .fs-tooltip{text-align:right}.fs-tooltip-trigger .fs-tooltip::after{content:' ';display:block;width:0;height:0;border-style:solid;border-width:5px 5px 0;border-color:rgba(0,0,0,.8) transparent transparent;position:absolute;top:100%;left:21px}.rtl .fs-tooltip-trigger .fs-tooltip::after{right:21px;left:auto}.fs-tooltip-trigger:hover .fs-tooltip{visibility:visible;opacity:1}#fs_marketing_optin{display:none;margin-top:10px;border:1px solid #ccc;padding:10px;line-height:1.5em}#fs_marketing_optin .fs-message{display:block;margin-bottom:5px;font-size:1.05em;font-weight:600}#fs_marketing_optin.error{border:1px solid #d3135a;background:#fee}#fs_marketing_optin.error .fs-message{color:#d3135a}#fs_marketing_optin .fs-input-container{margin-top:5px}#fs_marketing_optin .fs-input-container label{margin-top:5px;display:block}#fs_marketing_optin .fs-input-container label input{float:left;margin:1px 0 0}#fs_marketing_optin .fs-input-container label:first-child{display:block;margin-bottom:2px}#fs_marketing_optin .fs-input-label{display:block;margin-left:20px}#fs_marketing_optin .fs-input-label .underlined{text-decoration:underline}.rtl #fs_marketing_optin .fs-input-container label input{float:right}.rtl #fs_marketing_optin .fs-input-label{margin-left:0;margin-right:20px}.rtl #fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}.rtl #fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}.rtl #fs_connect .fs-actions .button.button-primary:after{content:' \000bb'}.rtl #fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}.rtl #fs_connect .fs-actions .button.button-secondary{float:left}.rtl #fs_connect .fs-permissions ul li div{margin-right:55px;margin-left:0}.rtl #fs_connect .fs-permissions ul li i.dashicons{float:right}.rtl #fs_connect .fs-visual .fs-site-icon{right:20px;left:auto}.rtl #fs_connect .fs-visual .fs-connect-logo{right:auto;left:20px}#fs_theme_connect_wrapper{position:fixed;top:0;height:100%;width:100%;z-index:99990;background:rgba(0,0,0,.75);text-align:center;overflow-y:auto}#fs_theme_connect_wrapper:before{content:"";display:inline-block;vertical-align:middle;height:100%}#fs_theme_connect_wrapper>button.close{color:#fff;cursor:pointer;height:40px;width:40px;position:absolute;right:0;border:0;background-color:transparent;top:32px}#fs_theme_connect_wrapper #fs_connect{top:0;text-align:left;display:inline-block;vertical-align:middle;margin-top:52px;margin-bottom:20px}#fs_theme_connect_wrapper #fs_connect .fs-terms{background:rgba(140,140,140,.64)}#fs_theme_connect_wrapper #fs_connect .fs-terms,#fs_theme_connect_wrapper #fs_connect .fs-terms a{color:#c5c5c5}.wp-pointer-content #fs_connect{margin:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.fs-opt-in-pointer .wp-pointer-content{padding:0}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow{border-bottom-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow-inner{border-bottom-color:#fafafa}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow{border-top-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow-inner{border-top-color:#fafafa}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow{border-right-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow-inner{border-right-color:#fafafa}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow{border-left-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow-inner{border-left-color:#fafafa} \ No newline at end of file +#fs_connect{width:480px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.3);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);margin:20px 0}@media screen and (max-width:479px){#fs_connect{-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none;width:auto;margin:0 0 0 -10px}}#fs_connect .fs-content{background:#fff}#fs_connect .fs-content .fs-error{background:snow;color:#d3135a;border:1px solid #d3135a;-moz-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);text-align:center;padding:5px;margin-bottom:10px}#fs_connect .fs-content p{margin:0;padding:0}#fs_connect .fs-license-key-container{position:relative;width:280px;margin:10px auto 0}#fs_connect .fs-license-key-container input,#fs_connect.fs-anonymous-disabled .fs-actions .button.button-primary{width:100%}#fs_connect .fs-license-key-container .dashicons{position:absolute;top:5px;right:5px}#fs_connect.require-license-key #sites_list_container td{cursor:pointer}#fs_connect #delegate_to_site_admins{margin-right:15px;float:right;height:26px;vertical-align:middle;line-height:37px;font-weight:700;border-bottom:1px dashed;text-decoration:none}#fs_connect #delegate_to_site_admins.rtl{margin-left:15px;margin-right:0}#fs_connect .fs-actions .button{padding:0 10px 1px;line-height:35px;height:37px;font-size:16px;margin-bottom:0}#fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}#fs_connect .fs-actions .button.button-primary{padding-right:15px;padding-left:15px}#fs_connect .fs-actions .button.button-primary:after{content:' \279C'}#fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}#fs_connect .fs-actions .button.button-secondary{float:right}#fs_connect .fs-permissions{-moz-transition:background .5s ease;-o-transition:background .5s ease;-ms-transition:background .5s ease;-webkit-transition:background .5s ease;transition:background .5s ease}#fs_connect .fs-permissions .fs-license-sync-disclaimer{text-align:center;margin-top:0}#fs_connect .fs-permissions .fs-trigger{font-size:.9em;text-decoration:none;text-align:center;display:block}#fs_connect .fs-permissions ul{height:0;overflow:hidden;margin:0}#fs_connect .fs-permissions ul li{margin-bottom:12px}#fs_connect .fs-permissions ul li:last-child{margin-bottom:0}#fs_connect .fs-permissions ul li i.dashicons{float:left;font-size:40px;width:40px;height:40px}#fs_connect .fs-permissions ul li div{margin-left:55px}#fs_connect .fs-permissions ul li div span{font-weight:700;text-transform:uppercase}#fs_connect .fs-permissions ul li div p{margin:2px 0 0}#fs_connect .fs-permissions.fs-open ul{height:auto;margin:20px 20px 10px}@media screen and (max-width:479px){#fs_connect .fs-permissions{background:#fff}#fs_connect .fs-permissions .fs-trigger{display:none}#fs_connect .fs-permissions ul{height:auto;margin:20px}}#fs_connect .fs-freemium-licensing{padding:8px;background:#777;color:#fff}#fs_connect .fs-freemium-licensing p{text-align:center;display:block;margin:0;padding:0}#fs_connect .fs-freemium-licensing a{color:#C2EEFF;text-decoration:underline}#fs_connect .fs-terms a,#multisite_options_container a{text-decoration:none}#fs_connect .fs-visual{line-height:0;height:80px;position:relative}#fs_connect .fs-visual .fs-site-icon{position:absolute;left:20px}#fs_connect .fs-visual .fs-connect-logo{position:absolute;right:20px}#fs_connect .fs-visual .fs-plugin-icon{position:absolute;left:50%;margin-left:-40px}#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-site-icon,#fs_connect .fs-visual img,#fs_connect .fs-visual object{width:80px;height:80px}#fs_connect .fs-visual .dashicons-wordpress{font-size:64px;background:#01749a;color:#fff;width:64px;height:64px;padding:8px}#fs_connect .fs-visual .dashicons-plus{position:absolute;top:50%;font-size:30px;margin-top:-10px;color:#bbb}#fs_connect .fs-visual .dashicons-plus.fs-first{left:28%}#fs_connect .fs-visual .dashicons-plus.fs-second{left:65%}#fs_connect .fs-visual .fs-connect-logo,#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-site-icon{background:#fff}#fs_connect .fs-terms{text-align:center;font-size:.85em}#fs_connect .fs-terms,#fs_connect .fs-terms a{color:#999}#multisite_options_container{margin-top:10px;border:1px solid #ccc;padding:5px}#multisite_options_container a:focus{box-shadow:none}#multisite_options_container a.selected{font-weight:700}#multisite_options_container.apply-on-all-sites{border:0;padding:0}#multisite_options_container.apply-on-all-sites #all_sites_options{border-spacing:0}#multisite_options_container.apply-on-all-sites #all_sites_options td:not(:first-child){display:none}#multisite_options_container #sites_list_container{display:none;overflow:auto}#multisite_options_container #sites_list_container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-tooltip-trigger{position:relative}.fs-tooltip-trigger:not(a){cursor:help}.fs-tooltip-trigger .fs-tooltip{opacity:0;visibility:hidden;-moz-transition:opacity .3s ease-in-out;-o-transition:opacity .3s ease-in-out;-ms-transition:opacity .3s ease-in-out;-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out;position:absolute;background:rgba(0,0,0,.8);color:#fff;font-family:arial,serif;font-size:12px;padding:10px;z-index:999999;bottom:100%;margin-bottom:5px;left:0;right:0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;-moz-box-shadow:1px 1px 1px rgba(0,0,0,.2);-webkit-box-shadow:1px 1px 1px rgba(0,0,0,.2);box-shadow:1px 1px 1px rgba(0,0,0,.2);line-height:1.3em;font-weight:700;text-align:left}.rtl .fs-tooltip-trigger .fs-tooltip{text-align:right}.fs-tooltip-trigger .fs-tooltip::after{content:' ';display:block;width:0;height:0;border-style:solid;border-width:5px 5px 0;border-color:rgba(0,0,0,.8) transparent transparent;position:absolute;top:100%;left:21px}.rtl .fs-tooltip-trigger .fs-tooltip::after{right:21px;left:auto}.fs-tooltip-trigger:hover .fs-tooltip{visibility:visible;opacity:1}#fs_marketing_optin{display:none;margin-top:10px;border:1px solid #ccc;padding:10px;line-height:1.5em}#fs_marketing_optin .fs-message{display:block;margin-bottom:5px;font-size:1.05em;font-weight:600}#fs_marketing_optin.error{border:1px solid #d3135a;background:#fee}#fs_marketing_optin.error .fs-message{color:#d3135a}#fs_marketing_optin .fs-input-container{margin-top:5px}#fs_marketing_optin .fs-input-container label{margin-top:5px;display:block}#fs_marketing_optin .fs-input-container label input{float:left;margin:1px 0 0}#fs_marketing_optin .fs-input-container label:first-child{display:block;margin-bottom:2px}#fs_marketing_optin .fs-input-label{display:block;margin-left:20px}#fs_marketing_optin .fs-input-label .underlined{text-decoration:underline}.rtl #fs_marketing_optin .fs-input-container label input{float:right}.rtl #fs_marketing_optin .fs-input-label{margin-left:0;margin-right:20px}.rtl #fs_connect .fs-actions{padding:10px 20px;background:#C0C7CA}.rtl #fs_connect .fs-actions .button .dashicons{font-size:37px;margin-left:-8px;margin-right:12px}.rtl #fs_connect .fs-actions .button.button-primary:after{content:' \000bb'}.rtl #fs_connect .fs-actions .button.button-primary.fs-loading:after{content:''}.rtl #fs_connect .fs-actions .button.button-secondary{float:left}.rtl #fs_connect .fs-permissions ul li div{margin-right:55px;margin-left:0}.rtl #fs_connect .fs-permissions ul li i.dashicons{float:right}.rtl #fs_connect .fs-visual .fs-site-icon{right:20px;left:auto}.rtl #fs_connect .fs-visual .fs-connect-logo{right:auto;left:20px}#fs_theme_connect_wrapper{position:fixed;top:0;height:100%;width:100%;z-index:99990;background:rgba(0,0,0,.75);text-align:center;overflow-y:auto}#fs_theme_connect_wrapper:before{content:"";display:inline-block;vertical-align:middle;height:100%}#fs_theme_connect_wrapper>button.close{color:#fff;cursor:pointer;height:40px;width:40px;position:absolute;right:0;border:0;background-color:transparent;top:32px}#fs_theme_connect_wrapper #fs_connect{top:0;text-align:left;display:inline-block;vertical-align:middle;margin-top:52px;margin-bottom:20px}#fs_theme_connect_wrapper #fs_connect .fs-terms{background:rgba(140,140,140,.64)}#fs_theme_connect_wrapper #fs_connect .fs-terms,#fs_theme_connect_wrapper #fs_connect .fs-terms a{color:#c5c5c5}.wp-pointer-content #fs_connect{margin:0;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.fs-opt-in-pointer .wp-pointer-content{padding:0}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow{border-bottom-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-top .wp-pointer-arrow-inner{border-bottom-color:#fafafa}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow{border-top-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-bottom .wp-pointer-arrow-inner{border-top-color:#fafafa}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow{border-right-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-left .wp-pointer-arrow-inner{border-right-color:#fafafa}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow{border-left-color:#dfdfdf}.fs-opt-in-pointer.wp-pointer-right .wp-pointer-arrow-inner{border-left-color:#fafafa}#fs_connect{box-shadow:none;border:1px solid #e0e0e0;margin-left:10px}#fs_connect .fs-content p{font-size:17px;font-family:Lato,sans-serif;font-weight:300}#fs_connect a{color:#9fbb1a}#fs_connect a:hover{color:#b8d433}#fs_connect .fs-visual{padding:30px 20px!important;background:#fff}#fs_connect .fs-visual .fs-connect-logo,#fs_connect .fs-visual .fs-plugin-icon,#fs_connect .fs-visual .fs-site-icon{border:none;padding:0;top:30px}#fs_connect .fs-content{padding:30px 20px}#fs_connect .fs-actions,#fs_connect .fs-permissions,#fs_connect .fs-permissions.fs-open,#fs_connect .fs-terms{background:#000;color:#fff;padding:0!important}#fs_connect .fs-actions{padding:30px 20px!important}#fs_connect .fs-permissions ul li i.dashicons{color:#9fbb1a}#fs_connect .fs-permissions.fs-open ul{margin-bottom:0;padding-bottom:20px}#fs_connect .fs-permissions ul li div span{color:#fff}#fs_connect .fs-terms{padding-bottom:15px!important}#fs_connect .fs-actions .button.button-primary,#fs_connect .fs-actions .button.button-secondary{box-shadow:none!important;text-shadow:none!important;height:35px!important;padding:0 24px!important;line-height:35px;width:auto!important;text-transform:uppercase;font-size:12px;letter-spacing:.5px;font-family:Lato,sans-serif}#fs_connect .fs-actions .button.button-primary{background-color:#9fbb1a!important;color:#fff!important;border:none!important;border-radius:0}#fs_connect .fs-actions .button.button-secondary{border:none!important;border-radius:0}#fs_connect .fs-permissions a:hover,#fs_connect .fs-terms a:hover{color:#fff} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/dialog-boxes.css b/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/dialog-boxes.css index bc33fe883..f76befffe 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/dialog-boxes.css +++ b/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/dialog-boxes.css @@ -1,2 +1,49 @@ -.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eeeeee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:0.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-header .fs-close .dashicons,.fs-modal .fs-modal-header .fs-close:hover .dashicons{text-decoration:none}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .reason-input,.fs-modal.fs-modal-deactivation-feedback .internal-message{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width: 650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0 !important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}#license_options_container table,#license_options_container table select,#license_options_container table #available_license_key{width:100%}#license_options_container table td:first-child{width:1%}#license_options_container table #other_license_key_container label{position:relative;top:6px;float:left;margin-right:5px}#license_options_container table #other_license_key_container div{overflow:hidden;width:auto;height:30px;display:block;top:2px;position:relative}#license_options_container table #other_license_key_container div input{margin:0}#sites_list_container td{cursor:pointer}#multisite_options_container{margin-top:10px;border:1px solid #ccc;padding:5px}#multisite_options_container a{text-decoration:none}#multisite_options_container a:focus{box-shadow:none}#multisite_options_container a.selected{font-weight:bold}#multisite_options_container.apply-on-all-sites{border:0 none;padding:0}#multisite_options_container.apply-on-all-sites #all_sites_options{border-spacing:0}#multisite_options_container.apply-on-all-sites #all_sites_options td:not(:first-child){display:none}#multisite_options_container #sites_list_container{display:none;overflow:auto}#multisite_options_container #sites_list_container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media (max-width: 650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}} -.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}.fs-ajax-loader{position:relative;width:170px;height:20px;margin:auto}.fs-ajax-loader .fs-ajax-loader-bar{position:absolute;top:0;background-color:#0074a3;width:20px;height:20px;-webkit-animation-name:bounce_ajaxLoader;-moz-animation-name:bounce_ajaxLoader;-ms-animation-name:bounce_ajaxLoader;-o-animation-name:bounce_ajaxLoader;animation-name:bounce_ajaxLoader;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s;animation-duration:1.5s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-webkit-animation-direction:normal;-moz-animation-direction:normal;-ms-animation-direction:normal;-o-animation-direction:normal;animation-direction:normal;-moz-transform:0.3;-o-transform:0.3;-ms-transform:0.3;-webkit-transform:0.3;transform:0.3}.fs-ajax-loader .fs-ajax-loader-bar-1{left:0px;animation-delay:0.6s;-o-animation-delay:0.6s;-ms-animation-delay:0.6s;-webkit-animation-delay:0.6s;-moz-animation-delay:0.6s}.fs-ajax-loader .fs-ajax-loader-bar-2{left:19px;animation-delay:0.75s;-o-animation-delay:0.75s;-ms-animation-delay:0.75s;-webkit-animation-delay:0.75s;-moz-animation-delay:0.75s}.fs-ajax-loader .fs-ajax-loader-bar-3{left:38px;animation-delay:0.9s;-o-animation-delay:0.9s;-ms-animation-delay:0.9s;-webkit-animation-delay:0.9s;-moz-animation-delay:0.9s}.fs-ajax-loader .fs-ajax-loader-bar-4{left:57px;animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s}.fs-ajax-loader .fs-ajax-loader-bar-5{left:76px;animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s}.fs-ajax-loader .fs-ajax-loader-bar-6{left:95px;animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s}.fs-ajax-loader .fs-ajax-loader-bar-7{left:114px;animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s}.fs-ajax-loader .fs-ajax-loader-bar-8{left:133px;animation-delay:1.65s;-o-animation-delay:1.65s;-ms-animation-delay:1.65s;-webkit-animation-delay:1.65s;-moz-animation-delay:1.65s}@-moz-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-ms-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-o-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-webkit-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}.fs-modal-auto-install #request-filesystem-credentials-form h2,.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;padding:10px 10px 5px 10px;width:300px;max-width:100%}.fs-modal-auto-install #request-filesystem-credentials-form>div,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form fieldset{width:300px;max-width:100%;margin:0 auto;display:block} +.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,0.6)}.fs-modal .fs-modal-dialog{background:transparent;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}@media (max-width: 650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active{display:block}.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eeeeee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:bold;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:0.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;-ms-transition:all 0.2s ease-in-out;-webkit-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-header .fs-close .dashicons,.fs-modal .fs-modal-header .fs-close:hover .dashicons{text-decoration:none}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:bold;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eeeeee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .reason-input,.fs-modal.fs-modal-deactivation-feedback .internal-message{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea{width:100%}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width: 650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0 !important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-subscription-cancellation .fs-price-increase-warning{color:red;font-weight:bold;padding:0 25px;margin-bottom:0}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:left;top:5px;position:relative}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:right}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{display:block;margin-left:24px}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{margin-left:0;margin-right:24px}.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}#license_options_container table,#license_options_container table select,#license_options_container table #available_license_key{width:100%}#license_options_container table td:first-child{width:1%}#license_options_container table #other_license_key_container label{position:relative;top:6px;float:left;margin-right:5px}#license_options_container table #other_license_key_container div{overflow:hidden;width:auto;height:30px;display:block;top:2px;position:relative}#license_options_container table #other_license_key_container div input{margin:0}#sites_list_container td{cursor:pointer}#multisite_options_container{margin-top:10px;border:1px solid #ccc;padding:5px}#multisite_options_container a{text-decoration:none}#multisite_options_container a:focus{box-shadow:none}#multisite_options_container a.selected{font-weight:bold}#multisite_options_container.apply-on-all-sites{border:0 none;padding:0}#multisite_options_container.apply-on-all-sites #all_sites_options{border-spacing:0}#multisite_options_container.apply-on-all-sites #all_sites_options td:not(:first-child){display:none}#multisite_options_container #sites_list_container{display:none;overflow:auto}#multisite_options_container #sites_list_container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media (max-width: 650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}} +.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}.fs-ajax-loader{position:relative;width:170px;height:20px;margin:auto}.fs-ajax-loader .fs-ajax-loader-bar{position:absolute;top:0;background-color:#0074a3;width:20px;height:20px;-webkit-animation-name:bounce_ajaxLoader;-moz-animation-name:bounce_ajaxLoader;-ms-animation-name:bounce_ajaxLoader;-o-animation-name:bounce_ajaxLoader;animation-name:bounce_ajaxLoader;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s;animation-duration:1.5s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-webkit-animation-direction:normal;-moz-animation-direction:normal;-ms-animation-direction:normal;-o-animation-direction:normal;animation-direction:normal;-moz-transform:0.3;-o-transform:0.3;-ms-transform:0.3;-webkit-transform:0.3;transform:0.3}.fs-ajax-loader .fs-ajax-loader-bar-1{left:0px;animation-delay:0.6s;-o-animation-delay:0.6s;-ms-animation-delay:0.6s;-webkit-animation-delay:0.6s;-moz-animation-delay:0.6s}.fs-ajax-loader .fs-ajax-loader-bar-2{left:19px;animation-delay:0.75s;-o-animation-delay:0.75s;-ms-animation-delay:0.75s;-webkit-animation-delay:0.75s;-moz-animation-delay:0.75s}.fs-ajax-loader .fs-ajax-loader-bar-3{left:38px;animation-delay:0.9s;-o-animation-delay:0.9s;-ms-animation-delay:0.9s;-webkit-animation-delay:0.9s;-moz-animation-delay:0.9s}.fs-ajax-loader .fs-ajax-loader-bar-4{left:57px;animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s}.fs-ajax-loader .fs-ajax-loader-bar-5{left:76px;animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s}.fs-ajax-loader .fs-ajax-loader-bar-6{left:95px;animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s}.fs-ajax-loader .fs-ajax-loader-bar-7{left:114px;animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s}.fs-ajax-loader .fs-ajax-loader-bar-8{left:133px;animation-delay:1.65s;-o-animation-delay:1.65s;-ms-animation-delay:1.65s;-webkit-animation-delay:1.65s;-moz-animation-delay:1.65s}@-moz-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-ms-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-o-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@-webkit-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}@keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(0.3);-o-transform:scale(0.3);-ms-transform:scale(0.3);-webkit-transform:scale(0.3);transform:scale(0.3);background-color:#fff}}.fs-modal-auto-install #request-filesystem-credentials-form h2,.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;padding:10px 10px 5px 10px;width:300px;max-width:100%}.fs-modal-auto-install #request-filesystem-credentials-form>div,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form fieldset{width:300px;max-width:100%;margin:0 auto;display:block}.button-primary.warn{box-shadow:0 1px 0 #d2593c;text-shadow:0 -1px 1px #d2593c,1px 0 1px #d2593c,0 1px 1px #d2593c,-1px 0 1px #d2593c;background:#f56a48;border-color:#ec6544 #d2593c #d2593c}.button-primary.warn:hover{background:#fd6d4a;border-color:#d2593c}.button-primary.warn:focus{box-shadow:0 1px 0 #dd6041,0 0 2px 1px #e4a796}.button-primary.warn:active{background:#dd6041;border-color:#d2593c;box-shadow:inset 0 2px 0 #d2593c}.button-primary.warn.disabled{color:#f5b3a1 !important;background:#e76444 !important;border-color:#d85e40 !important;text-shadow:0 -1px 0 rgba(0,0,0,0.1) !important} + + +/* Customizations for NextGEN Gallery */ + +.fs-modal .fs-modal-header { + background: black; + color: #fff; +} + +.fs-modal .fs-modal-header h4 { + text-shadow: none; + color: #fff; +} + +.fs-modal .fs-modal-body { + padding-top: 35px; +} + +.fs-modal a.button-primary { + background-color: #9fbb1a !important; + color: #fff !important; + border: none !important; + box-shadow: none !important; + text-shadow: none !important; + height: 35px !important; + padding: 0 24px !important; + line-height: 35px; + width: auto !important; + border-radius: 0; + text-transform: uppercase; + letter-spacing: .5px; + font-family: Lato, sans-serif; +} + +.fs-modal a.button-secondary { + border: none !important; + box-shadow: none !important; + text-shadow: none !important; + height: 35px !important; + padding: 0 24px !important; + line-height: 35px; + width: auto !important; + border-radius: 0; + text-transform: uppercase; + letter-spacing: .5px; + font-family: Lato, sans-serif; +} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/dialog-boxes.min.css b/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/dialog-boxes.min.css index 925d67f97..1ea5121c9 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/dialog-boxes.min.css +++ b/wp-content/plugins/nextgen-gallery/freemius/assets/css/admin/dialog-boxes.min.css @@ -1 +1 @@ -#multisite_options_container a,.fs-modal .fs-modal-header .fs-close .dashicons,.fs-modal .fs-modal-header .fs-close:hover .dashicons{text-decoration:none}.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,.6)}.fs-modal .fs-modal-dialog{background:0 0;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}#license_options_container table,#license_options_container table #available_license_key,#license_options_container table select,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea,.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}@media (max-width:650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active,.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eee solid 1px;background:#fbfbfb;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:700;color:#cacaca;text-shadow:1px 1px 1px #fff;letter-spacing:.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:700;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .internal-message,.fs-modal.fs-modal-deactivation-feedback .reason-input{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width:650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}#multisite_options_container.apply-on-all-sites #all_sites_options td:not(:first-child),#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0!important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#license_options_container table td:first-child{width:1%}#license_options_container table #other_license_key_container label{position:relative;top:6px;float:left;margin-right:5px}#license_options_container table #other_license_key_container div{overflow:hidden;width:auto;height:30px;display:block;top:2px;position:relative}#license_options_container table #other_license_key_container div input{margin:0}#sites_list_container td{cursor:pointer}#multisite_options_container{margin-top:10px;border:1px solid #ccc;padding:5px}#multisite_options_container a:focus{box-shadow:none}#multisite_options_container a.selected{font-weight:700}#multisite_options_container.apply-on-all-sites{border:0;padding:0}#multisite_options_container.apply-on-all-sites #all_sites_options{border-spacing:0}#multisite_options_container #sites_list_container{display:none;overflow:auto}#multisite_options_container #sites_list_container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media (max-width:650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}.fs-ajax-loader{position:relative;width:170px;height:20px;margin:auto}.fs-ajax-loader .fs-ajax-loader-bar{position:absolute;top:0;background-color:#0074a3;width:20px;height:20px;-webkit-animation-name:bounce_ajaxLoader;-moz-animation-name:bounce_ajaxLoader;-ms-animation-name:bounce_ajaxLoader;-o-animation-name:bounce_ajaxLoader;animation-name:bounce_ajaxLoader;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s;animation-duration:1.5s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-webkit-animation-direction:normal;-moz-animation-direction:normal;-ms-animation-direction:normal;-o-animation-direction:normal;animation-direction:normal;-moz-transform:.3;-o-transform:.3;-ms-transform:.3;-webkit-transform:.3;transform:.3}.fs-ajax-loader .fs-ajax-loader-bar-1{left:0;animation-delay:.6s;-o-animation-delay:.6s;-ms-animation-delay:.6s;-webkit-animation-delay:.6s;-moz-animation-delay:.6s}.fs-ajax-loader .fs-ajax-loader-bar-2{left:19px;animation-delay:.75s;-o-animation-delay:.75s;-ms-animation-delay:.75s;-webkit-animation-delay:.75s;-moz-animation-delay:.75s}.fs-ajax-loader .fs-ajax-loader-bar-3{left:38px;animation-delay:.9s;-o-animation-delay:.9s;-ms-animation-delay:.9s;-webkit-animation-delay:.9s;-moz-animation-delay:.9s}.fs-ajax-loader .fs-ajax-loader-bar-4{left:57px;animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s}.fs-ajax-loader .fs-ajax-loader-bar-5{left:76px;animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s}.fs-ajax-loader .fs-ajax-loader-bar-6{left:95px;animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s}.fs-ajax-loader .fs-ajax-loader-bar-7{left:114px;animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s}.fs-ajax-loader .fs-ajax-loader-bar-8{left:133px;animation-delay:1.65s;-o-animation-delay:1.65s;-ms-animation-delay:1.65s;-webkit-animation-delay:1.65s;-moz-animation-delay:1.65s}@-moz-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(.3);-o-transform:scale(.3);-ms-transform:scale(.3);-webkit-transform:scale(.3);transform:scale(.3);background-color:#fff}}@-ms-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(.3);-o-transform:scale(.3);-ms-transform:scale(.3);-webkit-transform:scale(.3);transform:scale(.3);background-color:#fff}}@-o-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(.3);-o-transform:scale(.3);-ms-transform:scale(.3);-webkit-transform:scale(.3);transform:scale(.3);background-color:#fff}}@-webkit-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(.3);-o-transform:scale(.3);-ms-transform:scale(.3);-webkit-transform:scale(.3);transform:scale(.3);background-color:#fff}}@keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(.3);-o-transform:scale(.3);-ms-transform:scale(.3);-webkit-transform:scale(.3);transform:scale(.3);background-color:#fff}}.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons,.fs-modal-auto-install #request-filesystem-credentials-form h2{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;padding:10px 10px 5px;width:300px;max-width:100%}.fs-modal-auto-install #request-filesystem-credentials-form fieldset,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form>div{width:300px;max-width:100%;margin:0 auto;display:block} \ No newline at end of file +#multisite_options_container a,.fs-modal .fs-modal-header .fs-close .dashicons,.fs-modal .fs-modal-header .fs-close:hover .dashicons{text-decoration:none}.fs-modal{position:fixed;overflow:auto;height:100%;width:100%;top:0;z-index:100000;display:none;background:rgba(0,0,0,.6)}.fs-modal .fs-modal-dialog{background:0 0;position:absolute;left:50%;margin-left:-298px;padding-bottom:30px;top:-100%;z-index:100001;width:596px}#license_options_container table,#license_options_container table #available_license_key,#license_options_container table select,.fs-modal.fs-modal-deactivation-feedback .internal-message input,.fs-modal.fs-modal-deactivation-feedback .internal-message textarea,.fs-modal.fs-modal-deactivation-feedback .reason-input input,.fs-modal.fs-modal-deactivation-feedback .reason-input textarea,.fs-modal.fs-modal-license-activation .fs-modal-body input.license_key{width:100%}@media (max-width:650px){.fs-modal .fs-modal-dialog{margin-left:-50%;box-sizing:border-box;padding-left:10px;padding-right:10px;width:100%}.fs-modal .fs-modal-dialog .fs-modal-panel>h3>strong{font-size:1.3em}}.fs-modal.active,.fs-modal.active:before{display:block}.fs-modal.active .fs-modal-dialog{top:10%}.fs-modal.fs-success .fs-modal-header{border-bottom-color:#46b450}.fs-modal.fs-success .fs-modal-body{background-color:#f7fff7}.fs-modal.fs-warn .fs-modal-header{border-bottom-color:#ffb900}.fs-modal.fs-warn .fs-modal-body{background-color:#fff8e5}.fs-modal.fs-error .fs-modal-header{border-bottom-color:#dc3232}.fs-modal.fs-error .fs-modal-body{background-color:#ffeaea}.fs-modal .fs-modal-body,.fs-modal .fs-modal-footer{border:0;background:#fefefe;padding:20px}.fs-modal .fs-modal-header{border-bottom:#eee solid 1px;padding:15px 20px;position:relative;margin-bottom:-10px}.fs-modal .fs-modal-header h4{margin:0;padding:0;text-transform:uppercase;font-size:1.2em;font-weight:700;letter-spacing:.6px;-webkit-font-smoothing:antialiased}.fs-modal .fs-modal-header .fs-close{position:absolute;right:10px;top:12px;cursor:pointer;color:#bbb;-moz-border-radius:20px;-webkit-border-radius:20px;border-radius:20px;padding:3px;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;-ms-transition:all .2s ease-in-out;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.fs-modal .fs-modal-header .fs-close:hover{color:#fff;background:#aaa}.fs-modal .fs-modal-body{border-bottom:0}.fs-modal .fs-modal-body p{font-size:14px}.fs-modal .fs-modal-body h2{font-size:20px;line-height:1.5em}.fs-modal .fs-modal-body>div{margin-top:10px}.fs-modal .fs-modal-body>div h2{font-weight:700;font-size:20px;margin-top:0}.fs-modal .fs-modal-footer{border-top:#eee solid 1px;text-align:right}.fs-modal .fs-modal-footer>.button{margin:0 7px}.fs-modal .fs-modal-footer>.button:first-child{margin:0}.fs-modal .fs-modal-panel>.notice.inline{margin:0;display:none}.fs-modal .fs-modal-panel:not(.active){display:none}.rtl .fs-modal .fs-modal-header .fs-close{right:auto;left:20px}body.has-fs-modal{overflow:hidden}.fs-modal.fs-modal-deactivation-feedback .internal-message,.fs-modal.fs-modal-deactivation-feedback .reason-input{margin:3px 0 3px 22px}.fs-modal.fs-modal-deactivation-feedback li.reason.has-internal-message .internal-message{border:1px solid #ccc;padding:7px;display:none}@media (max-width:650px){.fs-modal.fs-modal-deactivation-feedback li.reason li.reason{margin-bottom:10px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .internal-message,.fs-modal.fs-modal-deactivation-feedback li.reason li.reason .reason-input{margin-left:29px}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label{display:table}.fs-modal.fs-modal-deactivation-feedback li.reason li.reason label>span{display:table-cell;font-size:1.3em}}.fs-modal.fs-modal-deactivation-feedback .anonymous-feedback-label{float:left}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel{margin-top:0!important}.fs-modal.fs-modal-deactivation-feedback .fs-modal-panel h3{margin-top:0;line-height:1.5em}#the-list .deactivate>.fs-slug{display:none}.fs-modal.fs-modal-subscription-cancellation .fs-price-increase-warning{color:red;font-weight:700;padding:0 25px;margin-bottom:0}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:left;top:5px;position:relative}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label input{float:right}.fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{display:block;margin-left:24px}.rtl .fs-modal.fs-modal-subscription-cancellation ul.subscription-actions label span{margin-left:0;margin-right:24px}#license_options_container table td:first-child{width:1%}#license_options_container table #other_license_key_container label{position:relative;top:6px;float:left;margin-right:5px}#license_options_container table #other_license_key_container div{overflow:hidden;width:auto;height:30px;display:block;top:2px;position:relative}#license_options_container table #other_license_key_container div input{margin:0}#sites_list_container td{cursor:pointer}#multisite_options_container{margin-top:10px;border:1px solid #ccc;padding:5px}#multisite_options_container a:focus{box-shadow:none}#multisite_options_container a.selected{font-weight:700}#multisite_options_container.apply-on-all-sites{border:0;padding:0}#multisite_options_container.apply-on-all-sites #all_sites_options{border-spacing:0}#multisite_options_container.apply-on-all-sites #all_sites_options td:not(:first-child){display:none}#multisite_options_container #sites_list_container{display:none;overflow:auto}#multisite_options_container #sites_list_container table td{border-top:1px solid #ccc;padding:4px 2px}.fs-modal.fs-modal-license-key-resend .email-address-container{overflow:hidden;padding-right:2px}.fs-modal.fs-modal-license-key-resend.fs-freemium input.email-address{width:300px}.fs-modal.fs-modal-license-key-resend.fs-freemium label{display:block;margin-bottom:10px}.fs-modal.fs-modal-license-key-resend.fs-premium input.email-address{width:100%}.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{float:right;margin-left:7px}@media (max-width:650px){.fs-modal.fs-modal-license-key-resend.fs-premium .button-container{margin-top:2px}}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .input-container>.email-address-container{padding-left:2px;padding-right:0}.rtl .fs-modal.fs-modal-license-key-resend .fs-modal-body .button-container{float:left;margin-right:7px;margin-left:0}a.show-license-resend-modal{margin-top:4px;display:inline-block}.fs-ajax-loader{position:relative;width:170px;height:20px;margin:auto}.fs-ajax-loader .fs-ajax-loader-bar{position:absolute;top:0;background-color:#0074a3;width:20px;height:20px;-webkit-animation-name:bounce_ajaxLoader;-moz-animation-name:bounce_ajaxLoader;-ms-animation-name:bounce_ajaxLoader;-o-animation-name:bounce_ajaxLoader;animation-name:bounce_ajaxLoader;-webkit-animation-duration:1.5s;-moz-animation-duration:1.5s;-ms-animation-duration:1.5s;-o-animation-duration:1.5s;animation-duration:1.5s;animation-iteration-count:infinite;-o-animation-iteration-count:infinite;-ms-animation-iteration-count:infinite;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-webkit-animation-direction:normal;-moz-animation-direction:normal;-ms-animation-direction:normal;-o-animation-direction:normal;animation-direction:normal;-moz-transform:.3;-o-transform:.3;-ms-transform:.3;-webkit-transform:.3;transform:.3}.fs-ajax-loader .fs-ajax-loader-bar-1{left:0;animation-delay:.6s;-o-animation-delay:.6s;-ms-animation-delay:.6s;-webkit-animation-delay:.6s;-moz-animation-delay:.6s}.fs-ajax-loader .fs-ajax-loader-bar-2{left:19px;animation-delay:.75s;-o-animation-delay:.75s;-ms-animation-delay:.75s;-webkit-animation-delay:.75s;-moz-animation-delay:.75s}.fs-ajax-loader .fs-ajax-loader-bar-3{left:38px;animation-delay:.9s;-o-animation-delay:.9s;-ms-animation-delay:.9s;-webkit-animation-delay:.9s;-moz-animation-delay:.9s}.fs-ajax-loader .fs-ajax-loader-bar-4{left:57px;animation-delay:1.05s;-o-animation-delay:1.05s;-ms-animation-delay:1.05s;-webkit-animation-delay:1.05s;-moz-animation-delay:1.05s}.fs-ajax-loader .fs-ajax-loader-bar-5{left:76px;animation-delay:1.2s;-o-animation-delay:1.2s;-ms-animation-delay:1.2s;-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s}.fs-ajax-loader .fs-ajax-loader-bar-6{left:95px;animation-delay:1.35s;-o-animation-delay:1.35s;-ms-animation-delay:1.35s;-webkit-animation-delay:1.35s;-moz-animation-delay:1.35s}.fs-ajax-loader .fs-ajax-loader-bar-7{left:114px;animation-delay:1.5s;-o-animation-delay:1.5s;-ms-animation-delay:1.5s;-webkit-animation-delay:1.5s;-moz-animation-delay:1.5s}.fs-ajax-loader .fs-ajax-loader-bar-8{left:133px;animation-delay:1.65s;-o-animation-delay:1.65s;-ms-animation-delay:1.65s;-webkit-animation-delay:1.65s;-moz-animation-delay:1.65s}@-moz-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(.3);-o-transform:scale(.3);-ms-transform:scale(.3);-webkit-transform:scale(.3);transform:scale(.3);background-color:#fff}}@-ms-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(.3);-o-transform:scale(.3);-ms-transform:scale(.3);-webkit-transform:scale(.3);transform:scale(.3);background-color:#fff}}@-o-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(.3);-o-transform:scale(.3);-ms-transform:scale(.3);-webkit-transform:scale(.3);transform:scale(.3);background-color:#fff}}@-webkit-keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(.3);-o-transform:scale(.3);-ms-transform:scale(.3);-webkit-transform:scale(.3);transform:scale(.3);background-color:#fff}}@keyframes bounce_ajaxLoader{0%{-moz-transform:scale(1);-o-transform:scale(1);-ms-transform:scale(1);-webkit-transform:scale(1);transform:scale(1);background-color:#0074a3}100%{-moz-transform:scale(.3);-o-transform:scale(.3);-ms-transform:scale(.3);-webkit-transform:scale(.3);transform:scale(.3);background-color:#fff}}.fs-modal-auto-install #request-filesystem-credentials-form .request-filesystem-credentials-action-buttons,.fs-modal-auto-install #request-filesystem-credentials-form h2{display:none}.fs-modal-auto-install #request-filesystem-credentials-form input[type=email],.fs-modal-auto-install #request-filesystem-credentials-form input[type=password],.fs-modal-auto-install #request-filesystem-credentials-form input[type=text]{-webkit-appearance:none;padding:10px 10px 5px;width:300px;max-width:100%}.fs-modal-auto-install #request-filesystem-credentials-form fieldset,.fs-modal-auto-install #request-filesystem-credentials-form label,.fs-modal-auto-install #request-filesystem-credentials-form>div{width:300px;max-width:100%;margin:0 auto;display:block}.button-primary.warn{box-shadow:0 1px 0 #d2593c;text-shadow:0 -1px 1px #d2593c,1px 0 1px #d2593c,0 1px 1px #d2593c,-1px 0 1px #d2593c;background:#f56a48;border-color:#ec6544 #d2593c #d2593c}.button-primary.warn:hover{background:#fd6d4a;border-color:#d2593c}.button-primary.warn:focus{box-shadow:0 1px 0 #dd6041,0 0 2px 1px #e4a796}.button-primary.warn:active{background:#dd6041;border-color:#d2593c;box-shadow:inset 0 2px 0 #d2593c}.button-primary.warn.disabled{color:#f5b3a1!important;background:#e76444!important;border-color:#d85e40!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important}.fs-modal .fs-modal-header{background:#000;color:#fff}.fs-modal .fs-modal-header h4{text-shadow:none;color:#fff}.fs-modal .fs-modal-body{padding-top:35px}.fs-modal a.button-primary,.fs-modal a.button-secondary{box-shadow:none!important;text-shadow:none!important;height:35px!important;padding:0 24px!important;line-height:35px;width:auto!important;text-transform:uppercase;letter-spacing:.5px;font-family:Lato,sans-serif}.fs-modal a.button-primary{background-color:#9fbb1a!important;color:#fff!important;border:none!important;border-radius:0}.fs-modal a.button-secondary{border:none!important;border-radius:0} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/freemius/assets/img/nextgen-gallery.png b/wp-content/plugins/nextgen-gallery/freemius/assets/img/nextgen-gallery.png index 2cef0cae5026801384bf570e89bc9674d9e1537c..29e0c6cff5043a4754777eea326f06a1023d22c6 100644 GIT binary patch delta 14178 zcmZoU&3OAEqg7{spF1y?6c+;n1FxrtOArGC!v_%NU}IolunT=TiGhKEv%n*=n1O*o z9fTRRI4AluFj%kKJe4blX|fk@!Q?JJch!pA0xRdD)Wnihm&B4(J0k-_OI-tFT|?6l zLsKgQODhvYT?4bp*LV$uk;IJ*tPD*-;!=FZSj7|g6enNgOPE~AFR5Z-U~FV!YGkUL zY@V8;Ym#V^rfZRCW~Q5znrL8XVPcqUW@I>d8^5cHg}Jd&a<Y-Ju7!D;nXaLsd9tph zsj-1>O0q$6ilv!Ra<aMkWO)I5H477SQzL^^GhOo}3kzKnL-SN!3sVbY-6W&5BqL)Z z1G6M!0~`IxwgQrq=L$5kCWE{;Sy9kVg&2*K<wZ>eko*b`gUKfZTPDYg%uz8iOg2eN zHnr3>F-c0%HL*xe)=f%DGS{^*OEfl3PBbx3Ge|}^0UTPJPY4PzPL>mNBrZJA904|B z@(IDSli!N#Po5>|$Y?nEo}?wC;bbYPJXSMPQ)AP~ol?e3CI*xDNm;O%fV}@eN^~>7 zbc8<3)~$2wCue)<)tfB$ba4!+xb<dl<&4zO((nHxv*#DTTf1tVoI@L1lz_mL6%tBP z&lf1!2{s4H2p^p>V~@(L8Rmx1POjJ|RV$n<bYG%=-?0@dTo!lCT5<6Rr@BnRfpFG^ zf;kRt^H!~1{jT6#-0Sbh_uAfB7kxK&`>xgR*511R+|nfW>i0Xv*W&K)t#8}=J?har z6%~~pHIq&SMMXgiMa4wP32*;T&(4>5zHK-6wY&_&w@zz?%sfu|Y2FZ2e!J%^bN~5B z@!K`2doTae`}2q;rd+RvTO$5QvqZro-p4-oHqBdAaHrKqU$FGb!iQZg9=<Xwr%14J z9hX_;Ah?igZh?ZfsJP;;q>B^JtYEKSyryNF_DqRNfm7QS%v?Nk()H*we&Q*NM;5GN zIqPsV)7vv5d&A;;Gru-9JBu<axt-|U#(9gc!y-k{{OHj@;Q)0u_tOj<GbX1ChA(F_ zVOzzJ)VJdSqsH8*0x$k4udYnk*swl3Y?B(tWQpvUluOO)1t)vX@l3ds=ro~l0mC7? zkM&h7xB5&%Ys6--m9;&%9J=&!(|ewS%NL!T(*0IsNh9aGw$;iS70=(Va*|VeD{+A3 z$_i1p-LeMkHbJLZSX>tNIxqF<aXsagVJdn@gX`cTK_gX-Guv7g`0Xv2m8-EhKt#bI zRI81_Nlq(d?xwXXBwQbc1R5}(m*Mn!=4Y~4izUB4Wrd}o@rgNw?PbiHVkFjE2lE~^ zEKuAv`ME)0u~Fw8>(Ix7>E}N@2rk#3m2;gjyp;V|gXw|8+YbB2H<vCK3whm}yPf-a zPQ$M?j~4a#PrFld+ag0@+96NrSuq9oeCnChb!?aXmcMB(r~YsbTa}lIS>rsJMfpZg zQkr?WvhPGT*9R~cbsBxI`&=)~wB!Bn@K9BTcOI*|Hc8Jobhu1BPkaaOMct;qEH{|` zNbC^z=$xFm<p8HQEBg`#vz;G}XV|#Jyz4J!(_7wMXd|%b{la-NxyLvH-p74sJa@qI z{`Wtpm>r~d#H!q3+GjcI9>b^D2kji+OM1PWls<56*&utak1@Uek&Vd3;~~d(&Y06# zyvA6_Y%PNyyI=Wq^`m?%wOi&tswxgGoU0tqx?k>z*#e)%^EqrDwS}2kebVreUwbUM zz><B&i(hNBUF*#rZqhvVhN*z%X5)#k&+2%8Y(4n*HAnPhBNZn8y}@_>eikX*D{x)C z`}AU2v(l41k5)S{<uFv%WY&MGU|h8E=FxphdjE6f?78pE+oCF1v7;tsdh*dHOfBh6 z|C-$W=KOwNbG38n>&!Wg?Zz_oj+<xRXRQ(Z*xytmx5If7n<|t3;z{$KFFW6NZ0V~a zw@D`st}X7VTEualsa|Z6eQ(<QlIM#Zf5^;DUEAXFVDa*%xiK4hcD@Wg`^2ccvR=tx z+O-hA;zO^$I+?j$7T^84`}C>(`j6z<?(zR?w!P%%!D3hRZox^z1?RV|*x&hKv!|AO z*A)TZx?{0*ZY|SipI*M`W8R1J9QQn2{8-|2s{I$9n*V<H7uCFnXReB!)>EC>=vlsV z%gu9otpE9b>~E-L_#@{TW+_<VC^-9s^O+x}^_xG$#P}^~a=E9v^oz6Wm$Qba{)_y% z%lBSrhiR{a{-wk==9pCT$|*bd9lxl*^Y!VwmV!1D%V#bNGPgYI^Z(MtY{!3W&+9z( zIuGpqxVHJ|2aoc<2|W*s(|)Z!kP_6t@DS$#d8YW{>(_UmUe>q%N#}vp)qT@Huku=- z^KM<O+;#7l^*NG0689p0?#TFcJoL=IS1+^$Z%*LYqcu}IeMd`um*MZG**5(CM`Tw% zEcSEz!h3PEzWZfyhMQSij;-!H!1Vgg;rUYxe{;QfTGE%gjOF=@RUepdhnBfYZuaN+ zwc=bvmC^^UrSDZA-4y@uru3c6{JyR0dK6YzZxeSrZ<lSjCo;yY{@W7^p+@(aoB7U3 zrk=T%J}q9iAW!LC*V3Z1x_i#tx;cH7#{Nk<A71ch@cp_S@olMA+WGHKG}gBXa2orq zKlNsB+D-O5Vc+Dwih3uMpA)^_&;3hmg0O1j-K(xCjNK1!-aD~hMQ?wjf_CArxK5U^ z^4dtz&F6O(Ck8zY&7bIh<mub`cfZyjQ1fSzi))XJ@#_u!ckso{*{(MxTrp3y*RpqC z_2+X^Ri_FQfBYTcSp8)>cIt*UhbQlzbHU$#&gHFV>_k?7V0%C1o-d1BQ-b+)tv{(f zKikhfsnfjXYtgcJ+ScTXr4wsICKwAhPA^n(FpD~4|G;pMmx4b#pAg@Dnb(uG`0M{) zUH3&P<$d8Xmj_FmcFvJM{l?z#@6#o{oZQdWTU>myWoB5NsowtCIv*xgo=I4D-sHU9 zJ2igKRWmkdC_PTjdnkWrQ$5Qux7?MU?(P?4k4VJD9sA?u(&znZdchN&=6`%G{11wp zls;TcELd>n->p@D-XFMpa$(D2hesbwKEAo{c&^@)#jYrbb%|c!eKoPTiCc6YX1to! zHRpZkw~4DRxvMbAGw#1R(KL1HUg68}{#?^Gh!{-%y*=t@`)RNFTk3yI<Jfax#&ut_ z2%d14%g@!edPNxBeZ8f?F0*{`x4O>-9}VWmNyl;P)YbIdoGNx$-#hBQZv<cat*;S2 z_b=-mzMvP%SDzRe$!;O{r1rq%Nm8mh^Hs~768`p<_w3g`AES2s6#w~k*_YSdZo2!b z$uE5ShEJS2$C*3#a2`&4cx7g8>(=Z467KGA5qNy}dG6mAA$Qr7`s7#-$xi%zv+jD* zn{@{__U)0jnP{Gv@#o+IzY`Jdr>(E$tT&H79x{K^1MY2y+?6Gl)w{n^&7FAt$=<Ce ze_iV=k2n@Q>6QwQ>=nnSH%hm!t9{<4o7_K9PqCEo`bC8gi*z<rre{B1+;BN}!|bPA z<$mc$r%7MiYkE62=Fv{oR8NUZ3vLvqJl=Ko_5H}JZzZk$a_Y{rsid*o>i!ZX?w-)- z^Kjejgui7PIU7={Bf|x+{jasFkN(s3bXr%KD$jOrSsC50XG+a;Dy|o9%{_0C=KOn` z<Cl94g$Y3mCM{Ll;3)d=-tWV2tX8mP%7`bdQC)L$)4!{WzMkHkQYq}lGEFklc+U1` z)vxa_d%ewmdDqn|PHU$#=r*3s&2SHhRARDzz@%=j(Br&Ap4)7%QUcf8+v@t~Up=m` zUpFl)L#0Q;C^>!ejul(0@7^~{`JKO`v~#0_-pYoqh8GTeUz<4I@TDa%rH2$8JI82~ z-#Fpm-S0jze<oY2{kK~6c-D*A22}y3uWsI0@4wD6?eoUvKKtXY6v`i%vMV4u`A<sO z!*w~^Hn5j%ipem~mc4XRfyHduHc|e)pXY7O@2o#1<@>}}BDKSL@xN8Fsh^*HGu$jc z#f$v`OUN^mw5fMk;}4uWd{}uy$)yK{V%xSyuh2B}II)T?Ovb$Q{jKdGsXOvd1l^f! z@aT`|awE-E(bxXQmbTxQ+4?iLSoVoq%0<oNJ*`WM`1=pAg)&|?K6Tcd_r<5K$-BMw z+I~EC=4)W*o_bF0lU&c2sb^Q8wLf9_?aQJMZ}XaWEKgX~Q+f1ZS}UJt!uwf2CUd1e z`q5+1(67&Qu{YLQ?cZ{<WAPe_6U`G-4_+<MmfOA0^5?F}YUMHK8a{4dS|_@DWuUbX zOW2&by6Ja}UbQrCI=ad)@R@(s`M$rY)<^enYKu7btep9%z9r{Pee~;NQu*sw9W=Ar zC33{g&F+~@R_F5tEPZ@i6>@ZDnP|(d_>vZ|{NgFUo7=L_N;4bH>|;|~6BEAc^YOlw zTi0K7`*E$};y%4!3EX?+6!n$bZxzm!JvFDB{TjRM3z;b$$sF6y`~90Lbk6sQZ^TcT zvPGvmjVJy8%Bg-XCP+JHJFh@JKlcL0TW1|(UcAfeeQTjxo^xPtoMOZIo_M?4EA~66 z9No*g`pDF<^zzN$T6S;u-Ser1clSRVz7@Z;0=8MF^Br>Hc=M=7bIWa3-HivO<T@^A zw6sSp{`WlcR{GQpT%LPMkN<e@@B5L}{CB?mm8oR~oIUAtlZA^kn79L^UQ|p@{!}j{ zpK{bg#^y@d+j&3Yd$n>@Qs)YXE!2K{!o|98|FRRaucs=$lbCWuarFt2Te)+Sxi(wQ zGj_^jHCx>*Un-Pbwd~*Q&1>HzfxNd?MT~u-`?HyQw#>WvUuwz$rGROS<ufOHoa5WF z@9n7>w`K~OL?3Z(FFsZFck0WG1gA|${1!*n*H=z{6a4O5sr-inYZ$#wHtH4fdw=$k zSnaqaYeVh15~g=<tA7NS`}svaZ(%8TDDlAm*yd}-%@r~&qVMJ|2`e+;-cuUB;KX+k zZpkyhww?a7bArA7)?YpzH^k@cN}qn^^}|gkH-6jCvn702w&H9tKBot}ryTTWx72&s zvQ1>Yi^tS@)36R^k0?irq@X(&SNuO1a@+oCUOCUH3C(I7*F?BH;yP~oU-m+K--`v) zmFo8HuHpQX_8?+{I%E1p&BT%|@mgj2jA{+MGCz$DaeL0m5$pUf>AQ~g-6TJWF!vRY z-OH=W0zUXm<t*&$|G?lV*INAS#H0urV_WrYo2MuC+S>)G)vs$m@V4f_>@H=obC-?& zzZF!;XZ`0GSe-rZ=k?V_TNb^2dE;F^i~YM5vy~WQlsq`~cC2NzlzhlE!F&3a=y^Y` z$No9XHJ>Nzwl;Tl=-S;To0fRVH+abunsvN<9Q#9eLbrsYx_^O+cAQg>d`rdMi50DK zOxcmTPK=-Lvs;#haJ;GKP|9iiQT-tNyzu7pCF@n|%oz52Ua{~0e0_%<^F;e&U*{}V zi=W>1^y+Jy)&Ig)T{u$Gag6IgImbUi@!uSdaT-(i9gH>WQ|Rp%)UDH>vQ}KKkh^An zr{gM4i?h?>OzxhVXRFnz?Y=?l-h-s`S8Zyx3xE3^aQ5Y<|0+uV<j$}1&#D)__hj1s z2IZZ)S6L0Wb=_Eh{DFKiqpVTbo5K2<_2+Ji9{3)!={qC;l!>2y$xQzsbN+Dk(Z|ch zrTe}JR4kKOG09=Ynu?hmM^{WR=Px^NRklas;qKj=zHae~-IwsWVE*l!uNMAQ62AQ| z^kely51G>?2aV?IUVmHFIjgQGtXAb&f?@r_IdguNS?1}lxWD^bR?-cVpw)7Et~@`z zSAM>~F0XrLeHF)@j4<x`zBc<^T;^M8W$()i@OZs7*>s;4)7!G<Fd6Gxl`~xr#++!{ zkhm!~#kl^)jjjKV%$)hivfEbS5nJ-tW75aW&(yj2uH1I`Opf7&Z#Pvxd+;a(%{J^x z+tat|Z~gI!8^8BX(bnY?o40J?Pw$0cbw|V(*6h8#wj^nx)7s9{Pn9R{C{omZ6t44Q z_q&gV1&+qc<3d8j_$qkQPwra(>tElaee#~ylM9Ns=v<Uk%?O;D`r7~Q;h!Dz>~{Rt zXtAk__OAEdmRj__{F<?{TWioa@#yE7G1F33uv%T!k=YYnA9GCbi0JC=D?f<|iP}8K zjtb9`)Vo&paZljwYK7ger?;nlD|A1lJo!k}gDbC<{F9ID;;0h)zt#5H<=;N*6ofWT zdzgCd<mPW0hlJ8%zkA<ocyQ11>ZWZOLKzp|v{|fr`pmSn@^w!2qkOT4lZ2i2I2CU@ z{_YqP>#-vlA#DpK4$ZTzXZJqKE7%cez{1(~ASKduo}}ENeO@n=5<bq?{^%|HDX^<m zo7-RS)3u|ndn>;#2;0$qpm0r0M?<sO=jl6oFRbI;xI6QRe{`~5DT`v40gvi4*Ii{- z6VFDZ{GIWj=k4r_qnT4bEey-lU+d#Hwei&NUwvAiW^S7JRkgn}nAcJ57GwP)A*Ylz zab;?g%3jR;!t?)C&n@%S5^|PVx67kbD>|Roh{)$~yPbdGyF&KegWzLt#BVPXKXu}W zT+`~m`)8c=E&lFqAtbuCE!{|H7yB;doZJ>m)=Msb!kTJXPy5C0h}Ty5xLfZk|L?$K z91>P8%It=0Wm~y)USIa}*`s(${OF&F^~z73x`l6VRqsCGS}A95*&+H)@x!mEQi=Fm zKZ}pAd$eg<=ZO;{D~pfpG(Ga5cKJ`mFDiFh+$0TFKAYp@D06VVc*Q-3va_k1BQBO7 z$mK{+Wk2I&-ubjx^WDG0fp_+4J7paGu*mC?I{V4=F9H@a$NY3c)3?pET^E?<FT3}$ zo6+6+`evv5-!&S1OCGIST)U$3Jm)0qhL>{Ak)?ZBPw)9|Xl+}XCtJglGClgm<m(Ch z&M~N8x_M7>dcp!G1J*k?7gwvz?MwLE=6u6!mh=bN?q4QrKT4c`JY8&;%q8asZ+rh3 zn4HZt{}f+1{nrV>inxbg{{F0O^k-UL@TELC)#2R<ZpZp{v$BPp|Jy9xTrJ3Wbk9u9 z-df$G@eMJ2InhlMt;8zyKQvhiuhmehz5BasVr$RV**`z8ec7#CaGGC{x$w@Rn;Uti zpU{wt5IFsN?c812_C@RuBo^G;JB?}Uzm`e=vNs$3xRxTg{;Tyaq1t=1{oc8+TY5lc zHHXyKmq9=7M~2<qB2X{%ecF{kTb0JlcJHH4TPE7Pe;xI?PVdW~_nWThzifZ6pu_hp z>h<;J<F>N$G4nX$&7w5)zS``oOJJIB^pbt{#+6#J)!*O!k(|nZZ$ib)i9auWNEQ*e z6nOvPqJp(^|9;vv>#scTzTXAUFUm39FWrzN|H>nHo{YAozx(!EZmWzZ7}Rg+lI;Cl zp7POYzQ+1z2Hgk03sfA}vwRUQa`w-pJFS9x(<kTn9lBt2Bj!Tv(aX-WS4$pY>fioF zp=v$9$mQ;!wX0iN79UA0+#@?LXxnFYtAB@Cg)9E;+us-R%f+YPo5jz=VwT<_nfTR( ziEG3DekdqQlMNG#`oP2K@BhfxBZ4Ws-s;rl)6@2fE{_pty#C!YiPP`p!#i$Q+SOmr zo=~vm=j$n<6&33q?y*_DuS`Sxj`M?)zwY$PXq{U(EzTtP)Dkr&brl^)oii>kf9fAw z5g$E)b>DWwd++bJWc+Gzx!2ON)H$+E-Rf7k!|M&4G28ac_pRT+%|Cfd)2s;_riA@? zZnU+%e&vtp{P$bsR`c~N&ph_wM_5X%P^QzNO9x|LMW*?$xOz%oUWd=_iP0qYN|VKV zE0q-!MRX0`8riJ7y6u2tU%@wlidD4_j3&)lwakA0E*>=%ot?bLe9!Z*;t%@xUQVp> zWu#kC%bSHtn>0C%6%!>jbT+L!QCT7QsQh{H;%c9~XS?d}i*meBo-83OH0@+B+pOHb ztvA(7qV|2Cb)Ttyo{)CyZX2skL&e0Kb241M{F%@$%<|4|33smTRjnr`g|^xtsh>I< zcHhYtt8B>Lv-`f|e>rih8SnRA`Qv!tqh}8%=jkpV-*fzWEYHMT-jy!={P)l675w(E zwn_*K3GqF2=iX62&pbZy%DuS}zptJQyv%-b9-A#EC+F!W?$$1rw_~pzxTCeiR&Ptk z`<;ElkI#UDbYa3r$r<zdIN7J&dfD5^$->EU`rM(Xb)E&BoX(A<E9N|wtSA!@w<<F) z>L}i3AjP{|SSYMchG*LE$gs_pp?9k|=Y%TwWjy~rearvK$eN|~&BvU$|9Biab+PNh zq~GahcP8JxJ@erVzyEW8m022Zk$ko8tNT1<yDM*IJa^o*<nHR`gOBdSuiC_SZ%#Pl zr@Kt&QZ!0a)i&HY_-jkpMdr<n40l>T8YMI>zF+R%piq#zKlAAGm&qz8X7E@Ay!-O{ z`l3g*>D=Y_-hB{Vu#-hOl)cWS{=V}Iy9vz3uk5yT&yfoCXWE?_$JC$C-!Mla)bE?< zGdt@Etm{Qx=NLZ`Tqye0p>`hAx|nxA)xy=+Pc4?t>Ix3K*|zD@!7E`aPTFL5|E+j@ z!qnor&UWcXQokqP*s52%OLv`uc8&bR0-+awSo*XYa$GFZRISdvD@wYmxi_=;#@+g} z{5-)=1;rPJu3k|zTl##5^2Et(=R!N?JW)JTeC>*$^rl!FJ&zR=bS^DFXdY5@itB#G zl+KpPg|qG3go<OHsI-V$PIaAbympc=*LK+-yA}A9X7INwKhwL?#kF$l#!9m*A$sXL zkF?JfJvT`xmjAVg<M8FiAOTY*LG7jIV^ns$tUq7AOKaVkBde{i6kG2Ud*sNWb8F_z z@KwT(a#r;p=iU_cb=|zrQ<;(+R-W0ybTRd(r%vBvk+nSix7KU^-6;3<ju+b-gI75r zE9DpqKmXh8oUYveVA?}99%n;#!Na<b9`!ukn4TqAxaj4}vl{);7v~nUocXfFi?3+T z1tZq!zS`k@^-i04&adovZ#p@vpDBZ3k-<wpJ-00z_M}DZ>b<h~lHSy;MT?}&ZOY`m z<|dg{2i?0??7}Xs<1TRhd9UZs^#=>x3k*-Ks1P#{O%id*nW?j}gj32|*PTISvDh2| z+10!D^ZOk>Y%FW*8fMVQnlby{_NPV%>v*46XD7|<<*d3dI=lX?@bS|hrp$V=`FQqQ zZEM%xQ#Q>^W|CX8`j&!+y7As4*_pE4&t=2otU{ud4Z`$KI=6C7S(a>_{%N{IbN`eF zJ5t48NBq=Tz5SnWjK(R4YO}*S3b%ZvN{!rq+uojJ*&BQ5U2uZ&LQ&?eRh?^A3Y4z8 z`!jO$?N9d|YmVx7YS+a~sNa!S&-7hqUeD8gVXeQ{e0eJ^wb}lBpZ0kP>!qHu1(Wss zYx{(B-=|IM3wpMeXZPx3x86<+E;C<wclO>hX`j^>b=PlOS@u!t*yG4h-A!vF1p?c) zvdt<{zkYXWz?>TipSIjgn)bn}*s^r$6x(|b^j<$JU8o)LdPAM+=|!9W2+0+EufLmp z-^?t|&Ohp5oM5`e-Sv4vZgbOC-q}~(B<ov!?%cOo;fvi5Jm^?#IOpuOukQsq&xhZ* zw6Xf|YDOUiGiK|3_MYp0wH0kETiJGXWAcTGTix^<t91%?U)suURFgU@Vfi-e>P0zg z<5NF0Je<E*HgtLF*86wjeE)6kywZQAMfuU2`mDC&XG}i(Ykaz~uupk++@!Aj88cVz zt<AcA<Nf+g)6NS&+f*0FbiHXU>#^{oIm`Sw`?t>czrA`#jm7=li|3>j*?)c$J7Moy zVIld*rM$0Jd{Ef@#{SIV`Apg0|Nm1IIzDR?m%f4aI!?tuZYRQGk9KaXO}>1*)h#vm zyZl-%kLUL4^}Ac^4?WqQB)8t+`+uPyg6%InH?zz*^7LSn&Emk9>zUMb9CLPwUA*r0 z_~(Q7f`7Q*-C;Y!WU3JF6jrUCf7r_1kGZmE_rIXcXDu)FwudWbDXp0~{Q&Qb6IRSy zPd(tM%G-TqKkI$oKMd){O1ldl39+@l)8i`YIbdm#UhcVh%cX+)bBvX?9=oG?3#C>x zi+Fn`ycDR&O;5U+e<}8;fIUa!Rf%}MR!OyT(FkT6nF@=SCaH`|4*hc$V?Qs=oV_%A zQjL&Mo7KD3=e-jqUY&Tr%R?g4{^C+I{l>e&l5<;H6qgs&2{3ujW0^9+;EG<!jOhm= zKZGn&RZLvLyWxy~g5uNIdSRh988iLH(;6#hdN~~`n4MtV!TL>$Q$sOvh2V2lgI8x& z=C`ycwtdO_XuDxXmQsP!Ap`3R?8+P7lwYz}R7~XH-EeWn^aElw)Apsh2@46eF~;_N zQ{PbjtAE?18A3vBllOC6{{4T!_BA=0y9H-$$olRg{b>7xBJR28c;3DXEn8oI<Ml!d zg;xqYx;r>_bnMvWy&zahkD+VFqc=Zq&h!3Or+@EVi$zfRABzV$6NINn%H0;oJFs)N z^~UWXdswGD3u>CGAUgM&@kGDX?S6l+pQ~E>dtRBil2(#q%oW9wuE!M)Ckl(KmOtn^ zH_>%{<C9oh8^Im+6Zmd91bfe%e?V$RQF6UlSX_FWa{~L1c0s$GnYF%Jch$BnkJwW7 ze@dlR$hT_~Chgs|y4slgT%D-w+`o1AGS#*(|CO@5VV=S>t=3$ood-@AtW@?tv{LtI zVg!50A8wZ2MhBkjoa$E&daF5e-K~kPYgpb+tN!Z8d;Z+)u97gVrwwno=KebOCj6<; z&ET%sf_kg{m;JbV&)FV5C|Pd7{W0F*iR28MS#@*Qgt4c^=4Qo-?}|H;DLVgK=oWeJ z5C0E5dVH|n`GY^h?P<Sf-Z4Cq@BAj#@$Dm@)$v!(tpB<=;?XwiXVFfA`rMT@i`ahe z=P);1zHzq9lt0|_borb!5AJ`QR4@OjqS33S@3DQvQkHpv^@-2-u;fkKbUNXAmc~U% z-xE!H)wn;tWV$bXi@o$h!u+${uTDljdv6hCs_C?0eO8Bf*DcZN!!3%lPp~fPs6Vk% z@4(OPS3~9>mTmfV?&PfZv!)-|dO%Nf+u9Ot8DERM+Q;Xw`I`MRn#EIlZLe^q@!X5Q zbT@vx{g>n12C=Cp&#be3T0i61X46x>H#jC7+IjrbHEvz)``c%E=o~70|0L~~@C}#c zg6|?uDiw-fyAu6ACiwQ(T^rXNjEH-5cn!<lXU$^0mu!U|$#>m;-hX1P?}n<<=i7RF z@9)cXF8%$b(|64VyJ_KKk2U1K++~xrpW2bNdFic+odWxJMR~k=S00-7dH02_XX;N} zt=}}s`b@{~+=!pQWOu*v@fDxpYTz96?edCR&ZXz#OXYHJ-)>=j8Fkcej?@kNlXp%A zzV&Q6S!X}}-Sb`F3twJ+{qEz2RZUrDNvZ)q_165&dLPmiW0Upm*RoG<SBABT`tcM` zF7-RIaqnAStK9gS_ea$4hFrTB5%ulQ-Q8y|S=IlYdS|Kj{CDraf0OuL8}xB+`77&i z7ER5JfNb}yw?)~<-mE?l{^!zij)*7Mo~@bk`~Mzu?z<<M?rjWGHz_}%cI&@Tah}%N z&#!_kzIKYeE%VEH=5Z%p@i0T1`wQtN86!qj+nY;l|3{yf4gB!8&8y}7_S@eMmPzVG zhpde3jhDauw*I}`{9EBmk2Wn{sI+MA$>y#u54W~ObHkR~^*j7YX!^vQ@}Tzq{qO&O z)(OvI4xBqdd*k*`AD6FuleNgMTr}c=E_+rWe`EPss|`-E8SJ6=)l7eH5dXd1Mre_R zoYEGiO;cP`o~uqv2vy*An;6=1;qdFe(9=6st@*O)Xoa%lqy1V>>rHO%6X%O%j&jR5 z-tm6B+LoGmk;kn!ZcALpZqe7bqn;t+BMaN^!<HWP4^BBeSg!Sk!EDWr@BIICSAD3} zKRoB8eKz+}Lz9P7j`VH4ExPKTSnQjqEBPv~ZZexD2;UcNuG9Ob-TW-z7+0}#n~Opc zm&Cej$9HagedLQ-j9=`*H*-VlcLeiAFuhkSNLTu{TV}s>N~&PQfkpop%$mFUt=<B) z!&|K#tPB@#&Hn7G^}Xw~ZpZw+1^F%oz2@6Ke^PrdobAaO_w(M4x(K!lPA|4J%(afc zE7%j=AnKE_|2mVsZGdEzbWJtO4Yft)jdlq~LvIxBUmEZ3SNPI>lFW@8U$ts8m(@$W zd)OeHD0Og3<*hltzB$IQu^WAqzrNR8P>m_|=@~xR%H5}KUHcivb0#z|{$`|(+3ZvP zmJvKL*OVWmgx-)@wc*O%wf*~ertJPDbZ|@jq?h{+9B-Ix86<hX+2Xsy!xP<(>*meA z{c`@qqnhlKnl19IUcaq-w|Vl+uRnYCvFzZe`d<G?PIV3Az84>!S<agzwW@gfyR(OS zDkByi6W94ZdzDn#0y&ut;#RjOf7*TW@u_GZq3JjG{w}C4+4kON>cyKL``1<LvL1U@ z`A%7G&TLNI_x4v;XY4n*^td5i?_q%`yHG`cQCCRuQ^i+rVi!eqirvV&WcU7VwNz%j z&~vw{@+a##X4Gez&Udxy*uL{f@!LyJS$@f%{oq{j^RPm9o$xKLduJ2{Zv9$(VP5pM zSpGRLkFtD_7WjX%YjX3B5;L(cah#maeh+rre3!4NONeh{)-BjN{d_so?8eJs5gLl8 z^TLIM#8zyP`|~W~#<aTq@80^osMcrSH-E|W2^;=AyMDCph0yJ}y7g<>Z=OhOeQ)e} zai8Yf2~Va^*s$hL>8BIs-828aTp`D_d+WDbxgS5sO5EmL;~(VX5n*;_$LZ}e(mU5| z-x(SCcCS-tp4cN_O(!3Zh_D>99hzMmp3j<oAkX#ts)y6g&nnKH6z_EC)6xBpzVUv| z^4gnp-c-NQdD_>Q$`AU>+gdp}PuH^^Kf5pE;)WO1>noEVRBi0PtK`@7YwiuM?-oTh zLTOHif-X;=JMHIozHReYmFt)I+o~|`2)wdCEpYxcGaD5Z9o5QKpU0)Ha{N(^o6XtE z-tKe|{HU*5sHUQ0EAl%iO|JRizw3L%A~sr@*#z%D7LtB9)uz)#F)>r2LezJkfpBp> z-)*M!i1Sm+|NWWv;Cf}0pO;63SIzZ_`8zb&<32|{c$v2Me($Z0nz$qKvr}eG*pL$V z!Sq_DS;Y^riZ$<Q*H=B9Kk3RJYsJKs0*(FMCEhZ!1!uh<ys$f;dcWx5ZO?U_oZbTe zyXxId>tc_-C_n4{fa`s=>&CXMKNUi`PKN@Q>(?jze|KX`@|WGudK+IWo-<b#P@bQ6 z^uzHbc568~-St0-&hM@Ky7I7Yz&zOxAOD$`2K3(NIJhq$^x?|PV0WiOfr<KxtL@^i zyv=Uk{pzywgD{H|?MDnZ*H727G4-@ke3(&jzR%50tc*Qffhqjs1M}ndaxVFe1yxp0 zCQK+eve8ni{=eYg580mI-W|DAu%f=Uy60bKz{g8l)+;MM?3fjQ=5+t;kn#-;i+<U% z*zK$Pz~AL?=F#uv%f4P;d~$}0kiKt*$@v`3liX2`U%t*<^S~=*U)Z+x<VOC)23Ll! z`q|IscjoT2==`hElPs?h8o$Y^@#@y2TQ5)E5zo$MpOJl8v0l4gd{4)GJ+(*IznKQh zHXI1v&HvX?(0yrDzenLmkE{cN3Rf=if3RV_e)RBx{uk^Mk4-R9dGp=bc<%Da$6owu z)>`oO$GjQRHx9)uZa?sLn#{BqS-Xet;zK98_syuCoz8gX_uofy6YQDQ5;w@Xa7#KX zaQs`luXzf$Qt?_p(WPR!2K(xFTIv0rUDEya?}`7+`}llx4|=R^{%8F^<`+9()04#~ z63QK&_oO+k{(pt*PHh3x`jxV3{71^d4fid-cuM{x$6C(n4Tlah_8wwc;jqebuUi>I zer%q);)==a@3Z5Rc(Ok*>MUbE$bJ5i%xv|*1xx?F`?-Jj^-Vwh7WG|IE<Pr(K(t<M zMah#agD#6{$IJagP1s(l-Ee*|;df%4=8j|hL8;TLr?B@QI>uL6@OAR)HU9NC85$kJ z3`4jcIGnJG{h70_<M^GO=N-=9R(y5r!pd6)&jog*&SiUiSnM}TtCho?-<Nc!C%5PP z;CsB3<;uR7QtJ<;E)e+FFe{?{zGcyxXVJ#T?$z%t{(j5+7YE0=*b8UmW7cG!&sAOJ zm!Y+9?*X4S<yl1^?#w*9=JOu*Fl!?-wv@{U`nBfxJ_vbmy!cOLxeedKrJqjZWXnyz zZJGFF(SyE+)yvJg8V^sBV|u<eiLr5evflg9kK*pri`(u_Eo;2M^}PS>8MUJ`-}SOv zv*<Sm|18isSHDB5RU$cQ2KVoFx31u-iipEEEjFB+HD}3-!%J4w)jViXOFHu4NSK+) z;a8EZ+4j<}J6``?a>`HopumsY2Y%NI8vFA%ZZ}aEx6;1nyWzif;Qu<6q+YE#*C%~Q zSs5Ds_GAiI-xg-Ww3Y;xLa)oI8xP$(nUbiq!$FcYll55EL?5eqy=fdFdL~g1gT$Wx z;$W#1EB*iA-`_pf>3(x_#C-Oy-@WTgb2^8U!NIdtn=Z`#;5+}xiCYt+-9Ej_eYdUF zaQln3UY3TN6T}^S?oWR!x8En}$IXTQ8J0&D>^C(Nv|m>d+^~#2>ayg~d!<MG-bacH z#6Nm)z_Dqwx<Rj=OZ&!IfwSv-rX;a67VWC|b?)x29ci~89dWCOiu)ye?DMsB*_ZRI zglDZaoWKxy{q*Z9)lEm5Rb%~^98NrHvs}aL)0xhDm2v%5^TV`%Ulsg3S8#jw(cABj z=LSxCt5~qnTkMa*gXoX1=1=(WZQ=CUR$Df4*G7N4J?s1)&$SGj&h_m3|3vw;*?yUN zg;;fsoY{IawwgVbzICLm%&Xe{?N!M|-Trc3wizE!ZH)RUTAa-$7?tX`dgj9<i%T=l zvE1Ri`sX(Xf9Ut$)hWtd-i>W$t?n@`%S81HzuXDjwC`QQtvc?c;O@|E_vS{JB|HmU zrG0m^_>Pw2yt@@-XRLg+p06>w_{-s?vJUtD^45P8P_^DPb58Qd(z9hB{iAO`RBSnV zI`T;7mTvX%(68;;uZ-8v)#E<3>e|U5{-t+|X6YVXRP?QIv(H&E{~Kn)|2z(Jymc>D zJippMJFxD+Z@=5!3I(cH7x<gL*2))>uI}NodLrb~YI;wudU>{~rsBTnmWA`mSvXFe zEcfr-dsfG$-jutJ<$dmsEB|?>M(cjK*Z1CT&nAvnA&YWmMis~HK6P)I)@%1n{~eFt zMqR55*4=!m_Ty#0_ePg?ZQyY2kpG%iQ@?wrZM}(E`Hx$d4q3}q?qR8v{qZdEt3<(0 zm2I2%i&?z(SiiH|!DQvz8SC~dKY6Nl^nQki<(kE67I~k%t(SM#*NaT_UA6d$75CPv z*IjGw{R+8y{&TcWWA;+sH`bjNxwG<3=I;n_?USB3!{x}A>jrv#r+zn|YIoe%Xkg58 zzHCj$AE(gP(*-|W3lClVB+TkQ<xujs@V<DCf7?0!^KNO&*&_Gk-22X#+|COmwyxRC zv3>eP^P_HWJC0^-`hV{<e@$)uq#Yca^<Gu%{wKcn=B?H4Ti*C_-np=M8`E3WzP8vS z+!H3>sT3$UW_0qP!2WYb*9%U6|M<>3zhuqSg^v!-Efnt)ztM7{az~6q`ur~^4#pN_ z?`2wlZ^w*|SeCe&i{JjS{5#V-+2r;EyBBBYuDX=Gtjy<6y6EAbv$E3Hs@xDt=b9o~ ze<}7}tOnQav^^QNSMQebe~MB{cxF<z{m0erwBNfgglbON+!o%%H>FD`B<FX<#j3kL z*>9YmrMx`zzpGJAkSFKHtjMr^W>4Of$?Ked!m(8$V)Yz*wz6`j3D3KDUwCm(5dC&> zQ`i4H8k_%5)QV7BQ}k=mmitkrQUAAQmkB=enftN6^Us0F>U&wl8hz%@3`@u|6A*i7 zX!)^z^$TH#^IohUgu=8d4fmz1<@fCCI5O3uQE2MU<6fKV?!UaY@z^x|wu-XV9ecR6 z*ZKVMjVOJQ^L35W-k;)1AI}{;$sMZA9Q-Sk_tY~*8<7LGUU%jk6rXdteroKWCX?*_ znpv3v!eRXNg7vF9pGBYgYAhdl#%<vl*}GPK=D&&!W>5e2Xh+E^`4dV$``2Xe@k+9| zfBM7bMJGkn*D!tBwcyD5^r(H;(u~<wZfR^z4Y;Pn`gwlf`DcGkoLKzUNFTq_WAWhU zt_4s1rAy-qpUY;i?+a854$@9sI@x@OzpVMj-~Gq-?!9`;h@(8PvHqr3LHLa5^A8O; z_VBk_&69rGP+g?Od@S8QI9fQ)e0S|9-jvP*oZ8p&kIDF1l>Rc6_Mh>u>G;92Om+p6 zmihOBty6x?l2xi>Ym~iwXxd%Ii|0D`uvTAs6p;Nl*DUOJWUkoxj}sm}Y?;d5*|k1@ zfBxx{Yxn=p)IH3u(UzbW&^@Pqy5!Hh?R<0jGaE$>S|fswxmtxvu{Bn?ntkTFt;Ihf ztV~Z+&M(5zApBG3kF~wuGxuED_Ee00P0FO{ho*g<ICJB%#J6)!@@1zTJSn?MCW+_s zRbD#_r7gzyC-qO?ADx{RzPs4x)%qzLoO1NDu3poyt}j1c@|v%+S#|9yg*9u_*VG3) z?hZ}t<7ix%T)Fj(f>xOIo@a;uzPoI<thD#}o<(KvZ&(+oPqaw<vM{dVvuNV(+MC<1 zvdv~%B)rx4bzNI#*^T+9`Q}&6{rWI#(IIv1B?l93>t5}Yezbo>^m&bCuj`d6yV`}_ zB-U*)KeKP$#(h8aKHf@ry_YG{c=12s6G<@vw)L$!6Z9{)1>|%8lv2OpG(S?I{K=P_ z;jPwRw-iNx{4?c>mxODGVZz&E)sNQ6uJ6;0wy4~@IYuRW;m&1#6LmKkA5LuFyl&1G z#iC8yGtPJ{SAN9wIPvV>oSyCV-_>vT-HnK>bG)^3s)3ir;!SybzRsL{?S0M8Eo-Hg z@J!U&lK$YEWc`iGTM55y*^~?pN@iPb_dm>k-Aa+Ctj%IxMDFCT*72Jjx*w03YI=BQ zO6L*I!~GGOudj#P-}yk%I=*QB)~kzNS-s!Ep0|JB<~kb>D-G!{-A5DBnBLvJvGe4D zR+*{S(!S2sw|T}cy)J07v8}GYDvv2k`RzSsetR>%$G(;Kzq_@d{_#`3MFqEB3NUqh zJxS}X6rJifvu!@J+_3~zX_*ys@9e0HR{nFVyl%_C`!?yxxAJBhOfgt!w6pltnYsGA zihUpNzHY{TCQ?&oKkK~ha$QM<{Zn+m%~dMknya?!zT}5C#vRp{-%KwH{j|t*yMJ8g z>5VEv>O8{bu_ugf|2oiXtpBOrw^#q|8vQ#3Uf*}g&B!fq`DUa$>wweqClAveD3{!_ z=ex8nEbG|D<K}j@mB)W{AKj!K<F>gX@(`D5!IZgHasO^vF8BX`z3tYc8QXbxeCDtX zFH^~TbXVG!q4}EZjrGoFj?4TveGq%#))FgD=LXFW;*I~0Z?L_wK}>76)Q&R~=X%zc z3r&->KA_KRXVt@Req<`!UuDPB@qvHtDPL?-QcQHb^}MO;zO>VysfnuZ1B7n~8g<S; zvFVeg(4TKhf;hd|9gl8%68Saf>W`C&e#`kv*T$DmIAb?m{HgJgoraoWhb~F*|6kbl z<Fw=3&xh-7rKxn4a{uF9@=Nvjdf(&Ih5A-4>#VPpJmr00y)<jA^wO-~_Cjmt^&RO~ zbM?0PlosyrR!jTQW!e3iA!l0pruF>IyZUOUSB>|kBb@F+j;qX99(%s~$F;z!cNbrk zUq0z(-ufd*<sah(FW1MyVx4!L{=8NA$S;uJKPyq<W?QJ!SGDt}(>;&9U6Q)2rS(>m z-;wIc6{VdC_4#)fhc0fLsJdadLgk<DI@<GlZi`R$p1VQesQCXKSzl8Q+FPIUyW_FF z=S@k^26?NeM+5ezzP~bSf<e8+HNMENv(|*!3hyX=qQ2;&ydYz`c+lPu=gOJd-&KUv z&y>z&{UG1Erlv~lQ9Rc^rBCYG%Q81xREVwb`1*=--p}+&r_|omn;%u4x%YZkMPpZO zk!vfHwyyERgZtk{mTnaI&y!dlbU!q&a;|mLG4a&OuT0_li<efW?{Yf6Rx@k;X{S95 ze?EKmhU?bee|=-I;5}V!ljA#$IPc6&b^Wo-qozyXzeCGf&xPULhu@fUeT;0{&#>cc zc!8fw_^*OpmxH#NU+sFeQL+98`{bte8E4pf>lcUg3x4Kb+a`W3)Nl>osyh=>KUxZ{ z^7j2xtr@&`(HvcuKaXck@4p`KcOpl0_~{R?vZQht%{Q(#SuGcRdbPddpLZ@#E~@1P z{Ff7&&;2oT(Z91-)!1WuoArN$gdMp)`KbG@TlP+;!usbt>bfuH^!2xEoSoYdyZQ&K zOSt>j<(YnvuNI4Ed%Bpl-rPy~?P|GCg2i=ON$XE_zk0qop`QOu)Y;n^rYl(<)YUG# z+HI6;KQCY(f1(*@>Wc#QAK9{UeZN+_?$B<vcVDsQjaT8C)*rl@r{Y7OKVKtR$2~QD z_wrv?PWPOZdt_a(Zh}U+N}&pOjluUE{&m6iTkrEMtYUez-u;K?q;r=}?2m4|;`(QH zSFB!0f5F!4yDOCPl|D2TDog!$*-{lD_9$PWjyFJUql|3Jfps>U`8hwXoEg^7oAqD* z+_op0>f%*_VUAbci+(KU_@?J79~xOP&qADe_AcxCNekF`qIYfD9d~4Xlzrge=$@j( zS8~2D$fy?zQ2HPkwngKR_`&@hzp_n!xQ2Y<Dc;-QSHHdG@YEGQ?&^K>JZdj<#6Deb zce9n@vd{*X2TM1c`4Kzo=I+iq*QqaWM!gI!sMI=fo>6*I%P+r%?+x{mf0DP_)Ga%- zJt9QK(y;Tu=_5&2mE!vykK`YCD=)CKo}(zSr>JqaO_SgE`m0yZ+>MTTH2vt$9*g;< zH<TWAR4C;tefTglRq%gc!0*7+Ut&l7`5e!!Uu4JhWaB%Vl=-XoCY?Q}_n`WKxXkZO ztiP?2qMKPg-W4i+=#WS&5O~NZx?7p$XUF5MMn!EJ_N$lm8^2ljsEDoL4ael0jk^W& zivHYg{2?m3ZoN&8*pj#P`_B7%da%gFI+bV5*w!Gw;19#b?~)r&B<;u-s4kFvs;E>Y zrj-6@4&R;S&o>_sknt#Q+%35O=-jghc=_&!KKiOxw0yOTp|eZXEL(LIru7b=dH8Y< z=8J8dUAV4{_56y!lgl=qd6%v?Tjy1+YC(LtU$2^U<JXc|^ZE;)T>s#mu&n+ylmE^i z{>=s2=jL9#$#iE`)^?V!w{I^EQMxoUbW*7=OI+`Z`~`bh@5nUW*Wud{sLf-1vTS?G z+DFo#6ke~^c<r0Ach~yT6rmXmlFY9hcuzE5P~FKWxMG(|Zlif)B>z5dpJfM^J1%RG zef6d&=hT!;M&XtWCMWfeQw(CNp3GxYRaZ<5nYb-TO+|%CT}4HQ{oj8^hD{He?w;XY S{E~rzfx*+&&t;ucLK6T22|x`1 delta 10744 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½QDCm&)Y-Z_UgG+EgR?Es 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 diff --git a/wp-content/plugins/nextgen-gallery/freemius/assets/scss/_colors.scss b/wp-content/plugins/nextgen-gallery/freemius/assets/scss/_colors.scss index 77349cb40..f41f62a5e 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/assets/scss/_colors.scss +++ b/wp-content/plugins/nextgen-gallery/freemius/assets/scss/_colors.scss @@ -44,6 +44,17 @@ $button-secondary-bkg: #333; $button-secondary-color: $fms-white; $featured-color: #6bc406; $wp-selected-color: #0074a3; +$wp-button-alert-border-color: #d2593c; +$wp-button-alert-border-top-color: #ec6544; +$wp-button-alert-shadow-color: #d2593c; +$wp-button-alert-focused-shadow1-color: #dd6041; +$wp-button-alert-focused-shadow2-color: #e4a796; +$wp-button-alert-background-color: #f56a48; +$wp-button-alert-hovered-background-color: #fd6d4a; +$wp-button-alert-active-background-color: #dd6041; +$wp-button-alert-disabled-color: #f5b3a1; +$wp-button-alert-disabled-background-color: #e76444; +$wp-button-alert-disabled-border-color: #d85e40; $wordpress_color: #01749A; $blogger_color: #ff8100; diff --git a/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/_buttons.scss b/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/_buttons.scss new file mode 100644 index 000000000..a7e02eb1d --- /dev/null +++ b/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/_buttons.scss @@ -0,0 +1,28 @@ +.button-primary.warn { + box-shadow: 0 1px 0 $wp-button-alert-shadow-color; + text-shadow: 0 -1px 1px $wp-button-alert-shadow-color, 1px 0 1px $wp-button-alert-shadow-color, 0 1px 1px $wp-button-alert-shadow-color, -1px 0 1px $wp-button-alert-shadow-color; + background: $wp-button-alert-background-color; + border-color: $wp-button-alert-border-top-color $wp-button-alert-border-color $wp-button-alert-border-color; + + &:hover { + background: $wp-button-alert-hovered-background-color; + border-color: $wp-button-alert-border-color; + } + + &:focus { + box-shadow: 0 1px 0 $wp-button-alert-focused-shadow1-color, 0 0 2px 1px $wp-button-alert-focused-shadow2-color; + } + + &:active { + background: $wp-button-alert-active-background-color; + border-color: $wp-button-alert-border-color; + box-shadow: inset 0 2px 0 $wp-button-alert-shadow-color; + } + + &.disabled { + color: $wp-button-alert-disabled-color !important; + background: $wp-button-alert-disabled-background-color !important; + border-color: $wp-button-alert-disabled-border-color !important; + text-shadow: 0 -1px 0 rgba(0,0,0,.1) !important; + } +} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/_plugin-upgrade-notice.scss b/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/_plugin-upgrade-notice.scss new file mode 100644 index 000000000..ba8862fc1 --- /dev/null +++ b/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/_plugin-upgrade-notice.scss @@ -0,0 +1,8 @@ +.plugins p.fs-upgrade-notice +{ + border: 0; + background-color: #d54e21; + padding: 10px; + color: #f9f9f9; + margin-top: 10px; +} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/_subscription-cancellation.scss b/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/_subscription-cancellation.scss new file mode 100644 index 000000000..c9a86b84c --- /dev/null +++ b/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/_subscription-cancellation.scss @@ -0,0 +1,30 @@ +.fs-modal.fs-modal-subscription-cancellation { + .fs-price-increase-warning { + color: red; + font-weight: bold; + padding: 0 25px; + margin-bottom: 0; + } + + ul.subscription-actions label { + input { + float: left; + top: 5px; + position: relative; + + .rtl & { + float: right; + } + } + + span { + display: block; + margin-left: 24px; + + .rtl & { + margin-left: 0; + margin-right: 24px; + } + } + } +} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/common.scss b/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/common.scss index 86cc6c347..4bbba1fc2 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/common.scss +++ b/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/common.scss @@ -1,7 +1,7 @@ @import "../start"; @import "themes"; -#iframe +#fs_frame { line-height: 0; font-size: 0; @@ -215,4 +215,6 @@ span.fs-submenu-item.fs-sub:before h2 { text-align: left; } -} \ No newline at end of file +} + +@import "plugin-upgrade-notice"; \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/dialog-boxes.scss b/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/dialog-boxes.scss index d479627bb..f4408a3b4 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/dialog-boxes.scss +++ b/wp-content/plugins/nextgen-gallery/freemius/assets/scss/admin/dialog-boxes.scss @@ -1,8 +1,10 @@ @import "../start"; @import "modal-common"; @import "deactivation-feedback"; +@import "subscription-cancellation"; @import "license-activation"; @import "multisite-options"; @import "license-key-resend"; @import "ajax-loader"; -@import "auto-install"; \ No newline at end of file +@import "auto-install"; +@import "buttons"; \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/class-freemius.php b/wp-content/plugins/nextgen-gallery/freemius/includes/class-freemius.php index a8265372c..d85a5baf8 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/includes/class-freemius.php +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/class-freemius.php @@ -33,6 +33,12 @@ * @var string */ private $_plugin_basename; + /** + * @since 2.2.1 + * + * @var string + */ + private $_premium_plugin_basename; /** * @since 1.0.0 * @@ -671,11 +677,12 @@ version_compare( $sdk_version, '1.2.3', '>=' ) ) { /** - * Starting from version 1.2.3, paths are stored as relative paths and not absolute paths; so when upgrading to 1.2.3, make paths relative. + * Starting from version 1.2.3, paths are stored as relative instead of absolute and some of them can be + * invalid. * * @author Leo Fajardo (@leorw) */ - $this->make_paths_relative(); + $this->remove_invalid_paths(); } if ( version_compare( $sdk_prev_version, '1.1.5', '<' ) && @@ -699,6 +706,25 @@ } } + + if ( + version_compare( $sdk_prev_version, '2.2.1', '<' ) && + version_compare( $sdk_version, '2.2.1', '>=' ) + ) { + /** + * Clear the file cache without storing the previous path since it could be a wrong path. For example, + * in the versions of the SDK lower than 2.2.1, it's possible for the path of an add-on to be the same + * as the parent plugin's when the add-on was auto-installed since the relevant method names were not + * skipped in the logic that determines the right path in the `get_caller_main_file_and_type` method + * (e.g. `try_activate_plugin`). Since it was an auto-installation, the caller was the parent plugin + * and so its path was used. In case the stored path is wrong, clearing the cache will resolve issues + * related to data mix-up between plugins (e.g. titles and versions of an add-on and its parent plugin). + * + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + */ + $this->clear_module_main_file_cache( false ); + } } /** @@ -824,30 +850,12 @@ } /** - * Makes paths relative. + * Remove invalid paths. * * @author Leo Fajardo (@leorw) * @since 1.2.3 */ - private function make_paths_relative() { - $id_slug_type_path_map = self::$_accounts->get_option( 'id_slug_type_path_map', array() ); - - if ( isset( $id_slug_type_path_map[ $this->_module_id ]['path'] ) ) { - $id_slug_type_path_map[ $this->_module_id ]['path'] = $this->get_relative_path( $id_slug_type_path_map[ $this->_module_id ]['path'] ); - - self::$_accounts->set_option( 'id_slug_type_path_map', $id_slug_type_path_map, true ); - } - - if ( isset( $this->_storage->plugin_main_file ) ) { - $plugin_main_file = $this->_storage->plugin_main_file; - - if ( isset( $plugin_main_file->path ) ) { - $this->_storage->plugin_main_file->path = $this->get_relative_path( $this->_storage->plugin_main_file->path ); - } else if ( isset( $plugin_main_file->prev_path ) ) { - $this->_storage->plugin_main_file->prev_path = $this->get_relative_path( $this->_storage->plugin_main_file->prev_path ); - } - } - + private function remove_invalid_paths() { // Remove invalid path that is still associated with the current slug if there's any. $file_slug_map = self::$_accounts->get_option( 'file_slug_map', array() ); foreach ( $file_slug_map as $plugin_basename => $slug ) { @@ -1230,6 +1238,22 @@ <?php } + /** + * Opens the support forum subemenu item in a new browser page. + * + * @author Vova Feldman (@svovaf) + * @since 2.1.4 + */ + static function _open_support_forum_in_new_page() { + ?> + <script type="text/javascript"> + (function ($) { + $('.fs-submenu-item.wp-support-forum').parent().attr('target', '_blank'); + })(jQuery); + </script> + <?php + } + /** * @author Vova Feldman (@svovaf) * @since 1.0.9 @@ -1241,6 +1265,26 @@ add_action( 'plugins_loaded', array( &$this, '_hook_action_links_and_register_account_hooks' ) ); if ( $this->is_plugin() ) { + if ( self::is_plugin_install_page() && true !== fs_request_get_bool( 'fs_allow_updater_and_dialog' ) ) { + /** + * Unless the `fs_allow_updater_and_dialog` URL param exists and its value is `true`, make + * Freemius-related updates unavailable on the "Add Plugins" admin page (/plugin-install.php) + * so that they won't interfere with the .org plugins' functionalities on that page (e.g. + * updating of a .org plugin). + */ + add_filter( 'site_transient_update_plugins', array( 'Freemius', '_remove_fs_updates_from_plugin_install_page' ), 10, 2 ); + } else if ( self::is_plugins_page() || self::is_updates_page() ) { + /** + * On the "Plugins" and "Updates" admin pages, if there are premium or non–org-compliant + * plugins, modify their details dialog URLs (add a Freemius-specific param) so that the SDK can + * determine if the plugin information dialog should show information from Freemius. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + */ + add_action( 'admin_footer', array( 'Freemius', '_prepend_fs_allow_updater_and_dialog_flag_url_param' ) ); + } + $plugin_dir = dirname( $this->_plugin_dir_path ) . '/'; /** @@ -1408,6 +1452,84 @@ } } + /** + * Makes Freemius-related updates unavailable on the "Add Plugins" admin page (/plugin-install.php) so that + * they won't interfere with the .org plugins' functionalities on that page (e.g. updating of a .org plugin). + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + * + * @param object $updates + * @param string|null $transient + * + * @return object + */ + static function _remove_fs_updates_from_plugin_install_page( $updates, $transient = null ) { + if ( is_object( $updates ) && isset( $updates->response ) ) { + foreach ( $updates->response as $file => $plugin ) { + if ( false !== strpos( $plugin->package, 'api.freemius' ) ) { + unset( $updates->response[ $file ] ); + } + } + } + + return $updates; + } + + /** + * Prepends the `fs_allow_updater_and_dialog` param to the plugin information URLs to tell the SDK to handle + * the information that is shown on the plugin details dialog that is shown when the relevant link is clicked. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + * + * @return string + */ + static function _prepend_fs_allow_updater_and_dialog_flag_url_param() { + $slug_basename_map = array(); + foreach ( self::$_instances as $instance ) { + if ( ! $instance->is_plugin() ) { + continue; + } + + $slug_basename_map[ $instance->get_slug() ] = $instance->premium_plugin_basename(); + } + ?> + <script type="text/javascript"> + (function( $ ) { + var slugBasenameMap = <?php echo json_encode( $slug_basename_map ) ?>; + for ( var slug in slugBasenameMap ) { + var basename = slugBasenameMap[ slug ]; + + // Try to get the plugin rows if on the "Plugins" page. + var $pluginRows = $( '.wp-list-table.plugins tr[data-plugin="' + basename + '"]'); + + if ( 0 === $pluginRows.length ) { + // Try to get the plugin rows if on the "Updates" page. + var $pluginCheckbox = $( '#update-plugins-table input[type="checkbox"][value="' + basename + '"]' ); + if ( 0 !== $pluginCheckbox.length ) { + $pluginRows = $pluginCheckbox.parents( 'tr:first' ); + } + } + + if ( 0 === $pluginRows.length ) { + // No plugin rows found. + continue; + } + + // Find the "View details" links and add the `fs_allow_updater_and_dialog` param to the URL. + $pluginRows.find( 'a[href*="plugin-install.php?tab=plugin-information"]' ).each(function() { + var $this = $( this ), + href = $this.attr( 'href' ).replace( '?tab=', '?fs_allow_updater_and_dialog=true&tab='); + + $this.attr( 'href', href ); + }); + } + })( jQuery ); + </script> + <?php + } + /** * Keeping the uninstall hook registered for free or premium plugin version may result to a fatal error that * could happen when a user tries to uninstall either version while one of them is still active. Uninstalling a @@ -1428,23 +1550,37 @@ /** * @since 1.2.0 Invalidate module's main file cache, otherwise, FS_Plugin_Updater will not fetch updates. + * + * @param bool $store_prev_path */ - private function clear_module_main_file_cache() { + private function clear_module_main_file_cache( $store_prev_path = true ) { if ( ! isset( $this->_storage->plugin_main_file ) || - empty( $this->_storage->plugin_main_file->path ) + empty( $this->_storage->plugin_main_file->path ) ) { return; } - $plugin_main_file = clone $this->_storage->plugin_main_file; + if ( ! $store_prev_path ) { + /** + * Storing the previous path is not needed when clearing the cache after an SDK version update since + * the main purpose of the cache clearing in that event is to correct a wrong plugin main file path + * which causes data mix-up between plugins (e.g. titles and versions of an add-on and its parent plugin). + * + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + */ + unset( $this->_storage->plugin_main_file->path ); + } else { + $plugin_main_file = clone $this->_storage->plugin_main_file; - // Store cached path (2nd layer cache). - $plugin_main_file->prev_path = $plugin_main_file->path; + // Store cached path (2nd layer cache). + $plugin_main_file->prev_path = $plugin_main_file->path; - // Clear cached path. - unset( $plugin_main_file->path ); + // Clear cached path. + unset( $plugin_main_file->path ); - $this->_storage->plugin_main_file = $plugin_main_file; + $this->_storage->plugin_main_file = $plugin_main_file; + } /** * Clear global cached path. @@ -1491,6 +1627,11 @@ array( &$this, '_submit_uninstall_reason_action' ) ); + $this->add_ajax_action( + 'cancel_subscription_or_trial', + array( &$this, 'cancel_subscription_or_trial_ajax_action' ) + ); + if ( ! $this->is_addon() || $this->is_parent_plugin_installed() ) { if ( ( $this->is_plugin() && self::is_plugins_page() ) || ( $this->is_theme() && self::is_themes_page() ) @@ -1615,7 +1756,7 @@ return fs_normalize_path( trailingslashit( $is_plugin ? WP_PLUGIN_DIR : - get_theme_root() ) ); + get_theme_root( get_stylesheet() ) ) ); } /** @@ -1680,11 +1821,11 @@ private function get_caller_main_file_and_type() { self::require_plugin_essentials(); - $all_plugins = get_plugins(); + $all_plugins = fs_get_plugins( true ); $all_plugins_paths = array(); // Get active plugin's main files real full names (might be symlinks). - foreach ( $all_plugins as $relative_path => &$data ) { + foreach ( $all_plugins as $relative_path => $data ) { if ( false === strpos( fs_normalize_path( $relative_path ), '/' ) ) { /** * Ignore plugins that don't have a folder (e.g. Hello Dolly) since they @@ -1702,7 +1843,7 @@ $caller_file_candidate = false; $caller_map = array(); $module_type = WP_FS__MODULE_TYPE_PLUGIN; - $themes_dir = fs_normalize_path( get_theme_root() ); + $themes_dir = fs_normalize_path( get_theme_root( get_stylesheet() ) ); for ( $i = 1, $bt = debug_backtrace(), $len = count( $bt ); $i < $len; $i ++ ) { if ( empty( $bt[ $i ]['file'] ) ) { @@ -1722,7 +1863,10 @@ 'requir' . 'e_once', 'requir' . 'e', 'includ' . 'e_once', - 'includ' . 'e' + 'includ' . 'e', + 'install_and_activate_plugin', + 'try_activate_plugin', + 'activate_plugin' ) ) ) { // Ignore call stack hooks and files inclusion. @@ -2058,6 +2202,51 @@ exit; } + /** + * @author Leo Fajardo (@leorw) + * @since 2.1.4 + */ + function cancel_subscription_or_trial_ajax_action() { + $this->_logger->entrance(); + + $this->check_ajax_referer( 'cancel_subscription_or_trial' ); + + $result = $this->cancel_subscription_or_trial( fs_request_get( 'plugin_id', $this->get_id() ), false ); + + if ( $this->is_api_error( $result ) ) { + $this->shoot_ajax_failure( $result->error->message ); + } + + $this->shoot_ajax_success(); + } + + /** + * @author Leo Fajardo (@leorw) + * @since 2.1.4 + * + * @param number $plugin_id + * + * @return object + */ + private function cancel_subscription_or_trial( $plugin_id ) { + $fs = null; + if ( $plugin_id == $this->get_id() ) { + $fs = $this; + } else if ( $this->is_addon_activated( $plugin_id ) ) { + $fs = self::get_instance_by_id( $plugin_id ); + } + + $result = null; + + if ( ! is_null( $fs ) ) { + $result = $fs->is_paid_trial() ? + $fs->_cancel_trial() : + $fs->_downgrade_site(); + } + + return $result; + } + /** * @author Leo Fajardo (@leorw) * @since 2.0.2 @@ -2134,16 +2323,18 @@ * @since 1.2.2 * * @param string|number $id_or_slug + * @param string $module_type * * @return number|false */ - private static function get_module_id( $id_or_slug ) { + private static function get_module_id( $id_or_slug, $module_type = WP_FS__MODULE_TYPE_PLUGIN ) { if ( is_numeric( $id_or_slug ) ) { return $id_or_slug; } foreach ( self::$_instances as $instance ) { - if ( $instance->is_plugin() && ( $id_or_slug === $instance->get_slug() ) ) { + // Also check the module type since there can be a plugin and a theme with the same slug. + if ( ( $module_type === $instance->get_module_type() ) && ( $id_or_slug === $instance->get_slug() ) ) { return $instance->get_id(); } } @@ -2170,15 +2361,16 @@ * @author Vova Feldman (@svovaf) * @since 1.0.1 * - * @param $plugin_file + * @param string $plugin_file + * @param string $module_type * * @return false|Freemius */ - static function get_instance_by_file( $plugin_file ) { + static function get_instance_by_file( $plugin_file, $module_type = WP_FS__MODULE_TYPE_PLUGIN ) { $slug = self::find_slug_by_basename( $plugin_file ); return ( false !== $slug ) ? - self::instance( self::get_module_id( $slug ) ) : + self::instance( self::get_module_id( $slug, $module_type ) ) : false; } @@ -2292,10 +2484,13 @@ function is_site_activation_mode( $and_on = true ) { return ( ( $this->is_on() || ! $and_on ) && - ( ! $this->is_registered() || - ( $this->is_only_premium() && ! $this->has_features_enabled_license() ) ) && - ( ! $this->is_enable_anonymous() || - ( ! $this->is_anonymous() && ! $this->is_pending_activation() ) ) + ( $this->is_premium() && true === $this->_storage->require_license_activation ) || + ( + ( ! $this->is_registered() || + ( $this->is_only_premium() && ! $this->has_features_enabled_license() ) ) && + ( ! $this->is_enable_anonymous() || + ( ! $this->is_anonymous() && ! $this->is_pending_activation() ) ) + ) ); } @@ -2330,7 +2525,7 @@ return false; } - if ( $this->is_network_anonymous() ) { + if ( $this->is_network_anonymous() && true !== $this->_storage->require_license_activation ) { // Super-admin skipped the connection network wide -> not activation mode. return false; } @@ -2451,7 +2646,7 @@ self::require_plugin_essentials(); $active_plugin = array(); - $all_plugins = get_plugins(); + $all_plugins = fs_get_plugins(); $active_plugins_basenames = self::get_active_plugins_basenames( $blog_id ); foreach ( $active_plugins_basenames as $plugin_basename ) { @@ -2477,6 +2672,11 @@ get_option( 'active_plugins' ); $active = array(); + + if ( ! is_array( $active_basenames ) ) { + return $active; + } + foreach ( $active_basenames as $basename ) { $active[ $basename ] = array( 'is_active' => true, @@ -2501,7 +2701,7 @@ private static function get_all_plugins( $blog_id = 0 ) { self::require_plugin_essentials(); - $all_plugins = get_plugins(); + $all_plugins = fs_get_plugins(); $active_plugins_basenames = self::get_active_plugins_basenames( $blog_id ); @@ -2533,7 +2733,7 @@ private static function get_network_plugins() { self::require_plugin_essentials(); - $all_plugins = get_plugins(); + $all_plugins = fs_get_plugins(); $network_active_basenames = is_multisite() ? get_site_option( 'active_sitewide_plugins' ) : @@ -2677,6 +2877,8 @@ } add_action( 'admin_footer', array( 'Freemius', '_enrich_ajax_url' ) ); + add_action( 'admin_footer', array( 'Freemius', '_open_support_forum_in_new_page' ) ); + self::$_statics_loaded = true; } @@ -2775,6 +2977,10 @@ * @since 1.1.7.3 */ static function _toggle_debug_mode() { + if ( ! is_super_admin() ) { + return; + } + $is_on = fs_request_get( 'is_on', false, 'post' ); if ( fs_request_is_post() && in_array( $is_on, array( 0, 1 ) ) ) { @@ -2806,8 +3012,16 @@ * @since 1.2.1.7 */ static function _get_db_option() { + check_admin_referer( 'fs_get_db_option' ); + $option_name = fs_request_get( 'option_name' ); + if ( ! is_super_admin() || + ! fs_starts_with( $option_name, 'fs_' ) + ) { + self::shoot_ajax_failure(); + } + $value = get_option( $option_name ); $result = array( @@ -2830,7 +3044,16 @@ * @since 1.2.1.7 */ static function _set_db_option() { - $option_name = fs_request_get( 'option_name' ); + check_admin_referer( 'fs_set_db_option' ); + + $option_name = fs_request_get( 'option_name' ); + + if ( ! is_super_admin() || + ! fs_starts_with( $option_name, 'fs_' ) + ) { + self::shoot_ajax_failure(); + } + $option_value = fs_request_get( 'option_value' ); if ( ! empty( $option_value ) ) { @@ -4068,14 +4291,16 @@ * @author Vova Feldman (@svovaf) */ if ( $this->is_user_in_admin() && - ! $this->is_addon() && - $this->has_addons() && - 'plugin-information' === fs_request_get( 'tab', false ) && - $this->get_id() == fs_request_get( 'parent_plugin_id', false ) + 'plugin-information' === fs_request_get( 'tab', false ) && + $this->should_use_freemius_updater_and_dialog() && + ( + ( $this->is_addon() && $this->get_slug() == fs_request_get( 'plugin', false ) ) || + ( $this->has_addons() && $this->get_id() == fs_request_get( 'parent_plugin_id', false ) ) + ) ) { require_once WP_FS__DIR_INCLUDES . '/fs-plugin-info-dialog.php'; - new FS_Plugin_Info_Dialog( $this ); + new FS_Plugin_Info_Dialog( $this->is_addon() ? $this->get_parent_instance() : $this ); } // Check if Freemius is on for the current plugin. @@ -4189,7 +4414,21 @@ * @author Vova Feldman * @since 1.2.1.6 */ - if ( $this->is_premium() && $this->has_release_on_freemius() ) { + if ( + $this->should_use_freemius_updater_and_dialog() && + ( + $this->is_premium() || + /** + * If not premium but the premium version is installed, also instantiate the updater so that the + * plugin information dialog of the premium version will have the information from the server. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + */ + ( file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $this->premium_plugin_basename() ) ) ) + ) && + $this->has_release_on_freemius() + ) { FS_Plugin_Updater::instance( $this ); } @@ -4232,6 +4471,26 @@ } } + /** + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + * + * @return bool + */ + private function should_use_freemius_updater_and_dialog() { + return ( + /** + * Unless the `fs_allow_updater_and_dialog` URL param exists and its value is `true`, disallow updater + * and dialog on the "Add Plugins" admin page (/plugin-install.php) so that they won't interfere with + * the .org plugins' functionalities on that page (e.g. installation and viewing plugin details from + * .org). + */ + ( ! self::is_plugin_install_page() || true === fs_request_get_bool( 'fs_allow_updater_and_dialog' ) ) && + // Disallow updater and dialog when installing a plugin, otherwise .org "add-on" plugins will be affected. + ( 'install-plugin' !== fs_request_get( 'action' ) ) + ); + } + /** * @author Leo Fajardo (@leorw) * @@ -4668,16 +4927,20 @@ $this->_plugin : new FS_Plugin(); + $premium_suffix = $this->get_option( $plugin_info, 'premium_suffix', '(Premium)' ); + $plugin->update( array( 'id' => $id, 'type' => $this->get_option( $plugin_info, 'type', $this->_module_type ), 'public_key' => $public_key, 'slug' => $this->_slug, + 'premium_slug' => $this->get_option( $plugin_info, 'premium_slug', "{$this->_slug}-premium" ), 'parent_plugin_id' => $parent_id, 'version' => $this->get_plugin_version(), - 'title' => $this->get_plugin_name(), + 'title' => $this->get_plugin_name( $premium_suffix ), 'file' => $this->_plugin_basename, 'is_premium' => $this->get_bool_option( $plugin_info, 'is_premium', true ), + 'premium_suffix' => $premium_suffix, 'is_live' => $this->get_bool_option( $plugin_info, 'is_live', true ), 'affiliate_moderation' => $this->get_option( $plugin_info, 'has_affiliation' ), ) ); @@ -5058,7 +5321,7 @@ } $addon = $this->get_addon( $addon_id ); - $premium_basename = "{$addon->slug}-premium/{$addon->slug}.php"; + $premium_basename = "{$addon->premium_slug}/{$addon->slug}.php"; if ( file_exists( fs_normalize_path( WP_PLUGIN_DIR . '/' . $premium_basename ) ) ) { return $premium_basename; @@ -5066,9 +5329,9 @@ $all_plugins = $this->get_all_plugins(); - foreach ( $all_plugins as $basename => &$data ) { + foreach ( $all_plugins as $basename => $data ) { if ( $addon->slug === $data['slug'] || - $addon->slug . '-premium' === $data['slug'] + $addon->premium_slug === $data['slug'] ) { return $basename; } @@ -5308,7 +5571,7 @@ if ( ! isset( $this->_is_anonymous ) ) { if ( $this->is_network_anonymous() ) { $this->_is_anonymous = true; - } else { + } else if ( ! fs_is_network_admin() ) { if ( ! isset( $this->_storage->is_anonymous ) ) { // Not skipped. $this->_is_anonymous = false; @@ -5499,6 +5762,20 @@ $this->_storage->store( "{$name}_timestamp", time() ); } + /** + * Sets the keepalive time to now. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + * + * @param bool|null $use_network_level_storage + */ + private function set_keepalive_timestamp( $use_network_level_storage = null ) { + $this->_logger->entrance(); + + $this->_storage->store( 'keepalive_timestamp', time(), $use_network_level_storage ); + } + /** * Check if cron was executed in the last $period of seconds. * @@ -5513,7 +5790,7 @@ private function is_cron_executed( $name, $period = WP_FS__TIME_24_HOURS_IN_SEC ) { $this->_logger->entrance( $name ); - $last_execution = $this->set_cron_execution_timestamp( $name ); + $last_execution = $this->cron_last_execution( $name ); if ( ! is_numeric( $last_execution ) ) { return false; @@ -5774,12 +6051,14 @@ } } + $current_blog_id = get_current_blog_id(); + foreach ( $users_2_blog_ids as $user_id => $blog_ids ) { if ( 0 < $blog_ids[0] ) { $this->switch_to_blog( $blog_ids[0] ); } - call_user_func_array( $callable, array( $blog_ids ) ); + call_user_func_array( $callable, array( $blog_ids, ( is_multisite() ? $current_blog_id : null ) ) ); foreach ( $blog_ids as $blog_id ) { $this->do_action( "after_{$name}_cron", $blog_id ); @@ -5787,6 +6066,8 @@ } if ( is_multisite() ) { + $this->switch_to_blog( $current_blog_id ); + $this->do_action( "after_{$name}_cron_multisite" ); } } @@ -5858,13 +6139,16 @@ * @author Vova Feldman (@svovaf) * @since 2.0.0 * - * @param int[] $blog_ids + * @param int[] $blog_ids + * @param int|null $current_blog_id @since 2.2.3. This is passed from the `execute_cron` method and used by the + * `_sync_plugin_license` method in order to switch to the previous blog when sending + * updates for a single site in case `execute_cron` has switched to a different blog. */ - function _sync_cron_method( array $blog_ids ) { + function _sync_cron_method( array $blog_ids, $current_blog_id = null ) { if ( $this->is_registered() ) { if ( $this->has_paid_plan() ) { // Initiate background plan sync. - $this->_sync_license( true ); + $this->_sync_license( true, false, $current_blog_id ); if ( $this->is_paying() ) { // Check for premium plugin updates. @@ -6079,9 +6363,10 @@ * @author Vova Feldman (@svovaf) * @since 2.0.0 * - * @param int[] $blog_ids + * @param int[] $blog_ids + * @param int|null $current_blog_id */ - function _sync_install_cron_method( array $blog_ids ) { + function _sync_install_cron_method( array $blog_ids, $current_blog_id = null ) { if ( $this->is_registered() ) { if ( 1 < count( $blog_ids ) ) { $this->sync_installs( array(), true ); @@ -6185,6 +6470,7 @@ if ( ! $this->is_addon() && ! ( ! $this->_is_network_active && fs_is_network_admin() ) && ( + ( true === $this->_storage->require_license_activation ) || // Not registered nor anonymous. ( ! $this->is_registered() && ! $this->is_anonymous() ) || // OR, network level and in network upgrade mode. @@ -6201,14 +6487,18 @@ * @since 1.2.2 */ if ( $this->is_theme() - && $this->is_only_premium() && ! $this->has_settings_menu() && ! isset( $_REQUEST['fs_action'] ) && $this->can_activate_previous_theme() ) { - $this->activate_previous_theme(); + if ( $this->is_only_premium() ) { + $this->activate_previous_theme(); + return; + } - return; + if ( true === $this->_storage->require_license_activation ) { + $this->_storage->require_license_activation = false; + } } if ( ! fs_is_network_admin() && @@ -6308,7 +6598,7 @@ $this->_module_type, sprintf( '<b><a href="%s">%s</a></b>', $this->get_activation_url(), - sprintf( $this->get_text_inline( 'Opt in to make "%s" Better!', 'optin-x-now' ), $this->get_plugin_name() ) + sprintf( $this->get_text_inline( 'Opt in to make "%s" better!', 'optin-x-now' ), $this->get_plugin_name() ) ) ), 'connect_account', @@ -6770,6 +7060,20 @@ } } + if ( + $is_premium_version_activation && + ( + ( ! $this->is_registered() && $this->is_anonymous() ) || + ( + $this->is_registered() && + ! $this->is_trial() && + ! $this->has_features_enabled_license() + ) + ) + ) { + $this->_storage->require_license_activation = true; + } + if ( ! isset( $this->_storage->is_plugin_new_install ) ) { /** * If no previous version of plugin's version exist, it means that it's either @@ -7039,7 +7343,7 @@ private function remove_sdk_reference() { global $fs_active_plugins; - foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) { + foreach ( $fs_active_plugins->plugins as $sdk_path => $data ) { if ( $this->_plugin_basename == $data->plugin_path ) { unset( $fs_active_plugins->plugins[ $sdk_path ] ); break; @@ -7221,6 +7525,23 @@ } } + /** + * This is used to ensure that before redirecting to the opt-in page after resetting the anonymous mode or + * deleting the account in the network level, the URL of the page to redirect to is correct. + * + * @author Leo Fajardo (@leorw) + * + * @since 2.1.3 + */ + private function maybe_set_slug_and_network_menu_exists_flag() { + if ( ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) { + $this->_menu->set_slug_and_network_menu_exists_flag( $this->_menu->has_menu() ? + $this->_menu->get_slug() : + $this->_slug + ); + } + } + /** * Clears the anonymous mode and redirects to the opt-in screen. * @@ -7234,6 +7555,8 @@ $this->reset_anonymous_mode( fs_is_network_admin() ); + $this->maybe_set_slug_and_network_menu_exists_flag(); + fs_redirect( $this->get_activation_url() ); } @@ -7673,39 +7996,43 @@ $include_plugins = true, $include_themes = true ) { - /** - * @since 1.1.8 Also send plugin updates. - */ - if ( $include_plugins && ! isset( $override['plugins'] ) ) { - $plugins = $this->get_plugins_data_for_api(); - if ( ! empty( $plugins ) ) { - $override['plugins'] = $plugins; + if ( ! defined( 'WP_FS__TRACK_PLUGINS' ) || false !== WP_FS__TRACK_PLUGINS ) { + /** + * @since 1.1.8 Also send plugin updates. + */ + if ( $include_plugins && ! isset( $override['plugins'] ) ) { + $plugins = $this->get_plugins_data_for_api(); + if ( ! empty( $plugins ) ) { + $override['plugins'] = $plugins; + } } } - /** - * @since 1.1.8 Also send themes updates. - */ - if ( $include_themes && ! isset( $override['themes'] ) ) { - $themes = $this->get_themes_data_for_api(); - if ( ! empty( $themes ) ) { - $override['themes'] = $themes; + + if ( ! defined( 'WP_FS__TRACK_THEMES' ) || false !== WP_FS__TRACK_THEMES ) { + /** + * @since 1.1.8 Also send themes updates. + */ + if ( $include_themes && ! isset( $override['themes'] ) ) { + $themes = $this->get_themes_data_for_api(); + if ( ! empty( $themes ) ) { + $override['themes'] = $themes; + } } } - return array_merge( array( - 'version' => $this->get_plugin_version(), - 'is_premium' => $this->is_premium(), - 'language' => get_bloginfo( 'language' ), - 'charset' => get_bloginfo( 'charset' ), - 'platform_version' => get_bloginfo( 'version' ), - 'sdk_version' => $this->version, - 'programming_language_version' => phpversion(), - 'title' => get_bloginfo( 'name' ), - 'url' => get_site_url(), + $versions = $this->get_versions(); + + return array_merge( $versions, array( + 'version' => $this->get_plugin_version(), + 'is_premium' => $this->is_premium(), + 'language' => get_bloginfo( 'language' ), + 'charset' => get_bloginfo( 'charset' ), + 'title' => get_bloginfo( 'name' ), + 'url' => get_site_url(), // Special params. - 'is_active' => true, - 'is_disconnected' => $this->is_tracking_prohibited(), - 'is_uninstalled' => false, + 'is_active' => true, + 'is_disconnected' => $this->is_tracking_prohibited(), + 'is_uninstalled' => false, ), $override ); } @@ -7750,12 +8077,10 @@ // } // Common properties. - $common = array_merge( array( - 'version' => $this->get_plugin_version(), - 'is_premium' => $this->is_premium(), - 'sdk_version' => $this->version, - 'programming_language_version' => phpversion(), - 'platform_version' => get_bloginfo( 'version' ), + $versions = $this->get_versions(); + $common = array_merge( $versions, array( + 'version' => $this->get_plugin_version(), + 'is_premium' => $this->is_premium(), ), $override ); @@ -7909,28 +8234,56 @@ $params = $this->get_install_diff_for_api( $check_properties, $this->_site, $override ); } - if ( 0 < count( $params ) ) { + $keepalive_only_update = false; + if ( empty( $params ) ) { + $keepalive_only_update = $this->should_send_keepalive_update(); + + if ( ! $keepalive_only_update ) { + /** + * There are no updates to send including keepalive. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + */ + return false; + } + } + + if ( ! $keepalive_only_update ) { + /** + * Do not update the last install sync timestamp after a keepalive-only call since there were no actual + * updates sent. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + */ if ( ! is_multisite() ) { // Update last install sync timestamp. $this->set_cron_execution_timestamp( 'install_sync' ); } $params['uid'] = $this->get_anonymous_id(); + } - // Send updated values to FS. - $site = $this->get_api_site_scope()->call( '/', 'put', $params ); + $this->set_keepalive_timestamp(); - if ( $this->is_api_result_entity( $site ) ) { - if ( ! is_multisite() ) { - // I successfully sent install update, clear scheduled sync if exist. - $this->clear_install_sync_cron(); - } - } + // Send updated values to FS. + $site = $this->get_api_site_scope()->call( '/', 'put', $params ); - return $site; + if ( ! $keepalive_only_update && $this->is_api_result_entity( $site ) ) { + /** + * Do not clear scheduled sync after a keepalive-only call since there were no actual updates sent. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + */ + if ( ! is_multisite() ) { + // I successfully sent install update, clear scheduled sync if exist. + $this->clear_install_sync_cron(); + } } - return false; + return $site; } /** @@ -7949,24 +8302,70 @@ $installs_data = $this->get_installs_data_for_api( $override, ! $flush ); + $keepalive_only_update = false; if ( empty( $installs_data ) ) { - return false; + /** + * Pass `true` to use the network level storage since the update is for many installs. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + */ + $keepalive_only_update = $this->should_send_keepalive_update( true ); + + if ( ! $keepalive_only_update ) { + /** + * There are no updates to send including keepalive. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + */ + return false; + } + } + + if ( ! $keepalive_only_update ) { + // Update last install sync timestamp if there were actual updates sent (i.e., not a keepalive-only call). + $this->set_cron_execution_timestamp( 'install_sync' ); } - // Update last install sync timestamp. - $this->set_cron_execution_timestamp( 'install_sync' ); + /** + * Pass `true` to use the network level storage since the update is for many installs. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + */ + $this->set_keepalive_timestamp( true ); // Send updated values to FS. $result = $this->get_api_user_scope()->call( "/plugins/{$this->_plugin->id}/installs.json", 'put', $installs_data ); - if ( $this->is_api_result_object( $result, 'installs' ) ) { - // I successfully sent installs update, clear scheduled sync if exist. + if ( ! $keepalive_only_update && $this->is_api_result_object( $result, 'installs' ) ) { + // I successfully sent installs update (there was an actual update sent and it's not just a keepalive-only call), clear scheduled sync if exist. $this->clear_install_sync_cron(); } return $result; } + /** + * @author Leo Fajardo (@leorw) + * + * @param bool|null $use_network_level_storage + * + * @return bool + */ + private function should_send_keepalive_update( $use_network_level_storage = null ) { + $keepalive_timestamp = $this->_storage->get( 'keepalive_timestamp', 0, $use_network_level_storage ); + + if ( $keepalive_timestamp < ( time() - WP_FS__TIME_WEEK_IN_SEC ) ) { + // If updated more than 7 days ago, trigger a keepalive and update the time it was triggered. + return true; + } else { + // If updated 7 days ago or less, "flip a coin", if the value is 7 trigger a keepalive and update the last time it was triggered. + return ( 7 == rand( 1, 7 ) ); + } + } + /** * Update install only if changed. * @@ -8171,14 +8570,59 @@ // @todo Decide if we want to delete plugin information from db. } + /** + * Set the basename of the current product and hook _activate_plugin_event_hook() to the activation action. + * + * @author Vova Feldman (@svovaf) + * @since 2.2.1 + * + * @param string $is_premium + * @param string $caller + * + * @return string + */ + function set_basename( $is_premium, $caller ) { + $basename = plugin_basename( $caller ); + + $current_basename = $is_premium ? + $this->_premium_plugin_basename : + $this->_free_plugin_basename; + + if ( $current_basename == $basename ) { + // Basename value set correctly. + return; + } + + if ( $is_premium ) { + $this->_premium_plugin_basename = $basename; + } else { + $this->_free_plugin_basename = $basename; + } + + $plugin_dir = dirname( $this->_plugin_dir_path ) . '/'; + + register_activation_hook( + $plugin_dir . $basename, + array( &$this, '_activate_plugin_event_hook' ) + ); + } + /** * @author Vova Feldman (@svovaf) * @since 1.1.1 + * @since 2.2.1 If the context product is in its premium version, use the current module's basename, even if it was renamed. * * @return string */ function premium_plugin_basename() { - return "{$this->_slug}-premium/" . basename( $this->_free_plugin_basename ); + if ( ! isset( $this->_premium_plugin_basename ) ) { + $this->_premium_plugin_basename = $this->is_premium() ? + // The product is premium, so use the current basename. + $this->_plugin_basename : + $this->get_premium_slug() . '/' . basename( $this->_free_plugin_basename ); + } + + return $this->_premium_plugin_basename; } /** @@ -8317,13 +8761,29 @@ } /** + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + * + * @return string + */ + function get_premium_slug() { + return is_object( $this->_plugin ) ? + $this->_plugin->premium_slug : + "{$this->_slug}-premium"; + } + + /** + * Retrieve the desired folder name for the product. + * * @author Vova Feldman (@svovaf) * @since 1.2.1.7 * * @return string Plugin slug. */ function get_target_folder_name() { - return $this->_slug . ( $this->can_use_premium_code() ? '-premium' : '' ); + return $this->can_use_premium_code() ? + $this->_plugin->premium_slug : + $this->_slug; } /** @@ -8394,31 +8854,63 @@ * @author Vova Feldman (@svovaf) * @since 1.0.9 * - * @return string + * @param string|bool $premium_suffix + * + * @return string + */ + function get_plugin_name( $premium_suffix = false ) { + $this->_logger->entrance(); + + /** + * This `if-else` can be squeezed into a single `if` but I intentionally split it for code readability. + * + * @author Vova Feldman + */ + if ( ! isset( $this->_plugin_name ) ) { + // Name is not yet set. + $this->set_name( $premium_suffix ); + } else if ( + ! empty( $premium_suffix ) && + ( ! is_object( $this->_plugin ) || $this->_plugin->premium_suffix !== $premium_suffix ) + ) { + // Name is already set, but there's a change in the premium suffix. + $this->set_name( $premium_suffix ); + } + + return $this->_plugin_name; + } + + /** + * Calculates and stores the product's name. This helper function was created specifically for get_plugin_name() just to make the code clearer. + * + * @author Vova Feldman (@svovaf) + * @since 2.2.1 + * + * @param string $premium_suffix */ - function get_plugin_name() { - $this->_logger->entrance(); + private function set_name( $premium_suffix = '' ) { + $plugin_data = $this->get_plugin_data(); - if ( ! isset( $this->_plugin_name ) ) { - $plugin_data = $this->get_plugin_data(); + // Get name. + $this->_plugin_name = $plugin_data['Name']; - // Get name. - $this->_plugin_name = $plugin_data['Name']; + if ( is_string( $premium_suffix ) ) { + $premium_suffix = trim( $premium_suffix ); - // Check if plugin name contains "(Premium)" suffix and remove it. - $suffix = ' (premium)'; - $suffix_len = strlen( $suffix ); + if ( ! empty( $premium_suffix ) ) { + // Check if plugin name contains " (premium)" or a custom suffix and remove it. + $suffix = ( ' ' . strtolower( $premium_suffix ) ); + $suffix_len = strlen( $suffix ); - if ( strlen( $plugin_data['Name'] ) > $suffix_len && - $suffix === substr( strtolower( $plugin_data['Name'] ), - $suffix_len ) - ) { - $this->_plugin_name = substr( $plugin_data['Name'], 0, - $suffix_len ); + if ( strlen( $plugin_data['Name'] ) > $suffix_len && + $suffix === substr( strtolower( $plugin_data['Name'] ), - $suffix_len ) + ) { + $this->_plugin_name = substr( $plugin_data['Name'], 0, - $suffix_len ); + } } - - $this->_logger->departure( 'Name = ' . $this->_plugin_name ); } - return $this->_plugin_name; + $this->_logger->departure( 'Name = ' . $this->_plugin_name ); } /** @@ -9124,7 +9616,16 @@ * @return bool */ function is_premium() { - return $this->_plugin->is_premium; + /** + * `$this->_plugin` will be `false` when `is_activation_mode` calls this method directly from the + * `_register_hooks` method. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + */ + return is_object( $this->_plugin ) ? + $this->_plugin->is_premium : + false; } /** @@ -10514,6 +11015,56 @@ fs_require_template( 'forms/resend-key.php', $vars ); } + /** + * Displays a subscription cancellation dialog box when the user clicks on the "Deactivate License" + * link on the "Account" page or deactivates a plugin and there's an active subscription that is + * either associated with a non-lifetime single-site license or non-lifetime multisite license that + * is only activated on a single production site. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + * + * @param bool $is_license_deactivation + */ + function _maybe_add_subscription_cancellation_dialog_box( $is_license_deactivation = false ) { + if ( fs_is_network_admin() ) { + // Subscription cancellation dialog box is currently not supported for multisite networks. + return; + } + + $license = $this->_get_license(); + + /** + * If the installation is associated with a non-lifetime license, which is either a single-site or only activated on a single production site (or zero), and connected to an active subscription, suggest the customer to cancel the subscription upon deactivation. + * + * @author Leo Fajardo (@leorw) (Comment added by Vova Feldman @svovaf) + * @since 2.2.1 + */ + if ( ! is_object( $license ) || + $license->is_lifetime() || + ( ! $license->is_single_site() && $license->activated > 1 ) + ) { + return; + } + + /** + * @var FS_Subscription $subscription + */ + $subscription = $this->_get_subscription( $license->id ); + if ( ! is_object( $subscription ) || ! $subscription->is_active() ) { + return; + } + + $vars = array( + 'id' => $this->_module_id, + 'license' => $license, + 'has_trial' => $this->is_paid_trial(), + 'is_license_deactivation' => $is_license_deactivation, + ); + + fs_require_template( 'forms/subscription-cancellation.php', $vars ); + } + /** * @author Leo Fajardo (@leorw) * @since 2.0.2 @@ -10698,7 +11249,7 @@ 'license_key' => $fs->apply_filters( 'license_key', $license_key ) ); - $install = $api->call( '/', 'put', $params ); + $install = $api->call( $fs->add_show_pending( '/' ), 'put', $params ); if ( FS_Api::is_api_error( $install ) ) { $error = FS_Api::is_api_error_object( $install ) ? @@ -10791,6 +11342,10 @@ } } + if ( false === $error && true === $this->_storage->require_license_activation ) { + $this->_storage->require_license_activation = false; + } + $result = array( 'success' => ( false === $error ) ); @@ -11045,6 +11600,34 @@ static function get_current_page() { if ( ! isset( self::$_pagenow ) ) { global $pagenow; + if ( empty( $pagenow ) && is_admin() && is_multisite() ) { + /** + * It appears that `$pagenow` is not yet initialized in some network admin pages when this method + * is called, so initialize it here using some pieces of code from `wp-includes/vars.php`. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + */ + if ( is_network_admin() ) { + preg_match( '#/wp-admin/network/?(.*?)$#i', $_SERVER['PHP_SELF'], $self_matches ); + } else if ( is_user_admin() ) { + preg_match( '#/wp-admin/user/?(.*?)$#i', $_SERVER['PHP_SELF'], $self_matches ); + } else { + preg_match( '#/wp-admin/?(.*?)$#i', $_SERVER['PHP_SELF'], $self_matches ); + } + + $pagenow = $self_matches[1]; + $pagenow = trim( $pagenow, '/' ); + $pagenow = preg_replace( '#\?.*?$#', '', $pagenow ); + if ( '' === $pagenow || 'index' === $pagenow || 'index.php' === $pagenow ) { + $pagenow = 'index.php'; + } else { + preg_match( '#(.*?)(/|$)#', $pagenow, $self_matches ); + $pagenow = strtolower( $self_matches[1] ); + if ( '.php' !== substr($pagenow, -4, 4) ) + $pagenow .= '.php'; // for Options +Multiviews: /wp-admin/themes/index.php (themes.php is queried) + } + } self::$_pagenow = $pagenow; @@ -11076,6 +11659,16 @@ return ( 'plugins.php' === self::get_current_page() ); } + /** + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + * + * @return bool + */ + static function is_plugin_install_page() { + return ( 'plugin-install.php' === self::get_current_page() ); + } + /** * @author Leo Fajardo (@leorw) * @since 2.0.2 @@ -11343,6 +11936,40 @@ return $this->get_upgrade_url( WP_FS__PERIOD_ANNUALLY, true ); } + /** + * @author Leo Fajardo (@leorw) + * @since 2.1.4 + * + * @param string $new_version + * + * @return string + */ + function version_upgrade_checkout_link( $new_version ) { + if ( ! is_object( $this->_license ) ) { + $url = $this->pricing_url(); + + $purchase_license_text = $this->get_text_inline( 'Buy a license now', 'buy-license-now' ); + } else { + $subscription = $this->_get_subscription( $this->_license->id ); + + $url = $this->checkout_url( + is_object( $subscription ) ? + ( 1 == $subscription->billing_cycle ? WP_FS__PERIOD_MONTHLY : WP_FS__PERIOD_ANNUALLY ) : + WP_FS__PERIOD_LIFETIME, + false, + array( 'licenses' => $this->_license->quota ) + ); + + $purchase_license_text = $this->get_text_inline( 'Renew your license now', 'renew-license-now' ); + } + + return sprintf( + $this->get_text_inline( '%s to access version %s security & feature updates, and support.', 'x-for-updates-and-support' ), + sprintf( '<a href="%s">%s</a>', $url, $purchase_license_text ), + $new_version + ); + } + /** * Plugin's pricing URL. * @@ -11977,7 +12604,13 @@ * @author Vova Feldman (@svovaf) */ $args = array( - 'public' => 1, + /** + * Commented out in order to handle the migration of site options whether the site is public or not. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + */ + // 'public' => 1, 'archived' => 0, 'mature' => 0, 'spam' => 0, @@ -12173,7 +12806,7 @@ self::$_accounts->set_site_blog_context( $blog_id ); $this->_storage->set_site_blog_context( $blog_id ); - $this->_storage->set_network_active( true, $this->is_delegated_connection( $blog_id ) ); + $this->_storage->set_network_active( $this->_is_network_active, $this->is_delegated_connection( $blog_id ) ); $this->_site = is_object( $install ) ? $install : @@ -13122,6 +13755,12 @@ } } + if ( true === $this->_storage->require_license_activation && + ! fs_request_get_bool( 'require_license', true ) + ) { + $this->_storage->require_license_activation = false; + } + if ( $this->is_theme() ) { $this->_register_account_hooks(); } @@ -13187,6 +13826,30 @@ } + /** + * Get a sanitized array with the WordPress version, SDK version, and PHP version. + * Each version is trimmed after the 16th char. + * + * @author Vova Feldman (@svovaf) + * @since 2.2.1 + * + * @return array + */ + private function get_versions() { + $versions = array(); + $versions['platform_version'] = get_bloginfo( 'version' ); + $versions['sdk_version'] = $this->version; + $versions['programming_language_version'] = phpversion(); + + foreach ( $versions as $k => $version ) { + if ( is_string( $versions[ $k ] ) && ! empty( $versions[ $k ] ) ) { + $versions[ $k ] = substr( $versions[ $k ], 0, 16 ); + } + } + + return $versions; + } + /** * @author Vova Feldman (@svovaf) * @since 1.1.7.4 @@ -13208,7 +13871,9 @@ // Return to the module's main page. $this->get_after_activation_url( 'after_connect_url', array( 'fs_action' => $activation_action ) ); - $params = array( + $versions = $this->get_versions(); + + $params = array_merge( $versions, array( 'user_firstname' => $current_user->user_firstname, 'user_lastname' => $current_user->user_lastname, 'user_nickname' => $current_user->user_nicename, @@ -13223,13 +13888,10 @@ 'account', array( 'fs_action' => 'sync_user' ) ), 'sync_user' ), - 'platform_version' => get_bloginfo( 'version' ), - 'sdk_version' => $this->version, - 'programming_language_version' => phpversion(), 'is_premium' => $this->is_premium(), 'is_active' => true, 'is_uninstalled' => false, - ); + ) ); if ( true === $network_level_or_blog_id ) { if ( ! isset( $override_with['sites'] ) ) { @@ -13415,7 +14077,7 @@ 'timeout' => WP_FS__DEBUG_SDK ? 60 : 30, ); - $url = WP_FS__ADDRESS . '/action/service/user/install/'; + $url = $this->add_show_pending( WP_FS__ADDRESS . '/action/service/user/install/' ); $response = self::safe_remote_post( $url, $request ); if ( is_wp_error( $response ) ) { @@ -14572,7 +15234,7 @@ $hook = false; - if ( ! $this->_menu->has_menu() ) { + if ( ! $this->has_settings_menu() ) { // Add the opt-in page without a menu item. $hook = FS_Admin_Menu_Manager::add_subpage( null, @@ -14920,15 +15582,25 @@ } } - if ( 0 < count( $this->_menu_items ) ) { - if ( ! $this->_menu->is_top_level() ) { - fs_enqueue_local_style( 'fs_common', '/admin/common.css' ); + if ( ! $is_activation_mode || ( true !== $this->_storage->require_license_activation ) ) { + /** + * Add the other menu items if there are any when not in activation mode or license activation is not + * required (license activation is required for registered or anonymous users after activating the + * premium version when the site is not in trial mode or there's no active valid license). + * + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + */ + if ( 0 < count( $this->_menu_items ) ) { + if ( ! $this->_menu->is_top_level() ) { + fs_enqueue_local_style( 'fs_common', '/admin/common.css' ); - // Append submenu items right after the plugin's submenu item. - $this->order_sub_submenu_items(); - } else { - // Append submenu items. - $this->embed_submenu_items(); + // Append submenu items right after the plugin's submenu item. + $this->order_sub_submenu_items(); + } else { + // Append submenu items. + $this->embed_submenu_items(); + } } } } @@ -14954,16 +15626,6 @@ foreach ( $this->_menu_items as $priority => $items ) { foreach ( $items as $item ) { - if ( $item['show_submenu'] && $is_first_submenu_item ) { - if ( $this->_is_network_active && ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) { - $item['menu_slug'] = ''; - - $this->_menu->override_menu_item( $item['render_function'] ); - } - - $is_first_submenu_item = false; - } - $capability = ( ! empty( $item['capability'] ) ? $item['capability'] : $top_level_menu_capability ); $menu_item = sprintf( @@ -14974,12 +15636,13 @@ $item['menu_title'] ); - $menu_slug = $this->_menu->get_slug( $item['menu_slug'] ); + $top_level_menu_slug = $this->get_top_level_menu_slug(); + $menu_slug = $this->_menu->get_slug( $item['menu_slug'] ); if ( ! isset( $item['url'] ) ) { $hook = FS_Admin_Menu_Manager::add_subpage( $item['show_submenu'] ? - $this->get_top_level_menu_slug() : + $top_level_menu_slug : null, $item['page_title'], $menu_item, @@ -14994,7 +15657,7 @@ } else { FS_Admin_Menu_Manager::add_subpage( $item['show_submenu'] ? - $this->get_top_level_menu_slug() : + $top_level_menu_slug : null, $item['page_title'], $menu_item, @@ -15003,6 +15666,24 @@ array( $this, '' ) ); } + + if ( $item['show_submenu'] && $is_first_submenu_item ) { + if ( $this->_is_network_active && ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) { + /** + * If the top-level menu has been dynamically created, remove the first submenu item that + * WordPress automatically creates when there's no submenu item whose slug matches the + * parent's. In the following example, the `Awesome Plugin` submenu item will be removed. + * + * Awesome Plugin + * - Awesome Plugin <-- we want to remove this since there's no real setting page for the top-level + * + * @author Leo Fajardo (@leorw) + */ + remove_submenu_page( $top_level_menu_slug, $top_level_menu_slug ); + } + + $is_first_submenu_item = false; + } } } } @@ -16245,11 +16926,12 @@ * @param bool|number $plugin_id * @param bool $flush Since 1.1.7.3 * @param int $expiration Since 1.2.2.7 + * @param bool|string $newer_than Since 2.2.1 * * @return object|false New plugin tag info if exist. */ - private function _fetch_newer_version( $plugin_id = false, $flush = true, $expiration = WP_FS__TIME_24_HOURS_IN_SEC ) { - $latest_tag = $this->_fetch_latest_version( $plugin_id, $flush, $expiration ); + private function _fetch_newer_version( $plugin_id = false, $flush = true, $expiration = WP_FS__TIME_24_HOURS_IN_SEC, $newer_than = false ) { + $latest_tag = $this->_fetch_latest_version( $plugin_id, $flush, $expiration, $newer_than ); if ( ! is_object( $latest_tag ) ) { return false; @@ -16274,17 +16956,18 @@ * @param bool|number $plugin_id * @param bool $flush Since 1.1.7.3 * @param int $expiration Since 1.2.2.7 + * @param bool|string $newer_than Since 2.2.1 * * @return bool|FS_Plugin_Tag */ - function get_update( $plugin_id = false, $flush = true, $expiration = WP_FS__TIME_24_HOURS_IN_SEC ) { + function get_update( $plugin_id = false, $flush = true, $expiration = WP_FS__TIME_24_HOURS_IN_SEC, $newer_than = false ) { $this->_logger->entrance(); if ( ! is_numeric( $plugin_id ) ) { $plugin_id = $this->_plugin->id; } - $this->check_updates( true, $plugin_id, $flush, $expiration ); + $this->check_updates( true, $plugin_id, $flush, $expiration, $newer_than ); $updates = $this->get_all_updates(); return isset( $updates[ $plugin_id ] ) && is_object( $updates[ $plugin_id ] ) ? $updates[ $plugin_id ] : false; @@ -16437,8 +17120,11 @@ * the admin. * @param bool $is_context_single_site @since 2.0.0. This is used when syncing a license for a single install from the * network-level "Account" page. + * @param int|null $current_blog_id @since 2.2.3. This is passed from the `execute_cron` method and used by the + * `_sync_plugin_license` method in order to switch to the previous blog when sending + * updates for a single site in case `execute_cron` has switched to a different blog. */ - private function _sync_license( $background = false, $is_context_single_site = false ) { + private function _sync_license( $background = false, $is_context_single_site = false, $current_blog_id = null ) { $this->_logger->entrance(); $plugin_id = fs_request_get( 'plugin_id', $this->get_id() ); @@ -16448,7 +17134,7 @@ if ( $is_addon_sync ) { $this->_sync_addon_license( $plugin_id, $background ); } else { - $this->_sync_plugin_license( $background, true, $is_context_single_site ); + $this->_sync_plugin_license( $background, true, $is_context_single_site, $current_blog_id ); } $this->do_action( 'after_account_plan_sync', $this->get_plan_name() ); @@ -16538,11 +17224,15 @@ * @param bool $is_context_single_site Since 2.0.0. This is used when sending an update for a single install and * syncing its license from the network-level "Account" page (e.g.: after * activating a license only for the single install). + * @param int|null $current_blog_id Since 2.2.3. This is passed from the `execute_cron` method so that it + * can be used here to switch to the previous blog in case `execute_cron` + * has switched to a different blog. */ private function _sync_plugin_license( $background = false, $send_installs_update = true, - $is_context_single_site = false + $is_context_single_site = false, + $current_blog_id = null ) { $this->_logger->entrance(); @@ -16559,6 +17249,16 @@ * @todo This line will execute install sync on a daily basis, even if running the free version (for opted-in users). The reason we want to keep it that way is for cases when the user was a paying customer, then there was a failure in subscription payment, and then after some time the payment was successful. This could be heavily optimized. For example, we can skip the $flush if the current install was never associated with a paid version. */ if ( $is_site_level_sync ) { + /** + * Switch to the previous blog since `execute_cron` may have switched to a different blog. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + */ + if ( is_numeric( $current_blog_id ) ) { + $this->switch_to_blog( $current_blog_id ); + } + $result = $this->send_install_update( array(), true ); $is_valid = $this->is_api_result_entity( $result ); } else { @@ -17068,6 +17768,18 @@ $api = $this->get_api_site_scope(); $license = $api->call( "/licenses/{$this->_site->license_id}.json", 'delete' ); + $this->handle_license_deactivation_result( $license, $hmm_text, $show_notice ); + } + + /** + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + * + * @param FS_Plugin_License $license + * @param bool|string $hmm_text + * @param bool $show_notice + */ + private function handle_license_deactivation_result( $license, $hmm_text = false, $show_notice = true ) { if ( isset( $license->error ) ) { $this->_admin_notices->add( $this->get_text_inline( 'It looks like the license deactivation failed.', 'license-deactivation-failed-message' ) . '<br> ' . @@ -17088,7 +17800,7 @@ } } - // Updated site plan to default. + // Update site plan to default. $this->_sync_plans(); $this->_site->plan_id = $this->_plans[0]->id; // Unlink license from site. @@ -17115,13 +17827,17 @@ * @author Vova Feldman (@svovaf) * @since 1.0.4 * + * @return object + * * @uses FS_Api */ private function _downgrade_site() { $this->_logger->entrance(); + $deactivate_license = fs_request_get_bool( 'deactivate_license' ); + $api = $this->get_api_site_scope(); - $site = $api->call( 'downgrade.json', 'put' ); + $site = $api->call( 'downgrade.json', 'put', array( 'deactivate_license' => $deactivate_license ) ); $plan_downgraded = false; $plan = false; @@ -17139,29 +17855,47 @@ ( is_object( $subscription ) && ! isset( $subscription->error ) && ! $subscription->is_active() ); } else { // handle different error cases. - + $this->handle_license_deactivation_result( + $site, + $this->get_text_x_inline( 'Hmm', 'something somebody says when they are thinking about what you have just said.', 'hmm' ) . '...' + ); } - if ( $plan_downgraded ) { - // Remove previous sticky message about upgrade (if exist). - $this->_admin_notices->remove_sticky( 'plan_upgraded' ); - - $this->_admin_notices->add( - sprintf( $this->get_text_inline( 'Your plan was successfully downgraded. Your %s plan license will expire in %s.', 'plan-x-downgraded-message' ), - $plan->title, - human_time_diff( time(), strtotime( $this->_license->expiration ) ) + if ( ! $plan_downgraded ) { + return (object) array( + 'error' => (object) array( + 'message' => $this->get_text_inline( 'Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes.', 'subscription-cancellation-failure-message' ) ) ); + } - // Store site updates. - $this->_store_site(); - } else { - $this->_admin_notices->add( - $this->get_text_inline( 'Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes.', 'plan-downgraded-failure-message' ), - $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...', - 'error' - ); + // Remove previous sticky message about upgrade (if exist). + $this->_admin_notices->remove_sticky( 'plan_upgraded' ); + + $this->_admin_notices->add( + sprintf( $this->get_text_inline( 'Your subscription was successfully cancelled. Your %s plan license will expire in %s.', 'plan-x-downgraded-message' ), + $plan->title, + human_time_diff( time(), strtotime( $this->_license->expiration ) ) + ) + ); + + // Store site updates. + $this->_store_site(); + + if ( $deactivate_license && + ! FS_Plugin_License::is_valid_id( $site->license_id ) + ) { + if ( $this->_site->is_localhost() ) { + $this->_license->activated_local = max( 0, $this->_license->activated_local - 1 ); + } else { + $this->_license->activated = max( 0, $this->_license->activated - 1 ); + } + + // Handle successful license deactivation result. + $this->handle_license_deactivation_result( $this->_license ); } + + return $site; } /** @@ -17268,22 +18002,19 @@ * @author Vova Feldman (@svovaf) * @since 1.0.9 * + * @return object + * * @uses FS_Api */ private function _cancel_trial() { $this->_logger->entrance(); - // Alias. - $oops_text = $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...'; - if ( ! $this->is_trial() ) { - $this->_admin_notices->add( - $this->get_text_inline( 'It looks like you are not in trial mode anymore so there\'s nothing to cancel :)', 'trial-cancel-no-trial-message' ), - $oops_text, - 'error' + return (object) array( + 'error' => (object) array( + 'message' => $this->get_text_inline( 'It looks like you are not in trial mode anymore so there\'s nothing to cancel :)', 'trial-cancel-no-trial-message' ) + ) ); - - return; } $trial_plan = $this->get_trial_plan(); @@ -17314,31 +18045,33 @@ // @todo handle different error cases. } - if ( $trial_cancelled ) { - // Remove previous sticky messages about upgrade or trial (if exist). - $this->_admin_notices->remove_sticky( array( - 'trial_started', - 'trial_promotion', - 'plan_upgraded', - ) ); + if ( ! $trial_cancelled ) { + return (object) array( + 'error' => (object) array( + 'message' => $this->get_text_inline( 'Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes.', 'trial-cancel-failure-message' ) + ) + ); + } - // Store site updates. - $this->_store_site(); + // Remove previous sticky messages about upgrade or trial (if exist). + $this->_admin_notices->remove_sticky( array( + 'trial_started', + 'trial_promotion', + 'plan_upgraded', + ) ); - if ( ! $this->is_addon() || - ! $this->deactivate_premium_only_addon_without_license( true ) - ) { - $this->_admin_notices->add( - sprintf( $this->get_text_inline( 'Your %s free trial was successfully cancelled.', 'trial-cancel-message' ), $trial_plan->title ) - ); - } - } else { + // Store site updates. + $this->_store_site(); + + if ( ! $this->is_addon() || + ! $this->deactivate_premium_only_addon_without_license( true ) + ) { $this->_admin_notices->add( - $this->get_text_inline( 'Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes.', 'trial-cancel-failure-message' ), - $oops_text, - 'error' + sprintf( $this->get_text_inline( 'Your %s free trial was successfully cancelled.', 'trial-cancel-message' ), $trial_plan->title ) ); } + + return $site; } /** @@ -17409,15 +18142,19 @@ * @since 1.0.4 * * @param bool|number $addon_id - * @param bool $flush Since 1.1.7.3 - * @param int $expiration Since 1.2.2.7 + * @param bool $flush Since 1.1.7.3 + * @param int $expiration Since 1.2.2.7 + * @param bool|string $newer_than Since 2.2.1 + * @param bool|string $fetch_readme Since 2.2.1 * * @return object|false Plugin latest tag info. */ function _fetch_latest_version( $addon_id = false, $flush = true, - $expiration = WP_FS__TIME_24_HOURS_IN_SEC + $expiration = WP_FS__TIME_24_HOURS_IN_SEC, + $newer_than = false, + $fetch_readme = true ) { $this->_logger->entrance(); @@ -17468,8 +18205,18 @@ $this->switch_to_blog( $switch_to_blog_id ); } + $latest_version_endpoint = $this->_get_latest_version_endpoint( $addon_id, 'json' ); + + if ( ! empty( $newer_than ) ) { + $latest_version_endpoint = add_query_arg( 'newer_than', $newer_than, $latest_version_endpoint ); + } + + if ( true === $fetch_readme ) { + $latest_version_endpoint = add_query_arg( 'readme', 'true', $latest_version_endpoint ); + } + $tag = $this->get_api_site_or_plugin_scope()->get( - $this->_get_latest_version_endpoint( $addon_id, 'json' ), + $latest_version_endpoint, $flush, $expiration ); @@ -17605,17 +18352,19 @@ * @param bool|number $plugin_id * @param bool $flush Since 1.1.7.3 * @param int $expiration Since 1.2.2.7 + * @param bool|string $newer_than Since 2.2.1 */ private function check_updates( $background = false, $plugin_id = false, $flush = true, - $expiration = WP_FS__TIME_24_HOURS_IN_SEC + $expiration = WP_FS__TIME_24_HOURS_IN_SEC, + $newer_than = false ) { $this->_logger->entrance(); // Check if there's a newer version for download. - $new_version = $this->_fetch_newer_version( $plugin_id, $flush, $expiration ); + $new_version = $this->_fetch_newer_version( $plugin_id, $flush, $expiration, $newer_than ); $update = null; if ( is_object( $new_version ) ) { @@ -17971,7 +18720,9 @@ */ function get_after_activation_url( $filter, $params = array(), $network = null ) { if ( $this->is_free_wp_org_theme() && - fs_request_has( 'pending_activation' ) + ( fs_request_has( 'pending_activation' ) || + // For cases when the first time path is set, even though it's a WP.org theme. + fs_request_get_bool( $this->get_unique_affix() . '_show_optin' ) ) ) { $first_time_path = ''; } else { @@ -18103,6 +18854,8 @@ $this->_site = null; $this->_user = null; + $this->maybe_set_slug_and_network_menu_exists_flag(); + fs_redirect( $this->get_activation_url() ); } else { if ( $this->is_addon_activated( $plugin_id ) ) { @@ -18122,15 +18875,23 @@ check_admin_referer( $action ); } - if ( $plugin_id == $this->get_id() ) { - $this->_downgrade_site(); + $switch_to_network_install_blog_after_cancellation = ( + is_numeric( $blog_id ) && + $plugin_id == $this->get_id() && + ! $this->is_trial() + ); - if ( is_numeric( $blog_id ) ) { - $this->switch_to_blog( $this->_storage->network_install_blog_id ); - } - } else if ( $this->is_addon_activated( $plugin_id ) ) { - $fs_addon = self::get_instance_by_id( $plugin_id ); - $fs_addon->_downgrade_site(); + $result = $this->cancel_subscription_or_trial( $plugin_id ); + if ( $this->is_api_error( $result ) ) { + $this->_admin_notices->add( + $result->error->message, + $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...', + 'error' + ); + } + + if ( $switch_to_network_install_blog_after_cancellation ) { + $this->switch_to_blog( $this->_storage->network_install_blog_id ); } return; @@ -18162,7 +18923,11 @@ $this->_site = null; $this->_user = null; - fs_redirect( $this->get_activation_url() ); + if ( ! $is_network_action ) { + fs_redirect( $this->get_activation_url() ); + } else if ( is_numeric( $blog_id ) ) { + $this->switch_to_blog( $this->_storage->network_install_blog_id ); + } } } else { if ( $this->is_addon_activated( $plugin_id ) ) { @@ -18260,13 +19025,13 @@ #region Actions that might be called from external links (e.g. email) case 'cancel_trial': - if ( $plugin_id == $this->get_id() ) { - $this->_cancel_trial(); - } else { - if ( $this->is_addon_activated( $plugin_id ) ) { - $fs_addon = self::get_instance_by_id( $plugin_id ); - $fs_addon->_cancel_trial(); - } + $result = $this->cancel_subscription_or_trial( $plugin_id ); + if ( $this->is_api_error( $result ) ) { + $this->_admin_notices->add( + $result->error->message, + $this->get_text_x_inline( 'Oops', 'exclamation', 'oops' ) . '...', + 'error' + ); } return; @@ -19262,11 +20027,23 @@ if ( ! $this->is_addon() || ! $this->has_free_plan() ) { $first_time_path = $this->_menu->get_first_time_path(); - $url = $this->is_activation_mode() ? - $this->get_activation_url() : - ( empty( $first_time_path ) ? - $this->_get_admin_page_url() : - $first_time_path ); + + if ( $this->is_activation_mode() ) { + $url = $this->get_activation_url(); + } else if ( ! empty( $first_time_path ) ) { + $url = $first_time_path; + } else { + $page = ''; + if ( ! empty( $this->_dynamically_added_top_level_page_hook_name ) ) { + if ( $this->is_network_registered() ) { + $page = 'account'; + } else if ( $this->is_network_anonymous() ) { + $this->maybe_set_slug_and_network_menu_exists_flag(); + } + } + + $url = $this->_get_admin_page_url( $page ); + } } else { $plugin_fs = false; @@ -19386,6 +20163,21 @@ $this->_admin_notices->add_sticky( $message, $id, $title, $type ); } + /** + * Check if the paid version of the module is installed. + * + * @author Vova Feldman (@svovaf) + * @since 2.2.0 + * + * @return bool + */ + private function is_premium_version_installed() { + $premium_plugin_basename = $this->premium_plugin_basename(); + $premium_plugin = get_plugins( '/' . dirname( $premium_plugin_basename ) ); + + return ! empty( $premium_plugin ); + } + /** * Helper function that returns the final steps for the upgrade completion. * @@ -19411,25 +20203,52 @@ $plan_title = $this->get_plan_title(); } - // @since 1.2.1.5 The free version is auto deactivated. - $deactivation_step = version_compare( $this->version, '1.2.1.5', '<' ) ? - ( '<li>' . $this->esc_html_inline( 'Deactivate the free version', 'deactivate-free-version' ) . '.</li>' ) : - ''; + if ( $this->is_premium_version_installed() ) { + /** + * If the premium version is already installed, instead of showing the installation instructions, + * tell the current user to activate it. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + */ + $premium_plugin_basename = $this->premium_plugin_basename(); - return sprintf( - ' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>', - $this->get_text_inline( 'Please follow these steps to complete the upgrade', 'follow-steps-to-complete-upgrade' ), - ( empty( $activate_license_string ) ? '' : $activate_license_string . '</li><li>' ) . - $this->get_latest_download_link( sprintf( - /* translators: %s: Plan title */ - $this->get_text_inline( 'Download the latest %s version', 'download-latest-x-version' ), - $plan_title - ) ), - $deactivation_step, - $this->get_text_inline( 'Upload and activate the downloaded version', 'upload-and-activate' ), - '//bit.ly/upload-wp-' . $this->_module_type . 's', - $this->get_text_inline( 'How to upload and activate?', 'howto-upload-activate' ) - ); + return sprintf( + /* translators: %1s: Product title; %2s: Plan title */ + $this->get_text_inline( ' The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s', 'activate-premium-version' ), + sprintf( '<em>%s</em>', esc_html( $this->get_plugin_title() ) ), + $plan_title, + sprintf( + '<a style="margin-left: 10px;" href="%s"><button class="button button-primary">%s</button></a>', + wp_nonce_url( 'plugins.php?action=activate&plugin=' . $premium_plugin_basename, 'activate-plugin_' . $premium_plugin_basename ), + esc_html( sprintf( + /* translators: %s: Plan title */ + $this->get_text_inline( 'Activate %s features', 'activate-x-features' ), + $plan_title + ) ) + ) + ); + } else { + // @since 1.2.1.5 The free version is auto deactivated. + $deactivation_step = version_compare( $this->version, '1.2.1.5', '<' ) ? + ( '<li>' . $this->esc_html_inline( 'Deactivate the free version', 'deactivate-free-version' ) . '.</li>' ) : + ''; + + return sprintf( + ' %s: <ol><li>%s.</li>%s<li>%s (<a href="%s" target="_blank">%s</a>).</li></ol>', + $this->get_text_inline( 'Please follow these steps to complete the upgrade', 'follow-steps-to-complete-upgrade' ), + ( empty( $activate_license_string ) ? '' : $activate_license_string . '</li><li>' ) . + $this->get_latest_download_link( sprintf( + /* translators: %s: Plan title */ + $this->get_text_inline( 'Download the latest %s version', 'download-latest-x-version' ), + $plan_title + ) ), + $deactivation_step, + $this->get_text_inline( 'Upload and activate the downloaded version', 'upload-and-activate' ), + '//bit.ly/upload-wp-' . $this->_module_type . 's', + $this->get_text_inline( 'How to upload and activate?', 'howto-upload-activate' ) + ); + } } /** @@ -20212,13 +21031,19 @@ // Locate the main assets folder. if ( 1 < count( $fs_active_plugins->plugins ) ) { - $plugin_or_theme_img_dir = ( $this->is_plugin() ? WP_PLUGIN_DIR : get_theme_root() ); + $plugin_or_theme_img_dir = ( $this->is_plugin() ? WP_PLUGIN_DIR : get_theme_root( get_stylesheet() ) ); foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) { if ( $data->plugin_path == $this->get_plugin_basename() ) { $img_dir = $plugin_or_theme_img_dir . '/' - . str_replace( '../themes/', '', $sdk_path ) + /** + * The basename will be `themes` or the basename of a custom themes directory. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + */ + . str_replace( '../' . basename( $plugin_or_theme_img_dir ) . '/', '', $sdk_path ) . '/assets/img'; break; diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/class-fs-api.php b/wp-content/plugins/nextgen-gallery/freemius/includes/class-fs-api.php index 00a116e1a..0727fc074 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/includes/class-fs-api.php +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/class-fs-api.php @@ -238,7 +238,7 @@ if ( ! is_object( $result ) || isset( $result->error ) ) { // Api returned an error. if ( is_object( $cached_result ) && - ! isset( $cached_result ) + ! isset( $cached_result->error ) ) { // If there was an error during a newer data fetch, // fallback to older data version. @@ -248,9 +248,19 @@ $this->_logger->warn( 'Fallback to cached API result: ' . var_export( $cached_result, true ) ); } } else { - // If no older data version, return result without - // caching the error. - return $result; + if ( is_object( $result ) && 404 == $result->error->http ) { + /** + * If the response code is 404, cache the result for half of the `$expiration`. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3.1 + */ + $expiration /= 2; + } else { + // If no older data version and the response code is not 404, return result without + // caching the error. + return $result; + } } } diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/class-fs-plugin-updater.php b/wp-content/plugins/nextgen-gallery/freemius/includes/class-fs-plugin-updater.php index 5aba1701f..bcd416b50 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/includes/class-fs-plugin-updater.php +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/class-fs-plugin-updater.php @@ -35,6 +35,8 @@ */ private $_translation_updates; + private static $_upgrade_basename = null; + #-------------------------------------------------------------------------------- #region Singleton #-------------------------------------------------------------------------------- @@ -82,25 +84,25 @@ $this->add_transient_filters(); - if ( ! $this->_fs->has_any_active_valid_license() ) { - /** - * If user has the premium plugin's code but do NOT have an active license, - * encourage him to upgrade by showing that there's a new release, but instead - * of showing an update link, show upgrade link to the pricing page. - * - * @since 1.1.6 - * - */ - // WP 2.9+ - add_action( "after_plugin_row_{$this->_fs->get_plugin_basename()}", array( - &$this, - 'catch_plugin_update_row' - ), 9 ); - add_action( "after_plugin_row_{$this->_fs->get_plugin_basename()}", array( - &$this, - 'edit_and_echo_plugin_update_row' - ), 11, 2 ); - } + /** + * If user has the premium plugin's code but do NOT have an active license, + * encourage him to upgrade by showing that there's a new release, but instead + * of showing an update link, show upgrade link to the pricing page. + * + * @since 1.1.6 + * + */ + // WP 2.9+ + add_action( "after_plugin_row_{$this->_fs->get_plugin_basename()}", array( + &$this, + 'catch_plugin_update_row' + ), 9 ); + add_action( "after_plugin_row_{$this->_fs->get_plugin_basename()}", array( + &$this, + 'edit_and_echo_plugin_update_row' + ), 11, 2 ); + + add_action( 'admin_head', array( &$this, 'catch_plugin_information_dialog_contents' ) ); if ( ! WP_FS__IS_PRODUCTION_MODE ) { add_filter( 'http_request_host_is_external', array( @@ -110,16 +112,88 @@ } if ( $this->_fs->is_premium() ) { - if ( $this->is_correct_folder_name() ) { + if ( ! $this->is_correct_folder_name() ) { add_filter( 'upgrader_post_install', array( &$this, '_maybe_update_folder_name' ), 10, 3 ); } + add_filter( 'upgrader_pre_install', array( 'FS_Plugin_Updater', '_store_basename_for_source_adjustment' ), 1, 2 ); + add_filter( 'upgrader_source_selection', array( 'FS_Plugin_Updater', '_maybe_adjust_source_dir' ), 1, 3 ); + if ( ! $this->_fs->has_any_active_valid_license() ) { add_filter( 'wp_prepare_themes_for_js', array( &$this, 'change_theme_update_info_html' ), 10, 1 ); } } } + /** + * @author Leo Fajardo (@leorw) + * @since 2.1.4 + */ + function catch_plugin_information_dialog_contents() { + if ( + 'plugin-information' !== fs_request_get( 'tab', false ) || + $this->_fs->get_slug() !== fs_request_get( 'plugin', false ) + ) { + return; + } + + add_action( 'admin_footer', array( &$this, 'edit_and_echo_plugin_information_dialog_contents' ), 0, 1 ); + + ob_start(); + } + + /** + * @author Leo Fajardo (@leorw) + * @since 2.1.4 + * + * @param string $hook_suffix + */ + function edit_and_echo_plugin_information_dialog_contents( $hook_suffix ) { + if ( + 'plugin-information' !== fs_request_get( 'tab', false ) || + $this->_fs->get_slug() !== fs_request_get( 'plugin', false ) + ) { + return; + } + + $license = $this->_fs->_get_license(); + + $subscription = ( is_object( $license ) && ! $license->is_lifetime() ) ? + $this->_fs->_get_subscription( $license->id ) : + null; + + $contents = ob_get_clean(); + + /** + * Replace the plugin information dialog's "Install Update Now" button's text and URL. If there's a license, + * the text will be "Renew license" and will link to the checkout page with the license's billing cycle + * and quota. If there's no license, the text will be "Buy license" and will link to the pricing page. + */ + $contents = preg_replace( + '/(.+\<a.+)(id="plugin_update_from_iframe")(.+href=")([^\s]+)(".+\>)(.+)(\<\/a.+)/is', + is_object( $license ) ? + sprintf( + '$1$3%s$5%s$7', + $this->_fs->checkout_url( + is_object( $subscription ) ? + ( 1 == $subscription->billing_cycle ? WP_FS__PERIOD_MONTHLY : WP_FS__PERIOD_ANNUALLY ) : + WP_FS__PERIOD_LIFETIME, + false, + array( 'licenses' => $license->quota ) + ), + fs_text_inline( 'Renew license', 'renew-license', $this->_fs->get_slug() ) + ) : + sprintf( + '$1$3%s$5%s$7', + $this->_fs->pricing_url(), + fs_text_inline( 'Buy license', 'buy-license', $this->_fs->get_slug() ) + ), + $contents + ); + + echo $contents; + } + /** * @author Vova Feldman (@svovaf) * @since 2.0.0 @@ -183,15 +257,57 @@ $r = $current->response[ $file ]; - $plugin_update_row = preg_replace( - '/(\<div.+>)(.+)(\<a.+\<a.+)\<\/div\>/is', - '$1 $2 ' . sprintf( - $this->_fs->get_text_inline( '%sRenew your license now%s to access version %s security & feature updates, and support.', 'renew-license-now' ), - '<a href="' . $this->_fs->pricing_url() . '">', '</a>', - $r->new_version ) . - '$4', - $plugin_update_row - ); + if ( ! $this->_fs->has_any_active_valid_license() ) { + /** + * Turn the "new version" text into a link that opens the plugin information dialog when clicked and + * make the "View version x details" text link to the checkout page instead of opening the plugin + * information dialog when clicked. + * + * Sample input: + * There is a new version of Awesome Plugin available. <a href="...>View version x.y.z details</a> or <a href="...>update now</a>. + * Output: + * There is a <a href="...>new version</a> of Awesome Plugin available. <a href="...>Buy a license now</a> to access version x.y.z security & feature updates, and support. + * + * @author Leo Fajardo (@leorw) + */ + $plugin_update_row = preg_replace( + '/(\<div.+>)(.+)(\<a.+href="([^\s]+)"([^\<]+)\>.+\<a.+)(\<\/div\>)/is', + ( + '$1' . + sprintf( + fs_text_inline( 'There is a %s of %s available.', 'new-version-available', $this->_fs->get_slug() ), + sprintf( + '<a href="$4"%s>%s</a>', + '$5', + fs_text_inline( 'new version', 'new-version', $this->_fs->get_slug() ) + ), + $this->_fs->get_plugin_title() + ) . + ' ' . + $this->_fs->version_upgrade_checkout_link( $r->new_version ) . + '$6' + ), + $plugin_update_row + ); + } + + if ( + $this->_fs->is_plugin() && + isset( $r->upgrade_notice ) && + strlen( trim( $r->upgrade_notice ) ) > 0 + ) { + $slug = $this->_fs->get_slug(); + + $upgrade_notice_html = sprintf( + '<p class="notice fs-upgrade-notice fs-slug-%1s fs-type-%2s" data-slug="%1s" data-type="%2s"><strong>%3s</strong> %4s</p>', + $slug, + $this->_fs->get_module_type(), + fs_text_inline( 'Important Upgrade Notice:', 'upgrade_notice', $slug ), + esc_html( $r->upgrade_notice ) + ); + + $plugin_update_row = str_replace( '</div>', '</div>' . $upgrade_notice_html, $plugin_update_row ); + } echo $plugin_update_row; } @@ -220,10 +336,7 @@ $prepared_themes[ $theme_basename ]['update'] = preg_replace( '/(\<p.+>)(.+)(\<a.+\<a.+)\.(.+\<\/p\>)/is', - '$1 $2 ' . sprintf( - $this->_fs->get_text_inline( '%sRenew your license now%s to access version %s security & feature updates, and support.', 'renew-license-now' ), - '<a href="' . $this->_fs->pricing_url() . '">', '</a>', - $themes_update->response[ $theme_basename ]['new_version'] ) . + '$1 $2 ' . $this->_fs->version_upgrade_checkout_link( $themes_update->response[ $theme_basename ]['new_version'] ) . '$4', $prepared_themes[ $theme_basename ]['update'] ); @@ -303,7 +416,8 @@ $new_version = $this->_fs->get_update( false, fs_request_get_bool( 'force-check' ), - WP_FS__TIME_24_HOURS_IN_SEC / 24 + WP_FS__TIME_24_HOURS_IN_SEC / 24, + $this->_fs->get_plugin_version() ); $this->_update_details = false; @@ -401,6 +515,18 @@ ); } + if ( $this->_fs->is_premium() ) { + $latest_tag = $this->_fs->_fetch_latest_version( $this->_fs->get_id(), false ); + + if ( + isset( $latest_tag->readme ) && + isset( $latest_tag->readme->upgrade_notice ) && + ! empty( $latest_tag->readme->upgrade_notice ) + ) { + $update->upgrade_notice = $latest_tag->readme->upgrade_notice; + } + } + $update->{$this->_fs->get_module_type()} = $this->_fs->get_plugin_basename(); return $update; @@ -573,7 +699,7 @@ $plugin_basename = $this->_fs->get_plugin_basename(); if ( 'themes' === $module_type ) { - $plugin_basename = str_replace( '-premium', '', $plugin_basename ); + $plugin_basename = $slug; } global $wp_version; @@ -585,7 +711,7 @@ array( "{$module_type}" => array( $plugin_basename => array( - 'Name' => trim( str_replace( '(Premium)', '', $plugin_data['Name'] ) ), + 'Name' => trim( str_replace( $this->_fs->get_plugin()->premium_suffix, '', $plugin_data['Name'] ) ), 'Author' => $plugin_data['Author'], ) ) @@ -748,11 +874,13 @@ if ( !isset($info->error) ) { }*/ } + $plugin_version = $this->_fs->get_plugin_version(); + // Get plugin's newest update. - $new_version = $this->get_latest_download_details( $is_addon ? $addon->id : false ); + $new_version = $this->get_latest_download_details( $is_addon ? $addon->id : false, $plugin_version ); if ( ! is_object( $new_version ) || empty( $new_version->version ) ) { - $data->version = $this->_fs->get_plugin_version(); + $data->version = $plugin_version; } else { if ( $is_addon ) { $data->name = $addon->title . ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' ); @@ -769,6 +897,52 @@ if ( !isset($info->error) ) { $data->version = $new_version->version; $data->download_link = $new_version->url; + + if ( isset( $new_version->readme ) && is_object( $new_version->readme ) ) { + $new_version_readme_data = $new_version->readme; + if ( isset( $new_version_readme_data->sections ) ) { + $new_version_readme_data->sections = (array) $new_version_readme_data->sections; + } else { + $new_version_readme_data->sections = array(); + } + + if ( isset( $data->sections ) ) { + if ( isset( $data->sections['screenshots'] ) ) { + $new_version_readme_data->sections['screenshots'] = $data->sections['screenshots']; + } + + if ( isset( $data->sections['reviews'] ) ) { + $new_version_readme_data->sections['reviews'] = $data->sections['reviews']; + } + } + + if ( isset( $new_version_readme_data->banners ) ) { + $new_version_readme_data->banners = (array) $new_version_readme_data->banners; + } else if ( isset( $data->banners ) ) { + $new_version_readme_data->banners = $data->banners; + } + + $wp_org_sections = array( + 'author', + 'author_profile', + 'rating', + 'ratings', + 'num_ratings', + 'support_threads', + 'support_threads_resolved', + 'active_installs', + 'added', + 'homepage' + ); + + foreach ( $wp_org_sections as $wp_org_section ) { + if ( isset( $data->{$wp_org_section} ) ) { + $new_version_readme_data->{$wp_org_section} = $data->{$wp_org_section}; + } + } + + $data = $new_version_readme_data; + } } return $data; @@ -779,11 +953,13 @@ if ( !isset($info->error) ) { * @since 1.2.1.7 * * @param number|bool $addon_id + * @param bool|string $newer_than Since 2.2.1 + * @param bool|string $fetch_readme Since 2.2.1 * * @return object */ - private function get_latest_download_details( $addon_id = false ) { - return $this->_fs->_fetch_latest_version( $addon_id ); + private function get_latest_download_details( $addon_id = false, $newer_than = false, $fetch_readme = true ) { + return $this->_fs->_fetch_latest_version( $addon_id, true, WP_FS__TIME_24_HOURS_IN_SEC, $newer_than, $fetch_readme ); } /** @@ -793,16 +969,10 @@ if ( !isset($info->error) ) { * @author Vova Feldman (@svovaf) * @since 1.2.1.6 * - * @param string $basename Current plugin's basename. - * * @return bool */ - private function is_correct_folder_name( $basename = '' ) { - if ( empty( $basename ) ) { - $basename = $this->_fs->get_plugin_basename(); - } - - return ( $this->_fs->get_target_folder_name() != trim( dirname( $basename ), '/\\' ) ); + private function is_correct_folder_name() { + return ( $this->_fs->get_target_folder_name() == trim( dirname( $this->_fs->get_plugin_basename() ), '/\\' ) ); } /** @@ -838,7 +1008,7 @@ if ( !isset($info->error) ) { $filename = basename( $basename ); $new_basename = plugin_basename( - trailingslashit( $this->_fs->get_slug() . ( $this->_fs->is_premium() ? '-premium' : '' ) ) . + trailingslashit( $this->_fs->is_premium() ? $this->_fs->get_premium_slug() : $this->_fs->get_slug() ) . $filename ); @@ -906,14 +1076,16 @@ if ( !isset($info->error) ) { ); } - $slug = $addon->slug; - $title = $addon->title . ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' ); + $slug = $addon->slug; + $premium_slug = $addon->premium_slug; + $title = $addon->title . ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' ); $is_addon = true; } else { - $slug = $this->_fs->get_slug(); - $title = $this->_fs->get_plugin_title() . - ( $this->_fs->is_addon() ? ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' ) : '' ); + $slug = $this->_fs->get_slug(); + $premium_slug = $this->_fs->get_premium_slug(); + $title = $this->_fs->get_plugin_title() . + ( $this->_fs->is_addon() ? ' ' . $this->_fs->get_text_inline( 'Add-On', 'addon' ) : '' ); } if ( $this->is_premium_plugin_active( $plugin_id ) ) { @@ -926,8 +1098,8 @@ if ( !isset($info->error) ) { ); } - $latest_version = $this->get_latest_download_details( $plugin_id ); - $target_folder = "{$slug}-premium"; + $latest_version = $this->get_latest_download_details( $plugin_id, false, false ); + $target_folder = $premium_slug; // Prep variables for Plugin_Installer_Skin class. $extra = array(); @@ -966,11 +1138,11 @@ if ( !isset($info->error) ) { $upgrader = new Plugin_Upgrader( $skin ); // Perform the action and install the plugin from the $source urldecode(). - add_filter( 'upgrader_source_selection', array( &$this, '_maybe_adjust_source_dir' ), 1, 3 ); + add_filter( 'upgrader_source_selection', array( 'FS_Plugin_Updater', '_maybe_adjust_source_dir' ), 1, 3 ); $install_result = $upgrader->install( $source ); - remove_filter( 'upgrader_source_selection', array( &$this, '_maybe_adjust_source_dir' ), 1 ); + remove_filter( 'upgrader_source_selection', array( 'FS_Plugin_Updater', '_maybe_adjust_source_dir' ), 1 ); if ( is_wp_error( $install_result ) ) { return array( @@ -1060,6 +1232,29 @@ if ( !isset($info->error) ) { return is_plugin_active( $this->_fs->premium_plugin_basename() ); } + /** + * Store the basename since it's not always available in the `_maybe_adjust_source_dir` method below. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + * + * @param bool|WP_Error $response Response. + * @param array $hook_extra Extra arguments passed to hooked filters. + * + * @return bool|WP_Error + */ + static function _store_basename_for_source_adjustment( $response, $hook_extra ) { + if ( isset( $hook_extra['plugin'] ) ) { + self::$_upgrade_basename = $hook_extra['plugin']; + } else if ( isset( $hook_extra['theme'] ) ) { + self::$_upgrade_basename = $hook_extra['theme']; + } else { + self::$_upgrade_basename = null; + } + + return $response; + } + /** * Adjust the plugin directory name if necessary. * Assumes plugin has a folder (not a single file plugin). @@ -1071,6 +1266,7 @@ if ( !isset($info->error) ) { * * @author Vova Feldman * @since 1.2.1.7 + * @since 2.2.1 The method was converted to static since when the admin update bulk products via the Updates section, the logic applies the `upgrader_source_selection` filter for every product that is being updated. * * @param string $source Path to upgrade/zip-file-name.tmp/subdirectory/. * @param string $remote_source Path to upgrade/zip-file-name.tmp. @@ -1078,13 +1274,64 @@ if ( !isset($info->error) ) { * * @return string|WP_Error */ - function _maybe_adjust_source_dir( $source, $remote_source, $upgrader ) { + static function _maybe_adjust_source_dir( $source, $remote_source, $upgrader ) { if ( ! is_object( $GLOBALS['wp_filesystem'] ) ) { return $source; } + $basename = self::$_upgrade_basename; + $is_theme = false; + // Figure out what the slug is supposed to be. - $desired_slug = $upgrader->skin->options['extra']['slug']; + if ( isset( $upgrader->skin->options['extra'] ) ) { + // Set by the auto-install logic. + $desired_slug = $upgrader->skin->options['extra']['slug']; + } else if ( ! empty( $basename ) ) { + /** + * If it doesn't end with ".php", it's a theme. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + */ + $is_theme = ( ! fs_ends_with( $basename, '.php' ) ); + + $desired_slug = ( ! $is_theme ) ? + dirname( $basename ) : + // Theme slug + $basename; + } else { + // Can't figure out the desired slug, stop the execution. + return $source; + } + + if ( is_multisite() ) { + /** + * If we are running in a multisite environment and the product is not network activated, + * the instance will not exist anyway. Therefore, try to update the source if necessary + * regardless if the Freemius instance of the product exists or not. + * + * @author Vova Feldman + */ + } else if ( ! empty( $basename ) ) { + $fs = Freemius::get_instance_by_file( + $basename, + $is_theme ? + WP_FS__MODULE_TYPE_THEME : + WP_FS__MODULE_TYPE_PLUGIN + ); + + if ( ! is_object( $fs ) ) { + /** + * If the Freemius instance does not exist on a non-multisite network environment, it means that: + * 1. The product is not powered by Freemius; OR + * 2. The product is not activated, therefore, we don't mind if after the update the folder name will change. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + */ + return $source; + } + } $subdir_name = untrailingslashit( str_replace( trailingslashit( $remote_source ), '', $source ) ); @@ -1094,19 +1341,20 @@ if ( !isset($info->error) ) { if ( true === $GLOBALS['wp_filesystem']->move( $from_path, $to_path ) ) { return trailingslashit( $to_path ); - } else { - return new WP_Error( - 'rename_failed', - $this->_fs->get_text_inline( 'The remote plugin package does not contain a folder with the desired slug and renaming did not work.', 'module-package-rename-failure' ), - array( - 'found' => $subdir_name, - 'expected' => $desired_slug - ) ); } + + return new WP_Error( + 'rename_failed', + fs_text_inline( 'The remote plugin package does not contain a folder with the desired slug and renaming did not work.', 'module-package-rename-failure' ), + array( + 'found' => $subdir_name, + 'expected' => $desired_slug + ) + ); } return $source; } #endregion - } \ No newline at end of file + } diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/class-fs-storage.php b/wp-content/plugins/nextgen-gallery/freemius/includes/class-fs-storage.php index c46a84d2b..084921251 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/includes/class-fs-storage.php +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/class-fs-storage.php @@ -132,9 +132,8 @@ * @param int $blog_id */ function set_site_blog_context( $blog_id ) { + $this->_storage = $this->get_site_storage( $blog_id ); $this->_blog_id = $blog_id; - - $this->_storage = $this->get_site_storage( $this->_blog_id ); } /** @@ -374,6 +373,7 @@ // When network activated, then network level. 'install_timestamp' => 1, 'prev_is_premium' => 1, + 'require_license_activation' => 1, // If not network activated OR delegated, then site level. 'activation_timestamp' => 2, diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/entities/class-fs-plugin.php b/wp-content/plugins/nextgen-gallery/freemius/includes/entities/class-fs-plugin.php index cc45e6973..4623403bf 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/includes/entities/class-fs-plugin.php +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/entities/class-fs-plugin.php @@ -24,6 +24,13 @@ * @var string */ public $slug; + /** + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + * + * @var string + */ + public $premium_slug; /** * @since 1.2.2 * @@ -67,6 +74,13 @@ * @var bool */ public $is_premium; + /** + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + * + * @var string + */ + public $premium_suffix; /** * @since 1.0.9 * @@ -87,6 +101,14 @@ $this->is_premium = false; $this->is_live = true; + if ( empty( $this->premium_slug ) && ! empty( $plugin->slug ) ) { + $this->premium_slug = "{$this->slug}-premium"; + } + + if ( empty( $this->premium_suffix ) ) { + $this->premium_suffix = '(Premium)'; + } + if ( isset( $plugin->info ) && is_object( $plugin->info ) ) { $this->info = new FS_Plugin_Info( $plugin->info ); } diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/entities/class-fs-site.php b/wp-content/plugins/nextgen-gallery/freemius/includes/entities/class-fs-site.php index c74bb55ba..1e2c82f8a 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/includes/entities/class-fs-site.php +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/entities/class-fs-site.php @@ -164,6 +164,8 @@ fs_ends_with( $subdomain, '.myftpupload.com' ) || // ngrok tunneling. fs_ends_with( $subdomain, '.ngrok.io' ) || + // wpsandbox. + fs_ends_with( $subdomain, '.wpsandbox.pro' ) || // SiteGround staging. fs_starts_with( $subdomain, 'staging' ) || // WPEngine staging. diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/fs-core-functions.php b/wp-content/plugins/nextgen-gallery/freemius/includes/fs-core-functions.php index c419a6ed5..3ccdf09bc 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/includes/fs-core-functions.php +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/fs-core-functions.php @@ -86,9 +86,25 @@ function fs_asset_url( $asset_abs_path ) { $wp_content_dir = fs_normalize_path( WP_CONTENT_DIR ); $asset_abs_path = fs_normalize_path( $asset_abs_path ); - $asset_rel_path = str_replace( $wp_content_dir, '', $asset_abs_path ); - $asset_url = content_url( fs_normalize_path( $asset_rel_path ) ); + if ( 0 === strpos( $asset_abs_path, $wp_content_dir ) ) { + // Handle both theme and plugin assets located in the standard directories. + $asset_rel_path = str_replace( $wp_content_dir, '', $asset_abs_path ); + $asset_url = content_url( fs_normalize_path( $asset_rel_path ) ); + } else { + $wp_plugins_dir = fs_normalize_path( WP_PLUGIN_DIR ); + if ( 0 === strpos( $asset_abs_path, $wp_plugins_dir ) ) { + // Try to handle plugin assets that may be located in a non-standard plugins directory. + $asset_rel_path = str_replace( $wp_plugins_dir, '', $asset_abs_path ); + $asset_url = plugins_url( fs_normalize_path( $asset_rel_path ) ); + } else { + // Try to handle theme assets that may be located in a non-standard themes directory. + $active_theme_stylesheet = get_stylesheet(); + $wp_themes_dir = fs_normalize_path( trailingslashit( get_theme_root( $active_theme_stylesheet ) ) ); + $asset_rel_path = str_replace( $wp_themes_dir, '', fs_normalize_path( $asset_abs_path ) ); + $asset_url = trailingslashit( get_theme_root_uri( $active_theme_stylesheet ) ) . fs_normalize_path( $asset_rel_path ); + } + } return $asset_url; } @@ -709,6 +725,97 @@ return $key; } + #region Private + + /** + * Retrieve an inline translated text by key with a context. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.3 + * + * @param string $text Translatable string. + * @param string $context Context information for the translators. + * @param string $key String key for overrides. + * @param string $slug Module slug for overrides. + * + * @return string + * + * @global $fs_text_overrides + */ + function _fs_text_x_inline( $text, $context, $key = '', $slug = 'freemius' ) { + list( $text, $text_domain ) = fs_text_and_domain( $text, $key, $slug ); + + // Avoid misleading Theme Check warning. + $fn = 'translate_with_gettext_context'; + + return $fn( $text, $context, $text_domain ); + } + + #endregion + + /** + * Retrieve an inline translated text by key with a context. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.3 + * + * @param string $text Translatable string. + * @param string $context Context information for the translators. + * @param string $key String key for overrides. + * @param string $slug Module slug for overrides. + * + * @return string + * + * @global $fs_text_overrides + */ + function fs_text_x_inline( $text, $context, $key = '', $slug = 'freemius' ) { + return _fs_text_x_inline( $text, $context, $key, $slug ); + } + + /** + * Output a translated text by key. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.1.7 + * + * @param string $key + * @param string $slug + */ + function fs_echo( $key, $slug = 'freemius' ) { + echo fs_text( $key, $slug ); + } + + /** + * Output an inline translated text. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.3 + * + * @param string $text Translatable string. + * @param string $key String key for overrides. + * @param string $slug Module slug for overrides. + */ + function fs_echo_inline( $text, $key = '', $slug = 'freemius' ) { + echo _fs_text_inline( $text, $key, $slug ); + } + + /** + * Output an inline translated text with a context. + * + * @author Vova Feldman (@svovaf) + * @since 1.2.3 + * + * @param string $text Translatable string. + * @param string $context Context information for the translators. + * @param string $key String key for overrides. + * @param string $slug Module slug for overrides. + */ + function fs_echo_x_inline( $text, $context, $key = '', $slug = 'freemius' ) { + echo _fs_text_x_inline( $text, $context, $key, $slug ); + } + } + + if ( ! function_exists( 'fs_text_override' ) ) { /** * Get a translatable text override if exists, or `false`. * @@ -746,7 +853,9 @@ return false; } + } + if ( ! function_exists( 'fs_text_and_domain' ) ) { /** * Get a translatable text and its text domain. * @@ -776,9 +885,9 @@ return array( $text, $text_domain ); } + } - #region Private - + if ( ! function_exists( '_fs_text_inline' ) ) { /** * Retrieve an inline translated text by key. * @@ -801,33 +910,9 @@ return $fn( $text, $text_domain ); } + } - /** - * Retrieve an inline translated text by key with a context. - * - * @author Vova Feldman (@svovaf) - * @since 1.2.3 - * - * @param string $text Translatable string. - * @param string $context Context information for the translators. - * @param string $key String key for overrides. - * @param string $slug Module slug for overrides. - * - * @return string - * - * @global $fs_text_overrides - */ - function _fs_text_x_inline( $text, $context, $key = '', $slug = 'freemius' ) { - list( $text, $text_domain ) = fs_text_and_domain( $text, $key, $slug ); - - // Avoid misleading Theme Check warning. - $fn = 'translate_with_gettext_context'; - - return $fn( $text, $context, $text_domain ); - } - - #endregion - + if ( ! function_exists( 'fs_text_inline' ) ) { /** * Retrieve an inline translated text by key. * @@ -845,67 +930,6 @@ function fs_text_inline( $text, $key = '', $slug = 'freemius' ) { return _fs_text_inline( $text, $key, $slug ); } - - /** - * Retrieve an inline translated text by key with a context. - * - * @author Vova Feldman (@svovaf) - * @since 1.2.3 - * - * @param string $text Translatable string. - * @param string $context Context information for the translators. - * @param string $key String key for overrides. - * @param string $slug Module slug for overrides. - * - * @return string - * - * @global $fs_text_overrides - */ - function fs_text_x_inline( $text, $context, $key = '', $slug = 'freemius' ) { - return _fs_text_x_inline( $text, $context, $key, $slug ); - } - - /** - * Output a translated text by key. - * - * @author Vova Feldman (@svovaf) - * @since 1.2.1.7 - * - * @param string $key - * @param string $slug - */ - function fs_echo( $key, $slug = 'freemius' ) { - echo fs_text( $key, $slug ); - } - - /** - * Output an inline translated text. - * - * @author Vova Feldman (@svovaf) - * @since 1.2.3 - * - * @param string $text Translatable string. - * @param string $key String key for overrides. - * @param string $slug Module slug for overrides. - */ - function fs_echo_inline( $text, $key = '', $slug = 'freemius' ) { - echo _fs_text_inline( $text, $key, $slug ); - } - - /** - * Output an inline translated text with a context. - * - * @author Vova Feldman (@svovaf) - * @since 1.2.3 - * - * @param string $text Translatable string. - * @param string $context Context information for the translators. - * @param string $key String key for overrides. - * @param string $slug Module slug for overrides. - */ - function fs_echo_x_inline( $text, $context, $key = '', $slug = 'freemius' ) { - echo _fs_text_x_inline( $text, $context, $key, $slug ); - } } if ( ! function_exists( 'fs_esc_attr' ) ) { diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/fs-essential-functions.php b/wp-content/plugins/nextgen-gallery/freemius/includes/fs-essential-functions.php index 727ef2e7b..7a1652688 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/includes/fs-essential-functions.php +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/fs-essential-functions.php @@ -36,6 +36,8 @@ } } + require_once dirname( __FILE__ ) . '/supplements/fs-essential-functions-2.2.1.php'; + #region Core Redirect (copied from BuddyPress) ----------------------------------------- if ( ! function_exists( 'fs_redirect' ) ) { @@ -273,11 +275,11 @@ require_once ABSPATH . 'wp-admin/includes/plugin.php'; } - $all_plugins = get_plugins(); + $all_plugins = fs_get_plugins( true ); $all_plugins_paths = array(); // Get active plugin's main files real full names (might be symlinks). - foreach ( $all_plugins as $relative_path => &$data ) { + foreach ( $all_plugins as $relative_path => $data ) { $all_plugins_paths[] = fs_normalize_path( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) ); } diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/fs-plugin-info-dialog.php b/wp-content/plugins/nextgen-gallery/freemius/includes/fs-plugin-info-dialog.php index 489bb4c3e..022f8e7aa 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/includes/fs-plugin-info-dialog.php +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/fs-plugin-info-dialog.php @@ -64,7 +64,7 @@ function _get_addon_info_filter( $data, $action = '', $args = null ) { $this->_logger->entrance(); - $parent_plugin_id = fs_request_get( 'parent_plugin_id', false ); + $parent_plugin_id = fs_request_get( 'parent_plugin_id', $this->_fs->get_id() ); if ( $this->_fs->get_id() != $parent_plugin_id || ( 'plugin_information' !== $action ) || @@ -142,6 +142,8 @@ } } + $latest = null; + if ( ! $has_paid_plan && $selected_addon->is_wp_org_compliant ) { $repo_data = FS_Plugin_Updater::_fetch_plugin_info_from_repository( 'plugin_information', (object) array( @@ -170,8 +172,28 @@ } else { $data->wp_org_missing = false; + $current_addon_version = false; + if ( $this->_fs->is_addon_activated( $selected_addon->id ) ) { + $current_addon_version = $this->_fs->get_addon_instance( $selected_addon->id )->get_plugin_version(); + } else if ( $this->_fs->is_addon_installed( $selected_addon->id ) ) { + $addon_plugin_data = get_plugin_data( + ( WP_PLUGIN_DIR . '/' . $this->_fs->get_addon_basename( $selected_addon->id ) ), + false, + false + ); + + if ( ! empty( $addon_plugin_data ) ) { + $current_addon_version = $addon_plugin_data['Version']; + } + } + // Fetch latest version from Freemius. - $latest = $this->_fs->_fetch_latest_version( $selected_addon->id ); + $latest = $this->_fs->_fetch_latest_version( + $selected_addon->id, + true, + WP_FS__TIME_24_HOURS_IN_SEC, + $current_addon_version + ); if ( $has_paid_plan ) { $data->checkout_link = $this->_fs->checkout_url(); @@ -214,11 +236,19 @@ } } - $data->name = $selected_addon->title; - $view_vars = array( 'plugin' => $selected_addon ); - $data->sections = array( - 'description' => fs_get_template( '/plugin-info/description.php', $view_vars ), - ); + $data->name = $selected_addon->title; + $view_vars = array( 'plugin' => $selected_addon ); + + if ( is_object( $latest ) && isset( $latest->readme ) && is_object( $latest->readme ) ) { + $latest_version_readme_data = $latest->readme; + if ( isset( $latest_version_readme_data->sections ) ) { + $data->sections = (array) $latest_version_readme_data->sections; + } else { + $data->sections = array(); + } + } + + $data->sections['description'] = fs_get_template( '/plugin-info/description.php', $view_vars ); if ( $has_pricing ) { // Add plans to data. diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/i18n.php b/wp-content/plugins/nextgen-gallery/freemius/includes/i18n.php index 4de505c49..2f6b25b22 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/includes/i18n.php +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/i18n.php @@ -94,7 +94,7 @@ 'activate-x-now' => _fs_x( 'Complete "%s" Activation Now', '%s - plugin name. As complete "Jetpack" activation now' ), 'few-plugin-tweaks' => _fs_text( 'We made a few tweaks to the %s, %s' ), - 'optin-x-now' => _fs_text( 'Opt in to make "%s" Better!' ), + 'optin-x-now' => _fs_text( 'Opt in to make "%s" better!' ), 'error' => _fs_text( 'Error' ), 'failed-finding-main-path' => _fs_text( 'Freemius SDK couldn\'t find the plugin\'s main file. Please contact sdk@freemius.com with the current error.' ), 'learn-more' => _fs_text( 'Learn more' ), @@ -215,7 +215,7 @@ 'delete-account-confirm' => _fs_text( 'Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?' ), 'downgrade-x-confirm' => _fs_text( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.' ), 'cancel-trial-confirm' => _fs_text( 'Cancelling the trial will immediately block access to all premium features. Are you sure?' ), - 'after-downgrade-non-blocking' => _fs_text( 'You can still enjoy all %s features but you will not have access to %s updates and support.' ), + 'after-downgrade-non-blocking' => _fs_text( 'You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support.' ), 'after-downgrade-blocking' => _fs_text( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.' ), 'proceed-confirmation' => _fs_text( 'Are you sure you want to proceed?' ), #endregion Account @@ -600,4 +600,4 @@ 'not-compatible-warning' => _fs_text( 'This plugin has not been marked as compatible with your version of WordPress.' ), 'newer-installed' => _fs_text( 'Newer Version (%s) Installed' ), 'latest-installed' => _fs_text( 'Latest Version Installed' ), - ); \ No newline at end of file + ); diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/managers/class-fs-admin-menu-manager.php b/wp-content/plugins/nextgen-gallery/freemius/includes/managers/class-fs-admin-menu-manager.php index 489ddafee..439a84a98 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/includes/managers/class-fs-admin-menu-manager.php +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/managers/class-fs-admin-menu-manager.php @@ -181,11 +181,6 @@ // @deprecated $this->_type = $this->get_option( $menu, 'type', 'page' ); - - $this->_first_time_path = $this->get_option( $menu, 'first-path', false ); - if ( ! empty( $this->_first_time_path ) && is_string( $this->_first_time_path ) ) { - $this->_first_time_path = admin_url( $this->_first_time_path, 'admin' ); - } } $this->_is_override_exact = $this->get_bool_option( $menu, 'override_exact' ); @@ -208,6 +203,11 @@ // 'page' // ) ); } + + $this->_first_time_path = $this->get_option( $menu, 'first-path', false ); + if ( ! empty( $this->_first_time_path ) && is_string( $this->_first_time_path ) ) { + $this->_first_time_path = admin_url( $this->_first_time_path, 'admin' ); + } } } @@ -280,6 +280,18 @@ return $this->_network_menu_exists; } + /** + * @author Leo Fajardo (@leorw) + * + * @param string $menu_slug + * + * @since 2.1.3 + */ + function set_slug_and_network_menu_exists_flag($menu_slug ) { + $this->_menu_slug = $menu_slug; + $this->_network_menu_exists = false; + } + /** * @author Vova Feldman (@svovaf) * @since 1.1.3 diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/managers/class-fs-admin-notice-manager.php b/wp-content/plugins/nextgen-gallery/freemius/includes/managers/class-fs-admin-notice-manager.php index b68a479b5..1e911e055 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/includes/managers/class-fs-admin-notice-manager.php +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/managers/class-fs-admin-notice-manager.php @@ -219,6 +219,9 @@ return; } + + $show_admin_notices = ( ! $this->is_gutenberg_page() ); + foreach ( $this->_notices as $id => $msg ) { if ( isset( $msg['wp_user_id'] ) && is_numeric( $msg['wp_user_id'] ) ) { if ( get_current_user_id() != $msg['wp_user_id'] ) { @@ -226,6 +229,49 @@ } } + /** + * Added a filter to control the visibility of admin notices. + * + * Usage example: + * + * /** + * * @param bool $show + * * @param array $msg { + * * @var string $message The actual message. + * * @var string $title An optional message title. + * * @var string $type The type of the message ('success', 'update', 'warning', 'promotion'). + * * @var string $id The unique identifier of the message. + * * @var string $manager_id The unique identifier of the notices manager. For plugins it would be the plugin's slug, for themes - `<slug>-theme`. + * * @var string $plugin The product's title. + * * @var string $wp_user_id An optional WP user ID that this admin notice is for. + * * } + * * + * * @return bool + * *\/ + * function my_custom_show_admin_notice( $show, $msg ) { + * if ('trial_promotion' != $msg['id']) { + * return false; + * } + * + * return $show; + * } + * + * my_fs()->add_filter( 'show_admin_notice', 'my_custom_show_admin_notice', 10, 2 ); + * + * @author Vova Feldman + * @since 2.2.0 + */ + $show_notice = call_user_func_array( 'fs_apply_filter', array( + $this->_module_unique_affix, + 'show_admin_notice', + $show_admin_notices, + $msg + ) ); + + if ( true !== $show_notice ) { + continue; + } + fs_require_template( 'admin-notice.php', $msg ); if ( $msg['sticky'] ) { @@ -244,6 +290,34 @@ fs_enqueue_local_style( 'fs_common', '/admin/common.css' ); } + /** + * Check if the current page is the Gutenberg block editor. + * + * @author Vova Feldman (@svovaf) + * @since 2.2.3 + * + * @return bool + */ + function is_gutenberg_page() { + if ( function_exists( 'is_gutenberg_page' ) && + is_gutenberg_page() + ) { + // The Gutenberg plugin is on. + return true; + } + + $current_screen = get_current_screen(); + + if ( method_exists( $current_screen, 'is_block_editor' ) && + $current_screen->is_block_editor() + ) { + // Gutenberg page on 5+. + return true; + } + + return false; + } + /** * Add admin message to admin messages queue, and hook to admin_notices / all_admin_notices if not yet hooked. * diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php b/wp-content/plugins/nextgen-gallery/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php index 96da5dfc5..5a0c2062f 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/supplements/fs-essential-functions-1.1.7.1.php @@ -26,16 +26,12 @@ * If the user changes the main plugin's file name, the file_exists() * will catch it. */ - if ( ! function_exists( 'get_plugins' ) ) { - require_once ABSPATH . 'wp-admin/includes/plugin.php'; - } - - $all_plugins = get_plugins(); + $all_plugins = fs_get_plugins( true ); $file_real_path = fs_normalize_path( realpath( $file ) ); // Get active plugin's main files real full names (might be symlinks). - foreach ( $all_plugins as $relative_path => &$data ) { + foreach ( $all_plugins as $relative_path => $data ) { if ( 0 === strpos( $file_real_path, fs_normalize_path( dirname( realpath( WP_PLUGIN_DIR . '/' . $relative_path ) ) ) ) ) { if ( '.' !== dirname( trailingslashit( $relative_path ) ) ) { return $relative_path; diff --git a/wp-content/plugins/nextgen-gallery/freemius/includes/supplements/fs-essential-functions-2.2.1.php b/wp-content/plugins/nextgen-gallery/freemius/includes/supplements/fs-essential-functions-2.2.1.php new file mode 100644 index 000000000..946a34d6c --- /dev/null +++ b/wp-content/plugins/nextgen-gallery/freemius/includes/supplements/fs-essential-functions-2.2.1.php @@ -0,0 +1,45 @@ +<?php + /** + * @package Freemius + * @copyright Copyright (c) 2015, Freemius, Inc. + * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 + * @since 2.2.1 + */ + + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + + if ( ! function_exists( 'fs_get_plugins' ) ) { + /** + * @author Leo Fajardo (@leorw) + * @since 2.2.1 + * + * @param bool $delete_cache + * + * @return array + */ + function fs_get_plugins( $delete_cache = false ) { + $cached_plugins = wp_cache_get( 'plugins', 'plugins' ); + if ( ! is_array( $cached_plugins ) ) { + $cached_plugins = array(); + } + + $plugin_folder = ''; + if ( isset( $cached_plugins[ $plugin_folder ] ) ) { + $plugins = $cached_plugins[ $plugin_folder ]; + } else { + if ( ! function_exists( 'get_plugins' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + + $plugins = get_plugins(); + + if ( $delete_cache && is_plugin_active( 'woocommerce/woocommerce.php' ) ) { + wp_cache_delete( 'plugins', 'plugins' ); + } + } + + return $plugins; + } + } \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-da_DK.mo b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-da_DK.mo index 76ec97cb756f6237de715ea61a197f2d896c515c..c5248c41291238fbffe113eb772814b1630cf7cf 100644 GIT binary patch literal 51989 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 delta 194 zcmbO_jrlWU#62OFsSFGZ42%p63^EK13@RWF0|SE&5`C0`fk79<4=BpdN=+`&^-R$X zOD!tS%+Iq@;0j7D$S*3<^({`%Own~JO)u6B$+uFNEK{zo%jJ_;T%sFNl$ckXlUR~p zWTn96lbDxYnwXx7#MBK*P0Y1YnEa<)N|(zyKd&S;52`6GwMf@BFF8LYGcVmrfh!=V Sv?wu0*Db#&x7bR7iva+}7dA}* diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-da_DK.po b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-da_DK.po index fbc3cc027..44eaa8d9f 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-da_DK.po +++ b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-da_DK.po @@ -1,12 +1,2434 @@ +# Copyright (C) 2019 freemius +# This file is distributed under the same license as the freemius package. +# Translators: +# Joachim Jensen, 2016-2018 +# Lars Koudal, 2018 msgid "" msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" +"Project-Id-Version: WordPress SDK\n" +"Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language: \n" -"Language-Team: \n" -"Content-Type: \n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" +"PO-Revision-Date: 2018-11-25 07:22+0000\n" +"Last-Translator: Vova Feldman <vova@freemius.com>\n" +"Language: da_DK\n" +"Language-Team: Danish (Denmark) (http://www.transifex.com/freemius/wordpress-sdk/language/da_DK/)\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: get_text_inline;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;get_text_x_inline:1,2c;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: includes/class-freemius.php:1688 +msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." +msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." + +#: includes/class-freemius.php:1690 +msgid "Error" +msgstr "Fejl" + +#: includes/class-freemius.php:2011 +msgid "I found a better %s" +msgstr "Jeg fandt et bedre %s" + +#: includes/class-freemius.php:2013 +msgid "What's the %s's name?" +msgstr "Hvad er navnet på %s?" + +#: includes/class-freemius.php:2019 +msgid "It's a temporary %s. I'm just debugging an issue." +msgstr "Det er en midlertidig %s. Jeg er i gang med fejlrettelser." + +#: includes/class-freemius.php:2021 +msgid "Deactivation" +msgstr "Deaktivering" + +#: includes/class-freemius.php:2022 +msgid "Theme Switch" +msgstr "Temaskift" + +#: includes/class-freemius.php2031, templates/forms/resend-key.php:24 +msgid "Other" +msgstr "Andet" + +#: includes/class-freemius.php:2039 +msgid "I no longer need the %s" +msgstr "Jeg har ikke længere brug for %s" + +#: includes/class-freemius.php:2046 +msgid "I only needed the %s for a short period" +msgstr "Jeg behøvede kun %s i en kort periode" + +#: includes/class-freemius.php:2052 +msgid "The %s broke my site" +msgstr "%s ødelagde min webside" + +#: includes/class-freemius.php:2059 +msgid "The %s suddenly stopped working" +msgstr "%s stoppede pludseligt med at virke" + +#: includes/class-freemius.php:2069 +msgid "I can't pay for it anymore" +msgstr "Jeg kan ikke længere betale for det" + +#: includes/class-freemius.php:2071 +msgid "What price would you feel comfortable paying?" +msgstr "Hvilken pris ville du foretrække at betale?" + +#: includes/class-freemius.php:2077 +msgid "I don't like to share my information with you" +msgstr "Jeg har ikke lyst til at dele mine informationer med jer" + +#: includes/class-freemius.php:2098 +msgid "The %s didn't work" +msgstr "%s virkede ikke" + +#: includes/class-freemius.php:2108 +msgid "I couldn't understand how to make it work" +msgstr "Jeg forstod ikke, hvordan jeg skulle få det til at fungere." + +#: includes/class-freemius.php:2116 +msgid "The %s is great, but I need specific feature that you don't support" +msgstr "%s er godt, men jeg har brug for en specifik feature, som ikke understøttes" + +#: includes/class-freemius.php:2118 +msgid "What feature?" +msgstr "Hvilken feature?" + +#: includes/class-freemius.php:2122 +msgid "The %s is not working" +msgstr "%s virker ikke" + +#: includes/class-freemius.php:2124 +msgid "Kindly share what didn't work so we can fix it for future users..." +msgstr "Kindly share what didn't work so we can fix it for future users..." + +#: includes/class-freemius.php:2128 +msgid "It's not what I was looking for" +msgstr "Det er ikke, hvad jeg søgte" + +#: includes/class-freemius.php:2130 +msgid "What you've been looking for?" +msgstr "Hvad har du ledt efter?" + +#: includes/class-freemius.php:2134 +msgid "The %s didn't work as expected" +msgstr "%s virkede ikke som forventet" + +#: includes/class-freemius.php:2136 +msgid "What did you expect?" +msgstr "Hvad forventede du?" + +#: includes/class-freemius.php2942, templates/debug.php:20 +msgid "Freemius Debug" +msgstr "Freemius Debug" + +#: includes/class-freemius.php:3670 +msgid "I don't know what is cURL or how to install it, help me!" +msgstr "Jeg ved ikke hvad cURL er, eller hvordan jeg installerer det. Hjælp mig!" + +#: includes/class-freemius.php:3672 +msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." +msgstr "Vi vil kontakte din udbyder og løse problemet. Når vi har opdatinger i sagen, vil vi følge op med en email til dig på %s." + +#: includes/class-freemius.php:3679 +msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." +msgstr "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." + +#: includes/class-freemius.php:3784 +msgid "Yes - do your thing" +msgstr "Ja - fortsæt bare" + +#: includes/class-freemius.php:3789 +msgid "No - just deactivate" +msgstr "Nej - bare deaktiver" + +#: includes/class-freemius.php3834, includes/class-freemius.php4343, +#: includes/class-freemius.php5442, includes/class-freemius.php11545, +#: includes/class-freemius.php14916, includes/class-freemius.php14968, +#: includes/class-freemius.php15030, includes/class-freemius.php17263, +#: includes/class-freemius.php17273, includes/class-freemius.php17882, +#: includes/class-freemius.php18742, includes/class-freemius.php18857, +#: includes/class-freemius.php19001, templates/add-ons.php:43 +msgctxt "exclamation" +msgid "Oops" +msgstr "Ups" + +#: includes/class-freemius.php:3903 +msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." +msgstr "Tak fordi du giver os en chance for at fixe det! En besked er lige blevet sendt til vores tekniske personale. Vi vil vende tilbage, så snart der er nyt om %s. Vi sætter pris på din tålmodighed." + +#: includes/class-freemius.php:4340 +msgctxt "addonX cannot run without pluginY" +msgid "%s cannot run without %s." +msgstr "%s virker ikke uden %s." + +#: includes/class-freemius.php:4341 +msgctxt "addonX cannot run..." +msgid "%s cannot run without the plugin." +msgstr "%s virker ikke uden pluginnet." + +#: includes/class-freemius.php4487, includes/class-freemius.php4512, +#: includes/class-freemius.php:17953 +msgid "Unexpected API error. Please contact the %s's author with the following error." +msgstr "Unexpected API error. Please contact the %s's author with the following error." + +#: includes/class-freemius.php:5130 +msgid "Premium %s version was successfully activated." +msgstr "Premium-versionen af %s blev aktiveret." + +#: includes/class-freemius.php5142, includes/class-freemius.php:7004 +msgctxt "" +msgid "W00t" +msgstr "W00t" + +#: includes/class-freemius.php:5157 +msgid "You have a %s license." +msgstr "Du har en %s licens." + +#: includes/class-freemius.php5161, includes/class-freemius.php14337, +#: includes/class-freemius.php14348, includes/class-freemius.php17177, +#: includes/class-freemius.php17491, includes/class-freemius.php17557, +#: includes/class-freemius.php:17707 +msgctxt "interjection expressing joy or exuberance" +msgid "Yee-haw" +msgstr "Yee-haw" + +#: includes/class-freemius.php:5425 +msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." +msgstr "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." + +#: includes/class-freemius.php:5429 +msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." +msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin." + +#: includes/class-freemius.php5438, templates/add-ons.php103, +#: templates/account/partials/addon.php:288 +msgid "More information about %s" +msgstr "Mere information om %s" + +#: includes/class-freemius.php:5439 +msgid "Purchase License" +msgstr "Køb licens" + +#: includes/class-freemius.php6372, templates/connect.php:163 +msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." +msgstr "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." + +#: includes/class-freemius.php:6376 +msgid "start the trial" +msgstr "start prøveperioden" + +#: includes/class-freemius.php6377, templates/connect.php:167 +msgid "complete the install" +msgstr "færdiggør installeringen" + +#: includes/class-freemius.php:6490 +msgid "You are just one step away - %s" +msgstr "Du mangler kun ét skridt - %s" + +#: includes/class-freemius.php:6493 +msgctxt "%s - plugin name. As complete \"PluginX\" activation now" +msgid "Complete \"%s\" Activation Now" +msgstr "Færdiggør aktivering af \"%s\" nu" + +#: includes/class-freemius.php:6571 +msgid "We made a few tweaks to the %s, %s" +msgstr "Vi har foretaget nogle rettelser til %s, %s" + +#: includes/class-freemius.php:6575 +msgid "Opt in to make \"%s\" better!" +msgstr "Opt in to make \"%s\" better!" + +#: includes/class-freemius.php:7003 +msgid "The upgrade of %s was successfully completed." +msgstr "Opgraderingen af %s blev fuldendt." + +#: includes/class-freemius.php8925, includes/class-fs-plugin-updater.php886, +#: includes/class-fs-plugin-updater.php1081, +#: includes/class-fs-plugin-updater.php1088, +#: templates/auto-installation.php:32 +msgid "Add-On" +msgstr "Tilføjelse" + +#: includes/class-freemius.php8927, templates/debug.php359, +#: templates/debug.php:520 +msgid "Plugin" +msgstr "Plugin" + +#: includes/class-freemius.php8928, templates/debug.php359, +#: templates/debug.php520, templates/forms/deactivation/form.php:67 +msgid "Theme" +msgstr "Tema" + +#: includes/class-freemius.php:11412 +msgid "Invalid site details collection." +msgstr "Invalid site details collection." + +#: includes/class-freemius.php:11532 +msgid "We couldn't find your email address in the system, are you sure it's the right address?" +msgstr "Vi kunne ikke finde din e-mailadresse i systemet, er du sikker på, det er den rigtige adresse?" + +#: includes/class-freemius.php:11534 +msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" +msgstr "Vi kan ikke finde nogen aktive licenser knyttet til den e-mailadresse, er du sikker på, det er den rigtige adresse?" + +#: includes/class-freemius.php:11808 +msgid "Account is pending activation." +msgstr "Konto afventer aktivering." + +#: includes/class-freemius.php11920, +#: templates/forms/premium-versions-upgrade-handler.php:47 +msgid "Buy a license now" +msgstr "Buy a license now" + +#: includes/class-freemius.php11932, +#: templates/forms/premium-versions-upgrade-handler.php:46 +msgid "Renew your license now" +msgstr "Renew your license now" + +#: includes/class-freemius.php:11936 +msgid "%s to access version %s security & feature updates, and support." +msgstr "%s to access version %s security & feature updates, and support." + +#: includes/class-freemius.php:14319 +msgid "%s activation was successfully completed." +msgstr "Aktivering af %s blev gennemført." + +#: includes/class-freemius.php:14333 +msgid "Your account was successfully activated with the %s plan." +msgstr "Din konto blev aktiveret med planen %s." + +#: includes/class-freemius.php14344, includes/class-freemius.php:17553 +msgid "Your trial has been successfully started." +msgstr "Din prøveperiode er begyndt." + +#: includes/class-freemius.php14914, includes/class-freemius.php14966, +#: includes/class-freemius.php:15028 +msgid "Couldn't activate %s." +msgstr "Kunne ikke aktivere %s." + +#: includes/class-freemius.php14915, includes/class-freemius.php14967, +#: includes/class-freemius.php:15029 +msgid "Please contact us with the following message:" +msgstr "Kontakt os venligst med følgende besked:" + +#: includes/class-freemius.php15378, includes/class-freemius.php:19839 +msgid "Upgrade" +msgstr "Opgrader" + +#: includes/class-freemius.php:15384 +msgid "Start Trial" +msgstr "Start prøveperiode" + +#: includes/class-freemius.php:15386 +msgid "Pricing" +msgstr "Priser" + +#: includes/class-freemius.php15448, includes/class-freemius.php:15450 +msgid "Affiliation" +msgstr "Affiliation" + +#: includes/class-freemius.php15478, includes/class-freemius.php15480, +#: templates/account.php150, templates/debug.php:324 +msgid "Account" +msgstr "Konto" + +#: includes/class-freemius.php15493, includes/class-freemius.php15495, +#: includes/customizer/class-fs-customizer-support-section.php:60 +msgid "Contact Us" +msgstr "Kontakt os" + +#: includes/class-freemius.php15505, includes/class-freemius.php15507, +#: includes/class-freemius.php19849, templates/account.php100, +#: templates/account/partials/addon.php:41 +msgid "Add-Ons" +msgstr "Tilføjelser" + +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow left icon" +msgid "←" +msgstr "←" + +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow right icon" +msgid "➤" +msgstr "➤" + +#: includes/class-freemius.php15543, templates/pricing.php:97 +msgctxt "noun" +msgid "Pricing" +msgstr "Priser" + +#: includes/class-freemius.php15756, +#: includes/customizer/class-fs-customizer-support-section.php:67 +msgid "Support Forum" +msgstr "Supportforum" + +#: includes/class-freemius.php:16542 +msgid "Your email has been successfully verified - you are AWESOME!" +msgstr "Din e-mailadresse er blevet verificeret - du er FOR SEJ!" + +#: includes/class-freemius.php:16543 +msgctxt "a positive response" +msgid "Right on" +msgstr "Sådan" + +#: includes/class-freemius.php:17168 +msgid "Your %s Add-on plan was successfully upgraded." +msgstr "Your %s Add-on plan was successfully upgraded." + +#: includes/class-freemius.php:17170 +msgid "%s Add-on was successfully purchased." +msgstr "Betalingen for tilføjelsen %s blev gennemført." + +#: includes/class-freemius.php:17173 +msgid "Download the latest version" +msgstr "Download den seneste version" + +#: includes/class-freemius.php:17259 +msgctxt "%1s - plugin title, %2s - API domain" +msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" +msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" + +#: includes/class-freemius.php17262, includes/class-freemius.php17678, +#: includes/class-freemius.php:17755 +msgid "Error received from the server:" +msgstr "Fejl modtager fra serveren:" + +#: includes/class-freemius.php:17272 +msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." +msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." + +#: includes/class-freemius.php17454, includes/class-freemius.php17683, +#: includes/class-freemius.php17726, includes/class-freemius.php:17829 +msgctxt "" +msgid "Hmm" +msgstr "Hmm" + +#: includes/class-freemius.php:17467 +msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." +msgstr "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." + +#: includes/class-freemius.php17468, templates/account.php102, +#: templates/add-ons.php134, templates/account/partials/addon.php:43 +msgctxt "trial period" +msgid "Trial" +msgstr "Prøveperiode" + +#: includes/class-freemius.php:17473 +msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." +msgstr "Jeg har opgraderet min konto, men når jeg forsøger at synkronisere licensen, forbliver planen %s." + +#: includes/class-freemius.php17477, includes/class-freemius.php:17535 +msgid "Please contact us here" +msgstr "Kontakt os her" + +#: includes/class-freemius.php:17487 +msgid "Your plan was successfully upgraded." +msgstr "Din plan er blevet opgraderet." + +#: includes/class-freemius.php:17505 +msgid "Your plan was successfully changed to %s." +msgstr "Din plan er blevet ændret til %s." + +#: includes/class-freemius.php:17521 +msgid "Your license has expired. You can still continue using the free %s forever." +msgstr "Din licens er udløbet. Du kan stadig fortsætte med at benytte den gratis udgave af %s." + +#: includes/class-freemius.php:17523 +msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." +msgstr "Din licens er udløbet. %1$sOpgrader nu%2$s for at fortsætte med at benytte %3$s uden forstyrrelser." + +#: includes/class-freemius.php:17531 +msgid "Your license has been cancelled. If you think it's a mistake, please contact support." +msgstr "Din licens er blevet annulleret. Hvis du mener, dette er en fejl, så kontakt venligst support." + +#: includes/class-freemius.php:17544 +msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." +msgstr "Din licens er udløbet. Du kan stadig benytte alle funktionerne i %s, men du bliver nødt til at fornye din licens for at få opdateringer og support." + +#: includes/class-freemius.php:17567 +msgid "Your free trial has expired. You can still continue using all our free features." +msgstr "Din gratis prøveperiode er udløbet. Du kan stadig benytte alle de gratis features." + +#: includes/class-freemius.php:17569 +msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." +msgstr "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." + +#: includes/class-freemius.php:17674 +msgid "It looks like the license could not be activated." +msgstr "Det ser ud til, at licensen ikke kunne aktiveres." + +#: includes/class-freemius.php:17704 +msgid "Your license was successfully activated." +msgstr "Din licens er blevet aktiveret." + +#: includes/class-freemius.php:17730 +msgid "It looks like your site currently doesn't have an active license." +msgstr "Det ser ud til, at dit websted endnu ikke har en aktiv licens." + +#: includes/class-freemius.php:17754 +msgid "It looks like the license deactivation failed." +msgstr "Det ser ud til, at licens-deaktiveringen mislykkedes." + +#: includes/class-freemius.php:17782 +msgid "Your license was successfully deactivated, you are back to the %s plan." +msgstr "Din licens blev deaktiveret, du er tilbage på planen %s." + +#: includes/class-freemius.php:17783 +msgid "O.K" +msgstr "O.K" + +#: includes/class-freemius.php:17836 +msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." +msgstr "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." + +#: includes/class-freemius.php:17845 +msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s." +msgstr "Your subscription was successfully cancelled. Your %s plan license will expire in %s." + +#: includes/class-freemius.php:17887 +msgid "You are already running the %s in a trial mode." +msgstr "Du benytter allerede %s under en prøveperiode." + +#: includes/class-freemius.php:17898 +msgid "You already utilized a trial before." +msgstr "Du har allerede brugt din prøveperiode." + +#: includes/class-freemius.php:17912 +msgid "Plan %s do not exist, therefore, can't start a trial." +msgstr "Plan %s eksisterer ikke og kan derfor ikke starte prøveperiode." + +#: includes/class-freemius.php:17923 +msgid "Plan %s does not support a trial period." +msgstr "Plan %s understøtter ikke en prøveperiode." + +#: includes/class-freemius.php:17934 +msgid "None of the %s's plans supports a trial period." +msgstr "None of the %s's plans supports a trial period." + +#: includes/class-freemius.php:17984 +msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" +msgstr "Det lader ikke til du er i en prøveperiode længere, så der er ikke noget at annullere :-)" + +#: includes/class-freemius.php:18020 +msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." +msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." + +#: includes/class-freemius.php:18039 +msgid "Your %s free trial was successfully cancelled." +msgstr "Din gratis prøveperiode for %s er blevet annulleret." + +#: includes/class-freemius.php:18346 +msgid "Version %s was released." +msgstr "Version %s er blevet udgivet." + +#: includes/class-freemius.php:18346 +msgid "Please download %s." +msgstr "Download venligst %s." + +#: includes/class-freemius.php:18353 +msgid "the latest %s version here" +msgstr "den seneste version af %s her" + +#: includes/class-freemius.php:18358 +msgid "New" +msgstr "Ny" + +#: includes/class-freemius.php:18363 +msgid "Seems like you got the latest release." +msgstr "Det ser ud til, at du har den seneste udgivelse." + +#: includes/class-freemius.php:18364 +msgid "You are all good!" +msgstr "Det var det!" + +#: includes/class-freemius.php:18632 +msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." +msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." + +#: includes/class-freemius.php:18769 +msgid "Site successfully opted in." +msgstr "Websted er tilmeldt." + +#: includes/class-freemius.php18770, includes/class-freemius.php:19581 +msgid "Awesome" +msgstr "Sejt" + +#: includes/class-freemius.php18786, templates/forms/optout.php:32 +msgid "We appreciate your help in making the %s better by letting us track some usage data." +msgstr "Vi sætter pris på din hjælp med at forbedre %s ved at lade os indsamle brugsdata." + +#: includes/class-freemius.php:18787 +msgid "Thank you!" +msgstr "Mange tak!" + +#: includes/class-freemius.php:18794 +msgid "We will no longer be sending any usage data of %s on %s to %s." +msgstr "Vi vil ikke længere indsende brugsdata af %s på %s til %s." + +#: includes/class-freemius.php:18923 +msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." +msgstr "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." + +#: includes/class-freemius.php:18929 +msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." +msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval." + +#: includes/class-freemius.php:18934 +msgid "%s is the new owner of the account." +msgstr "%s er den nye ejer af kontoen." + +#: includes/class-freemius.php:18936 +msgctxt "as congratulations" +msgid "Congrats" +msgstr "Tillykke" + +#: includes/class-freemius.php:18956 +msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." +msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered." + +#: includes/class-freemius.php:18957 +msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." +msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." + +#: includes/class-freemius.php:18964 +msgid "Change Ownership" +msgstr "Skift ejerskab" + +#: includes/class-freemius.php:18972 +msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." +msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." + +#: includes/class-freemius.php:18984 +msgid "Please provide your full name." +msgstr "Indtast venligst dit fulde navn." + +#: includes/class-freemius.php:18989 +msgid "Your name was successfully updated." +msgstr "Dit navn er blevet opdateret." + +#: includes/class-freemius.php:19050 +msgid "You have successfully updated your %s." +msgstr "Opdatering af %s blev gennemført." + +#: includes/class-freemius.php:19190 +msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." +msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server." + +#: includes/class-freemius.php:19191 +msgctxt "advance notice of something that will need attention." +msgid "Heads up" +msgstr "Se her" + +#: includes/class-freemius.php:19621 +msgctxt "exclamation" +msgid "Hey" +msgstr "Hey" + +#: includes/class-freemius.php:19621 +msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." +msgstr "Hvad syntes du om %s indtil videre? Test alle %s premium funktioner med en %d-dags gratis prøveperiode." + +#: includes/class-freemius.php:19629 +msgid "No commitment for %s days - cancel anytime!" +msgstr "Ingen bindinger i %s dage - annuller når som helst!" + +#: includes/class-freemius.php:19630 +msgid "No credit card required" +msgstr "Betalingskort ikke påkrævet" + +#: includes/class-freemius.php19637, templates/forms/trial-start.php:53 +msgctxt "call to action" +msgid "Start free trial" +msgstr "Start gratis prøveperiode" + +#: includes/class-freemius.php:19714 +msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" +msgstr "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" + +#: includes/class-freemius.php:19723 +msgid "Learn more" +msgstr "Læs mere" + +#: includes/class-freemius.php19873, templates/account.php406, +#: templates/account.php509, templates/connect.php171, +#: templates/connect.php421, templates/forms/license-activation.php24, +#: templates/account/partials/addon.php:235 +msgid "Activate License" +msgstr "Aktiver licens" + +#: includes/class-freemius.php19874, templates/account.php469, +#: templates/account.php508, templates/account/partials/site.php:256 +msgid "Change License" +msgstr "Skift licens" + +#: includes/class-freemius.php19956, templates/account/partials/site.php:161 +msgid "Opt Out" +msgstr "Frameld" + +#: includes/class-freemius.php19958, includes/class-freemius.php19963, +#: templates/account/partials/site.php43, +#: templates/account/partials/site.php:161 +msgid "Opt In" +msgstr "Tilmeld" + +#: includes/class-freemius.php:20187 +msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" +msgstr " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" + +#: includes/class-freemius.php:20195 +msgid "Activate %s features" +msgstr "Activate %s features" + +#: includes/class-freemius.php:20208 +msgid "Please follow these steps to complete the upgrade" +msgstr "Følg venligst disse trin for at færdiggøre opgraderingen" + +#: includes/class-freemius.php:20212 +msgid "Download the latest %s version" +msgstr "Download den seneste version af %s" + +#: includes/class-freemius.php:20216 +msgid "Upload and activate the downloaded version" +msgstr "Upload og aktiver den downloadede version" + +#: includes/class-freemius.php:20218 +msgid "How to upload and activate?" +msgstr "Upload og aktivering, hvordan?" + +#: includes/class-freemius.php:20352 +msgid "%sClick here%s to choose the sites where you'd like to activate the license on." +msgstr "%sClick here%s to choose the sites where you'd like to activate the license on." + +#: includes/class-freemius.php:20513 +msgid "Auto installation only works for opted-in users." +msgstr "Auto-installation fungerer kun for tilmeldte brugere." + +#: includes/class-freemius.php20523, includes/class-freemius.php20556, +#: includes/class-fs-plugin-updater.php1060, +#: includes/class-fs-plugin-updater.php:1074 +msgid "Invalid module ID." +msgstr "Ugyldigt modul-ID." + +#: includes/class-freemius.php20532, includes/class-fs-plugin-updater.php:1096 +msgid "Premium version already active." +msgstr "Premium version allerede aktiv." + +#: includes/class-freemius.php:20539 +msgid "You do not have a valid license to access the premium version." +msgstr "Du har ikke en gyldig licens til at benytte premium-versionen." + +#: includes/class-freemius.php:20546 +msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." +msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version." + +#: includes/class-freemius.php20564, includes/class-fs-plugin-updater.php:1095 +msgid "Premium add-on version already installed." +msgstr "Premium tilføjelse er allerede installeret." + +#: includes/class-freemius.php:20909 +msgid "View paid features" +msgstr "Vis betalte features" + +#: includes/class-freemius.php:21229 +msgid "Thank you so much for using %s and its add-ons!" +msgstr "Thank you so much for using %s and its add-ons!" + +#: includes/class-freemius.php:21230 +msgid "Thank you so much for using %s!" +msgstr "Tak fordi du benytter %s!" + +#: includes/class-freemius.php:21236 +msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s." +msgstr "Du er allerede tilmeldt vores brugssporing, hvilket hjælper os med at forbedre %s." + +#: includes/class-freemius.php:21240 +msgid "Thank you so much for using our products!" +msgstr "Mange tak for at benytte vores produkter!" + +#: includes/class-freemius.php:21241 +msgid "You've already opted-in to our usage-tracking, which helps us keep improving them." +msgstr "Du er allerede tilmeldt vores brugssporing, hvilket hjælper os med at forbedre dem." + +#: includes/class-freemius.php:21260 +msgid "%s and its add-ons" +msgstr "%s og tilføjelser" + +#: includes/class-freemius.php:21269 +msgid "Products" +msgstr "Produkter" + +#: includes/class-freemius.php21276, templates/connect.php:272 +msgid "Yes" +msgstr "Ja" + +#: includes/class-freemius.php21277, templates/connect.php:273 +msgid "send me security & feature updates, educational content and offers." +msgstr "send mig sikkerheds- og feature-opdateringer, informativt indhold og tilbud." + +#: includes/class-freemius.php21278, templates/connect.php:278 +msgid "No" +msgstr "Nej" + +#: includes/class-freemius.php21280, templates/connect.php:280 +msgid "do %sNOT%s send me security & feature updates, educational content and offers." +msgstr "send %sIKKE%s sikkerheds- og feature-opdateringer, informativt indhold og tilbud." + +#: includes/class-freemius.php:21290 +msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" +msgstr "Grundet krav i den nye %sEU General Data Protection Regulation (GDPR)%s, er det nødvendigt at du igen giver dit udtrykkelige samtykke og bekræfter, at du er ombord 🙂" + +#: includes/class-freemius.php21292, templates/connect.php:287 +msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" +msgstr "Lad os vide, om vi har lov til at kontakte dig med sikkerheds- og feature-opdateringer, informativt indhold og lejlighedsvise tilbud:" + +#: includes/class-freemius.php:21574 +msgid "License key is empty." +msgstr "Licensnøglen er tom." + +#: includes/class-fs-plugin-updater.php184, +#: templates/forms/premium-versions-upgrade-handler.php:57 +msgid "Renew license" +msgstr "Forny licens" + +#: includes/class-fs-plugin-updater.php189, +#: templates/forms/premium-versions-upgrade-handler.php:58 +msgid "Buy license" +msgstr "Buy license" + +#: includes/class-fs-plugin-updater.php:278 +msgid "There is a %s of %s available." +msgstr "There is a %s of %s available." + +#: includes/class-fs-plugin-updater.php:282 +msgid "new version" +msgstr "new version" + +#: includes/class-fs-plugin-updater.php:305 +msgid "Important Upgrade Notice:" +msgstr "Important Upgrade Notice:" + +#: includes/class-fs-plugin-updater.php:1125 +msgid "Installing plugin: %s" +msgstr "Installerer plugin: %s" + +#: includes/class-fs-plugin-updater.php:1166 +msgid "Unable to connect to the filesystem. Please confirm your credentials." +msgstr "Unable to connect to the filesystem. Please confirm your credentials." + +#: includes/class-fs-plugin-updater.php:1348 +msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." +msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work." + +#: includes/fs-plugin-info-dialog.php369, +#: templates/account/partials/addon.php:292 +msgctxt "verb" +msgid "Purchase" +msgstr "Køb" + +#: includes/fs-plugin-info-dialog.php:372 +msgid "Start my free %s" +msgstr "Start min gratis %s" + +#: includes/fs-plugin-info-dialog.php:413 +msgid "Install Free Version Now" +msgstr "Installer gratis version nu" + +#: includes/fs-plugin-info-dialog.php414, templates/auto-installation.php111, +#: templates/account/partials/addon.php272, +#: templates/account/partials/addon.php:322 +msgid "Install Now" +msgstr "Installer nu" + +#: includes/fs-plugin-info-dialog.php:425 +msgctxt "as download latest version" +msgid "Download Latest Free Version" +msgstr "Download seneste gratis version" + +#: includes/fs-plugin-info-dialog.php426, templates/account.php80, +#: templates/account/partials/addon.php:21 +msgctxt "as download latest version" +msgid "Download Latest" +msgstr "Download seneste" + +#: includes/fs-plugin-info-dialog.php:436 +msgid "Install Free Version Update Now" +msgstr "Installer opdatering til gratis version nu" + +#: includes/fs-plugin-info-dialog.php437, templates/account.php:460 +msgid "Install Update Now" +msgstr "Installer opdatering nu" + +#: includes/fs-plugin-info-dialog.php:448 +msgid "Newer Free Version (%s) Installed" +msgstr "Nyere gratis version (%s) installeret" + +#: includes/fs-plugin-info-dialog.php:449 +msgid "Newer Version (%s) Installed" +msgstr "Nyere version (%s) installeret" + +#: includes/fs-plugin-info-dialog.php:457 +msgid "Latest Free Version Installed" +msgstr "Seneste gratis version installeret" + +#: includes/fs-plugin-info-dialog.php:458 +msgid "Latest Version Installed" +msgstr "Seneste version installeret" + +#: includes/fs-plugin-info-dialog.php:613 +msgctxt "Plugin installer section title" +msgid "Description" +msgstr "Beskrivelse" + +#: includes/fs-plugin-info-dialog.php:614 +msgctxt "Plugin installer section title" +msgid "Installation" +msgstr "Installering" + +#: includes/fs-plugin-info-dialog.php:615 +msgctxt "Plugin installer section title" +msgid "FAQ" +msgstr "FAQ" + +#: includes/fs-plugin-info-dialog.php616, +#: templates/plugin-info/description.php:55 +msgid "Screenshots" +msgstr "Skærmbilleder" + +#: includes/fs-plugin-info-dialog.php:617 +msgctxt "Plugin installer section title" +msgid "Changelog" +msgstr "Ændringslog" + +#: includes/fs-plugin-info-dialog.php:618 +msgctxt "Plugin installer section title" +msgid "Reviews" +msgstr "Anmeldelser" + +#: includes/fs-plugin-info-dialog.php:619 +msgctxt "Plugin installer section title" +msgid "Other Notes" +msgstr "Andre noter" + +#: includes/fs-plugin-info-dialog.php:634 +msgctxt "Plugin installer section title" +msgid "Features & Pricing" +msgstr "Funktioner og priser" + +#: includes/fs-plugin-info-dialog.php:644 +msgid "Plugin Install" +msgstr "Plugin-installering" + +#: includes/fs-plugin-info-dialog.php:716 +msgctxt "e.g. Professional Plan" +msgid "%s Plan" +msgstr "%s Plan" + +#: includes/fs-plugin-info-dialog.php:742 +msgctxt "e.g. the best product" +msgid "Best" +msgstr "Bedste" + +#: includes/fs-plugin-info-dialog.php748, +#: includes/fs-plugin-info-dialog.php:768 +msgctxt "as every month" +msgid "Monthly" +msgstr "Månedligt" + +#: includes/fs-plugin-info-dialog.php:751 +msgctxt "as once a year" +msgid "Annual" +msgstr "Årligt" + +#: includes/fs-plugin-info-dialog.php:754 +msgid "Lifetime" +msgstr "Livstid" + +#: includes/fs-plugin-info-dialog.php768, +#: includes/fs-plugin-info-dialog.php770, +#: includes/fs-plugin-info-dialog.php:772 +msgctxt "e.g. billed monthly" +msgid "Billed %s" +msgstr "Faktureret %s" + +#: includes/fs-plugin-info-dialog.php:770 +msgctxt "as once a year" +msgid "Annually" +msgstr "Årligt" + +#: includes/fs-plugin-info-dialog.php:772 +msgctxt "as once a year" +msgid "Once" +msgstr "Engangsbeløb" + +#: includes/fs-plugin-info-dialog.php:778 +msgid "Single Site License" +msgstr "Single Site License" + +#: includes/fs-plugin-info-dialog.php:780 +msgid "Unlimited Licenses" +msgstr "Ubegrænsede licenser" + +#: includes/fs-plugin-info-dialog.php:782 +msgid "Up to %s Sites" +msgstr "Op til %s websteder" + +#: includes/fs-plugin-info-dialog.php792, +#: templates/plugin-info/features.php:82 +msgctxt "as monthly period" +msgid "mo" +msgstr "md" + +#: includes/fs-plugin-info-dialog.php799, +#: templates/plugin-info/features.php:80 +msgctxt "as annual period" +msgid "year" +msgstr "år" + +#: includes/fs-plugin-info-dialog.php:853 +msgctxt "noun" +msgid "Price" +msgstr "Pris" + +#: includes/fs-plugin-info-dialog.php:901 +msgid "Save %s" +msgstr "Spar %s" + +#: includes/fs-plugin-info-dialog.php:911 +msgid "No commitment for %s - cancel anytime" +msgstr "Ingen bindinger ved %s - annuller når som helst" + +#: includes/fs-plugin-info-dialog.php:914 +msgid "After your free %s, pay as little as %s" +msgstr "Efter din gratis %s er prisen kun %s" + +#: includes/fs-plugin-info-dialog.php:925 +msgid "Details" +msgstr "Detaljer" + +#: includes/fs-plugin-info-dialog.php929, templates/account.php91, +#: templates/debug.php201, templates/debug.php238, templates/debug.php452, +#: templates/account/partials/addon.php:32 +msgctxt "product version" +msgid "Version" +msgstr "Version" + +#: includes/fs-plugin-info-dialog.php:936 +msgctxt "as the plugin author" +msgid "Author" +msgstr "Forfatter" + +#: includes/fs-plugin-info-dialog.php:943 +msgid "Last Updated" +msgstr "Senest opdateret" + +#: includes/fs-plugin-info-dialog.php948, templates/account.php:376 +msgctxt "x-ago" +msgid "%s ago" +msgstr "%s siden" + +#: includes/fs-plugin-info-dialog.php:957 +msgid "Requires WordPress Version" +msgstr "Kræver WordPress-version" + +#: includes/fs-plugin-info-dialog.php:958 +msgid "%s or higher" +msgstr "%s eller højere" + +#: includes/fs-plugin-info-dialog.php:965 +msgid "Compatible up to" +msgstr "Kompatibel op til" + +#: includes/fs-plugin-info-dialog.php:973 +msgid "Downloaded" +msgstr "Downloadet" + +#: includes/fs-plugin-info-dialog.php:977 +msgid "%s time" +msgstr "%s gang" + +#: includes/fs-plugin-info-dialog.php:979 +msgid "%s times" +msgstr "%s gange" + +#: includes/fs-plugin-info-dialog.php:989 +msgid "WordPress.org Plugin Page" +msgstr "WordPress.org Plugin-side" + +#: includes/fs-plugin-info-dialog.php:997 +msgid "Plugin Homepage" +msgstr "Plugin-websted" + +#: includes/fs-plugin-info-dialog.php1005, +#: includes/fs-plugin-info-dialog.php:1087 +msgid "Donate to this plugin" +msgstr "Donér til dette plugin" + +#: includes/fs-plugin-info-dialog.php:1012 +msgid "Average Rating" +msgstr "Gennemsnitlig vurdering" + +#: includes/fs-plugin-info-dialog.php:1019 +msgid "based on %s" +msgstr "baseret på %s" + +#: includes/fs-plugin-info-dialog.php:1023 +msgid "%s rating" +msgstr "%s vurdering" + +#: includes/fs-plugin-info-dialog.php:1025 +msgid "%s ratings" +msgstr "%s vurderinger" + +#: includes/fs-plugin-info-dialog.php:1040 +msgid "%s star" +msgstr "%s stjerne" + +#: includes/fs-plugin-info-dialog.php:1042 +msgid "%s stars" +msgstr "%s stjerner" + +#: includes/fs-plugin-info-dialog.php:1053 +msgid "Click to see reviews that provided a rating of %s" +msgstr "Click to see reviews that provided a rating of %s" + +#: includes/fs-plugin-info-dialog.php:1066 +msgid "Contributors" +msgstr "Bidragsydere" + +#: includes/fs-plugin-info-dialog.php1095, +#: includes/fs-plugin-info-dialog.php:1097 +msgid "Warning" +msgstr "Advarsel" + +#: includes/fs-plugin-info-dialog.php:1095 +msgid "This plugin has not been tested with your current version of WordPress." +msgstr "Dette plugin er ikke blevet testet med din nuværende version af WordPress." + +#: includes/fs-plugin-info-dialog.php:1097 +msgid "This plugin has not been marked as compatible with your version of WordPress." +msgstr "This plugin has not been marked as compatible with your version of WordPress." + +#: includes/fs-plugin-info-dialog.php:1116 +msgid "Paid add-on must be deployed to Freemius." +msgstr "Paid add-on must be deployed to Freemius." + +#: includes/fs-plugin-info-dialog.php:1117 +msgid "Add-on must be deployed to WordPress.org or Freemius." +msgstr "Add-on must be deployed to WordPress.org or Freemius." + +#: templates/account.php81, templates/forms/subscription-cancellation.php96, +#: templates/account/partials/addon.php22, +#: templates/account/partials/site.php:295 +msgid "Downgrading your plan" +msgstr "Downgrading your plan" + +#: templates/account.php82, templates/forms/subscription-cancellation.php97, +#: templates/account/partials/addon.php23, +#: templates/account/partials/site.php:296 +msgid "Cancelling the subscription" +msgstr "Cancelling the subscription" + +#. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the +#. subscription' +#: templates/account.php84, templates/forms/subscription-cancellation.php99, +#: templates/account/partials/addon.php25, +#: templates/account/partials/site.php:298 +msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." +msgstr "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." + +#: templates/account.php85, templates/forms/subscription-cancellation.php100, +#: templates/account/partials/addon.php26, +#: templates/account/partials/site.php:299 +msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." +msgstr "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." + +#: templates/account.php86, templates/forms/subscription-cancellation.php106, +#: templates/account/partials/addon.php:27 +msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" +msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?" + +#: templates/account.php87, templates/forms/subscription-cancellation.php101, +#: templates/account/partials/addon.php28, +#: templates/account/partials/site.php:300 +msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." +msgstr "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." + +#: templates/account.php88, templates/forms/subscription-cancellation.php102, +#: templates/account/partials/addon.php29, +#: templates/account/partials/site.php:301 +msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." +msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features." + +#. translators: %s: Plan title (e.g. "Professional") +#: templates/account.php90, +#: templates/account/partials/activate-license-button.php31, +#: templates/account/partials/addon.php:31 +msgid "Activate %s Plan" +msgstr "Aktiver %s plan" + +#. translators: %s: Time period (e.g. Auto renews in "2 months") +#: templates/account.php93, templates/account/partials/addon.php34, +#: templates/account/partials/site.php:275 +msgid "Auto renews in %s" +msgstr "Auto-fornyer om %s" + +#. translators: %s: Time period (e.g. Expires in "2 months") +#: templates/account.php95, templates/account/partials/addon.php36, +#: templates/account/partials/site.php:277 +msgid "Expires in %s" +msgstr "Udløber om %s" + +#: templates/account.php96, templates/account/partials/addon.php:37 +msgctxt "as synchronize license" +msgid "Sync License" +msgstr "Synkroniser licens" + +#: templates/account.php97, templates/account/partials/addon.php:38 +msgid "Cancel Trial" +msgstr "Annuller prøveperiode" + +#: templates/account.php98, templates/account/partials/addon.php:39 +msgid "Change Plan" +msgstr "Skift plan" + +#: templates/account.php99, templates/account/partials/addon.php:40 +msgctxt "verb" +msgid "Upgrade" +msgstr "Opgrader" + +#: templates/account.php101, templates/account/partials/addon.php42, +#: templates/account/partials/site.php:302 +msgctxt "verb" +msgid "Downgrade" +msgstr "Nedgrader" + +#: templates/account.php103, templates/add-ons.php130, +#: templates/plugin-info/features.php72, +#: templates/account/partials/addon.php44, +#: templates/account/partials/site.php:31 +msgid "Free" +msgstr "Gratis" + +#: templates/account.php104, templates/account/partials/addon.php:45 +msgid "Activate" +msgstr "Aktiver" + +#: templates/account.php105, templates/debug.php371, +#: includes/customizer/class-fs-customizer-upsell-control.php106, +#: templates/account/partials/addon.php:46 +msgctxt "as product pricing plan" +msgid "Plan" +msgstr "Plan" + +#: templates/account.php:158 +msgid "Free Trial" +msgstr "Gratis prøveperiode" + +#: templates/account.php:169 +msgid "Account Details" +msgstr "Kontodetaljer" + +#: templates/account.php:179 +msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" +msgstr "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" + +#: templates/account.php:181 +msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" +msgstr "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" + +#: templates/account.php:184 +msgid "Delete Account" +msgstr "Slet konto" + +#: templates/account.php196, templates/account/partials/addon.php159, +#: templates/account/partials/deactivate-license-button.php:35 +msgid "Deactivate License" +msgstr "Deaktiver licens" + +#: templates/account.php219, templates/forms/subscription-cancellation.php:125 +msgid "Are you sure you want to proceed?" +msgstr "Er du sikker på, du vil fortsætte?" + +#: templates/account.php219, templates/account/partials/addon.php:182 +msgid "Cancel Subscription" +msgstr "Annuller abonnement" + +#: templates/account.php:247 +msgctxt "as synchronize" +msgid "Sync" +msgstr "Synkroniser" + +#: templates/account.php261, templates/debug.php:487 +msgid "Name" +msgstr "Navn" + +#: templates/account.php267, templates/debug.php:488 +msgid "Email" +msgstr "E-mail" + +#: templates/account.php274, templates/debug.php370, templates/debug.php:526 +msgid "User ID" +msgstr "Bruger-ID" + +#: templates/account.php:282 +msgid "Site ID" +msgstr "Websteds-ID" + +#: templates/account.php:285 +msgid "No ID" +msgstr "Intet ID" + +#: templates/account.php290, templates/debug.php243, templates/debug.php372, +#: templates/debug.php453, templates/debug.php490, +#: templates/account/partials/site.php:219 +msgid "Public Key" +msgstr "Offentlig nøgle" + +#: templates/account.php296, templates/debug.php373, templates/debug.php454, +#: templates/debug.php491, templates/account/partials/site.php:231 +msgid "Secret Key" +msgstr "Privat nøgle" + +#: templates/account.php:299 +msgctxt "as secret encryption key missing" +msgid "No Secret" +msgstr "Ingen privat nøgle" + +#: templates/account.php318, templates/account/partials/site.php112, +#: templates/account/partials/site.php:114 +msgid "Trial" +msgstr "Prøveperiode" + +#: templates/account.php337, templates/debug.php531, +#: templates/account/partials/site.php:248 +msgid "License Key" +msgstr "Licensnøgle" + +#: templates/account.php:367 +msgid "not verified" +msgstr "ikke verificeret" + +#: templates/account.php376, templates/account/partials/addon.php:120 +msgid "Expired" +msgstr "Udløbet" + +#: templates/account.php:428 +msgid "Premium version" +msgstr "Premium version" + +#: templates/account.php:430 +msgid "Free version" +msgstr "Gratis version" + +#: templates/account.php:442 +msgid "Verify Email" +msgstr "Verificer e-mail" + +#: templates/account.php:453 +msgid "Download %s Version" +msgstr "Download 1%s version" + +#: templates/account.php467, templates/account.php649, +#: templates/account/partials/site.php237, +#: templates/account/partials/site.php:255 +msgctxt "verb" +msgid "Show" +msgstr "Vis" + +#: templates/account.php:481 +msgid "What is your %s?" +msgstr "Angiv venligst %s?" + +#: templates/account.php489, templates/account/billing.php:27 +msgctxt "verb" +msgid "Edit" +msgstr "Rediger" + +#: templates/account.php:502 +msgid "Sites" +msgstr "Websteder" + +#: templates/account.php:513 +msgid "Search by address" +msgstr "Søg efter adresse" + +#: templates/account.php522, templates/account.php570, templates/debug.php236, +#: templates/debug.php364, templates/debug.php449, templates/debug.php486, +#: templates/debug.php524, templates/debug.php597, +#: templates/account/payments.php35, templates/debug/logger.php:21 +msgid "ID" +msgstr "ID" + +#: templates/account.php523, templates/debug.php:367 +msgid "Address" +msgstr "Adresse" + +#: templates/account.php:524 +msgid "License" +msgstr "Licens" + +#: templates/account.php:525 +msgid "Plan" +msgstr "Plan" + +#: templates/account.php:573 +msgctxt "as software license" +msgid "License" +msgstr "Licens" + +#: templates/account.php:643 +msgctxt "verb" +msgid "Hide" +msgstr "Skjul" + +#: templates/account.php:686 +msgid "Cancelling %s" +msgstr "Cancelling %s" + +#: templates/account.php686, templates/account.php703, +#: templates/forms/subscription-cancellation.php27, +#: templates/forms/deactivation/form.php:117 +msgid "trial" +msgstr "trial" + +#: templates/account.php701, templates/forms/deactivation/form.php:134 +msgid "Cancelling %s..." +msgstr "Cancelling %s..." + +#: templates/account.php704, templates/forms/subscription-cancellation.php28, +#: templates/forms/deactivation/form.php:118 +msgid "subscription" +msgstr "subscription" + +#: templates/account.php:718 +msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" +msgstr "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" + +#: templates/add-ons.php:36 +msgid "Add Ons for %s" +msgstr "Tilføjelser til %s" + +#: templates/add-ons.php:44 +msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." +msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." + +#: templates/add-ons.php:139 +msgid "View details" +msgstr "Vis detaljer" + +#: templates/admin-notice.php13, templates/forms/license-activation.php208, +#: templates/forms/resend-key.php:77 +msgctxt "as close a window" +msgid "Dismiss" +msgstr "Fjern" + +#: templates/auto-installation.php:45 +msgid "%s sec" +msgstr "1%s sek" + +#: templates/auto-installation.php:83 +msgid "Automatic Installation" +msgstr "Automatisk installering" + +#: templates/auto-installation.php:93 +msgid "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now." +msgstr "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now." + +#: templates/auto-installation.php:104 +msgid "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page." +msgstr "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page." + +#: templates/auto-installation.php:109 +msgid "Cancel Installation" +msgstr "Annuller installering" + +#: templates/checkout.php:172 +msgid "Checkout" +msgstr "Udtjekning" + +#: templates/checkout.php:172 +msgid "PCI compliant" +msgstr "PCI compliant" + +#. translators: %s: name (e.g. Hey John,) +#: templates/connect.php:112 +msgctxt "greeting" +msgid "Hey %s," +msgstr "Hey %s," + +#: templates/connect.php:154 +msgid "Allow & Continue" +msgstr "Tillad & Fortsæt" + +#: templates/connect.php:158 +msgid "Re-send activation email" +msgstr "Gensend e-mail om aktivering" + +#: templates/connect.php:162 +msgid "Thanks %s!" +msgstr "Tak %s!" + +#: templates/connect.php172, templates/forms/license-activation.php:43 +msgid "Agree & Activate License" +msgstr "Accepter & aktiver licens" + +#: templates/connect.php:181 +msgid "Thanks for purchasing %s! To get started, please enter your license key:" +msgstr "Tak for at købe %s! For at komme i gang, venligst indtast din licensnøgle:" + +#: templates/connect.php:188 +msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." +msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." + +#: templates/connect.php:189 +msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." +msgstr "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." + +#: templates/connect.php:195 +msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." +msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." + +#: templates/connect.php:196 +msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." +msgstr "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." + +#: templates/connect.php:230 +msgid "We're excited to introduce the Freemius network-level integration." +msgstr "We're excited to introduce the Freemius network-level integration." + +#: templates/connect.php:233 +msgid "During the update process we detected %d site(s) that are still pending license activation." +msgstr "During the update process we detected %d site(s) that are still pending license activation." + +#: templates/connect.php:235 +msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." +msgstr "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." + +#: templates/connect.php:237 +msgid "%s's paid features" +msgstr "%s's paid features" + +#: templates/connect.php:242 +msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." +msgstr "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." + +#: templates/connect.php:244 +msgid "During the update process we detected %s site(s) in the network that are still pending your attention." +msgstr "During the update process we detected %s site(s) in the network that are still pending your attention." + +#: templates/connect.php253, templates/forms/license-activation.php:46 +msgid "License key" +msgstr "Licensnøgle" + +#: templates/connect.php256, templates/forms/license-activation.php:19 +msgid "Can't find your license key?" +msgstr "Kan du ikke finde din licensnøgle?" + +#: templates/connect.php315, templates/connect.php630, +#: templates/forms/deactivation/retry-skip.php:20 +msgctxt "verb" +msgid "Skip" +msgstr "Spring over" + +#: templates/connect.php:318 +msgid "Delegate to Site Admins" +msgstr "Delegate to Site Admins" + +#: templates/connect.php:318 +msgid "If you click it, this decision will be delegated to the sites administrators." +msgstr "If you click it, this decision will be delegated to the sites administrators." + +#: templates/connect.php:346 +msgid "Your Profile Overview" +msgstr "Overblik af din profil" + +#: templates/connect.php:347 +msgid "Name and email address" +msgstr "Navn og e-mailadresse" + +#: templates/connect.php:352 +msgid "Your Site Overview" +msgstr "Overblik af dit websted" + +#: templates/connect.php:353 +msgid "Site URL, WP version, PHP info, plugins & themes" +msgstr "Websteds-URL, WP version, PHP info, plugins og temaer" + +#: templates/connect.php:358 +msgid "Admin Notices" +msgstr "Admin-meddelelser" + +#: templates/connect.php359, templates/connect.php:375 +msgid "Updates, announcements, marketing, no spam" +msgstr "Updates, announcements, marketing, no spam" + +#: templates/connect.php:364 +msgid "Current %s Events" +msgstr "Current %s Events" + +#: templates/connect.php:365 +msgid "Activation, deactivation and uninstall" +msgstr "Aktivering, deaktivering og afinstallering" + +#: templates/connect.php:374 +msgid "Newsletter" +msgstr "Nyhedsbrev" + +#: templates/connect.php391, templates/forms/license-activation.php:38 +msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." +msgstr "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." + +#: templates/connect.php:396 +msgid "What permissions are being granted?" +msgstr "Hvilke tilladelser bliver givet?" + +#: templates/connect.php:417 +msgid "Don't have a license key?" +msgstr "Har du ikke en licensnøgle?" + +#: templates/connect.php:418 +msgid "Activate Free Version" +msgstr "Aktiver gratis version" + +#: templates/connect.php:420 +msgid "Have a license key?" +msgstr "Har du en licensnøgle?" + +#: templates/connect.php:428 +msgid "Privacy Policy" +msgstr "Privatlivspolitik" + +#: templates/connect.php:430 +msgid "License Agreement" +msgstr "License Agreement" + +#: templates/connect.php:430 +msgid "Terms of Service" +msgstr "Servicevilkår" + +#: templates/connect.php:766 +msgctxt "as in the process of sending an email" +msgid "Sending email" +msgstr "Sender e-mail" + +#: templates/connect.php:767 +msgctxt "as activating plugin" +msgid "Activating" +msgstr "Aktiverer" + +#: templates/contact.php:78 +msgid "Contact" +msgstr "Kontakt" + +#: templates/debug.php:17 +msgctxt "as turned off" +msgid "Off" +msgstr "Fra" + +#: templates/debug.php:18 +msgctxt "as turned on" +msgid "On" +msgstr "Til" + +#: templates/debug.php:20 +msgid "SDK" +msgstr "SDK" + +#: templates/debug.php:24 +msgctxt "as code debugging" +msgid "Debugging" +msgstr "Fejlfinding" + +#: templates/debug.php54, templates/debug.php248, templates/debug.php374, +#: templates/debug.php:492 +msgid "Actions" +msgstr "Handlinger" + +#: templates/debug.php:64 +msgid "Are you sure you want to delete all Freemius data?" +msgstr "Er du sikker på, du vil slette al Freemius data?" + +#: templates/debug.php:64 +msgid "Delete All Accounts" +msgstr "Slet alle konti" + +#: templates/debug.php:71 +msgid "Clear API Cache" +msgstr "Ryd API-cache" + +#: templates/debug.php:79 +msgid "Clear Updates Transients" +msgstr "Clear Updates Transients" + +#: templates/debug.php:86 +msgid "Sync Data From Server" +msgstr "Synkroniser data fra server" + +#: templates/debug.php:95 +msgid "Migrate Options to Network" +msgstr "Migrate Options to Network" + +#: templates/debug.php:100 +msgid "Load DB Option" +msgstr "Hent DB-indstilling" + +#: templates/debug.php:103 +msgid "Set DB Option" +msgstr "Sæt DB-indstilling" + +#: templates/debug.php:180 +msgid "Key" +msgstr "Nøgle" + +#: templates/debug.php:181 +msgid "Value" +msgstr "Værdi" + +#: templates/debug.php:197 +msgctxt "as software development kit versions" +msgid "SDK Versions" +msgstr "SDK-versioner" + +#: templates/debug.php:202 +msgid "SDK Path" +msgstr "SDK-sti" + +#: templates/debug.php203, templates/debug.php:242 +msgid "Module Path" +msgstr "Modul-sti" + +#: templates/debug.php:204 +msgid "Is Active" +msgstr "Er aktiv" + +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:35 +msgid "Plugins" +msgstr "Plugins" + +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:56 +msgid "Themes" +msgstr "Temaer" + +#: templates/debug.php237, templates/debug.php369, templates/debug.php451, +#: templates/debug/scheduled-crons.php:80 +msgid "Slug" +msgstr "Kortnavn" + +#: templates/debug.php239, templates/debug.php:450 +msgid "Title" +msgstr "Titel" + +#: templates/debug.php:240 +msgctxt "as application program interface" +msgid "API" +msgstr "API" + +#: templates/debug.php:241 +msgid "Freemius State" +msgstr "Freemius tilstand" + +#: templates/debug.php:245 +msgid "Network Blog" +msgstr "Netværksblog" + +#: templates/debug.php:246 +msgid "Network User" +msgstr "Netværksbruger" + +#: templates/debug.php:283 +msgctxt "as connection was successful" +msgid "Connected" +msgstr "Forbundet" + +#: templates/debug.php:284 +msgctxt "as connection blocked" +msgid "Blocked" +msgstr "Blokeret" + +#: templates/debug.php:320 +msgid "Simulate Trial Promotion" +msgstr "Simulate Trial Promotion" + +#: templates/debug.php:332 +msgid "Simulate Network Upgrade" +msgstr "Simuler netværksopgradering" + +#: templates/debug.php:358 +msgid "%s Installs" +msgstr "%s installeringer" + +#: templates/debug.php:360 +msgctxt "like websites" +msgid "Sites" +msgstr "Websteder" + +#: templates/debug.php366, templates/account/partials/site.php:148 +msgid "Blog ID" +msgstr "Blog-ID" + +#: templates/debug.php431, templates/debug.php509, +#: templates/account/partials/addon.php:339 +msgctxt "verb" +msgid "Delete" +msgstr "Slet" + +#: templates/debug.php:445 +msgid "Add Ons of module %s" +msgstr "Tilføjelser til modul %s" + +#: templates/debug.php:482 +msgid "Users" +msgstr "Brugere" + +#: templates/debug.php:489 +msgid "Verified" +msgstr "Verificeret" + +#: templates/debug.php:520 +msgid "%s Licenses" +msgstr "1%s licenser" + +#: templates/debug.php:525 +msgid "Plugin ID" +msgstr "Plugin-ID" + +#: templates/debug.php:527 +msgid "Plan ID" +msgstr "Plan-ID" + +#: templates/debug.php:528 +msgid "Quota" +msgstr "Kvote" + +#: templates/debug.php:529 +msgid "Activated" +msgstr "Aktiveret" + +#: templates/debug.php:530 +msgid "Blocking" +msgstr "Blokerer" + +#: templates/debug.php:532 +msgctxt "as expiration date" +msgid "Expiration" +msgstr "Udløber" + +#: templates/debug.php:555 +msgid "Debug Log" +msgstr "Fejlfindingslog" + +#: templates/debug.php:559 +msgid "All Types" +msgstr "Alle typer" + +#: templates/debug.php:566 +msgid "All Requests" +msgstr "Alle forespørgsler" + +#: templates/debug.php571, templates/debug.php600, +#: templates/debug/logger.php:25 +msgid "File" +msgstr "Fil" + +#: templates/debug.php572, templates/debug.php598, +#: templates/debug/logger.php:23 +msgid "Function" +msgstr "Funktion" + +#: templates/debug.php:573 +msgid "Process ID" +msgstr "Proces-ID" + +#: templates/debug.php:574 +msgid "Logger" +msgstr "Logger" + +#: templates/debug.php575, templates/debug.php599, +#: templates/debug/logger.php:24 +msgid "Message" +msgstr "Besked" + +#: templates/debug.php:577 +msgid "Filter" +msgstr "Filter" + +#: templates/debug.php:585 +msgid "Download" +msgstr "Download" + +#: templates/debug.php596, templates/debug/logger.php:22 +msgid "Type" +msgstr "Type" + +#: templates/debug.php601, templates/debug/logger.php:26 +msgid "Timestamp" +msgstr "Tidsstempel" + +#: templates/secure-https-header.php:28 +msgid "Secure HTTPS %s page, running from an external domain" +msgstr "Secure HTTPS %s page, running from an external domain" + +#: includes/customizer/class-fs-customizer-support-section.php55, +#: templates/plugin-info/features.php:43 +msgid "Support" +msgstr "Support" + +#: includes/debug/class-fs-debug-bar-panel.php48, +#: templates/debug/api-calls.php54, templates/debug/logger.php:62 +msgctxt "milliseconds" +msgid "ms" +msgstr "ms" + +#: includes/debug/debug-bar-start.php:41 +msgid "Freemius API" +msgstr "Freemius API" + +#: includes/debug/debug-bar-start.php:42 +msgid "Requests" +msgstr "Requests" + +#: templates/account/billing.php:28 +msgctxt "verb" +msgid "Update" +msgstr "Opdater" + +#: templates/account/billing.php:39 +msgid "Billing" +msgstr "Betaling" + +#: templates/account/billing.php44, templates/account/billing.php:44 +msgid "Business name" +msgstr "Firmanavn" + +#: templates/account/billing.php45, templates/account/billing.php:45 +msgid "Tax / VAT ID" +msgstr "Moms / VAT ID" + +#: templates/account/billing.php48, templates/account/billing.php48, +#: templates/account/billing.php49, templates/account/billing.php:49 +msgid "Address Line %d" +msgstr "Adresselinje %d" + +#: templates/account/billing.php52, templates/account/billing.php:52 +msgid "City" +msgstr "By" + +#: templates/account/billing.php52, templates/account/billing.php:52 +msgid "Town" +msgstr "By" + +#: templates/account/billing.php53, templates/account/billing.php:53 +msgid "ZIP / Postal Code" +msgstr "ZIP / Postnummer" + +#: templates/account/billing.php:308 +msgid "Country" +msgstr "Land" + +#: templates/account/billing.php:310 +msgid "Select Country" +msgstr "Vælg land" + +#: templates/account/billing.php317, templates/account/billing.php:318 +msgid "State" +msgstr "Stat" + +#: templates/account/billing.php317, templates/account/billing.php:318 +msgid "Province" +msgstr "Provins" + +#: templates/account/payments.php:29 +msgid "Payments" +msgstr "Betalinger" + +#: templates/account/payments.php:36 +msgid "Date" +msgstr "Dato" + +#: templates/account/payments.php:37 +msgid "Amount" +msgstr "Beløb" + +#: templates/account/payments.php38, templates/account/payments.php:50 +msgid "Invoice" +msgstr "Faktura" + +#: templates/debug/api-calls.php:56 +msgid "API" +msgstr "API" + +#: templates/debug/api-calls.php:68 +msgid "Method" +msgstr "Metode" + +#: templates/debug/api-calls.php:69 +msgid "Code" +msgstr "Kode" + +#: templates/debug/api-calls.php:70 +msgid "Length" +msgstr "Længde" + +#: templates/debug/api-calls.php:71 +msgctxt "as file/folder path" +msgid "Path" +msgstr "Sti" + +#: templates/debug/api-calls.php:73 +msgid "Body" +msgstr "Body" + +#: templates/debug/api-calls.php:75 +msgid "Result" +msgstr "Resultat" + +#: templates/debug/api-calls.php:76 +msgid "Start" +msgstr "Start" + +#: templates/debug/api-calls.php:77 +msgid "End" +msgstr "Slut" + +#: templates/debug/logger.php:15 +msgid "Log" +msgstr "Log" + +#. translators: %s: time period (e.g. In "2 hours") +#: templates/debug/plugins-themes-sync.php18, +#: templates/debug/scheduled-crons.php:91 +msgid "In %s" +msgstr "Om %s" + +#. translators: %s: time period (e.g. "2 hours" ago) +#: templates/debug/plugins-themes-sync.php20, +#: templates/debug/scheduled-crons.php:93 +msgid "%s ago" +msgstr "%s siden" + +#: templates/debug/plugins-themes-sync.php21, +#: templates/debug/scheduled-crons.php:74 +msgctxt "seconds" +msgid "sec" +msgstr "sek" + +#: templates/debug/plugins-themes-sync.php:23 +msgid "Plugins & Themes Sync" +msgstr "Synkronisering af plugins og temaer" + +#: templates/debug/plugins-themes-sync.php:28 +msgid "Total" +msgstr "Total" + +#: templates/debug/plugins-themes-sync.php29, +#: templates/debug/scheduled-crons.php:84 +msgid "Last" +msgstr "Sidste" + +#: templates/debug/scheduled-crons.php:76 +msgid "Scheduled Crons" +msgstr "Planlagte cron jobs" + +#: templates/debug/scheduled-crons.php:81 +msgid "Module" +msgstr "Modul" + +#: templates/debug/scheduled-crons.php:82 +msgid "Module Type" +msgstr "Modultype" + +#: templates/debug/scheduled-crons.php:83 +msgid "Cron Type" +msgstr "Cron Type" + +#: templates/debug/scheduled-crons.php:85 +msgid "Next" +msgstr "Næste" + +#: templates/forms/affiliation.php:82 +msgid "Non-expiring" +msgstr "Udløber ikke" + +#: templates/forms/affiliation.php:85 +msgid "Apply to become an affiliate" +msgstr "Apply to become an affiliate" + +#: templates/forms/affiliation.php:104 +msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s." +msgstr "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s." + +#: templates/forms/affiliation.php:119 +msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information." +msgstr "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information." + +#: templates/forms/affiliation.php:122 +msgid "Your affiliation account was temporarily suspended." +msgstr "Your affiliation account was temporarily suspended." + +#: templates/forms/affiliation.php:125 +msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days." +msgstr "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days." + +#: templates/forms/affiliation.php:128 +msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support." +msgstr "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support." + +#: templates/forms/affiliation.php:141 +msgid "Like the %s? Become our ambassador and earn cash ;-)" +msgstr "Like the %s? Become our ambassador and earn cash ;-)" + +#: templates/forms/affiliation.php:142 +msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!" +msgstr "Refer new customers to our %s and earn %s commission on each successful sale you refer!" + +#: templates/forms/affiliation.php:145 +msgid "Program Summary" +msgstr "Programoversigt" + +#: templates/forms/affiliation.php:147 +msgid "%s commission when a customer purchases a new license." +msgstr "%s commission when a customer purchases a new license." + +#: templates/forms/affiliation.php:149 +msgid "Get commission for automated subscription renewals." +msgstr "Get commission for automated subscription renewals." + +#: templates/forms/affiliation.php:152 +msgid "%s tracking cookie after the first visit to maximize earnings potential." +msgstr "%s tracking cookie after the first visit to maximize earnings potential." + +#: templates/forms/affiliation.php:155 +msgid "Unlimited commissions." +msgstr "Unlimited commissions." + +#: templates/forms/affiliation.php:157 +msgid "%s minimum payout amount." +msgstr "%s minimum payout amount." + +#: templates/forms/affiliation.php:158 +msgid "Payouts are in USD and processed monthly via PayPal." +msgstr "Payouts are in USD and processed monthly via PayPal." + +#: templates/forms/affiliation.php:159 +msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days." +msgstr "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days." + +#: templates/forms/affiliation.php:162 +msgid "Affiliate" +msgstr "Affiliate" + +#: templates/forms/affiliation.php165, templates/forms/resend-key.php:23 +msgid "Email address" +msgstr "E-mailadresse" + +#: templates/forms/affiliation.php:169 +msgid "Full name" +msgstr "Fulde navn" + +#: templates/forms/affiliation.php:173 +msgid "PayPal account email address" +msgstr "E-mailadresse til PayPal-konto" + +#: templates/forms/affiliation.php:177 +msgid "Where are you going to promote the %s?" +msgstr "Hvor vil du promovere %s?" + +#: templates/forms/affiliation.php:179 +msgid "Enter the domain of your website or other websites from where you plan to promote the %s." +msgstr "Enter the domain of your website or other websites from where you plan to promote the %s." + +#: templates/forms/affiliation.php:181 +msgid "Add another domain" +msgstr "Tilføj andet domæne" + +#: templates/forms/affiliation.php:185 +msgid "Extra Domains" +msgstr "Ekstra domæner" + +#: templates/forms/affiliation.php:186 +msgid "Extra domains where you will be marketing the product from." +msgstr "Andre domæner du vil markedsføre produktet fra." + +#: templates/forms/affiliation.php:196 +msgid "Promotion methods" +msgstr "Promoveringsmetoder" + +#: templates/forms/affiliation.php:199 +msgid "Social media (Facebook, Twitter, etc.)" +msgstr "Sociale medier (Facebook, Twitter osv.)" + +#: templates/forms/affiliation.php:203 +msgid "Mobile apps" +msgstr "Mobil-apps" + +#: templates/forms/affiliation.php:207 +msgid "Website, email, and social media statistics (optional)" +msgstr "Websted, e-mail, og statistikker for sociale medier (valgfrit)" + +#: templates/forms/affiliation.php:210 +msgid "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)." +msgstr "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)." + +#: templates/forms/affiliation.php:214 +msgid "How will you promote us?" +msgstr "Hvordan vil du promovere os?" + +#: templates/forms/affiliation.php:217 +msgid "Please provide details on how you intend to promote %s (please be as specific as possible)." +msgstr "Please provide details on how you intend to promote %s (please be as specific as possible)." + +#: templates/forms/affiliation.php223, templates/forms/resend-key.php:22 +msgid "Cancel" +msgstr "Annuller" + +#: templates/forms/affiliation.php:225 +msgid "Become an affiliate" +msgstr "Bliv en affiliate" + +#: templates/forms/license-activation.php:20 +msgid "Please enter the license key that you received in the email right after the purchase:" +msgstr "Indtast licensnøglen, du modtog i e-mailen lige efter købet:" + +#: templates/forms/license-activation.php:25 +msgid "Update License" +msgstr "Opdater licens" + +#: templates/forms/optout.php:30 +msgctxt "verb" +msgid "Opt Out" +msgstr "Frameld" + +#: templates/forms/optout.php:31 +msgctxt "verb" +msgid "Opt In" +msgstr "Tilmeld" + +#: templates/forms/optout.php:33 +msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking." +msgstr "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking." + +#: templates/forms/optout.php:35 +msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." +msgstr "Ved at klikke \"Frameld\" vil vi ikke længere sende data fra %s til %s." + +#: templates/forms/premium-versions-upgrade-handler.php:40 +msgid "There is a new version of %s available." +msgstr "En ny version af %s er tilgængelig." + +#: templates/forms/premium-versions-upgrade-handler.php:41 +msgid " %s to access version %s security & feature updates, and support." +msgstr " %s to access version %s security & feature updates, and support." + +#: templates/forms/premium-versions-upgrade-handler.php:54 +msgid "New Version Available" +msgstr "Ny version tilgængelig" + +#: templates/forms/premium-versions-upgrade-handler.php:75 +msgctxt "close a window" +msgid "Dismiss" +msgstr "Fjern" + +#: templates/forms/resend-key.php:21 +msgid "Send License Key" +msgstr "Send licensnøgle" + +#: templates/forms/resend-key.php:57 +msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." +msgstr "Indtast e-mailadressen, som du benyttede ved opgraderingen, nedenfor og vi vil gensende licensnøglen til dig." + +#: templates/forms/subscription-cancellation.php:37 +msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." +msgstr "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." + +#: templates/forms/subscription-cancellation.php:47 +msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" +msgstr "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" + +#: templates/forms/subscription-cancellation.php:52 +msgid "license" +msgstr "license" + +#: templates/forms/subscription-cancellation.php:57 +msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." +msgstr "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." + +#: templates/forms/subscription-cancellation.php:68 +msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." +msgstr "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." + +#: templates/forms/subscription-cancellation.php:103 +msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." +msgstr "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." + +#: templates/forms/subscription-cancellation.php:136 +msgid "Cancel %s?" +msgstr "Cancel %s?" + +#: templates/forms/subscription-cancellation.php:143 +msgid "Proceed" +msgstr "Proceed" + +#: templates/forms/subscription-cancellation.php191, +#: templates/forms/deactivation/form.php:150 +msgid "Cancel %s & Proceed" +msgstr "Cancel %s & Proceed" + +#: templates/forms/trial-start.php:22 +msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." +msgstr "Du er 1 klik fra at begynde din %1$s dages gratis prøveperiode af planen %2$s." + +#: templates/forms/trial-start.php:28 +msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial." +msgstr "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial." + +#: templates/js/style-premium-theme.php:37 +msgid "Premium" +msgstr "Premium" + +#: templates/partials/network-activation.php:23 +msgid "Activate license on all sites in the network." +msgstr "Aktiver licens på alle websteder i netværket." + +#: templates/partials/network-activation.php:24 +msgid "Apply on all sites in the network." +msgstr "Anvend på alle websteder i netværket." + +#: templates/partials/network-activation.php:27 +msgid "Activate license on all pending sites." +msgstr "Akiver licens på alle afventende websteder." + +#: templates/partials/network-activation.php:28 +msgid "Apply on all pending sites." +msgstr "Anvend på alle afventende websteder." + +#: templates/partials/network-activation.php36, +#: templates/partials/network-activation.php:68 +msgid "allow" +msgstr "tillad" + +#: templates/partials/network-activation.php38, +#: templates/partials/network-activation.php:70 +msgid "delegate" +msgstr "delegér" + +#: templates/partials/network-activation.php41, +#: templates/partials/network-activation.php:73 +msgid "skip" +msgstr "spring over" + +#: templates/plugin-info/description.php72, +#: templates/plugin-info/screenshots.php:31 +msgid "Click to view full-size screenshot %d" +msgstr "Klik for at vise skærmbillede %d i fuld skærm" + +#: templates/plugin-info/features.php:56 +msgid "Unlimited Updates" +msgstr "Ubegrænsede opdateringer" + +#: templates/account/partials/activate-license-button.php:46 +msgid "Localhost" +msgstr "Localhost" + +#: templates/account/partials/activate-license-button.php:50 +msgctxt "as 5 licenses left" +msgid "%s left" +msgstr "%s tilbage" + +#: templates/account/partials/activate-license-button.php:51 +msgid "Last license" +msgstr "Seneste license" + +#: templates/account/partials/addon.php:115 +msgid "Cancelled" +msgstr "Annulleret" + +#: templates/account/partials/addon.php:125 +msgid "No expiration" +msgstr "Udløber ikke" + +#: templates/account/partials/addon.php264, +#: templates/account/partials/addon.php:317 +msgid "Activate this add-on" +msgstr "Aktiver denne tilføjelse" + +#: templates/account/partials/site.php:181 +msgid "Owner Name" +msgstr "Ejer-navn" + +#: templates/account/partials/site.php:193 +msgid "Owner Email" +msgstr "E-mailadresse for ejer" + +#: templates/account/partials/site.php:205 +msgid "Owner ID" +msgstr "Ejer-ID" + +#: templates/account/partials/site.php:270 +msgid "Subscription" +msgstr "Abonnement" + +#: templates/forms/deactivation/contact.php:19 +msgid "Sorry for the inconvenience and we are here to help if you give us a chance." +msgstr "Vi beklager ulejligheden, og vi er her for at hjælpe, hvis du giver os chancen." + +#: templates/forms/deactivation/contact.php:22 +msgid "Contact Support" +msgstr "Kontakt support" + +#: templates/forms/deactivation/form.php:59 +msgid "Anonymous feedback" +msgstr "Anonym feedback" + +#: templates/forms/deactivation/form.php:66 +msgid "Deactivate" +msgstr "Deaktiver" + +#: templates/forms/deactivation/form.php:68 +msgid "Activate %s" +msgstr "Aktiver %s" + +#: templates/forms/deactivation/form.php:80 +msgid "Quick Feedback" +msgstr "Quick Feedback" + +#: templates/forms/deactivation/form.php:84 +msgid "If you have a moment, please let us know why you are %s" +msgstr "Hvis du har tid, så lad os venligst vide hvorfor du %s" + +#: templates/forms/deactivation/form.php:84 +msgid "deactivating" +msgstr "deaktiverer" + +#: templates/forms/deactivation/form.php:84 +msgid "switching" +msgstr "skifter" + +#: templates/forms/deactivation/form.php:332 +msgid "Submit & %s" +msgstr "Send & %s" + +#: templates/forms/deactivation/form.php:353 +msgid "Kindly tell us the reason so we can improve." +msgstr "Fortæl os venligst årsagen, så vi kan forbedre det." + +#: templates/forms/deactivation/form.php:478 +msgid "Yes - %s" +msgstr "Ja - %s" + +#: templates/forms/deactivation/form.php:485 +msgid "Skip & %s" +msgstr "Spring over & %s" + +#: templates/forms/deactivation/retry-skip.php:21 +msgid "Click here to use the plugin anonymously" +msgstr "Klik her for at benytte pluginnet anonymt" + +#: templates/forms/deactivation/retry-skip.php:23 +msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in." +msgstr "Du har måske overset det, men du behøver ikke at dele data og kan blot %s tilmeldingen." diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-en.mo b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-en.mo index be81534cbca7ba9f0eb111fb6f05626a3a138761..5e107d999ecf06a4608a7e724ac3751ded81df83 100755 GIT binary patch delta 11931 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 delta 9096 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 diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-en.po b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-en.po index 8a23a1a54..7d3a40b2d 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-en.po +++ b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-en.po @@ -1,4 +1,4 @@ -# Copyright (C) 2018 freemius +# Copyright (C) 2019 freemius # This file is distributed under the same license as the freemius package. msgid "" msgstr "" @@ -19,1222 +19,1301 @@ msgstr "" "X-Poedit-SearchPathExcluded-0: *.js\n" "X-Poedit-SourceCharset: UTF-8\n" -#: includes/class-freemius.php:1551 +#: includes/class-freemius.php:1688 msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." -#: includes/class-freemius.php:1553 +#: includes/class-freemius.php:1690 msgid "Error" msgstr "Error" -#: includes/class-freemius.php:1871 +#: includes/class-freemius.php:2011 msgid "I found a better %s" msgstr "I found a better %s" -#: includes/class-freemius.php:1873 +#: includes/class-freemius.php:2013 msgid "What's the %s's name?" msgstr "What's the %s's name?" -#: includes/class-freemius.php:1879 +#: includes/class-freemius.php:2019 msgid "It's a temporary %s. I'm just debugging an issue." msgstr "It's a temporary %s. I'm just debugging an issue." -#: includes/class-freemius.php:1881 +#: includes/class-freemius.php:2021 msgid "Deactivation" msgstr "Deactivation" -#: includes/class-freemius.php:1882 +#: includes/class-freemius.php:2022 msgid "Theme Switch" msgstr "Theme Switch" -#: includes/class-freemius.php:1891, templates/forms/resend-key.php:24 +#: includes/class-freemius.php:2031, templates/forms/resend-key.php:24 msgid "Other" msgstr "Other" -#: includes/class-freemius.php:1899 +#: includes/class-freemius.php:2039 msgid "I no longer need the %s" msgstr "I no longer need the %s" -#: includes/class-freemius.php:1906 +#: includes/class-freemius.php:2046 msgid "I only needed the %s for a short period" msgstr "I only needed the %s for a short period" -#: includes/class-freemius.php:1912 +#: includes/class-freemius.php:2052 msgid "The %s broke my site" msgstr "The %s broke my site" -#: includes/class-freemius.php:1919 +#: includes/class-freemius.php:2059 msgid "The %s suddenly stopped working" msgstr "The %s suddenly stopped working" -#: includes/class-freemius.php:1929 +#: includes/class-freemius.php:2069 msgid "I can't pay for it anymore" msgstr "I can't pay for it anymore" -#: includes/class-freemius.php:1931 +#: includes/class-freemius.php:2071 msgid "What price would you feel comfortable paying?" msgstr "What price would you feel comfortable paying?" -#: includes/class-freemius.php:1937 +#: includes/class-freemius.php:2077 msgid "I don't like to share my information with you" msgstr "I don't like to share my information with you" -#: includes/class-freemius.php:1958 +#: includes/class-freemius.php:2098 msgid "The %s didn't work" msgstr "The %s didn't work" -#: includes/class-freemius.php:1968 +#: includes/class-freemius.php:2108 msgid "I couldn't understand how to make it work" msgstr "I couldn't understand how to make it work" -#: includes/class-freemius.php:1976 +#: includes/class-freemius.php:2116 msgid "The %s is great, but I need specific feature that you don't support" msgstr "The %s is great, but I need specific feature that you don't support" -#: includes/class-freemius.php:1978 +#: includes/class-freemius.php:2118 msgid "What feature?" msgstr "What feature?" -#: includes/class-freemius.php:1982 +#: includes/class-freemius.php:2122 msgid "The %s is not working" msgstr "The %s is not working" -#: includes/class-freemius.php:1984 +#: includes/class-freemius.php:2124 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "Kindly share what didn't work so we can fix it for future users..." -#: includes/class-freemius.php:1988 +#: includes/class-freemius.php:2128 msgid "It's not what I was looking for" msgstr "It's not what I was looking for" -#: includes/class-freemius.php:1990 +#: includes/class-freemius.php:2130 msgid "What you've been looking for?" msgstr "What you've been looking for?" -#: includes/class-freemius.php:1994 +#: includes/class-freemius.php:2134 msgid "The %s didn't work as expected" msgstr "The %s didn't work as expected" -#: includes/class-freemius.php:1996 +#: includes/class-freemius.php:2136 msgid "What did you expect?" msgstr "What did you expect?" -#: includes/class-freemius.php:2729, templates/debug.php:20 +#: includes/class-freemius.php:2942, templates/debug.php:20 msgid "Freemius Debug" msgstr "Freemius Debug" -#: includes/class-freemius.php:3402 +#: includes/class-freemius.php:3670 msgid "I don't know what is cURL or how to install it, help me!" msgstr "I don't know what is cURL or how to install it, help me!" -#: includes/class-freemius.php:3404 +#: includes/class-freemius.php:3672 msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." msgstr "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." -#: includes/class-freemius.php:3411 +#: includes/class-freemius.php:3679 msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." msgstr "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." -#: includes/class-freemius.php:3516 +#: includes/class-freemius.php:3784 msgid "Yes - do your thing" msgstr "Yes - do your thing" -#: includes/class-freemius.php:3521 +#: includes/class-freemius.php:3789 msgid "No - just deactivate" msgstr "No - just deactivate" -#: includes/class-freemius.php:3566, includes/class-freemius.php:4066, includes/class-freemius.php:5127, includes/class-freemius.php:10941, includes/class-freemius.php:14205, includes/class-freemius.php:14257, includes/class-freemius.php:14319, includes/class-freemius.php:16448, includes/class-freemius.php:16458, includes/class-freemius.php:17014, includes/class-freemius.php:17032, includes/class-freemius.php:17130, includes/class-freemius.php:17866, templates/add-ons.php:43 +#: includes/class-freemius.php:3834, includes/class-freemius.php:4343, includes/class-freemius.php:5442, includes/class-freemius.php:11545, includes/class-freemius.php:14916, includes/class-freemius.php:14968, includes/class-freemius.php:15030, includes/class-freemius.php:17263, includes/class-freemius.php:17273, includes/class-freemius.php:17882, includes/class-freemius.php:18742, includes/class-freemius.php:18857, includes/class-freemius.php:19001, templates/add-ons.php:43 msgctxt "exclamation" msgid "Oops" msgstr "Oops" -#: includes/class-freemius.php:3635 +#: includes/class-freemius.php:3903 msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." msgstr "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." -#: includes/class-freemius.php:4063 +#: includes/class-freemius.php:4340 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "%s cannot run without %s." -#: includes/class-freemius.php:4064 +#: includes/class-freemius.php:4341 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "%s cannot run without the plugin." -#: includes/class-freemius.php:4176, includes/class-freemius.php:4201, includes/class-freemius.php:17103 +#: includes/class-freemius.php:4487, includes/class-freemius.php:4512, includes/class-freemius.php:17953 msgid "Unexpected API error. Please contact the %s's author with the following error." msgstr "Unexpected API error. Please contact the %s's author with the following error." -#: includes/class-freemius.php:4815 +#: includes/class-freemius.php:5130 msgid "Premium %s version was successfully activated." msgstr "Premium %s version was successfully activated." -#: includes/class-freemius.php:4827, includes/class-freemius.php:6660 +#: includes/class-freemius.php:5142, includes/class-freemius.php:7004 msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)." msgid "W00t" msgstr "W00t" -#: includes/class-freemius.php:4842 +#: includes/class-freemius.php:5157 msgid "You have a %s license." msgstr "You have a %s license." -#: includes/class-freemius.php:4846, includes/class-freemius.php:13626, includes/class-freemius.php:13637, includes/class-freemius.php:16376, includes/class-freemius.php:16676, includes/class-freemius.php:16741, includes/class-freemius.php:16891 +#: includes/class-freemius.php:5161, includes/class-freemius.php:14337, includes/class-freemius.php:14348, includes/class-freemius.php:17177, includes/class-freemius.php:17491, includes/class-freemius.php:17557, includes/class-freemius.php:17707 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "Yee-haw" -#: includes/class-freemius.php:5110 +#: includes/class-freemius.php:5425 msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." msgstr "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." -#: includes/class-freemius.php:5114 +#: includes/class-freemius.php:5429 msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin." -#: includes/class-freemius.php:5123, templates/add-ons.php:99, templates/account/partials/addon.php:283 +#: includes/class-freemius.php:5438, templates/add-ons.php:103, templates/account/partials/addon.php:288 msgid "More information about %s" msgstr "More information about %s" -#: includes/class-freemius.php:5124 +#: includes/class-freemius.php:5439 msgid "Purchase License" msgstr "Purchase License" -#: includes/class-freemius.php:6035, templates/connect.php:161 +#: includes/class-freemius.php:6372, templates/connect.php:163 msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." msgstr "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." -#: includes/class-freemius.php:6039 +#: includes/class-freemius.php:6376 msgid "start the trial" msgstr "start the trial" -#: includes/class-freemius.php:6040, templates/connect.php:165 +#: includes/class-freemius.php:6377, templates/connect.php:167 msgid "complete the install" msgstr "complete the install" -#: includes/class-freemius.php:6147 +#: includes/class-freemius.php:6490 msgid "You are just one step away - %s" msgstr "You are just one step away - %s" -#: includes/class-freemius.php:6150 +#: includes/class-freemius.php:6493 msgctxt "%s - plugin name. As complete \"PluginX\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "Complete \"%s\" Activation Now" -#: includes/class-freemius.php:6227 +#: includes/class-freemius.php:6571 msgid "We made a few tweaks to the %s, %s" msgstr "We made a few tweaks to the %s, %s" -#: includes/class-freemius.php:6231 -msgid "Opt in to make \"%s\" Better!" -msgstr "Opt in to make \"%s\" Better!" +#: includes/class-freemius.php:6575 +msgid "Opt in to make \"%s\" better!" +msgstr "Opt in to make \"%s\" better!" -#: includes/class-freemius.php:6659 +#: includes/class-freemius.php:7003 msgid "The upgrade of %s was successfully completed." msgstr "The upgrade of %s was successfully completed." -#: includes/class-freemius.php:8384, includes/class-fs-plugin-updater.php:581, includes/class-fs-plugin-updater.php:733, includes/class-fs-plugin-updater.php:739, templates/auto-installation.php:32 +#: includes/class-freemius.php:8925, includes/class-fs-plugin-updater.php:886, includes/class-fs-plugin-updater.php:1081, includes/class-fs-plugin-updater.php:1088, templates/auto-installation.php:32 msgid "Add-On" msgstr "Add-On" -#: includes/class-freemius.php:8386, templates/debug.php:349, templates/debug.php:510 +#: includes/class-freemius.php:8927, templates/debug.php:359, templates/debug.php:520 msgid "Plugin" msgstr "Plugin" -#: includes/class-freemius.php:8387, templates/debug.php:349, templates/debug.php:510, templates/forms/deactivation/form.php:64 +#: includes/class-freemius.php:8928, templates/debug.php:359, templates/debug.php:520, templates/forms/deactivation/form.php:67 msgid "Theme" msgstr "Theme" -#: includes/class-freemius.php:10808 -msgid "invalid_site_details_collection" -msgstr "invalid_site_details_collection" +#: includes/class-freemius.php:11412 +msgid "Invalid site details collection." +msgstr "Invalid site details collection." -#: includes/class-freemius.php:10928 +#: includes/class-freemius.php:11532 msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "We couldn't find your email address in the system, are you sure it's the right address?" -#: includes/class-freemius.php:10930 +#: includes/class-freemius.php:11534 msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?" -#: includes/class-freemius.php:11166 +#: includes/class-freemius.php:11808 msgid "Account is pending activation." msgstr "Account is pending activation." -#: includes/class-freemius.php:13608 +#: includes/class-freemius.php:11920, templates/forms/premium-versions-upgrade-handler.php:47 +msgid "Buy a license now" +msgstr "Buy a license now" + +#: includes/class-freemius.php:11932, templates/forms/premium-versions-upgrade-handler.php:46 +msgid "Renew your license now" +msgstr "Renew your license now" + +#: includes/class-freemius.php:11936 +msgid "%s to access version %s security & feature updates, and support." +msgstr "%s to access version %s security & feature updates, and support." + +#: includes/class-freemius.php:14319 msgid "%s activation was successfully completed." msgstr "%s activation was successfully completed." -#: includes/class-freemius.php:13622 +#: includes/class-freemius.php:14333 msgid "Your account was successfully activated with the %s plan." msgstr "Your account was successfully activated with the %s plan." -#: includes/class-freemius.php:13633, includes/class-freemius.php:16737 +#: includes/class-freemius.php:14344, includes/class-freemius.php:17553 msgid "Your trial has been successfully started." msgstr "Your trial has been successfully started." -#: includes/class-freemius.php:14203, includes/class-freemius.php:14255, includes/class-freemius.php:14317 +#: includes/class-freemius.php:14914, includes/class-freemius.php:14966, includes/class-freemius.php:15028 msgid "Couldn't activate %s." msgstr "Couldn't activate %s." -#: includes/class-freemius.php:14204, includes/class-freemius.php:14256, includes/class-freemius.php:14318 +#: includes/class-freemius.php:14915, includes/class-freemius.php:14967, includes/class-freemius.php:15029 msgid "Please contact us with the following message:" msgstr "Please contact us with the following message:" -#: includes/class-freemius.php:14666, includes/class-freemius.php:18929 +#: includes/class-freemius.php:15378, includes/class-freemius.php:19839 msgid "Upgrade" msgstr "Upgrade" -#: includes/class-freemius.php:14672 +#: includes/class-freemius.php:15384 msgid "Start Trial" msgstr "Start Trial" -#: includes/class-freemius.php:14674 +#: includes/class-freemius.php:15386 msgid "Pricing" msgstr "Pricing" -#: includes/class-freemius.php:14734, includes/class-freemius.php:14736 +#: includes/class-freemius.php:15448, includes/class-freemius.php:15450 msgid "Affiliation" msgstr "Affiliation" -#: includes/class-freemius.php:14756, includes/class-freemius.php:14758, templates/account.php:146, templates/debug.php:314 +#: includes/class-freemius.php:15478, includes/class-freemius.php:15480, templates/account.php:150, templates/debug.php:324 msgid "Account" msgstr "Account" -#: includes/class-freemius.php:14769, includes/class-freemius.php:14771, includes/customizer/class-fs-customizer-support-section.php:60 +#: includes/class-freemius.php:15493, includes/class-freemius.php:15495, includes/customizer/class-fs-customizer-support-section.php:60 msgid "Contact Us" msgstr "Contact Us" -#: includes/class-freemius.php:14781, includes/class-freemius.php:14783, includes/class-freemius.php:18939, templates/account.php:96, templates/account/partials/addon.php:37 +#: includes/class-freemius.php:15505, includes/class-freemius.php:15507, includes/class-freemius.php:19849, templates/account.php:100, templates/account/partials/addon.php:41 msgid "Add-Ons" msgstr "Add-Ons" -#: includes/class-freemius.php:14815, templates/pricing.php:97 +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow left icon" +msgid "←" +msgstr "←" + +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow right icon" +msgid "➤" +msgstr "➤" + +#: includes/class-freemius.php:15543, templates/pricing.php:97 msgctxt "noun" msgid "Pricing" msgstr "Pricing" -#: includes/class-freemius.php:15009, includes/customizer/class-fs-customizer-support-section.php:67 +#: includes/class-freemius.php:15756, includes/customizer/class-fs-customizer-support-section.php:67 msgid "Support Forum" msgstr "Support Forum" -#: includes/class-freemius.php:15794 +#: includes/class-freemius.php:16542 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "Your email has been successfully verified - you are AWESOME!" -#: includes/class-freemius.php:15795 +#: includes/class-freemius.php:16543 msgctxt "a positive response" msgid "Right on" msgstr "Right on" -#: includes/class-freemius.php:16367 +#: includes/class-freemius.php:17168 msgid "Your %s Add-on plan was successfully upgraded." msgstr "Your %s Add-on plan was successfully upgraded." -#: includes/class-freemius.php:16369 +#: includes/class-freemius.php:17170 msgid "%s Add-on was successfully purchased." msgstr "%s Add-on was successfully purchased." -#: includes/class-freemius.php:16372 +#: includes/class-freemius.php:17173 msgid "Download the latest version" msgstr "Download the latest version" -#: includes/class-freemius.php:16444 +#: includes/class-freemius.php:17259 msgctxt "%1s - plugin title, %2s - API domain" msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" -#: includes/class-freemius.php:16447, includes/class-freemius.php:16862, includes/class-freemius.php:16927 +#: includes/class-freemius.php:17262, includes/class-freemius.php:17678, includes/class-freemius.php:17755 msgid "Error received from the server:" msgstr "Error received from the server:" -#: includes/class-freemius.php:16457 +#: includes/class-freemius.php:17272 msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." -#: includes/class-freemius.php:16639, includes/class-freemius.php:16867, includes/class-freemius.php:16910 +#: includes/class-freemius.php:17454, includes/class-freemius.php:17683, includes/class-freemius.php:17726, includes/class-freemius.php:17829 msgctxt "something somebody says when they are thinking about what you have just said." msgid "Hmm" msgstr "Hmm" -#: includes/class-freemius.php:16652 +#: includes/class-freemius.php:17467 msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." msgstr "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." -#: includes/class-freemius.php:16653, templates/account.php:98, templates/add-ons.php:130, templates/account/partials/addon.php:39 +#: includes/class-freemius.php:17468, templates/account.php:102, templates/add-ons.php:134, templates/account/partials/addon.php:43 msgctxt "trial period" msgid "Trial" msgstr "Trial" -#: includes/class-freemius.php:16658 +#: includes/class-freemius.php:17473 msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s." -#: includes/class-freemius.php:16662, includes/class-freemius.php:16719 +#: includes/class-freemius.php:17477, includes/class-freemius.php:17535 msgid "Please contact us here" msgstr "Please contact us here" -#: includes/class-freemius.php:16672 +#: includes/class-freemius.php:17487 msgid "Your plan was successfully upgraded." msgstr "Your plan was successfully upgraded." -#: includes/class-freemius.php:16689 +#: includes/class-freemius.php:17505 msgid "Your plan was successfully changed to %s." msgstr "Your plan was successfully changed to %s." -#: includes/class-freemius.php:16705 +#: includes/class-freemius.php:17521 msgid "Your license has expired. You can still continue using the free %s forever." msgstr "Your license has expired. You can still continue using the free %s forever." -#: includes/class-freemius.php:16707 +#: includes/class-freemius.php:17523 msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." -#: includes/class-freemius.php:16715 +#: includes/class-freemius.php:17531 msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "Your license has been cancelled. If you think it's a mistake, please contact support." -#: includes/class-freemius.php:16728 +#: includes/class-freemius.php:17544 msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." msgstr "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." -#: includes/class-freemius.php:16751 +#: includes/class-freemius.php:17567 msgid "Your free trial has expired. You can still continue using all our free features." msgstr "Your free trial has expired. You can still continue using all our free features." -#: includes/class-freemius.php:16753 +#: includes/class-freemius.php:17569 msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." -#: includes/class-freemius.php:16858 +#: includes/class-freemius.php:17674 msgid "It looks like the license could not be activated." msgstr "It looks like the license could not be activated." -#: includes/class-freemius.php:16888 +#: includes/class-freemius.php:17704 msgid "Your license was successfully activated." msgstr "Your license was successfully activated." -#: includes/class-freemius.php:16914 +#: includes/class-freemius.php:17730 msgid "It looks like your site currently doesn't have an active license." msgstr "It looks like your site currently doesn't have an active license." -#: includes/class-freemius.php:16926 +#: includes/class-freemius.php:17754 msgid "It looks like the license deactivation failed." msgstr "It looks like the license deactivation failed." -#: includes/class-freemius.php:16954 +#: includes/class-freemius.php:17782 msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "Your license was successfully deactivated, you are back to the %s plan." -#: includes/class-freemius.php:16955 +#: includes/class-freemius.php:17783 msgid "O.K" msgstr "O.K" -#: includes/class-freemius.php:17003 -msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." -msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s." +#: includes/class-freemius.php:17836 +msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." +msgstr "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." -#: includes/class-freemius.php:17013 -msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." -msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." +#: includes/class-freemius.php:17845 +msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s." +msgstr "Your subscription was successfully cancelled. Your %s plan license will expire in %s." -#: includes/class-freemius.php:17037 +#: includes/class-freemius.php:17887 msgid "You are already running the %s in a trial mode." msgstr "You are already running the %s in a trial mode." -#: includes/class-freemius.php:17048 +#: includes/class-freemius.php:17898 msgid "You already utilized a trial before." msgstr "You already utilized a trial before." -#: includes/class-freemius.php:17062 +#: includes/class-freemius.php:17912 msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "Plan %s do not exist, therefore, can't start a trial." -#: includes/class-freemius.php:17073 +#: includes/class-freemius.php:17923 msgid "Plan %s does not support a trial period." msgstr "Plan %s does not support a trial period." -#: includes/class-freemius.php:17084 +#: includes/class-freemius.php:17934 msgid "None of the %s's plans supports a trial period." msgstr "None of the %s's plans supports a trial period." -#: includes/class-freemius.php:17134 +#: includes/class-freemius.php:17984 msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)" -#: includes/class-freemius.php:17185 -msgid "Your %s free trial was successfully cancelled." -msgstr "Your %s free trial was successfully cancelled." - -#: includes/class-freemius.php:17190 +#: includes/class-freemius.php:18020 msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18039 +msgid "Your %s free trial was successfully cancelled." +msgstr "Your %s free trial was successfully cancelled." + +#: includes/class-freemius.php:18346 msgid "Version %s was released." msgstr "Version %s was released." -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18346 msgid "Please download %s." msgstr "Please download %s." -#: includes/class-freemius.php:17481 +#: includes/class-freemius.php:18353 msgid "the latest %s version here" msgstr "the latest %s version here" -#: includes/class-freemius.php:17486 +#: includes/class-freemius.php:18358 msgid "New" msgstr "New" -#: includes/class-freemius.php:17491 +#: includes/class-freemius.php:18363 msgid "Seems like you got the latest release." msgstr "Seems like you got the latest release." -#: includes/class-freemius.php:17492 +#: includes/class-freemius.php:18364 msgid "You are all good!" msgstr "You are all good!" -#: includes/class-freemius.php:17758 +#: includes/class-freemius.php:18632 msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." -#: includes/class-freemius.php:17893 +#: includes/class-freemius.php:18769 msgid "Site successfully opted in." msgstr "Site successfully opted in." -#: includes/class-freemius.php:17894, includes/class-freemius.php:18671 +#: includes/class-freemius.php:18770, includes/class-freemius.php:19581 msgid "Awesome" msgstr "Awesome" -#: includes/class-freemius.php:17910, templates/forms/optout.php:32 +#: includes/class-freemius.php:18786, templates/forms/optout.php:32 msgid "We appreciate your help in making the %s better by letting us track some usage data." msgstr "We appreciate your help in making the %s better by letting us track some usage data." -#: includes/class-freemius.php:17911 +#: includes/class-freemius.php:18787 msgid "Thank you!" msgstr "Thank you!" -#: includes/class-freemius.php:17918 +#: includes/class-freemius.php:18794 msgid "We will no longer be sending any usage data of %s on %s to %s." msgstr "We will no longer be sending any usage data of %s on %s to %s." -#: includes/class-freemius.php:18033 +#: includes/class-freemius.php:18923 msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." msgstr "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." -#: includes/class-freemius.php:18039 +#: includes/class-freemius.php:18929 msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval." -#: includes/class-freemius.php:18044 +#: includes/class-freemius.php:18934 msgid "%s is the new owner of the account." msgstr "%s is the new owner of the account." -#: includes/class-freemius.php:18046 +#: includes/class-freemius.php:18936 msgctxt "as congratulations" msgid "Congrats" msgstr "Congrats" -#: includes/class-freemius.php:18066 +#: includes/class-freemius.php:18956 msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered." -#: includes/class-freemius.php:18067 +#: includes/class-freemius.php:18957 msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." -#: includes/class-freemius.php:18074 +#: includes/class-freemius.php:18964 msgid "Change Ownership" msgstr "Change Ownership" -#: includes/class-freemius.php:18082 +#: includes/class-freemius.php:18972 msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." -#: includes/class-freemius.php:18094 +#: includes/class-freemius.php:18984 msgid "Please provide your full name." msgstr "Please provide your full name." -#: includes/class-freemius.php:18099 +#: includes/class-freemius.php:18989 msgid "Your name was successfully updated." msgstr "Your name was successfully updated." -#: includes/class-freemius.php:18160 +#: includes/class-freemius.php:19050 msgid "You have successfully updated your %s." msgstr "You have successfully updated your %s." -#: includes/class-freemius.php:18300 +#: includes/class-freemius.php:19190 msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server." -#: includes/class-freemius.php:18301 +#: includes/class-freemius.php:19191 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "Heads up" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgctxt "exclamation" msgid "Hey" msgstr "Hey" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial." -#: includes/class-freemius.php:18719 +#: includes/class-freemius.php:19629 msgid "No commitment for %s days - cancel anytime!" msgstr "No commitment for %s days - cancel anytime!" -#: includes/class-freemius.php:18720 +#: includes/class-freemius.php:19630 msgid "No credit card required" msgstr "No credit card required" -#: includes/class-freemius.php:18727, templates/forms/trial-start.php:53 +#: includes/class-freemius.php:19637, templates/forms/trial-start.php:53 msgctxt "call to action" msgid "Start free trial" msgstr "Start free trial" -#: includes/class-freemius.php:18804 +#: includes/class-freemius.php:19714 msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" msgstr "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" -#: includes/class-freemius.php:18813 +#: includes/class-freemius.php:19723 msgid "Learn more" msgstr "Learn more" -#: includes/class-freemius.php:18963, templates/account.php:394, templates/account.php:497, templates/connect.php:169, templates/connect.php:408, templates/forms/license-activation.php:24, templates/account/partials/addon.php:230 +#: includes/class-freemius.php:19873, templates/account.php:406, templates/account.php:509, templates/connect.php:171, templates/connect.php:421, templates/forms/license-activation.php:24, templates/account/partials/addon.php:235 msgid "Activate License" msgstr "Activate License" -#: includes/class-freemius.php:18964, templates/account.php:457, templates/account.php:496, templates/account/partials/site.php:256 +#: includes/class-freemius.php:19874, templates/account.php:469, templates/account.php:508, templates/account/partials/site.php:256 msgid "Change License" msgstr "Change License" -#: includes/class-freemius.php:19046, templates/account/partials/site.php:161 +#: includes/class-freemius.php:19956, templates/account/partials/site.php:161 msgid "Opt Out" msgstr "Opt Out" -#: includes/class-freemius.php:19048, includes/class-freemius.php:19053, templates/account/partials/site.php:43, templates/account/partials/site.php:161 +#: includes/class-freemius.php:19958, includes/class-freemius.php:19963, templates/account/partials/site.php:43, templates/account/partials/site.php:161 msgid "Opt In" msgstr "Opt In" -#: includes/class-freemius.php:19245 +#: includes/class-freemius.php:20187 +msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" +msgstr " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" + +#: includes/class-freemius.php:20195 +msgid "Activate %s features" +msgstr "Activate %s features" + +#: includes/class-freemius.php:20208 msgid "Please follow these steps to complete the upgrade" msgstr "Please follow these steps to complete the upgrade" -#: includes/class-freemius.php:19249 +#: includes/class-freemius.php:20212 msgid "Download the latest %s version" msgstr "Download the latest %s version" -#: includes/class-freemius.php:19253 +#: includes/class-freemius.php:20216 msgid "Upload and activate the downloaded version" msgstr "Upload and activate the downloaded version" -#: includes/class-freemius.php:19255 +#: includes/class-freemius.php:20218 msgid "How to upload and activate?" msgstr "How to upload and activate?" -#: includes/class-freemius.php:19384 +#: includes/class-freemius.php:20352 msgid "%sClick here%s to choose the sites where you'd like to activate the license on." msgstr "%sClick here%s to choose the sites where you'd like to activate the license on." -#: includes/class-freemius.php:19545 +#: includes/class-freemius.php:20513 msgid "Auto installation only works for opted-in users." msgstr "Auto installation only works for opted-in users." -#: includes/class-freemius.php:19555, includes/class-freemius.php:19588, includes/class-fs-plugin-updater.php:713, includes/class-fs-plugin-updater.php:727 +#: includes/class-freemius.php:20523, includes/class-freemius.php:20556, includes/class-fs-plugin-updater.php:1060, includes/class-fs-plugin-updater.php:1074 msgid "Invalid module ID." msgstr "Invalid module ID." -#: includes/class-freemius.php:19564, includes/class-fs-plugin-updater.php:747 +#: includes/class-freemius.php:20532, includes/class-fs-plugin-updater.php:1096 msgid "Premium version already active." msgstr "Premium version already active." -#: includes/class-freemius.php:19571 +#: includes/class-freemius.php:20539 msgid "You do not have a valid license to access the premium version." msgstr "You do not have a valid license to access the premium version." -#: includes/class-freemius.php:19578 +#: includes/class-freemius.php:20546 msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version." -#: includes/class-freemius.php:19596, includes/class-fs-plugin-updater.php:746 +#: includes/class-freemius.php:20564, includes/class-fs-plugin-updater.php:1095 msgid "Premium add-on version already installed." msgstr "Premium add-on version already installed." -#: includes/class-freemius.php:19941 +#: includes/class-freemius.php:20909 msgid "View paid features" msgstr "View paid features" -#: includes/class-freemius.php:20251 +#: includes/class-freemius.php:21229 msgid "Thank you so much for using %s and its add-ons!" msgstr "Thank you so much for using %s and its add-ons!" -#: includes/class-freemius.php:20252 +#: includes/class-freemius.php:21230 msgid "Thank you so much for using %s!" msgstr "Thank you so much for using %s!" -#: includes/class-freemius.php:20258 +#: includes/class-freemius.php:21236 msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s." msgstr "You've already opted-in to our usage-tracking, which helps us keep improving the %s." -#: includes/class-freemius.php:20262 +#: includes/class-freemius.php:21240 msgid "Thank you so much for using our products!" msgstr "Thank you so much for using our products!" -#: includes/class-freemius.php:20263 +#: includes/class-freemius.php:21241 msgid "You've already opted-in to our usage-tracking, which helps us keep improving them." msgstr "You've already opted-in to our usage-tracking, which helps us keep improving them." -#: includes/class-freemius.php:20282 +#: includes/class-freemius.php:21260 msgid "%s and its add-ons" msgstr "%s and its add-ons" -#: includes/class-freemius.php:20291 +#: includes/class-freemius.php:21269 msgid "Products" msgstr "Products" -#: includes/class-freemius.php:20298, templates/connect.php:259 +#: includes/class-freemius.php:21276, templates/connect.php:272 msgid "Yes" msgstr "Yes" -#: includes/class-freemius.php:20299, templates/connect.php:260 +#: includes/class-freemius.php:21277, templates/connect.php:273 msgid "send me security & feature updates, educational content and offers." msgstr "send me security & feature updates, educational content and offers." -#: includes/class-freemius.php:20300, templates/connect.php:265 +#: includes/class-freemius.php:21278, templates/connect.php:278 msgid "No" msgstr "No" -#: includes/class-freemius.php:20302, templates/connect.php:267 +#: includes/class-freemius.php:21280, templates/connect.php:280 msgid "do %sNOT%s send me security & feature updates, educational content and offers." msgstr "do %sNOT%s send me security & feature updates, educational content and offers." -#: includes/class-freemius.php:20312 +#: includes/class-freemius.php:21290 msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" msgstr "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" -#: includes/class-freemius.php:20314, templates/connect.php:274 +#: includes/class-freemius.php:21292, templates/connect.php:287 msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" msgstr "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" -#: includes/class-freemius.php:20598 +#: includes/class-freemius.php:21574 msgid "License key is empty." msgstr "License key is empty." -#: includes/class-fs-plugin-updater.php:184, includes/class-fs-plugin-updater.php:219 -msgid "%sRenew your license now%s to access version %s security & feature updates, and support." -msgstr "%sRenew your license now%s to access version %s security & feature updates, and support." +#: includes/class-fs-plugin-updater.php:184, templates/forms/premium-versions-upgrade-handler.php:57 +msgid "Renew license" +msgstr "Renew license" + +#: includes/class-fs-plugin-updater.php:189, templates/forms/premium-versions-upgrade-handler.php:58 +msgid "Buy license" +msgstr "Buy license" + +#: includes/class-fs-plugin-updater.php:278 +msgid "There is a %s of %s available." +msgstr "There is a %s of %s available." -#: includes/class-fs-plugin-updater.php:776 +#: includes/class-fs-plugin-updater.php:282 +msgid "new version" +msgstr "new version" + +#: includes/class-fs-plugin-updater.php:305 +msgid "Important Upgrade Notice:" +msgstr "Important Upgrade Notice:" + +#: includes/class-fs-plugin-updater.php:1125 msgid "Installing plugin: %s" msgstr "Installing plugin: %s" -#: includes/class-fs-plugin-updater.php:817 +#: includes/class-fs-plugin-updater.php:1166 msgid "Unable to connect to the filesystem. Please confirm your credentials." msgstr "Unable to connect to the filesystem. Please confirm your credentials." -#: includes/class-fs-plugin-updater.php:923 +#: includes/class-fs-plugin-updater.php:1348 msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work." -#: includes/fs-plugin-info-dialog.php:336, templates/account/partials/addon.php:287 +#: includes/fs-plugin-info-dialog.php:369, templates/account/partials/addon.php:292 msgctxt "verb" msgid "Purchase" msgstr "Purchase" -#: includes/fs-plugin-info-dialog.php:339 +#: includes/fs-plugin-info-dialog.php:372 msgid "Start my free %s" msgstr "Start my free %s" -#: includes/fs-plugin-info-dialog.php:380 +#: includes/fs-plugin-info-dialog.php:413 msgid "Install Free Version Now" msgstr "Install Free Version Now" -#: includes/fs-plugin-info-dialog.php:381, templates/auto-installation.php:111, templates/account/partials/addon.php:267, templates/account/partials/addon.php:317 +#: includes/fs-plugin-info-dialog.php:414, templates/auto-installation.php:111, templates/account/partials/addon.php:272, templates/account/partials/addon.php:322 msgid "Install Now" msgstr "Install Now" -#: includes/fs-plugin-info-dialog.php:392 +#: includes/fs-plugin-info-dialog.php:425 msgctxt "as download latest version" msgid "Download Latest Free Version" msgstr "Download Latest Free Version" -#: includes/fs-plugin-info-dialog.php:393, templates/account.php:80, templates/account/partials/addon.php:21 +#: includes/fs-plugin-info-dialog.php:426, templates/account.php:80, templates/account/partials/addon.php:21 msgctxt "as download latest version" msgid "Download Latest" msgstr "Download Latest" -#: includes/fs-plugin-info-dialog.php:403 +#: includes/fs-plugin-info-dialog.php:436 msgid "Install Free Version Update Now" msgstr "Install Free Version Update Now" -#: includes/fs-plugin-info-dialog.php:404, templates/account.php:448 +#: includes/fs-plugin-info-dialog.php:437, templates/account.php:460 msgid "Install Update Now" msgstr "Install Update Now" -#: includes/fs-plugin-info-dialog.php:415 +#: includes/fs-plugin-info-dialog.php:448 msgid "Newer Free Version (%s) Installed" msgstr "Newer Free Version (%s) Installed" -#: includes/fs-plugin-info-dialog.php:416 +#: includes/fs-plugin-info-dialog.php:449 msgid "Newer Version (%s) Installed" msgstr "Newer Version (%s) Installed" -#: includes/fs-plugin-info-dialog.php:424 +#: includes/fs-plugin-info-dialog.php:457 msgid "Latest Free Version Installed" msgstr "Latest Free Version Installed" -#: includes/fs-plugin-info-dialog.php:425 +#: includes/fs-plugin-info-dialog.php:458 msgid "Latest Version Installed" msgstr "Latest Version Installed" -#: includes/fs-plugin-info-dialog.php:580 +#: includes/fs-plugin-info-dialog.php:613 msgctxt "Plugin installer section title" msgid "Description" msgstr "Description" -#: includes/fs-plugin-info-dialog.php:581 +#: includes/fs-plugin-info-dialog.php:614 msgctxt "Plugin installer section title" msgid "Installation" msgstr "Installation" -#: includes/fs-plugin-info-dialog.php:582 +#: includes/fs-plugin-info-dialog.php:615 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "FAQ" -#: includes/fs-plugin-info-dialog.php:583, templates/plugin-info/description.php:55 +#: includes/fs-plugin-info-dialog.php:616, templates/plugin-info/description.php:55 msgid "Screenshots" msgstr "Screenshots" -#: includes/fs-plugin-info-dialog.php:584 +#: includes/fs-plugin-info-dialog.php:617 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "Changelog" -#: includes/fs-plugin-info-dialog.php:585 +#: includes/fs-plugin-info-dialog.php:618 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "Reviews" -#: includes/fs-plugin-info-dialog.php:586 +#: includes/fs-plugin-info-dialog.php:619 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "Other Notes" -#: includes/fs-plugin-info-dialog.php:601 +#: includes/fs-plugin-info-dialog.php:634 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "Features & Pricing" -#: includes/fs-plugin-info-dialog.php:611 +#: includes/fs-plugin-info-dialog.php:644 msgid "Plugin Install" msgstr "Plugin Install" -#: includes/fs-plugin-info-dialog.php:683 +#: includes/fs-plugin-info-dialog.php:716 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "%s Plan" -#: includes/fs-plugin-info-dialog.php:709 +#: includes/fs-plugin-info-dialog.php:742 msgctxt "e.g. the best product" msgid "Best" msgstr "Best" -#: includes/fs-plugin-info-dialog.php:715, includes/fs-plugin-info-dialog.php:735 +#: includes/fs-plugin-info-dialog.php:748, includes/fs-plugin-info-dialog.php:768 msgctxt "as every month" msgid "Monthly" msgstr "Monthly" -#: includes/fs-plugin-info-dialog.php:718 +#: includes/fs-plugin-info-dialog.php:751 msgctxt "as once a year" msgid "Annual" msgstr "Annual" -#: includes/fs-plugin-info-dialog.php:721 +#: includes/fs-plugin-info-dialog.php:754 msgid "Lifetime" msgstr "Lifetime" -#: includes/fs-plugin-info-dialog.php:735, includes/fs-plugin-info-dialog.php:737, includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php:768, includes/fs-plugin-info-dialog.php:770, includes/fs-plugin-info-dialog.php:772 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "Billed %s" -#: includes/fs-plugin-info-dialog.php:737 +#: includes/fs-plugin-info-dialog.php:770 msgctxt "as once a year" msgid "Annually" msgstr "Annually" -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php:772 msgctxt "as once a year" msgid "Once" msgstr "Once" -#: includes/fs-plugin-info-dialog.php:745 +#: includes/fs-plugin-info-dialog.php:778 msgid "Single Site License" msgstr "Single Site License" -#: includes/fs-plugin-info-dialog.php:747 +#: includes/fs-plugin-info-dialog.php:780 msgid "Unlimited Licenses" msgstr "Unlimited Licenses" -#: includes/fs-plugin-info-dialog.php:749 +#: includes/fs-plugin-info-dialog.php:782 msgid "Up to %s Sites" msgstr "Up to %s Sites" -#: includes/fs-plugin-info-dialog.php:759, templates/plugin-info/features.php:82 +#: includes/fs-plugin-info-dialog.php:792, templates/plugin-info/features.php:82 msgctxt "as monthly period" msgid "mo" msgstr "mo" -#: includes/fs-plugin-info-dialog.php:766, templates/plugin-info/features.php:80 +#: includes/fs-plugin-info-dialog.php:799, templates/plugin-info/features.php:80 msgctxt "as annual period" msgid "year" msgstr "year" -#: includes/fs-plugin-info-dialog.php:820 +#: includes/fs-plugin-info-dialog.php:853 msgctxt "noun" msgid "Price" msgstr "Price" -#: includes/fs-plugin-info-dialog.php:868 +#: includes/fs-plugin-info-dialog.php:901 msgid "Save %s" msgstr "Save %s" -#: includes/fs-plugin-info-dialog.php:878 +#: includes/fs-plugin-info-dialog.php:911 msgid "No commitment for %s - cancel anytime" msgstr "No commitment for %s - cancel anytime" -#: includes/fs-plugin-info-dialog.php:881 +#: includes/fs-plugin-info-dialog.php:914 msgid "After your free %s, pay as little as %s" msgstr "After your free %s, pay as little as %s" -#: includes/fs-plugin-info-dialog.php:892 +#: includes/fs-plugin-info-dialog.php:925 msgid "Details" msgstr "Details" -#: includes/fs-plugin-info-dialog.php:896, templates/account.php:87, templates/debug.php:191, templates/debug.php:228, templates/debug.php:442, templates/account/partials/addon.php:28 +#: includes/fs-plugin-info-dialog.php:929, templates/account.php:91, templates/debug.php:201, templates/debug.php:238, templates/debug.php:452, templates/account/partials/addon.php:32 msgctxt "product version" msgid "Version" msgstr "Version" -#: includes/fs-plugin-info-dialog.php:903 +#: includes/fs-plugin-info-dialog.php:936 msgctxt "as the plugin author" msgid "Author" msgstr "Author" -#: includes/fs-plugin-info-dialog.php:910 +#: includes/fs-plugin-info-dialog.php:943 msgid "Last Updated" msgstr "Last Updated" -#: includes/fs-plugin-info-dialog.php:915 +#: includes/fs-plugin-info-dialog.php:948, templates/account.php:376 msgctxt "x-ago" msgid "%s ago" msgstr "%s ago" -#: includes/fs-plugin-info-dialog.php:924 +#: includes/fs-plugin-info-dialog.php:957 msgid "Requires WordPress Version" msgstr "Requires WordPress Version" -#: includes/fs-plugin-info-dialog.php:925 +#: includes/fs-plugin-info-dialog.php:958 msgid "%s or higher" msgstr "%s or higher" -#: includes/fs-plugin-info-dialog.php:932 +#: includes/fs-plugin-info-dialog.php:965 msgid "Compatible up to" msgstr "Compatible up to" -#: includes/fs-plugin-info-dialog.php:940 +#: includes/fs-plugin-info-dialog.php:973 msgid "Downloaded" msgstr "Downloaded" -#: includes/fs-plugin-info-dialog.php:944 +#: includes/fs-plugin-info-dialog.php:977 msgid "%s time" msgstr "%s time" -#: includes/fs-plugin-info-dialog.php:946 +#: includes/fs-plugin-info-dialog.php:979 msgid "%s times" msgstr "%s times" -#: includes/fs-plugin-info-dialog.php:956 +#: includes/fs-plugin-info-dialog.php:989 msgid "WordPress.org Plugin Page" msgstr "WordPress.org Plugin Page" -#: includes/fs-plugin-info-dialog.php:964 +#: includes/fs-plugin-info-dialog.php:997 msgid "Plugin Homepage" msgstr "Plugin Homepage" -#: includes/fs-plugin-info-dialog.php:972, includes/fs-plugin-info-dialog.php:1054 +#: includes/fs-plugin-info-dialog.php:1005, includes/fs-plugin-info-dialog.php:1087 msgid "Donate to this plugin" msgstr "Donate to this plugin" -#: includes/fs-plugin-info-dialog.php:979 +#: includes/fs-plugin-info-dialog.php:1012 msgid "Average Rating" msgstr "Average Rating" -#: includes/fs-plugin-info-dialog.php:986 +#: includes/fs-plugin-info-dialog.php:1019 msgid "based on %s" msgstr "based on %s" -#: includes/fs-plugin-info-dialog.php:990 +#: includes/fs-plugin-info-dialog.php:1023 msgid "%s rating" msgstr "%s rating" -#: includes/fs-plugin-info-dialog.php:992 +#: includes/fs-plugin-info-dialog.php:1025 msgid "%s ratings" msgstr "%s ratings" -#: includes/fs-plugin-info-dialog.php:1007 +#: includes/fs-plugin-info-dialog.php:1040 msgid "%s star" msgstr "%s star" -#: includes/fs-plugin-info-dialog.php:1009 +#: includes/fs-plugin-info-dialog.php:1042 msgid "%s stars" msgstr "%s stars" -#: includes/fs-plugin-info-dialog.php:1020 +#: includes/fs-plugin-info-dialog.php:1053 msgid "Click to see reviews that provided a rating of %s" msgstr "Click to see reviews that provided a rating of %s" -#: includes/fs-plugin-info-dialog.php:1033 +#: includes/fs-plugin-info-dialog.php:1066 msgid "Contributors" msgstr "Contributors" -#: includes/fs-plugin-info-dialog.php:1062, includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php:1095, includes/fs-plugin-info-dialog.php:1097 msgid "Warning" msgstr "Warning" -#: includes/fs-plugin-info-dialog.php:1062 +#: includes/fs-plugin-info-dialog.php:1095 msgid "This plugin has not been tested with your current version of WordPress." msgstr "This plugin has not been tested with your current version of WordPress." -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php:1097 msgid "This plugin has not been marked as compatible with your version of WordPress." msgstr "This plugin has not been marked as compatible with your version of WordPress." -#: includes/fs-plugin-info-dialog.php:1083 +#: includes/fs-plugin-info-dialog.php:1116 msgid "Paid add-on must be deployed to Freemius." msgstr "Paid add-on must be deployed to Freemius." -#: includes/fs-plugin-info-dialog.php:1084 +#: includes/fs-plugin-info-dialog.php:1117 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "Add-on must be deployed to WordPress.org or Freemius." -#: templates/account.php:81, templates/account/partials/addon.php:22, templates/account/partials/site.php:295 -msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." -msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." +#: templates/account.php:81, templates/forms/subscription-cancellation.php:96, templates/account/partials/addon.php:22, templates/account/partials/site.php:295 +msgid "Downgrading your plan" +msgstr "Downgrading your plan" + +#: templates/account.php:82, templates/forms/subscription-cancellation.php:97, templates/account/partials/addon.php:23, templates/account/partials/site.php:296 +msgid "Cancelling the subscription" +msgstr "Cancelling the subscription" -#: templates/account.php:82, templates/account/partials/addon.php:23 +#. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the subscription' +#: templates/account.php:84, templates/forms/subscription-cancellation.php:99, templates/account/partials/addon.php:25, templates/account/partials/site.php:298 +msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." +msgstr "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." + +#: templates/account.php:85, templates/forms/subscription-cancellation.php:100, templates/account/partials/addon.php:26, templates/account/partials/site.php:299 +msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." +msgstr "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." + +#: templates/account.php:86, templates/forms/subscription-cancellation.php:106, templates/account/partials/addon.php:27 msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?" -#: templates/account.php:83, templates/account/partials/addon.php:24, templates/account/partials/site.php:296 -msgid "You can still enjoy all %s features but you will not have access to %s updates and support." -msgstr "You can still enjoy all %s features but you will not have access to %s updates and support." +#: templates/account.php:87, templates/forms/subscription-cancellation.php:101, templates/account/partials/addon.php:28, templates/account/partials/site.php:300 +msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." +msgstr "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." -#: templates/account.php:84, templates/account/partials/addon.php:25, templates/account/partials/site.php:297 +#: templates/account.php:88, templates/forms/subscription-cancellation.php:102, templates/account/partials/addon.php:29, templates/account/partials/site.php:301 msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features." #. translators: %s: Plan title (e.g. "Professional") -#: templates/account.php:86, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:27 +#: templates/account.php:90, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:31 msgid "Activate %s Plan" msgstr "Activate %s Plan" #. translators: %s: Time period (e.g. Auto renews in "2 months") -#: templates/account.php:89, templates/account/partials/addon.php:30, templates/account/partials/site.php:275 +#: templates/account.php:93, templates/account/partials/addon.php:34, templates/account/partials/site.php:275 msgid "Auto renews in %s" msgstr "Auto renews in %s" #. translators: %s: Time period (e.g. Expires in "2 months") -#: templates/account.php:91, templates/account/partials/addon.php:32, templates/account/partials/site.php:277 +#: templates/account.php:95, templates/account/partials/addon.php:36, templates/account/partials/site.php:277 msgid "Expires in %s" msgstr "Expires in %s" -#: templates/account.php:92, templates/account/partials/addon.php:33 +#: templates/account.php:96, templates/account/partials/addon.php:37 msgctxt "as synchronize license" msgid "Sync License" msgstr "Sync License" -#: templates/account.php:93, templates/account/partials/addon.php:34 +#: templates/account.php:97, templates/account/partials/addon.php:38 msgid "Cancel Trial" msgstr "Cancel Trial" -#: templates/account.php:94, templates/account/partials/addon.php:35 +#: templates/account.php:98, templates/account/partials/addon.php:39 msgid "Change Plan" msgstr "Change Plan" -#: templates/account.php:95, templates/account/partials/addon.php:36 +#: templates/account.php:99, templates/account/partials/addon.php:40 msgctxt "verb" msgid "Upgrade" msgstr "Upgrade" -#: templates/account.php:97, templates/account/partials/addon.php:38, templates/account/partials/site.php:298 +#: templates/account.php:101, templates/account/partials/addon.php:42, templates/account/partials/site.php:302 msgctxt "verb" msgid "Downgrade" msgstr "Downgrade" -#: templates/account.php:99, templates/add-ons.php:126, templates/plugin-info/features.php:72, templates/account/partials/addon.php:40, templates/account/partials/site.php:31 +#: templates/account.php:103, templates/add-ons.php:130, templates/plugin-info/features.php:72, templates/account/partials/addon.php:44, templates/account/partials/site.php:31 msgid "Free" msgstr "Free" -#: templates/account.php:100, templates/account/partials/addon.php:41 +#: templates/account.php:104, templates/account/partials/addon.php:45 msgid "Activate" msgstr "Activate" -#: templates/account.php:101, templates/debug.php:361, includes/customizer/class-fs-customizer-upsell-control.php:106, templates/account/partials/addon.php:42 +#: templates/account.php:105, templates/debug.php:371, includes/customizer/class-fs-customizer-upsell-control.php:106, templates/account/partials/addon.php:46 msgctxt "as product pricing plan" msgid "Plan" msgstr "Plan" -#: templates/account.php:154 +#: templates/account.php:158 msgid "Free Trial" msgstr "Free Trial" -#: templates/account.php:165 +#: templates/account.php:169 msgid "Account Details" msgstr "Account Details" -#: templates/account.php:175 +#: templates/account.php:179 msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" msgstr "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" -#: templates/account.php:177 +#: templates/account.php:181 msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" msgstr "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" -#: templates/account.php:180 +#: templates/account.php:184 msgid "Delete Account" msgstr "Delete Account" -#: templates/account.php:192, templates/account/partials/addon.php:155, templates/account/partials/deactivate-license-button.php:35 +#: templates/account.php:196, templates/account/partials/addon.php:159, templates/account/partials/deactivate-license-button.php:35 msgid "Deactivate License" msgstr "Deactivate License" -#: templates/account.php:210 +#: templates/account.php:219, templates/forms/subscription-cancellation.php:125 msgid "Are you sure you want to proceed?" msgstr "Are you sure you want to proceed?" -#: templates/account.php:210, templates/account/partials/addon.php:177 +#: templates/account.php:219, templates/account/partials/addon.php:182 msgid "Cancel Subscription" msgstr "Cancel Subscription" -#: templates/account.php:239 +#: templates/account.php:247 msgctxt "as synchronize" msgid "Sync" msgstr "Sync" -#: templates/account.php:253, templates/debug.php:477 +#: templates/account.php:261, templates/debug.php:487 msgid "Name" msgstr "Name" -#: templates/account.php:259, templates/debug.php:478 +#: templates/account.php:267, templates/debug.php:488 msgid "Email" msgstr "Email" -#: templates/account.php:266, templates/debug.php:360, templates/debug.php:516 +#: templates/account.php:274, templates/debug.php:370, templates/debug.php:526 msgid "User ID" msgstr "User ID" -#: templates/account.php:274 +#: templates/account.php:282 msgid "Site ID" msgstr "Site ID" -#: templates/account.php:277 +#: templates/account.php:285 msgid "No ID" msgstr "No ID" -#: templates/account.php:282, templates/debug.php:233, templates/debug.php:362, templates/debug.php:443, templates/debug.php:480, templates/account/partials/site.php:219 +#: templates/account.php:290, templates/debug.php:243, templates/debug.php:372, templates/debug.php:453, templates/debug.php:490, templates/account/partials/site.php:219 msgid "Public Key" msgstr "Public Key" -#: templates/account.php:288, templates/debug.php:363, templates/debug.php:444, templates/debug.php:481, templates/account/partials/site.php:231 +#: templates/account.php:296, templates/debug.php:373, templates/debug.php:454, templates/debug.php:491, templates/account/partials/site.php:231 msgid "Secret Key" msgstr "Secret Key" -#: templates/account.php:291 +#: templates/account.php:299 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "No Secret" -#: templates/account.php:310, templates/account/partials/site.php:112, templates/account/partials/site.php:114 +#: templates/account.php:318, templates/account/partials/site.php:112, templates/account/partials/site.php:114 msgid "Trial" msgstr "Trial" -#: templates/account.php:329, templates/debug.php:521, templates/account/partials/site.php:248 +#: templates/account.php:337, templates/debug.php:531, templates/account/partials/site.php:248 msgid "License Key" msgstr "License Key" -#: templates/account.php:359 +#: templates/account.php:367 msgid "not verified" msgstr "not verified" -#: templates/account.php:416 +#: templates/account.php:376, templates/account/partials/addon.php:120 +msgid "Expired" +msgstr "Expired" + +#: templates/account.php:428 msgid "Premium version" msgstr "Premium version" -#: templates/account.php:418 +#: templates/account.php:430 msgid "Free version" msgstr "Free version" -#: templates/account.php:430 +#: templates/account.php:442 msgid "Verify Email" msgstr "Verify Email" -#: templates/account.php:441 +#: templates/account.php:453 msgid "Download %s Version" msgstr "Download %s Version" -#: templates/account.php:455, templates/account.php:636, templates/account/partials/site.php:237, templates/account/partials/site.php:255 +#: templates/account.php:467, templates/account.php:649, templates/account/partials/site.php:237, templates/account/partials/site.php:255 msgctxt "verb" msgid "Show" msgstr "Show" -#: templates/account.php:469 +#: templates/account.php:481 msgid "What is your %s?" msgstr "What is your %s?" -#: templates/account.php:477, templates/account/billing.php:27 +#: templates/account.php:489, templates/account/billing.php:27 msgctxt "verb" msgid "Edit" msgstr "Edit" -#: templates/account.php:490 +#: templates/account.php:502 msgid "Sites" msgstr "Sites" -#: templates/account.php:501 +#: templates/account.php:513 msgid "Search by address" msgstr "Search by address" -#: templates/account.php:510, templates/account.php:558, templates/debug.php:226, templates/debug.php:354, templates/debug.php:439, templates/debug.php:476, templates/debug.php:514, templates/debug.php:587, templates/account/payments.php:35, templates/debug/logger.php:21 +#: templates/account.php:522, templates/account.php:570, templates/debug.php:236, templates/debug.php:364, templates/debug.php:449, templates/debug.php:486, templates/debug.php:524, templates/debug.php:597, templates/account/payments.php:35, templates/debug/logger.php:21 msgid "ID" msgstr "ID" -#: templates/account.php:511, templates/debug.php:357 +#: templates/account.php:523, templates/debug.php:367 msgid "Address" msgstr "Address" -#: templates/account.php:512 +#: templates/account.php:524 msgid "License" msgstr "License" -#: templates/account.php:513 +#: templates/account.php:525 msgid "Plan" msgstr "Plan" -#: templates/account.php:561 +#: templates/account.php:573 msgctxt "as software license" msgid "License" msgstr "License" -#: templates/account.php:630 +#: templates/account.php:643 msgctxt "verb" msgid "Hide" msgstr "Hide" -#: templates/account.php:665 +#: templates/account.php:686 +msgid "Cancelling %s" +msgstr "Cancelling %s" + +#: templates/account.php:686, templates/account.php:703, templates/forms/subscription-cancellation.php:27, templates/forms/deactivation/form.php:117 +msgid "trial" +msgstr "trial" + +#: templates/account.php:701, templates/forms/deactivation/form.php:134 +msgid "Cancelling %s..." +msgstr "Cancelling %s..." + +#: templates/account.php:704, templates/forms/subscription-cancellation.php:28, templates/forms/deactivation/form.php:118 +msgid "subscription" +msgstr "subscription" + +#: templates/account.php:718 msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" msgstr "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" @@ -1246,7 +1325,7 @@ msgstr "Add Ons for %s" msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." -#: templates/add-ons.php:135 +#: templates/add-ons.php:139 msgid "View details" msgstr "View details" @@ -1284,162 +1363,166 @@ msgid "PCI compliant" msgstr "PCI compliant" #. translators: %s: name (e.g. Hey John,) -#: templates/connect.php:110 +#: templates/connect.php:112 msgctxt "greeting" msgid "Hey %s," msgstr "Hey %s," -#: templates/connect.php:152 +#: templates/connect.php:154 msgid "Allow & Continue" msgstr "Allow & Continue" -#: templates/connect.php:156 +#: templates/connect.php:158 msgid "Re-send activation email" msgstr "Re-send activation email" -#: templates/connect.php:160 +#: templates/connect.php:162 msgid "Thanks %s!" msgstr "Thanks %s!" -#: templates/connect.php:170, templates/forms/license-activation.php:43 +#: templates/connect.php:172, templates/forms/license-activation.php:43 msgid "Agree & Activate License" msgstr "Agree & Activate License" -#: templates/connect.php:179 +#: templates/connect.php:181 msgid "Thanks for purchasing %s! To get started, please enter your license key:" msgstr "Thanks for purchasing %s! To get started, please enter your license key:" -#: templates/connect.php:186 +#: templates/connect.php:188 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." -#: templates/connect.php:187 +#: templates/connect.php:189 msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." msgstr "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." -#: templates/connect.php:193 +#: templates/connect.php:195 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." -#: templates/connect.php:194 +#: templates/connect.php:196 msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." -#: templates/connect.php:228 +#: templates/connect.php:230 msgid "We're excited to introduce the Freemius network-level integration." msgstr "We're excited to introduce the Freemius network-level integration." -#: templates/connect.php:231 +#: templates/connect.php:233 msgid "During the update process we detected %d site(s) that are still pending license activation." msgstr "During the update process we detected %d site(s) that are still pending license activation." -#: templates/connect.php:233 +#: templates/connect.php:235 msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." msgstr "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." -#: templates/connect.php:235 +#: templates/connect.php:237 msgid "%s's paid features" msgstr "%s's paid features" -#: templates/connect.php:240 +#: templates/connect.php:242 msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." msgstr "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." -#: templates/connect.php:242 +#: templates/connect.php:244 msgid "During the update process we detected %s site(s) in the network that are still pending your attention." msgstr "During the update process we detected %s site(s) in the network that are still pending your attention." -#: templates/connect.php:251, templates/forms/license-activation.php:46 +#: templates/connect.php:253, templates/forms/license-activation.php:46 msgid "License key" msgstr "License key" -#: templates/connect.php:254, templates/forms/license-activation.php:19 +#: templates/connect.php:256, templates/forms/license-activation.php:19 msgid "Can't find your license key?" msgstr "Can't find your license key?" -#: templates/connect.php:302, templates/connect.php:617, templates/forms/deactivation/retry-skip.php:20 +#: templates/connect.php:315, templates/connect.php:630, templates/forms/deactivation/retry-skip.php:20 msgctxt "verb" msgid "Skip" msgstr "Skip" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "Delegate to Site Admins" msgstr "Delegate to Site Admins" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "If you click it, this decision will be delegated to the sites administrators." msgstr "If you click it, this decision will be delegated to the sites administrators." -#: templates/connect.php:333 +#: templates/connect.php:346 msgid "Your Profile Overview" msgstr "Your Profile Overview" -#: templates/connect.php:334 +#: templates/connect.php:347 msgid "Name and email address" msgstr "Name and email address" -#: templates/connect.php:339 +#: templates/connect.php:352 msgid "Your Site Overview" msgstr "Your Site Overview" -#: templates/connect.php:340 +#: templates/connect.php:353 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "Site URL, WP version, PHP info, plugins & themes" -#: templates/connect.php:345 +#: templates/connect.php:358 msgid "Admin Notices" msgstr "Admin Notices" -#: templates/connect.php:346, templates/connect.php:362 +#: templates/connect.php:359, templates/connect.php:375 msgid "Updates, announcements, marketing, no spam" msgstr "Updates, announcements, marketing, no spam" -#: templates/connect.php:351 +#: templates/connect.php:364 msgid "Current %s Events" msgstr "Current %s Events" -#: templates/connect.php:352 +#: templates/connect.php:365 msgid "Activation, deactivation and uninstall" msgstr "Activation, deactivation and uninstall" -#: templates/connect.php:361 +#: templates/connect.php:374 msgid "Newsletter" msgstr "Newsletter" -#: templates/connect.php:378, templates/forms/license-activation.php:38 +#: templates/connect.php:391, templates/forms/license-activation.php:38 msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." msgstr "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." -#: templates/connect.php:383 +#: templates/connect.php:396 msgid "What permissions are being granted?" msgstr "What permissions are being granted?" -#: templates/connect.php:404 +#: templates/connect.php:417 msgid "Don't have a license key?" msgstr "Don't have a license key?" -#: templates/connect.php:405 +#: templates/connect.php:418 msgid "Activate Free Version" msgstr "Activate Free Version" -#: templates/connect.php:407 +#: templates/connect.php:420 msgid "Have a license key?" msgstr "Have a license key?" -#: templates/connect.php:415 +#: templates/connect.php:428 msgid "Privacy Policy" msgstr "Privacy Policy" -#: templates/connect.php:417 +#: templates/connect.php:430 +msgid "License Agreement" +msgstr "License Agreement" + +#: templates/connect.php:430 msgid "Terms of Service" msgstr "Terms of Service" -#: templates/connect.php:750 +#: templates/connect.php:766 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "Sending email" -#: templates/connect.php:751 +#: templates/connect.php:767 msgctxt "as activating plugin" msgid "Activating" msgstr "Activating" @@ -1467,7 +1550,7 @@ msgctxt "as code debugging" msgid "Debugging" msgstr "Debugging" -#: templates/debug.php:54, templates/debug.php:238, templates/debug.php:364, templates/debug.php:482 +#: templates/debug.php:54, templates/debug.php:248, templates/debug.php:374, templates/debug.php:492 msgid "Actions" msgstr "Actions" @@ -1491,194 +1574,198 @@ msgstr "Clear Updates Transients" msgid "Sync Data From Server" msgstr "Sync Data From Server" -#: templates/debug.php:90 +#: templates/debug.php:95 +msgid "Migrate Options to Network" +msgstr "Migrate Options to Network" + +#: templates/debug.php:100 msgid "Load DB Option" msgstr "Load DB Option" -#: templates/debug.php:93 +#: templates/debug.php:103 msgid "Set DB Option" msgstr "Set DB Option" -#: templates/debug.php:170 +#: templates/debug.php:180 msgid "Key" msgstr "Key" -#: templates/debug.php:171 +#: templates/debug.php:181 msgid "Value" msgstr "Value" -#: templates/debug.php:187 +#: templates/debug.php:197 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "SDK Versions" -#: templates/debug.php:192 +#: templates/debug.php:202 msgid "SDK Path" msgstr "SDK Path" -#: templates/debug.php:193, templates/debug.php:232 +#: templates/debug.php:203, templates/debug.php:242 msgid "Module Path" msgstr "Module Path" -#: templates/debug.php:194 +#: templates/debug.php:204 msgid "Is Active" msgstr "Is Active" -#: templates/debug.php:222, templates/debug/plugins-themes-sync.php:35 +#: templates/debug.php:232, templates/debug/plugins-themes-sync.php:35 msgid "Plugins" msgstr "Plugins" -#: templates/debug.php:222, templates/debug/plugins-themes-sync.php:56 +#: templates/debug.php:232, templates/debug/plugins-themes-sync.php:56 msgid "Themes" msgstr "Themes" -#: templates/debug.php:227, templates/debug.php:359, templates/debug.php:441, templates/debug/scheduled-crons.php:80 +#: templates/debug.php:237, templates/debug.php:369, templates/debug.php:451, templates/debug/scheduled-crons.php:80 msgid "Slug" msgstr "Slug" -#: templates/debug.php:229, templates/debug.php:440 +#: templates/debug.php:239, templates/debug.php:450 msgid "Title" msgstr "Title" -#: templates/debug.php:230 +#: templates/debug.php:240 msgctxt "as application program interface" msgid "API" msgstr "API" -#: templates/debug.php:231 +#: templates/debug.php:241 msgid "Freemius State" msgstr "Freemius State" -#: templates/debug.php:235 +#: templates/debug.php:245 msgid "Network Blog" msgstr "Network Blog" -#: templates/debug.php:236 +#: templates/debug.php:246 msgid "Network User" msgstr "Network User" -#: templates/debug.php:273 +#: templates/debug.php:283 msgctxt "as connection was successful" msgid "Connected" msgstr "Connected" -#: templates/debug.php:274 +#: templates/debug.php:284 msgctxt "as connection blocked" msgid "Blocked" msgstr "Blocked" -#: templates/debug.php:310 -msgid "Simulate Trial" -msgstr "Simulate Trial" +#: templates/debug.php:320 +msgid "Simulate Trial Promotion" +msgstr "Simulate Trial Promotion" -#: templates/debug.php:322 +#: templates/debug.php:332 msgid "Simulate Network Upgrade" msgstr "Simulate Network Upgrade" -#: templates/debug.php:348 +#: templates/debug.php:358 msgid "%s Installs" msgstr "%s Installs" -#: templates/debug.php:350 +#: templates/debug.php:360 msgctxt "like websites" msgid "Sites" msgstr "Sites" -#: templates/debug.php:356, templates/account/partials/site.php:148 +#: templates/debug.php:366, templates/account/partials/site.php:148 msgid "Blog ID" msgstr "Blog ID" -#: templates/debug.php:421, templates/debug.php:499, templates/account/partials/addon.php:334 +#: templates/debug.php:431, templates/debug.php:509, templates/account/partials/addon.php:339 msgctxt "verb" msgid "Delete" msgstr "Delete" -#: templates/debug.php:435 +#: templates/debug.php:445 msgid "Add Ons of module %s" msgstr "Add Ons of module %s" -#: templates/debug.php:472 +#: templates/debug.php:482 msgid "Users" msgstr "Users" -#: templates/debug.php:479 +#: templates/debug.php:489 msgid "Verified" msgstr "Verified" -#: templates/debug.php:510 +#: templates/debug.php:520 msgid "%s Licenses" msgstr "%s Licenses" -#: templates/debug.php:515 +#: templates/debug.php:525 msgid "Plugin ID" msgstr "Plugin ID" -#: templates/debug.php:517 +#: templates/debug.php:527 msgid "Plan ID" msgstr "Plan ID" -#: templates/debug.php:518 +#: templates/debug.php:528 msgid "Quota" msgstr "Quota" -#: templates/debug.php:519 +#: templates/debug.php:529 msgid "Activated" msgstr "Activated" -#: templates/debug.php:520 +#: templates/debug.php:530 msgid "Blocking" msgstr "Blocking" -#: templates/debug.php:522 +#: templates/debug.php:532 msgctxt "as expiration date" msgid "Expiration" msgstr "Expiration" -#: templates/debug.php:545 +#: templates/debug.php:555 msgid "Debug Log" msgstr "Debug Log" -#: templates/debug.php:549 +#: templates/debug.php:559 msgid "All Types" msgstr "All Types" -#: templates/debug.php:556 +#: templates/debug.php:566 msgid "All Requests" msgstr "All Requests" -#: templates/debug.php:561, templates/debug.php:590, templates/debug/logger.php:25 +#: templates/debug.php:571, templates/debug.php:600, templates/debug/logger.php:25 msgid "File" msgstr "File" -#: templates/debug.php:562, templates/debug.php:588, templates/debug/logger.php:23 +#: templates/debug.php:572, templates/debug.php:598, templates/debug/logger.php:23 msgid "Function" msgstr "Function" -#: templates/debug.php:563 +#: templates/debug.php:573 msgid "Process ID" msgstr "Process ID" -#: templates/debug.php:564 +#: templates/debug.php:574 msgid "Logger" msgstr "Logger" -#: templates/debug.php:565, templates/debug.php:589, templates/debug/logger.php:24 +#: templates/debug.php:575, templates/debug.php:599, templates/debug/logger.php:24 msgid "Message" msgstr "Message" -#: templates/debug.php:567 +#: templates/debug.php:577 msgid "Filter" msgstr "Filter" -#: templates/debug.php:575 +#: templates/debug.php:585 msgid "Download" msgstr "Download" -#: templates/debug.php:586, templates/debug/logger.php:22 +#: templates/debug.php:596, templates/debug/logger.php:22 msgid "Type" msgstr "Type" -#: templates/debug.php:591, templates/debug/logger.php:26 +#: templates/debug.php:601, templates/debug/logger.php:26 msgid "Timestamp" msgstr "Timestamp" @@ -2022,23 +2109,19 @@ msgstr "Usage tracking is done in the name of making %s better. Making a better msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." -#: templates/forms/premium-versions-upgrade-handler.php:24 +#: templates/forms/premium-versions-upgrade-handler.php:40 msgid "There is a new version of %s available." msgstr "There is a new version of %s available." -#: templates/forms/premium-versions-upgrade-handler.php:25 -msgid " %sRenew your license now%s to access version %s security & feature updates, and support." -msgstr " %sRenew your license now%s to access version %s security & feature updates, and support." +#: templates/forms/premium-versions-upgrade-handler.php:41 +msgid " %s to access version %s security & feature updates, and support." +msgstr " %s to access version %s security & feature updates, and support." -#: templates/forms/premium-versions-upgrade-handler.php:34 +#: templates/forms/premium-versions-upgrade-handler.php:54 msgid "New Version Available" msgstr "New Version Available" -#: templates/forms/premium-versions-upgrade-handler.php:36 -msgid "Renew license" -msgstr "Renew license" - -#: templates/forms/premium-versions-upgrade-handler.php:53 +#: templates/forms/premium-versions-upgrade-handler.php:75 msgctxt "close a window" msgid "Dismiss" msgstr "Dismiss" @@ -2051,6 +2134,42 @@ msgstr "Send License Key" msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." msgstr "Enter the email address you've used for the upgrade below and we will resend you the license key." +#: templates/forms/subscription-cancellation.php:37 +msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." +msgstr "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." + +#: templates/forms/subscription-cancellation.php:47 +msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" +msgstr "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" + +#: templates/forms/subscription-cancellation.php:52 +msgid "license" +msgstr "license" + +#: templates/forms/subscription-cancellation.php:57 +msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." +msgstr "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." + +#: templates/forms/subscription-cancellation.php:68 +msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." +msgstr "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." + +#: templates/forms/subscription-cancellation.php:103 +msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." +msgstr "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." + +#: templates/forms/subscription-cancellation.php:136 +msgid "Cancel %s?" +msgstr "Cancel %s?" + +#: templates/forms/subscription-cancellation.php:143 +msgid "Proceed" +msgstr "Proceed" + +#: templates/forms/subscription-cancellation.php:191, templates/forms/deactivation/form.php:150 +msgid "Cancel %s & Proceed" +msgstr "Cancel %s & Proceed" + #: templates/forms/trial-start.php:22 msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." @@ -2112,19 +2231,15 @@ msgstr "%s left" msgid "Last license" msgstr "Last license" -#: templates/account/partials/addon.php:111 +#: templates/account/partials/addon.php:115 msgid "Cancelled" msgstr "Cancelled" -#: templates/account/partials/addon.php:116 -msgid "Expired" -msgstr "Expired" - -#: templates/account/partials/addon.php:121 +#: templates/account/partials/addon.php:125 msgid "No expiration" msgstr "No expiration" -#: templates/account/partials/addon.php:259, templates/account/partials/addon.php:312 +#: templates/account/partials/addon.php:264, templates/account/partials/addon.php:317 msgid "Activate this add-on" msgstr "Activate this add-on" @@ -2152,47 +2267,47 @@ msgstr "Sorry for the inconvenience and we are here to help if you give us a cha msgid "Contact Support" msgstr "Contact Support" -#: templates/forms/deactivation/form.php:56 +#: templates/forms/deactivation/form.php:59 msgid "Anonymous feedback" msgstr "Anonymous feedback" -#: templates/forms/deactivation/form.php:63 +#: templates/forms/deactivation/form.php:66 msgid "Deactivate" msgstr "Deactivate" -#: templates/forms/deactivation/form.php:65 +#: templates/forms/deactivation/form.php:68 msgid "Activate %s" msgstr "Activate %s" -#: templates/forms/deactivation/form.php:76 -msgid "Quick feedback" -msgstr "Quick feedback" - #: templates/forms/deactivation/form.php:80 +msgid "Quick Feedback" +msgstr "Quick Feedback" + +#: templates/forms/deactivation/form.php:84 msgid "If you have a moment, please let us know why you are %s" msgstr "If you have a moment, please let us know why you are %s" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "deactivating" msgstr "deactivating" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "switching" msgstr "switching" -#: templates/forms/deactivation/form.php:269 +#: templates/forms/deactivation/form.php:332 msgid "Submit & %s" msgstr "Submit & %s" -#: templates/forms/deactivation/form.php:290 +#: templates/forms/deactivation/form.php:353 msgid "Kindly tell us the reason so we can improve." msgstr "Kindly tell us the reason so we can improve." -#: templates/forms/deactivation/form.php:411 +#: templates/forms/deactivation/form.php:478 msgid "Yes - %s" msgstr "Yes - %s" -#: templates/forms/deactivation/form.php:418 +#: templates/forms/deactivation/form.php:485 msgid "Skip & %s" msgstr "Skip & %s" diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-es_ES.mo b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-es_ES.mo index afbe69c8fa13a6cc4307b1f13cf6d422f404f8ad..85d4a379e0dab155f300402b72a7c29d7af5e1c4 100644 GIT binary patch delta 12531 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 U9%Khh_CBF8`Qr-V$;BtS09uI`O#lD@ delta 9379 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 diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-es_ES.po b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-es_ES.po index 74c2e91e7..dcaba7132 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-es_ES.po +++ b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-es_ES.po @@ -1,4 +1,4 @@ -# Copyright (C) 2018 freemius +# Copyright (C) 2019 freemius # This file is distributed under the same license as the freemius package. # Translators: # Carlos Longarela <carlos@longarela.eu>, 2017-2018 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: WordPress SDK\n" "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-05-24 18:11+0000\n" +"PO-Revision-Date: 2018-11-25 12:57+0000\n" "Last-Translator: Carlos Longarela <carlos@longarela.eu>\n" "Language: es_ES\n" "Language-Team: Spanish (Spain) (http://www.transifex.com/freemius/wordpress-sdk/language/es_ES/)\n" @@ -21,1294 +21,1391 @@ msgstr "" "X-Poedit-SearchPathExcluded-0: *.js\n" "X-Poedit-SourceCharset: UTF-8\n" -#: includes/class-freemius.php:1551 +#: includes/class-freemius.php:1688 msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "Freemius SDK no pudo encontrar el archivo principal del plugin. Por favor contacta a sdk@freemius.com con el error actual." -#: includes/class-freemius.php:1553 +#: includes/class-freemius.php:1690 msgid "Error" msgstr "Error" -#: includes/class-freemius.php:1871 +#: includes/class-freemius.php:2011 msgid "I found a better %s" -msgstr "He encontrado un mejor %s" +msgstr "He encontrado un %s mejor" -#: includes/class-freemius.php:1873 +#: includes/class-freemius.php:2013 msgid "What's the %s's name?" msgstr "¿Cuál es el nombre de %s?" -#: includes/class-freemius.php:1879 +#: includes/class-freemius.php:2019 msgid "It's a temporary %s. I'm just debugging an issue." -msgstr "Es temporal %s. Sólo estoy depurando un problema." +msgstr "Es una %stemporal . Sólo estoy depurando un problema" -#: includes/class-freemius.php:1881 +#: includes/class-freemius.php:2021 msgid "Deactivation" msgstr "Desactivación" -#: includes/class-freemius.php:1882 +#: includes/class-freemius.php:2022 msgid "Theme Switch" msgstr "Cambiar tema" -#: includes/class-freemius.php1891, templates/forms/resend-key.php:24 +#: includes/class-freemius.php2031, templates/forms/resend-key.php:24 msgid "Other" msgstr "Otra" -#: includes/class-freemius.php:1899 +#: includes/class-freemius.php:2039 msgid "I no longer need the %s" msgstr "Ya no necesito el %s" -#: includes/class-freemius.php:1906 +#: includes/class-freemius.php:2046 msgid "I only needed the %s for a short period" msgstr "Sólo necesitaba la %s por un corto período" -#: includes/class-freemius.php:1912 +#: includes/class-freemius.php:2052 msgid "The %s broke my site" msgstr "%s ha roto mi sitio" -#: includes/class-freemius.php:1919 +#: includes/class-freemius.php:2059 msgid "The %s suddenly stopped working" msgstr "%s de repente ha dejado de funcionar" -#: includes/class-freemius.php:1929 +#: includes/class-freemius.php:2069 msgid "I can't pay for it anymore" msgstr "No puedo pagarlo durante más tiempo" -#: includes/class-freemius.php:1931 +#: includes/class-freemius.php:2071 msgid "What price would you feel comfortable paying?" msgstr "¿Con qué precio te sentirías cómodo pagando?" -#: includes/class-freemius.php:1937 +#: includes/class-freemius.php:2077 msgid "I don't like to share my information with you" msgstr "No me gusta compartir mi información contigo" -#: includes/class-freemius.php:1958 +#: includes/class-freemius.php:2098 msgid "The %s didn't work" -msgstr "%s no funcionaba" +msgstr "El %s no funcionaba" -#: includes/class-freemius.php:1968 +#: includes/class-freemius.php:2108 msgid "I couldn't understand how to make it work" msgstr "No entiendo cómo hacerlo funcionar" -#: includes/class-freemius.php:1976 +#: includes/class-freemius.php:2116 msgid "The %s is great, but I need specific feature that you don't support" msgstr "%s es genial, pero necesito una característica que no soportáis" -#: includes/class-freemius.php:1978 +#: includes/class-freemius.php:2118 msgid "What feature?" msgstr "¿Qué característica?" -#: includes/class-freemius.php:1982 +#: includes/class-freemius.php:2122 msgid "The %s is not working" -msgstr "%s no funciona" +msgstr " El %s no funciona" -#: includes/class-freemius.php:1984 +#: includes/class-freemius.php:2124 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "Por favor, comparte lo que no funcionó para que podamos arreglarlo para los futuros usuarios..." -#: includes/class-freemius.php:1988 +#: includes/class-freemius.php:2128 msgid "It's not what I was looking for" msgstr "No es lo que estaba buscando" -#: includes/class-freemius.php:1990 +#: includes/class-freemius.php:2130 msgid "What you've been looking for?" msgstr "¿Que has estado buscando?" -#: includes/class-freemius.php:1994 +#: includes/class-freemius.php:2134 msgid "The %s didn't work as expected" -msgstr "%s no funciona como esperaba" +msgstr " El %s no funciona como esperaba" -#: includes/class-freemius.php:1996 +#: includes/class-freemius.php:2136 msgid "What did you expect?" msgstr "¿Qué esperas?" -#: includes/class-freemius.php2729, templates/debug.php:20 +#: includes/class-freemius.php2942, templates/debug.php:20 msgid "Freemius Debug" msgstr "Debug Freemius" -#: includes/class-freemius.php:3402 +#: includes/class-freemius.php:3670 msgid "I don't know what is cURL or how to install it, help me!" msgstr "No sé qué es cURL o cómo instalarlo, ¡ayúdame!" -#: includes/class-freemius.php:3404 +#: includes/class-freemius.php:3672 msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." msgstr "Nos aseguraremos de ponernos en contacto con tu empresa de alojamiento web y resolver el problema. Recibirás un correo electrónico de seguimiento a %s tan pronto tengamos una actualización." -#: includes/class-freemius.php:3411 +#: includes/class-freemius.php:3679 msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." msgstr "Genial, por favor instala cURL y habilítalo en el archivo php.ini. Además, busca la directiva 'disable_functions' en el archivo php.ini y quita cualquier método que comienza con 'curl_'. Para asegurarte de que se activó con éxito, utiliza 'phpinfo()'. Una vez activado, desactiva el %s y reactívalo de nuevo." -#: includes/class-freemius.php:3516 +#: includes/class-freemius.php:3784 msgid "Yes - do your thing" msgstr "Vamos, adelante" -#: includes/class-freemius.php:3521 +#: includes/class-freemius.php:3789 msgid "No - just deactivate" msgstr "No - sólo desactivar" -#: includes/class-freemius.php3566, includes/class-freemius.php4066, -#: includes/class-freemius.php5127, includes/class-freemius.php10941, -#: includes/class-freemius.php14205, includes/class-freemius.php14257, -#: includes/class-freemius.php14319, includes/class-freemius.php16448, -#: includes/class-freemius.php16458, includes/class-freemius.php17014, -#: includes/class-freemius.php17032, includes/class-freemius.php17130, -#: includes/class-freemius.php17866, templates/add-ons.php:43 +#: includes/class-freemius.php3834, includes/class-freemius.php4343, +#: includes/class-freemius.php5442, includes/class-freemius.php11545, +#: includes/class-freemius.php14916, includes/class-freemius.php14968, +#: includes/class-freemius.php15030, includes/class-freemius.php17263, +#: includes/class-freemius.php17273, includes/class-freemius.php17882, +#: includes/class-freemius.php18742, includes/class-freemius.php18857, +#: includes/class-freemius.php19001, templates/add-ons.php:43 msgctxt "exclamation" msgid "Oops" msgstr "Oops" -#: includes/class-freemius.php:3635 +#: includes/class-freemius.php:3903 msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." msgstr "¡Gracias por darnos la oportunidad de arreglarlo! Acabamos de enviar un mensaje a nuestro personal técnico. Nos pondremos en contacto contigo tan pronto como tengamos una actualización de %s. Apreciamos tu paciencia." -#: includes/class-freemius.php:4063 +#: includes/class-freemius.php:4340 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "%s no se puede ejecutar sin %s." -#: includes/class-freemius.php:4064 +#: includes/class-freemius.php:4341 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "%s no se puede ejecutar sin el plugin." -#: includes/class-freemius.php4176, includes/class-freemius.php4201, -#: includes/class-freemius.php:17103 +#: includes/class-freemius.php4487, includes/class-freemius.php4512, +#: includes/class-freemius.php:17953 msgid "Unexpected API error. Please contact the %s's author with the following error." msgstr "Error inesperado del API. Pónte en contacto con el autor de %s indicándole el siguiente error." -#: includes/class-freemius.php:4815 +#: includes/class-freemius.php:5130 msgid "Premium %s version was successfully activated." msgstr "La versión Premium %s ha sido activada con éxito." -#: includes/class-freemius.php4827, includes/class-freemius.php:6660 +#: includes/class-freemius.php5142, includes/class-freemius.php:7004 msgctxt "" msgid "W00t" msgstr "W00t" -#: includes/class-freemius.php:4842 +#: includes/class-freemius.php:5157 msgid "You have a %s license." msgstr "Tienes una licencia %s." -#: includes/class-freemius.php4846, includes/class-freemius.php13626, -#: includes/class-freemius.php13637, includes/class-freemius.php16376, -#: includes/class-freemius.php16676, includes/class-freemius.php16741, -#: includes/class-freemius.php:16891 +#: includes/class-freemius.php5161, includes/class-freemius.php14337, +#: includes/class-freemius.php14348, includes/class-freemius.php17177, +#: includes/class-freemius.php17491, includes/class-freemius.php17557, +#: includes/class-freemius.php:17707 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "Vaya" -#: includes/class-freemius.php:5110 +#: includes/class-freemius.php:5425 msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." msgstr "la prueba gratuita de %s fue cancelada con éxito. Puesto que el complemento es sólo premium se desactivó automáticamente. Si quieres utilizarlo en el futuro, deberás comprar una licencia." -#: includes/class-freemius.php:5114 +#: includes/class-freemius.php:5429 msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "%s es un complemento único de premium. Tienes que comprar una licencia primero antes de activar el plugin." -#: includes/class-freemius.php5123, templates/add-ons.php99, -#: templates/account/partials/addon.php:283 +#: includes/class-freemius.php5438, templates/add-ons.php103, +#: templates/account/partials/addon.php:288 msgid "More information about %s" msgstr "Más información sobre %s" -#: includes/class-freemius.php:5124 +#: includes/class-freemius.php:5439 msgid "Purchase License" msgstr "Comprar licencia" -#: includes/class-freemius.php6035, templates/connect.php:161 +#: includes/class-freemius.php6372, templates/connect.php:163 msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." msgstr "Recibirás un correo de activación para %s en tu buzón en %s. Por favor, asegúrate de hacer clic en el botón de activación en ese correo electrónico para %s." -#: includes/class-freemius.php:6039 +#: includes/class-freemius.php:6376 msgid "start the trial" msgstr "comenzar el período de prueba" -#: includes/class-freemius.php6040, templates/connect.php:165 +#: includes/class-freemius.php6377, templates/connect.php:167 msgid "complete the install" msgstr "completar la instalación" -#: includes/class-freemius.php:6147 +#: includes/class-freemius.php:6490 msgid "You are just one step away - %s" msgstr "Estás a sólo un paso - %s" -#: includes/class-freemius.php:6150 +#: includes/class-freemius.php:6493 msgctxt "%s - plugin name. As complete \"PluginX\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "Completar la activación de \"%s\" ahora" -#: includes/class-freemius.php:6227 +#: includes/class-freemius.php:6571 msgid "We made a few tweaks to the %s, %s" msgstr "Hemos realizado algunas optimizaciones al %s, %s" -#: includes/class-freemius.php:6231 -msgid "Opt in to make \"%s\" Better!" -msgstr "¡Inscribirte para hacer \"%s\" Mejor!" +#: includes/class-freemius.php:6575 +msgid "Opt in to make \"%s\" better!" +msgstr "¡Inscríbite para hacer \"%s\" Mejor!" -#: includes/class-freemius.php:6659 +#: includes/class-freemius.php:7003 msgid "The upgrade of %s was successfully completed." msgstr "La actualización de %s se completó con éxito." -#: includes/class-freemius.php8384, includes/class-fs-plugin-updater.php581, -#: includes/class-fs-plugin-updater.php733, -#: includes/class-fs-plugin-updater.php739, templates/auto-installation.php:32 +#: includes/class-freemius.php8925, includes/class-fs-plugin-updater.php886, +#: includes/class-fs-plugin-updater.php1081, +#: includes/class-fs-plugin-updater.php1088, +#: templates/auto-installation.php:32 msgid "Add-On" msgstr "Complemento" -#: includes/class-freemius.php8386, templates/debug.php349, -#: templates/debug.php:510 +#: includes/class-freemius.php8927, templates/debug.php359, +#: templates/debug.php:520 msgid "Plugin" msgstr "Plugin" -#: includes/class-freemius.php8387, templates/debug.php349, -#: templates/debug.php510, templates/forms/deactivation/form.php:64 +#: includes/class-freemius.php8928, templates/debug.php359, +#: templates/debug.php520, templates/forms/deactivation/form.php:67 msgid "Theme" msgstr "Tema" -#: includes/class-freemius.php:10808 -msgid "invalid_site_details_collection" -msgstr "invalid_site_details_collection" +#: includes/class-freemius.php:11412 +msgid "Invalid site details collection." +msgstr "Colección de detalles del sitio no válida." -#: includes/class-freemius.php:10928 +#: includes/class-freemius.php:11532 msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "No podemos encontrar tu dirección de correo electrónico en el sistema, ¿estás seguro de que es la dirección de correo electrónico correcta?" -#: includes/class-freemius.php:10930 +#: includes/class-freemius.php:11534 msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "No vemos ninguna licencia activa asociada a esa dirección de correo electrónico, ¿estás seguro de que es la dirección de correo electrónico correcta?" -#: includes/class-freemius.php:11166 +#: includes/class-freemius.php:11808 msgid "Account is pending activation." msgstr "La cuenta está pendiente de activación" -#: includes/class-freemius.php:13608 +#: includes/class-freemius.php11920, +#: templates/forms/premium-versions-upgrade-handler.php:47 +msgid "Buy a license now" +msgstr "Compra una licencia ahora" + +#: includes/class-freemius.php11932, +#: templates/forms/premium-versions-upgrade-handler.php:46 +msgid "Renew your license now" +msgstr "Renueva tu licencia ahora" + +#: includes/class-freemius.php:11936 +msgid "%s to access version %s security & feature updates, and support." +msgstr "%s para acceder a la versión %s de actualizaciones de funciones, seguridad y soporte." + +#: includes/class-freemius.php:14319 msgid "%s activation was successfully completed." msgstr "%s activación se completó con éxito." -#: includes/class-freemius.php:13622 +#: includes/class-freemius.php:14333 msgid "Your account was successfully activated with the %s plan." msgstr "Tu cuenta se ha activado correctamente con el plan %s." -#: includes/class-freemius.php13633, includes/class-freemius.php:16737 +#: includes/class-freemius.php14344, includes/class-freemius.php:17553 msgid "Your trial has been successfully started." msgstr "Tu versión de prueba se ha iniciado con éxito." -#: includes/class-freemius.php14203, includes/class-freemius.php14255, -#: includes/class-freemius.php:14317 +#: includes/class-freemius.php14914, includes/class-freemius.php14966, +#: includes/class-freemius.php:15028 msgid "Couldn't activate %s." msgstr "No se puede activar %s." -#: includes/class-freemius.php14204, includes/class-freemius.php14256, -#: includes/class-freemius.php:14318 +#: includes/class-freemius.php14915, includes/class-freemius.php14967, +#: includes/class-freemius.php:15029 msgid "Please contact us with the following message:" msgstr "Por favor contáctanos con el siguiente mensaje:" -#: includes/class-freemius.php14666, includes/class-freemius.php:18929 +#: includes/class-freemius.php15378, includes/class-freemius.php:19839 msgid "Upgrade" msgstr "Actualizar" -#: includes/class-freemius.php:14672 +#: includes/class-freemius.php:15384 msgid "Start Trial" msgstr "Comenzar el período de prueba" -#: includes/class-freemius.php:14674 +#: includes/class-freemius.php:15386 msgid "Pricing" msgstr "Precio" -#: includes/class-freemius.php14734, includes/class-freemius.php:14736 +#: includes/class-freemius.php15448, includes/class-freemius.php:15450 msgid "Affiliation" msgstr "Afiliación" -#: includes/class-freemius.php14756, includes/class-freemius.php14758, -#: templates/account.php146, templates/debug.php:314 +#: includes/class-freemius.php15478, includes/class-freemius.php15480, +#: templates/account.php150, templates/debug.php:324 msgid "Account" msgstr "Cuenta" -#: includes/class-freemius.php14769, includes/class-freemius.php14771, +#: includes/class-freemius.php15493, includes/class-freemius.php15495, #: includes/customizer/class-fs-customizer-support-section.php:60 msgid "Contact Us" msgstr "Contáctanos" -#: includes/class-freemius.php14781, includes/class-freemius.php14783, -#: includes/class-freemius.php18939, templates/account.php96, -#: templates/account/partials/addon.php:37 +#: includes/class-freemius.php15505, includes/class-freemius.php15507, +#: includes/class-freemius.php19849, templates/account.php100, +#: templates/account/partials/addon.php:41 msgid "Add-Ons" msgstr "Complementos" -#: includes/class-freemius.php14815, templates/pricing.php:97 +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow left icon" +msgid "←" +msgstr "←" + +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow right icon" +msgid "➤" +msgstr "➤" + +#: includes/class-freemius.php15543, templates/pricing.php:97 msgctxt "noun" msgid "Pricing" msgstr "Precio" -#: includes/class-freemius.php15009, +#: includes/class-freemius.php15756, #: includes/customizer/class-fs-customizer-support-section.php:67 msgid "Support Forum" msgstr "Foro de soporte" -#: includes/class-freemius.php:15794 +#: includes/class-freemius.php:16542 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "Tu email ha sido verificado correctamente - ¡Eres IMPRESIONANTE!" -#: includes/class-freemius.php:15795 +#: includes/class-freemius.php:16543 msgctxt "a positive response" msgid "Right on" msgstr "Bien hecho" -#: includes/class-freemius.php:16367 +#: includes/class-freemius.php:17168 msgid "Your %s Add-on plan was successfully upgraded." msgstr "Tu complemento %s del plan se actualizó con éxito." -#: includes/class-freemius.php:16369 +#: includes/class-freemius.php:17170 msgid "%s Add-on was successfully purchased." msgstr "El complemento %s ha sido comprado correctamente." -#: includes/class-freemius.php:16372 +#: includes/class-freemius.php:17173 msgid "Download the latest version" msgstr "Descargar la última versión" -#: includes/class-freemius.php:16444 +#: includes/class-freemius.php:17259 msgctxt "%1s - plugin title, %2s - API domain" msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" msgstr "Tu servidor está bloqueando el acceso a la API de Freemius, que es crucial para la sincronización de licencia %1s. Por favor, ponte en contacto con tu host para que lo añadan a su lista blanca %2s" -#: includes/class-freemius.php16447, includes/class-freemius.php16862, -#: includes/class-freemius.php:16927 +#: includes/class-freemius.php17262, includes/class-freemius.php17678, +#: includes/class-freemius.php:17755 msgid "Error received from the server:" msgstr "Error recibido del servidor:" -#: includes/class-freemius.php:16457 +#: includes/class-freemius.php:17272 msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "Parece que uno de los parámetros de autenticación es incorrecto. Actualiza tu clave pública, clave secreta e ID de usuario e inténtelo de nuevo." -#: includes/class-freemius.php16639, includes/class-freemius.php16867, -#: includes/class-freemius.php:16910 +#: includes/class-freemius.php17454, includes/class-freemius.php17683, +#: includes/class-freemius.php17726, includes/class-freemius.php:17829 msgctxt "" msgid "Hmm" msgstr "Hmm" -#: includes/class-freemius.php:16652 +#: includes/class-freemius.php:17467 msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." msgstr "Parece que todavía estás en el plan %s. Si actualizaste o cambiaste tu plan, probablemente sea un problema de nuestra parte - lo sentimos." -#: includes/class-freemius.php16653, templates/account.php98, -#: templates/add-ons.php130, templates/account/partials/addon.php:39 +#: includes/class-freemius.php17468, templates/account.php102, +#: templates/add-ons.php134, templates/account/partials/addon.php:43 msgctxt "trial period" msgid "Trial" msgstr "Período de Prueba Gratuito" -#: includes/class-freemius.php:16658 +#: includes/class-freemius.php:17473 msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "He actualizado mi cuenta, pero cuando intento sincronizar la licencia, el plan sigue siendo %s." -#: includes/class-freemius.php16662, includes/class-freemius.php:16719 +#: includes/class-freemius.php17477, includes/class-freemius.php:17535 msgid "Please contact us here" msgstr "Contacta aquí con nosotros" -#: includes/class-freemius.php:16672 +#: includes/class-freemius.php:17487 msgid "Your plan was successfully upgraded." msgstr "Tu plan se actualizó con éxito." -#: includes/class-freemius.php:16689 +#: includes/class-freemius.php:17505 msgid "Your plan was successfully changed to %s." msgstr "Tu plan se cambió correctamente a %s." -#: includes/class-freemius.php:16705 +#: includes/class-freemius.php:17521 msgid "Your license has expired. You can still continue using the free %s forever." msgstr "Tu licencia ha caducado. Puedes seguir usando el plan gratuito %s para siempre." -#: includes/class-freemius.php:16707 +#: includes/class-freemius.php:17523 msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "Tu licencia ha caducado. %1$sActualiza ahora %2$s para continuar usando el %3$s sin interrupciones." -#: includes/class-freemius.php:16715 +#: includes/class-freemius.php:17531 msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "Tu licencia ha sido cancelada. Si crees que es un error, ponte en contacto con el servicio de asistencia." -#: includes/class-freemius.php:16728 +#: includes/class-freemius.php:17544 msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." msgstr "Tu licencia ha caducado. Todavía puedes seguir usando todas las funciones de %s, pero tendrás que renovar tu licencia para seguir recibiendo actualizaciones y soporte." -#: includes/class-freemius.php:16751 +#: includes/class-freemius.php:17567 msgid "Your free trial has expired. You can still continue using all our free features." msgstr "Tu período de prueba ha caducado. Todavía puedes seguir usando todas nuestras funciones gratuitas." -#: includes/class-freemius.php:16753 +#: includes/class-freemius.php:17569 msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "Tu período de prueba ha caducado. %1$sActualiza ahora %2$s para continuar usando el %3$s sin interrupciones." -#: includes/class-freemius.php:16858 +#: includes/class-freemius.php:17674 msgid "It looks like the license could not be activated." msgstr "Parece que la licencia no se pudo activar." -#: includes/class-freemius.php:16888 +#: includes/class-freemius.php:17704 msgid "Your license was successfully activated." msgstr "Tu licencia fue activada correctamente." -#: includes/class-freemius.php:16914 +#: includes/class-freemius.php:17730 msgid "It looks like your site currently doesn't have an active license." msgstr "Parece que tu sitio actualmente no tiene una licencia activa." -#: includes/class-freemius.php:16926 +#: includes/class-freemius.php:17754 msgid "It looks like the license deactivation failed." msgstr "Parece que la desactivación de licencia ha fallado." -#: includes/class-freemius.php:16954 +#: includes/class-freemius.php:17782 msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "Tu licencia fue desactivada correctamente, has vuelto al plan %s." -#: includes/class-freemius.php:16955 +#: includes/class-freemius.php:17783 msgid "O.K" msgstr "O.K" -#: includes/class-freemius.php:17003 -msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." -msgstr "Tu plan fue degradado con éxito. Tu licencia %s plan caducará en %s." +#: includes/class-freemius.php:17836 +msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." +msgstr "Parece que estamos teniendo algún problema temporal con tu cancelación de la suscripción. Vuelve a intentarlo en unos minutos." -#: includes/class-freemius.php:17013 -msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." -msgstr "Parece que estamos teniendo algún problema temporal con tu degradación de plan. Vuelve a intentarlo en unos minutos." +#: includes/class-freemius.php:17845 +msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s." +msgstr "Tu suscripción ha sido cancelada correctamente. Tu %s licencia del plan caducará en %s." -#: includes/class-freemius.php:17037 +#: includes/class-freemius.php:17887 msgid "You are already running the %s in a trial mode." msgstr "Estás ejecutando %s en modo de prueba." -#: includes/class-freemius.php:17048 +#: includes/class-freemius.php:17898 msgid "You already utilized a trial before." msgstr "Ya utilizaste un período de prueba antes." -#: includes/class-freemius.php:17062 +#: includes/class-freemius.php:17912 msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "El plan %s no existe, por lo tanto, no puedes comenzar un período de prueba." -#: includes/class-freemius.php:17073 +#: includes/class-freemius.php:17923 msgid "Plan %s does not support a trial period." msgstr "El plan %s no admite un período de prueba." -#: includes/class-freemius.php:17084 +#: includes/class-freemius.php:17934 msgid "None of the %s's plans supports a trial period." msgstr "Ninguno de los planes de %s soportan un período de prueba." -#: includes/class-freemius.php:17134 +#: includes/class-freemius.php:17984 msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "Parece que ya no estás en modo de prueba, así que no hay nada que cancelar :)" -#: includes/class-freemius.php:17185 -msgid "Your %s free trial was successfully cancelled." -msgstr "Tu prueba gratuita de %s fue cancelada con éxito." - -#: includes/class-freemius.php:17190 +#: includes/class-freemius.php:18020 msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "Parece que estamos teniendo algún problema temporal con tu cancelación de prueba. Vuelve a intentarlo en unos minutos." -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18039 +msgid "Your %s free trial was successfully cancelled." +msgstr "Tu prueba gratuita de %s fue cancelada con éxito." + +#: includes/class-freemius.php:18346 msgid "Version %s was released." msgstr "La versión %s se ha lanzado." -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18346 msgid "Please download %s." msgstr "Por favor descarga %s." -#: includes/class-freemius.php:17481 +#: includes/class-freemius.php:18353 msgid "the latest %s version here" msgstr "la última versión %s aquí" -#: includes/class-freemius.php:17486 +#: includes/class-freemius.php:18358 msgid "New" msgstr "Nuevo" -#: includes/class-freemius.php:17491 +#: includes/class-freemius.php:18363 msgid "Seems like you got the latest release." msgstr "Parece que tienes la última versión." -#: includes/class-freemius.php:17492 +#: includes/class-freemius.php:18364 msgid "You are all good!" msgstr "¡Está todo listo!" -#: includes/class-freemius.php:17758 +#: includes/class-freemius.php:18632 msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "El correo de verificación se acaba de enviar a %s. Si no puedes encontrarlo después de 5 min, comprueba tu carpeta de spam." -#: includes/class-freemius.php:17893 +#: includes/class-freemius.php:18769 msgid "Site successfully opted in." msgstr "Sitio dado de alta correctamente." -#: includes/class-freemius.php17894, includes/class-freemius.php:18671 +#: includes/class-freemius.php18770, includes/class-freemius.php:19581 msgid "Awesome" msgstr "Increíble" -#: includes/class-freemius.php17910, templates/forms/optout.php:32 +#: includes/class-freemius.php18786, templates/forms/optout.php:32 msgid "We appreciate your help in making the %s better by letting us track some usage data." msgstr "Agradecemos tu ayuda para mejorar %s y por permitirnos rastrear algunos datos de uso." -#: includes/class-freemius.php:17911 +#: includes/class-freemius.php:18787 msgid "Thank you!" msgstr "¡Gracias!" -#: includes/class-freemius.php:17918 +#: includes/class-freemius.php:18794 msgid "We will no longer be sending any usage data of %s on %s to %s." msgstr "No continuaremos enviando datos de uso de %s en %s a %s." -#: includes/class-freemius.php:18033 +#: includes/class-freemius.php:18923 msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." msgstr "Comprueba tu buzón de correo, debes recibir un correo electrónico a través de %s para confirmar el cambio de propiedad. Por razones de seguridad, debes confirmar el cambio dentro de los próximos 15 min. Si no puedes encontrar el correo electrónico, comprueba tu carpeta de correo no deseado." -#: includes/class-freemius.php:18039 +#: includes/class-freemius.php:18929 msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "Gracias por confirmar el cambio de propiedad. Se envió un correo electrónico a %s para su aprobación final." -#: includes/class-freemius.php:18044 +#: includes/class-freemius.php:18934 msgid "%s is the new owner of the account." msgstr "%s es el nuevo dueño de la cuenta." -#: includes/class-freemius.php:18046 +#: includes/class-freemius.php:18936 msgctxt "as congratulations" msgid "Congrats" msgstr "Felicidades" -#: includes/class-freemius.php:18066 +#: includes/class-freemius.php:18956 msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "Lo sentimos, no podemos completar la actualización de correo electrónico. Ya hay registrado otro usuario con esa dirección de correo electrónico." -#: includes/class-freemius.php:18067 +#: includes/class-freemius.php:18957 msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." msgstr "Si deseas renunciar a la titularidad de la cuenta de %s a %s haz clic en el botón de cambio de titularidad." -#: includes/class-freemius.php:18074 +#: includes/class-freemius.php:18964 msgid "Change Ownership" msgstr "Cambiar propietario" -#: includes/class-freemius.php:18082 +#: includes/class-freemius.php:18972 msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." msgstr "Se actualizó correctamente tu correo electrónico. Recibirás un correo electrónico con las instrucciones de confirmación en unos momentos." -#: includes/class-freemius.php:18094 +#: includes/class-freemius.php:18984 msgid "Please provide your full name." msgstr "Por favor, dinos tu nombre completo." -#: includes/class-freemius.php:18099 +#: includes/class-freemius.php:18989 msgid "Your name was successfully updated." msgstr "Tu nombre fue actualizado correctamente." -#: includes/class-freemius.php:18160 +#: includes/class-freemius.php:19050 msgid "You have successfully updated your %s." msgstr "Has actualizado correctamente tu %s." -#: includes/class-freemius.php:18300 +#: includes/class-freemius.php:19190 msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "Sólo déjanos informarte que la información de complementos de %s se está extrayendo de un servidor externo." -#: includes/class-freemius.php:18301 +#: includes/class-freemius.php:19191 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "Atención" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgctxt "exclamation" msgid "Hey" msgstr "Hey" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "¿Qué te pareció %s hasta ahora? Prueba todas nuestras funciones premium de %s con una prueba gratuita de % d-días." -#: includes/class-freemius.php:18719 +#: includes/class-freemius.php:19629 msgid "No commitment for %s days - cancel anytime!" msgstr "Sin compromiso por %s días - ¡cancelar en cualquier momento!" -#: includes/class-freemius.php:18720 +#: includes/class-freemius.php:19630 msgid "No credit card required" msgstr "No se necesita tarjeta de crédito" -#: includes/class-freemius.php18727, templates/forms/trial-start.php:53 +#: includes/class-freemius.php19637, templates/forms/trial-start.php:53 msgctxt "call to action" msgid "Start free trial" msgstr "Comenzar el período de prueba gratuito" -#: includes/class-freemius.php:18804 +#: includes/class-freemius.php:19714 msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" msgstr "Hey, ¿sabías que %s tiene un programa de afiliados? ¡Si te gusta %s puedes convertirte en nuestro embajador y ganar dinero!" -#: includes/class-freemius.php:18813 +#: includes/class-freemius.php:19723 msgid "Learn more" msgstr "Saber más" -#: includes/class-freemius.php18963, templates/account.php394, -#: templates/account.php497, templates/connect.php169, -#: templates/connect.php408, templates/forms/license-activation.php24, -#: templates/account/partials/addon.php:230 +#: includes/class-freemius.php19873, templates/account.php406, +#: templates/account.php509, templates/connect.php171, +#: templates/connect.php421, templates/forms/license-activation.php24, +#: templates/account/partials/addon.php:235 msgid "Activate License" msgstr "Activar licencia" -#: includes/class-freemius.php18964, templates/account.php457, -#: templates/account.php496, templates/account/partials/site.php:256 +#: includes/class-freemius.php19874, templates/account.php469, +#: templates/account.php508, templates/account/partials/site.php:256 msgid "Change License" msgstr "Cambiar licencia" -#: includes/class-freemius.php19046, templates/account/partials/site.php:161 +#: includes/class-freemius.php19956, templates/account/partials/site.php:161 msgid "Opt Out" msgstr "Darse de baja" -#: includes/class-freemius.php19048, includes/class-freemius.php19053, +#: includes/class-freemius.php19958, includes/class-freemius.php19963, #: templates/account/partials/site.php43, #: templates/account/partials/site.php:161 msgid "Opt In" msgstr "Inscribirse" -#: includes/class-freemius.php:19245 +#: includes/class-freemius.php:20187 +msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" +msgstr "La versión de pago de %1s ya está instalada. Actívala para comenzar a beneficiarte de las funciones de %2s. %3s" + +#: includes/class-freemius.php:20195 +msgid "Activate %s features" +msgstr "Activar características %s" + +#: includes/class-freemius.php:20208 msgid "Please follow these steps to complete the upgrade" msgstr "Por favor, sigue estos pasos para completar la actualización" -#: includes/class-freemius.php:19249 +#: includes/class-freemius.php:20212 msgid "Download the latest %s version" msgstr "Descargar la última versión %s" -#: includes/class-freemius.php:19253 +#: includes/class-freemius.php:20216 msgid "Upload and activate the downloaded version" msgstr "Cargar y activar la versión descargada" -#: includes/class-freemius.php:19255 +#: includes/class-freemius.php:20218 msgid "How to upload and activate?" msgstr "¿Cómo subirlo y activarlo?" -#: includes/class-freemius.php:19384 +#: includes/class-freemius.php:20352 msgid "%sClick here%s to choose the sites where you'd like to activate the license on." msgstr "%sClick aquí %s para elegir los sitios sobre los que te gustaría activar la licencia." -#: includes/class-freemius.php:19545 +#: includes/class-freemius.php:20513 msgid "Auto installation only works for opted-in users." msgstr "La instalación automática sólo funciona para usuarios que aceptaron." -#: includes/class-freemius.php19555, includes/class-freemius.php19588, -#: includes/class-fs-plugin-updater.php713, -#: includes/class-fs-plugin-updater.php:727 +#: includes/class-freemius.php20523, includes/class-freemius.php20556, +#: includes/class-fs-plugin-updater.php1060, +#: includes/class-fs-plugin-updater.php:1074 msgid "Invalid module ID." msgstr "Id de módulo no válido." -#: includes/class-freemius.php19564, includes/class-fs-plugin-updater.php:747 +#: includes/class-freemius.php20532, includes/class-fs-plugin-updater.php:1096 msgid "Premium version already active." msgstr "Versión premium ya activa." -#: includes/class-freemius.php:19571 +#: includes/class-freemius.php:20539 msgid "You do not have a valid license to access the premium version." msgstr "No tienes una licencia válida para acceder a la versión premium." -#: includes/class-freemius.php:19578 +#: includes/class-freemius.php:20546 msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." msgstr "El plugin es un \"Serviceware\" lo que significa que no tiene una versión de código premium." -#: includes/class-freemius.php19596, includes/class-fs-plugin-updater.php:746 +#: includes/class-freemius.php20564, includes/class-fs-plugin-updater.php:1095 msgid "Premium add-on version already installed." msgstr "Versión del complemento premium ya instalada." -#: includes/class-freemius.php:19941 +#: includes/class-freemius.php:20909 msgid "View paid features" msgstr "Ver las funciones de pago" -#: includes/class-freemius.php:20251 +#: includes/class-freemius.php:21229 msgid "Thank you so much for using %s and its add-ons!" msgstr "¡Muchas gracias por utilizar %s y sus complementos!" -#: includes/class-freemius.php:20252 +#: includes/class-freemius.php:21230 msgid "Thank you so much for using %s!" msgstr "¡Muchas gracias por utilizar %s!" -#: includes/class-freemius.php:20258 +#: includes/class-freemius.php:21236 msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s." msgstr "Ya has optado por nuestro seguimiento de uso, lo que nos ayuda a seguir mejorando %s." -#: includes/class-freemius.php:20262 +#: includes/class-freemius.php:21240 msgid "Thank you so much for using our products!" msgstr "¡Muchas gracias por utilizar nuestros productos!" -#: includes/class-freemius.php:20263 +#: includes/class-freemius.php:21241 msgid "You've already opted-in to our usage-tracking, which helps us keep improving them." msgstr "Ya has optado por nuestro seguimiento de uso, lo que nos ayuda a seguir mejorando." -#: includes/class-freemius.php:20282 +#: includes/class-freemius.php:21260 msgid "%s and its add-ons" msgstr "%s y sus complementos" -#: includes/class-freemius.php:20291 +#: includes/class-freemius.php:21269 msgid "Products" msgstr "Productos" -#: includes/class-freemius.php20298, templates/connect.php:259 +#: includes/class-freemius.php21276, templates/connect.php:272 msgid "Yes" msgstr "Si" -#: includes/class-freemius.php20299, templates/connect.php:260 +#: includes/class-freemius.php21277, templates/connect.php:273 msgid "send me security & feature updates, educational content and offers." msgstr "envíame actualizaciones de seguridad y nuevas funcionalidades, contenido educativo y ofertas." -#: includes/class-freemius.php20300, templates/connect.php:265 +#: includes/class-freemius.php21278, templates/connect.php:278 msgid "No" msgstr "No" -#: includes/class-freemius.php20302, templates/connect.php:267 +#: includes/class-freemius.php21280, templates/connect.php:280 msgid "do %sNOT%s send me security & feature updates, educational content and offers." msgstr "%sNO%s me envíes actualizaciones de seguridad y nuevas funcionalidades, contenido educativo y ofertas." -#: includes/class-freemius.php:20312 +#: includes/class-freemius.php:21290 msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" msgstr "Debido a la nueva %s Regulación General de Protección de Datos de la UE (GDPR)%s los requisitos de conformidad nos requieren que nos debes dar tu consentimiento explícito, de nuevo, confirmando que estás de acuerdo 🙂" -#: includes/class-freemius.php20314, templates/connect.php:274 +#: includes/class-freemius.php21292, templates/connect.php:287 msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" msgstr "Indica si deseas que te contactemos para actualizaciones de seguridad y nuevas funciones, contenido educativo y ofertas ocasionales:" -#: includes/class-freemius.php:20598 +#: includes/class-freemius.php:21574 msgid "License key is empty." msgstr "La clave de licencia está vacía." #: includes/class-fs-plugin-updater.php184, -#: includes/class-fs-plugin-updater.php:219 -msgid "%sRenew your license now%s to access version %s security & feature updates, and support." -msgstr "%s Renueva tu licencia ahora %s para acceder a la versión %s seguridad y nuevas características y soporte." +#: templates/forms/premium-versions-upgrade-handler.php:57 +msgid "Renew license" +msgstr "Renovar la licencia" + +#: includes/class-fs-plugin-updater.php189, +#: templates/forms/premium-versions-upgrade-handler.php:58 +msgid "Buy license" +msgstr "Comprar licencia" + +#: includes/class-fs-plugin-updater.php:278 +msgid "There is a %s of %s available." +msgstr "Hay una %s de %s disponible." + +#: includes/class-fs-plugin-updater.php:282 +msgid "new version" +msgstr "nueva versión" -#: includes/class-fs-plugin-updater.php:776 +#: includes/class-fs-plugin-updater.php:305 +msgid "Important Upgrade Notice:" +msgstr "Aviso importante de actualización:" + +#: includes/class-fs-plugin-updater.php:1125 msgid "Installing plugin: %s" msgstr "Instalando plugin: %s" -#: includes/class-fs-plugin-updater.php:817 +#: includes/class-fs-plugin-updater.php:1166 msgid "Unable to connect to the filesystem. Please confirm your credentials." msgstr "No es posible conectarse al sistema de archivos. Por favor, confirma tus credenciales." -#: includes/class-fs-plugin-updater.php:923 +#: includes/class-fs-plugin-updater.php:1348 msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." msgstr "El paquete de plugin remoto no contiene una carpeta con el Slug deseado y el cambio de nombre no funcionó." -#: includes/fs-plugin-info-dialog.php336, -#: templates/account/partials/addon.php:287 +#: includes/fs-plugin-info-dialog.php369, +#: templates/account/partials/addon.php:292 msgctxt "verb" msgid "Purchase" msgstr "Comprar" -#: includes/fs-plugin-info-dialog.php:339 +#: includes/fs-plugin-info-dialog.php:372 msgid "Start my free %s" msgstr "Comenzar mi período gratuito de %s" -#: includes/fs-plugin-info-dialog.php:380 +#: includes/fs-plugin-info-dialog.php:413 msgid "Install Free Version Now" msgstr "Instalar la versión gratuita ahora" -#: includes/fs-plugin-info-dialog.php381, templates/auto-installation.php111, -#: templates/account/partials/addon.php267, -#: templates/account/partials/addon.php:317 +#: includes/fs-plugin-info-dialog.php414, templates/auto-installation.php111, +#: templates/account/partials/addon.php272, +#: templates/account/partials/addon.php:322 msgid "Install Now" msgstr "Instalar ahora" -#: includes/fs-plugin-info-dialog.php:392 +#: includes/fs-plugin-info-dialog.php:425 msgctxt "as download latest version" msgid "Download Latest Free Version" msgstr "Descargar la última versión gratuita" -#: includes/fs-plugin-info-dialog.php393, templates/account.php80, +#: includes/fs-plugin-info-dialog.php426, templates/account.php80, #: templates/account/partials/addon.php:21 msgctxt "as download latest version" msgid "Download Latest" msgstr "Descargar la última" -#: includes/fs-plugin-info-dialog.php:403 +#: includes/fs-plugin-info-dialog.php:436 msgid "Install Free Version Update Now" msgstr "Instalar la actualización gratuita ahora" -#: includes/fs-plugin-info-dialog.php404, templates/account.php:448 +#: includes/fs-plugin-info-dialog.php437, templates/account.php:460 msgid "Install Update Now" msgstr "Instalar actualización ahora" -#: includes/fs-plugin-info-dialog.php:415 +#: includes/fs-plugin-info-dialog.php:448 msgid "Newer Free Version (%s) Installed" msgstr "Versión gratuita más reciente (%s) instalada" -#: includes/fs-plugin-info-dialog.php:416 +#: includes/fs-plugin-info-dialog.php:449 msgid "Newer Version (%s) Installed" msgstr "Versión más reciente (%s) instalada" -#: includes/fs-plugin-info-dialog.php:424 +#: includes/fs-plugin-info-dialog.php:457 msgid "Latest Free Version Installed" msgstr "Última versión gratuita instalada" -#: includes/fs-plugin-info-dialog.php:425 +#: includes/fs-plugin-info-dialog.php:458 msgid "Latest Version Installed" msgstr "Última versión instalada" -#: includes/fs-plugin-info-dialog.php:580 +#: includes/fs-plugin-info-dialog.php:613 msgctxt "Plugin installer section title" msgid "Description" msgstr "Descripción" -#: includes/fs-plugin-info-dialog.php:581 +#: includes/fs-plugin-info-dialog.php:614 msgctxt "Plugin installer section title" msgid "Installation" msgstr "Instalación" -#: includes/fs-plugin-info-dialog.php:582 +#: includes/fs-plugin-info-dialog.php:615 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "FAQ" -#: includes/fs-plugin-info-dialog.php583, +#: includes/fs-plugin-info-dialog.php616, #: templates/plugin-info/description.php:55 msgid "Screenshots" msgstr "Capturas de pantalla" -#: includes/fs-plugin-info-dialog.php:584 +#: includes/fs-plugin-info-dialog.php:617 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "Registro de cambios" -#: includes/fs-plugin-info-dialog.php:585 +#: includes/fs-plugin-info-dialog.php:618 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "Valoraciones" -#: includes/fs-plugin-info-dialog.php:586 +#: includes/fs-plugin-info-dialog.php:619 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "Otras notas" -#: includes/fs-plugin-info-dialog.php:601 +#: includes/fs-plugin-info-dialog.php:634 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "Características y precios" -#: includes/fs-plugin-info-dialog.php:611 +#: includes/fs-plugin-info-dialog.php:644 msgid "Plugin Install" msgstr "Instalar plugin" -#: includes/fs-plugin-info-dialog.php:683 +#: includes/fs-plugin-info-dialog.php:716 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "Plan %s" -#: includes/fs-plugin-info-dialog.php:709 +#: includes/fs-plugin-info-dialog.php:742 msgctxt "e.g. the best product" msgid "Best" msgstr "El mejor" -#: includes/fs-plugin-info-dialog.php715, -#: includes/fs-plugin-info-dialog.php:735 +#: includes/fs-plugin-info-dialog.php748, +#: includes/fs-plugin-info-dialog.php:768 msgctxt "as every month" msgid "Monthly" msgstr "Mensual" -#: includes/fs-plugin-info-dialog.php:718 +#: includes/fs-plugin-info-dialog.php:751 msgctxt "as once a year" msgid "Annual" msgstr "Anual" -#: includes/fs-plugin-info-dialog.php:721 +#: includes/fs-plugin-info-dialog.php:754 msgid "Lifetime" msgstr "Permanente" -#: includes/fs-plugin-info-dialog.php735, -#: includes/fs-plugin-info-dialog.php737, -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php768, +#: includes/fs-plugin-info-dialog.php770, +#: includes/fs-plugin-info-dialog.php:772 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "Facturado %s" -#: includes/fs-plugin-info-dialog.php:737 +#: includes/fs-plugin-info-dialog.php:770 msgctxt "as once a year" msgid "Annually" msgstr "Anualmente" -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php:772 msgctxt "as once a year" msgid "Once" msgstr "Una vez" -#: includes/fs-plugin-info-dialog.php:745 +#: includes/fs-plugin-info-dialog.php:778 msgid "Single Site License" msgstr "Licencia para un único sitio" -#: includes/fs-plugin-info-dialog.php:747 +#: includes/fs-plugin-info-dialog.php:780 msgid "Unlimited Licenses" msgstr "Licencias ilimitadas" -#: includes/fs-plugin-info-dialog.php:749 +#: includes/fs-plugin-info-dialog.php:782 msgid "Up to %s Sites" msgstr "Hasta %s sitios" -#: includes/fs-plugin-info-dialog.php759, +#: includes/fs-plugin-info-dialog.php792, #: templates/plugin-info/features.php:82 msgctxt "as monthly period" msgid "mo" msgstr "me" -#: includes/fs-plugin-info-dialog.php766, +#: includes/fs-plugin-info-dialog.php799, #: templates/plugin-info/features.php:80 msgctxt "as annual period" msgid "year" msgstr "año" -#: includes/fs-plugin-info-dialog.php:820 +#: includes/fs-plugin-info-dialog.php:853 msgctxt "noun" msgid "Price" msgstr "Precio" -#: includes/fs-plugin-info-dialog.php:868 +#: includes/fs-plugin-info-dialog.php:901 msgid "Save %s" msgstr "Guardar %s" -#: includes/fs-plugin-info-dialog.php:878 +#: includes/fs-plugin-info-dialog.php:911 msgid "No commitment for %s - cancel anytime" msgstr "Sin compromiso para %s - cancelar en cualquier momento" -#: includes/fs-plugin-info-dialog.php:881 +#: includes/fs-plugin-info-dialog.php:914 msgid "After your free %s, pay as little as %s" msgstr "Después de su período gratuito %s, pague sólo %s" -#: includes/fs-plugin-info-dialog.php:892 +#: includes/fs-plugin-info-dialog.php:925 msgid "Details" msgstr "Detalles" -#: includes/fs-plugin-info-dialog.php896, templates/account.php87, -#: templates/debug.php191, templates/debug.php228, templates/debug.php442, -#: templates/account/partials/addon.php:28 +#: includes/fs-plugin-info-dialog.php929, templates/account.php91, +#: templates/debug.php201, templates/debug.php238, templates/debug.php452, +#: templates/account/partials/addon.php:32 msgctxt "product version" msgid "Version" msgstr "Versión" -#: includes/fs-plugin-info-dialog.php:903 +#: includes/fs-plugin-info-dialog.php:936 msgctxt "as the plugin author" msgid "Author" msgstr "Autor" -#: includes/fs-plugin-info-dialog.php:910 +#: includes/fs-plugin-info-dialog.php:943 msgid "Last Updated" msgstr "Última actualización" -#: includes/fs-plugin-info-dialog.php:915 +#: includes/fs-plugin-info-dialog.php948, templates/account.php:376 msgctxt "x-ago" msgid "%s ago" msgstr "hace %s" -#: includes/fs-plugin-info-dialog.php:924 +#: includes/fs-plugin-info-dialog.php:957 msgid "Requires WordPress Version" msgstr "Necesita la versión de WordPress" -#: includes/fs-plugin-info-dialog.php:925 +#: includes/fs-plugin-info-dialog.php:958 msgid "%s or higher" msgstr "%s o mayor" -#: includes/fs-plugin-info-dialog.php:932 +#: includes/fs-plugin-info-dialog.php:965 msgid "Compatible up to" msgstr "Compatible hasta" -#: includes/fs-plugin-info-dialog.php:940 +#: includes/fs-plugin-info-dialog.php:973 msgid "Downloaded" msgstr "Descargado" -#: includes/fs-plugin-info-dialog.php:944 +#: includes/fs-plugin-info-dialog.php:977 msgid "%s time" msgstr "% vez" -#: includes/fs-plugin-info-dialog.php:946 +#: includes/fs-plugin-info-dialog.php:979 msgid "%s times" msgstr "%s veces" -#: includes/fs-plugin-info-dialog.php:956 +#: includes/fs-plugin-info-dialog.php:989 msgid "WordPress.org Plugin Page" msgstr "Página del plugin en WordPress.org" -#: includes/fs-plugin-info-dialog.php:964 +#: includes/fs-plugin-info-dialog.php:997 msgid "Plugin Homepage" msgstr "Página web del plugin" -#: includes/fs-plugin-info-dialog.php972, -#: includes/fs-plugin-info-dialog.php:1054 +#: includes/fs-plugin-info-dialog.php1005, +#: includes/fs-plugin-info-dialog.php:1087 msgid "Donate to this plugin" msgstr "Donar a este plugin" -#: includes/fs-plugin-info-dialog.php:979 +#: includes/fs-plugin-info-dialog.php:1012 msgid "Average Rating" msgstr "Calificación media" -#: includes/fs-plugin-info-dialog.php:986 +#: includes/fs-plugin-info-dialog.php:1019 msgid "based on %s" msgstr "basado en %s" -#: includes/fs-plugin-info-dialog.php:990 +#: includes/fs-plugin-info-dialog.php:1023 msgid "%s rating" msgstr "%s calificación" -#: includes/fs-plugin-info-dialog.php:992 +#: includes/fs-plugin-info-dialog.php:1025 msgid "%s ratings" msgstr "%s calificaciones" -#: includes/fs-plugin-info-dialog.php:1007 +#: includes/fs-plugin-info-dialog.php:1040 msgid "%s star" msgstr "%s estrella" -#: includes/fs-plugin-info-dialog.php:1009 +#: includes/fs-plugin-info-dialog.php:1042 msgid "%s stars" msgstr "%s estrellas" -#: includes/fs-plugin-info-dialog.php:1020 +#: includes/fs-plugin-info-dialog.php:1053 msgid "Click to see reviews that provided a rating of %s" msgstr "Haz clic para ver los comentarios con una valoración de %s" -#: includes/fs-plugin-info-dialog.php:1033 +#: includes/fs-plugin-info-dialog.php:1066 msgid "Contributors" msgstr "Colaboradores" -#: includes/fs-plugin-info-dialog.php1062, -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php1095, +#: includes/fs-plugin-info-dialog.php:1097 msgid "Warning" msgstr "Atencion" -#: includes/fs-plugin-info-dialog.php:1062 +#: includes/fs-plugin-info-dialog.php:1095 msgid "This plugin has not been tested with your current version of WordPress." msgstr "Este plugin no ha sido probado con tu versión actual de WordPress." -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php:1097 msgid "This plugin has not been marked as compatible with your version of WordPress." msgstr "Este puglin no ha sido marcado como compatible con tu versión de WordPress." -#: includes/fs-plugin-info-dialog.php:1083 +#: includes/fs-plugin-info-dialog.php:1116 msgid "Paid add-on must be deployed to Freemius." msgstr "El complemento de pago se debe implementar en Freemius." -#: includes/fs-plugin-info-dialog.php:1084 +#: includes/fs-plugin-info-dialog.php:1117 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "El complemento debe implementarse en WordPress.org o en Freemius." -#: templates/account.php81, templates/account/partials/addon.php22, +#: templates/account.php81, templates/forms/subscription-cancellation.php96, +#: templates/account/partials/addon.php22, #: templates/account/partials/site.php:295 -msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." -msgstr "Degradando tu plan detendrás inmediatamente todos los pagos recurrentes futuros y tu licencia del plan %s expirará en %s." +msgid "Downgrading your plan" +msgstr "Bajando tu plan" -#: templates/account.php82, templates/account/partials/addon.php:23 +#: templates/account.php82, templates/forms/subscription-cancellation.php97, +#: templates/account/partials/addon.php23, +#: templates/account/partials/site.php:296 +msgid "Cancelling the subscription" +msgstr "Cancelando la suscripción" + +#. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the +#. subscription' +#: templates/account.php84, templates/forms/subscription-cancellation.php99, +#: templates/account/partials/addon.php25, +#: templates/account/partials/site.php:298 +msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." +msgstr "%1s detendrá inmediatamente todos los pagos recurrentes futuros y tu %s licencia del plan caducará en %s." + +#: templates/account.php85, templates/forms/subscription-cancellation.php100, +#: templates/account/partials/addon.php26, +#: templates/account/partials/site.php:299 +msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." +msgstr "Ten en cuenta que no podremos abaratar los precios desactualizados para renovaciones/nuevas suscripciones después de una cancelación. Si eliges renovar la suscripción manualmente en el futuro, después de un aumento de precio, que generalmente ocurre una vez al año, se te cobrará el precio actualizado." + +#: templates/account.php86, templates/forms/subscription-cancellation.php106, +#: templates/account/partials/addon.php:27 msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "La cancelación del período de prueba bloqueará inmediatamente el acceso a todas las funciones premium. ¿Estás seguro?" -#: templates/account.php83, templates/account/partials/addon.php24, -#: templates/account/partials/site.php:296 -msgid "You can still enjoy all %s features but you will not have access to %s updates and support." -msgstr "Todavía puedes disfrutar de todas las funciones de %s pero no tienes acceso a soporte y actualizaciones de %s." +#: templates/account.php87, templates/forms/subscription-cancellation.php101, +#: templates/account/partials/addon.php28, +#: templates/account/partials/site.php:300 +msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." +msgstr "Todavía puedes disfrutar de todas las funciones de %s pero no tendrás acceso a soporte y actualizaciones de %s." -#: templates/account.php84, templates/account/partials/addon.php25, -#: templates/account/partials/site.php:297 +#: templates/account.php88, templates/forms/subscription-cancellation.php102, +#: templates/account/partials/addon.php29, +#: templates/account/partials/site.php:301 msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." msgstr "Una vez que caduque tu licencia todavía puedes utilizar la versión gratuita pero NO tendrás acceso a las funciones de %s." #. translators: %s: Plan title (e.g. "Professional") -#: templates/account.php86, +#: templates/account.php90, #: templates/account/partials/activate-license-button.php31, -#: templates/account/partials/addon.php:27 +#: templates/account/partials/addon.php:31 msgid "Activate %s Plan" msgstr "Activar plan %s" #. translators: %s: Time period (e.g. Auto renews in "2 months") -#: templates/account.php89, templates/account/partials/addon.php30, +#: templates/account.php93, templates/account/partials/addon.php34, #: templates/account/partials/site.php:275 msgid "Auto renews in %s" msgstr "Auto renovaciones en %s" #. translators: %s: Time period (e.g. Expires in "2 months") -#: templates/account.php91, templates/account/partials/addon.php32, +#: templates/account.php95, templates/account/partials/addon.php36, #: templates/account/partials/site.php:277 msgid "Expires in %s" msgstr "Caduca en %s" -#: templates/account.php92, templates/account/partials/addon.php:33 +#: templates/account.php96, templates/account/partials/addon.php:37 msgctxt "as synchronize license" msgid "Sync License" msgstr "Sincronizar licencia" -#: templates/account.php93, templates/account/partials/addon.php:34 +#: templates/account.php97, templates/account/partials/addon.php:38 msgid "Cancel Trial" msgstr "Cancelar período de prueba" -#: templates/account.php94, templates/account/partials/addon.php:35 +#: templates/account.php98, templates/account/partials/addon.php:39 msgid "Change Plan" msgstr "Cambiar Plan" -#: templates/account.php95, templates/account/partials/addon.php:36 +#: templates/account.php99, templates/account/partials/addon.php:40 msgctxt "verb" msgid "Upgrade" msgstr "Actualizar" -#: templates/account.php97, templates/account/partials/addon.php38, -#: templates/account/partials/site.php:298 +#: templates/account.php101, templates/account/partials/addon.php42, +#: templates/account/partials/site.php:302 msgctxt "verb" msgid "Downgrade" msgstr "Degradar" -#: templates/account.php99, templates/add-ons.php126, +#: templates/account.php103, templates/add-ons.php130, #: templates/plugin-info/features.php72, -#: templates/account/partials/addon.php40, +#: templates/account/partials/addon.php44, #: templates/account/partials/site.php:31 msgid "Free" msgstr "Gratis" -#: templates/account.php100, templates/account/partials/addon.php:41 +#: templates/account.php104, templates/account/partials/addon.php:45 msgid "Activate" msgstr "Activar" -#: templates/account.php101, templates/debug.php361, +#: templates/account.php105, templates/debug.php371, #: includes/customizer/class-fs-customizer-upsell-control.php106, -#: templates/account/partials/addon.php:42 +#: templates/account/partials/addon.php:46 msgctxt "as product pricing plan" msgid "Plan" msgstr "Plan" -#: templates/account.php:154 +#: templates/account.php:158 msgid "Free Trial" msgstr "Período de prueba gratuito" -#: templates/account.php:165 +#: templates/account.php:169 msgid "Account Details" msgstr "Detalles de la cuenta" -#: templates/account.php:175 +#: templates/account.php:179 msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" msgstr "La eliminación de la cuenta desactivará automáticamente su licencia de plan %s para que pueda utilizarla en otros sitios. Si también desea cancelar los pagos periódicos, haga clic en el botón \"Cancelar\" y, en primer lugar, \"Degradar\" su cuenta. ¿Seguro que deseas continuar con la eliminación?" -#: templates/account.php:177 +#: templates/account.php:181 msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" msgstr "La eliminación no es temporal. Sólo elimínalo si ya no deseas utilizar este %s más. ¿Estás seguro que desea continuar con la eliminación?" -#: templates/account.php:180 +#: templates/account.php:184 msgid "Delete Account" msgstr "Borrar cuenta" -#: templates/account.php192, templates/account/partials/addon.php155, +#: templates/account.php196, templates/account/partials/addon.php159, #: templates/account/partials/deactivate-license-button.php:35 msgid "Deactivate License" msgstr "Desactivar licencia" -#: templates/account.php:210 +#: templates/account.php219, templates/forms/subscription-cancellation.php:125 msgid "Are you sure you want to proceed?" msgstr "¿Estás seguro que quieres proceder?" -#: templates/account.php210, templates/account/partials/addon.php:177 +#: templates/account.php219, templates/account/partials/addon.php:182 msgid "Cancel Subscription" msgstr "Cancelar suscripción" -#: templates/account.php:239 +#: templates/account.php:247 msgctxt "as synchronize" msgid "Sync" msgstr "Sincronizar" -#: templates/account.php253, templates/debug.php:477 +#: templates/account.php261, templates/debug.php:487 msgid "Name" msgstr "Nombre" -#: templates/account.php259, templates/debug.php:478 +#: templates/account.php267, templates/debug.php:488 msgid "Email" msgstr "Correo electrónico" -#: templates/account.php266, templates/debug.php360, templates/debug.php:516 +#: templates/account.php274, templates/debug.php370, templates/debug.php:526 msgid "User ID" msgstr "ID de usuario" -#: templates/account.php:274 +#: templates/account.php:282 msgid "Site ID" msgstr "ID del sitio" -#: templates/account.php:277 +#: templates/account.php:285 msgid "No ID" msgstr "Sin ID" -#: templates/account.php282, templates/debug.php233, templates/debug.php362, -#: templates/debug.php443, templates/debug.php480, +#: templates/account.php290, templates/debug.php243, templates/debug.php372, +#: templates/debug.php453, templates/debug.php490, #: templates/account/partials/site.php:219 msgid "Public Key" msgstr "Clave pública" -#: templates/account.php288, templates/debug.php363, templates/debug.php444, -#: templates/debug.php481, templates/account/partials/site.php:231 +#: templates/account.php296, templates/debug.php373, templates/debug.php454, +#: templates/debug.php491, templates/account/partials/site.php:231 msgid "Secret Key" msgstr "Clave secreta" -#: templates/account.php:291 +#: templates/account.php:299 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "Sin clave secreta" -#: templates/account.php310, templates/account/partials/site.php112, +#: templates/account.php318, templates/account/partials/site.php112, #: templates/account/partials/site.php:114 msgid "Trial" msgstr "Período de prueba gratuito" -#: templates/account.php329, templates/debug.php521, +#: templates/account.php337, templates/debug.php531, #: templates/account/partials/site.php:248 msgid "License Key" msgstr "Clave de licencia" -#: templates/account.php:359 +#: templates/account.php:367 msgid "not verified" msgstr "no verificado" -#: templates/account.php:416 +#: templates/account.php376, templates/account/partials/addon.php:120 +msgid "Expired" +msgstr "Caducado" + +#: templates/account.php:428 msgid "Premium version" msgstr "Versión premium" -#: templates/account.php:418 +#: templates/account.php:430 msgid "Free version" msgstr "Versión gratuita" -#: templates/account.php:430 +#: templates/account.php:442 msgid "Verify Email" msgstr "Verificar correo electrónico" -#: templates/account.php:441 +#: templates/account.php:453 msgid "Download %s Version" msgstr "Descargar versión %s" -#: templates/account.php455, templates/account.php636, +#: templates/account.php467, templates/account.php649, #: templates/account/partials/site.php237, #: templates/account/partials/site.php:255 msgctxt "verb" msgid "Show" msgstr "Mostrar" -#: templates/account.php:469 +#: templates/account.php:481 msgid "What is your %s?" msgstr "¿Cual es tú %s?" -#: templates/account.php477, templates/account/billing.php:27 +#: templates/account.php489, templates/account/billing.php:27 msgctxt "verb" msgid "Edit" msgstr "Editar" -#: templates/account.php:490 +#: templates/account.php:502 msgid "Sites" msgstr "Sitios" -#: templates/account.php:501 +#: templates/account.php:513 msgid "Search by address" msgstr "Buscar por dirección" -#: templates/account.php510, templates/account.php558, templates/debug.php226, -#: templates/debug.php354, templates/debug.php439, templates/debug.php476, -#: templates/debug.php514, templates/debug.php587, +#: templates/account.php522, templates/account.php570, templates/debug.php236, +#: templates/debug.php364, templates/debug.php449, templates/debug.php486, +#: templates/debug.php524, templates/debug.php597, #: templates/account/payments.php35, templates/debug/logger.php:21 msgid "ID" msgstr "ID" -#: templates/account.php511, templates/debug.php:357 +#: templates/account.php523, templates/debug.php:367 msgid "Address" msgstr "Dirección" -#: templates/account.php:512 +#: templates/account.php:524 msgid "License" msgstr "Licencia" -#: templates/account.php:513 +#: templates/account.php:525 msgid "Plan" msgstr "Plan" -#: templates/account.php:561 +#: templates/account.php:573 msgctxt "as software license" msgid "License" msgstr "Licencia" -#: templates/account.php:630 +#: templates/account.php:643 msgctxt "verb" msgid "Hide" msgstr "Ocultar" -#: templates/account.php:665 +#: templates/account.php:686 +msgid "Cancelling %s" +msgstr "Cancelando %s" + +#: templates/account.php686, templates/account.php703, +#: templates/forms/subscription-cancellation.php27, +#: templates/forms/deactivation/form.php:117 +msgid "trial" +msgstr "período de prueba" + +#: templates/account.php701, templates/forms/deactivation/form.php:134 +msgid "Cancelling %s..." +msgstr "Cancelando %s..." + +#: templates/account.php704, templates/forms/subscription-cancellation.php28, +#: templates/forms/deactivation/form.php:118 +msgid "subscription" +msgstr "suscripción" + +#: templates/account.php:718 msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" msgstr "Al desactivar tu licencia todas las características premium se bloquearán, pero posibilitará poder activar tu licencia en otro sitio. ¿Estás seguro que quieres continuar?" @@ -1320,7 +1417,7 @@ msgstr "Complementos para %s" msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." msgstr "No podemos cargar la lista de complementos. Probablemente es un problema por nuestro parte, por favor inténtalo de nuevo en unos minutos." -#: templates/add-ons.php:135 +#: templates/add-ons.php:139 msgid "View details" msgstr "Ver detalles" @@ -1359,163 +1456,167 @@ msgid "PCI compliant" msgstr "Compatible con PCI" #. translators: %s: name (e.g. Hey John,) -#: templates/connect.php:110 +#: templates/connect.php:112 msgctxt "greeting" msgid "Hey %s," msgstr "Hey %s," -#: templates/connect.php:152 +#: templates/connect.php:154 msgid "Allow & Continue" msgstr "Permitir y continuar" -#: templates/connect.php:156 +#: templates/connect.php:158 msgid "Re-send activation email" msgstr "Reenviar correo electrónico de activación" -#: templates/connect.php:160 +#: templates/connect.php:162 msgid "Thanks %s!" msgstr "¡Gracias %s!" -#: templates/connect.php170, templates/forms/license-activation.php:43 +#: templates/connect.php172, templates/forms/license-activation.php:43 msgid "Agree & Activate License" msgstr "De acuerdo y activar licencia" -#: templates/connect.php:179 +#: templates/connect.php:181 msgid "Thanks for purchasing %s! To get started, please enter your license key:" msgstr "¡Gracias por comprar %s! Para empezar, escribe tu clave de licencia:" -#: templates/connect.php:186 +#: templates/connect.php:188 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." msgstr "No te pierdas ninguna actualización importante - acepta para notificaciones de seguridad y de actualizaciones, ofertas y seguimiento de diagnóstico con datos no sensibles con %4$s." -#: templates/connect.php:187 +#: templates/connect.php:189 msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." msgstr "No te pierdas ninguna actualización importante - acepta para notificaciones de seguridad y de actualizaciones y seguimiento de diagnóstico con datos no sensibles con %4$s." -#: templates/connect.php:193 +#: templates/connect.php:195 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "No te pierdas ninguna actualización importante - acepta las notificaciones de seguridad y de actualizaciones, contenido educacional, ofertas y seguimiento de diagnóstico con datos no sensibles con %4$s. ¡Si te saltas esto, no pasa nada! %1$s seguirá funcionando bien." -#: templates/connect.php:194 +#: templates/connect.php:196 msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "No te pierdas ninguna actualización importante - acepta las notificaciones de seguridad y de actualizaciones y seguimiento de diagnóstico con datos no sensibles con %4$s. ¡Si te saltas esto, no pasa nada! %1$s seguirá funcionando bien." -#: templates/connect.php:228 +#: templates/connect.php:230 msgid "We're excited to introduce the Freemius network-level integration." msgstr "Estamos emocionados de introducir la integración de Freemius a nivel de red." -#: templates/connect.php:231 +#: templates/connect.php:233 msgid "During the update process we detected %d site(s) that are still pending license activation." msgstr "Durante el proceso de actualización hemos detectado%d sitio(s) que aún están pendientes de la activación de licencia." -#: templates/connect.php:233 +#: templates/connect.php:235 msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." msgstr "Si quieres utilizar %s en estos sitios, introduce por favor tu clave de licencia abajo y haz click en el botón de activación." -#: templates/connect.php:235 +#: templates/connect.php:237 msgid "%s's paid features" msgstr "%s características de pago" -#: templates/connect.php:240 +#: templates/connect.php:242 msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." msgstr "Alternativamente, puedes saltarlo ahora y activar la licencia después, en tu %s página de cuenta a nivel de red." -#: templates/connect.php:242 +#: templates/connect.php:244 msgid "During the update process we detected %s site(s) in the network that are still pending your attention." msgstr "Durante el proceso de actualización detectamos %s sitio(s) en la red que todavía están pendientes de tu atención." -#: templates/connect.php251, templates/forms/license-activation.php:46 +#: templates/connect.php253, templates/forms/license-activation.php:46 msgid "License key" msgstr "Clave de licencia" -#: templates/connect.php254, templates/forms/license-activation.php:19 +#: templates/connect.php256, templates/forms/license-activation.php:19 msgid "Can't find your license key?" msgstr "¿No puedes encontrar tu clave de licencia?" -#: templates/connect.php302, templates/connect.php617, +#: templates/connect.php315, templates/connect.php630, #: templates/forms/deactivation/retry-skip.php:20 msgctxt "verb" msgid "Skip" msgstr "Saltar" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "Delegate to Site Admins" msgstr "Delegar a administradores del sitio" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "If you click it, this decision will be delegated to the sites administrators." msgstr "Si haces click, esta decisión será delegada a los administradores de los sitios." -#: templates/connect.php:333 +#: templates/connect.php:346 msgid "Your Profile Overview" msgstr "Resumen del perfil" -#: templates/connect.php:334 +#: templates/connect.php:347 msgid "Name and email address" msgstr "Nombre y dirección de correo electrónico" -#: templates/connect.php:339 +#: templates/connect.php:352 msgid "Your Site Overview" msgstr "Resumen del sitio" -#: templates/connect.php:340 +#: templates/connect.php:353 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "URL del sitio web, versión de WP, PHP info, plugins y temas" -#: templates/connect.php:345 +#: templates/connect.php:358 msgid "Admin Notices" msgstr "Avisos de administración" -#: templates/connect.php346, templates/connect.php:362 +#: templates/connect.php359, templates/connect.php:375 msgid "Updates, announcements, marketing, no spam" msgstr "Actualizaciones, anuncios, marketing, sin spam" -#: templates/connect.php:351 +#: templates/connect.php:364 msgid "Current %s Events" msgstr "Eventos de %s actuales" -#: templates/connect.php:352 +#: templates/connect.php:365 msgid "Activation, deactivation and uninstall" msgstr "Activación, desactivación y desinstalación" -#: templates/connect.php:361 +#: templates/connect.php:374 msgid "Newsletter" msgstr "Boletín" -#: templates/connect.php378, templates/forms/license-activation.php:38 +#: templates/connect.php391, templates/forms/license-activation.php:38 msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." msgstr "%1$s periódicamente enviará datos a %2$s para comprobar las actualizaciones de seguridad, nuevas funcionalidades y verificar la validez de tu licencia." -#: templates/connect.php:383 +#: templates/connect.php:396 msgid "What permissions are being granted?" msgstr "¿Qué permisos se otorgan?" -#: templates/connect.php:404 +#: templates/connect.php:417 msgid "Don't have a license key?" msgstr "¿No tienes una clave de licencia?" -#: templates/connect.php:405 +#: templates/connect.php:418 msgid "Activate Free Version" msgstr "Activar versión gratuita" -#: templates/connect.php:407 +#: templates/connect.php:420 msgid "Have a license key?" msgstr "¿Tienes una clave de licencia?" -#: templates/connect.php:415 +#: templates/connect.php:428 msgid "Privacy Policy" msgstr "Política de privacidad" -#: templates/connect.php:417 +#: templates/connect.php:430 +msgid "License Agreement" +msgstr "Acuerdo de licencia" + +#: templates/connect.php:430 msgid "Terms of Service" msgstr "Términos de servicio" -#: templates/connect.php:750 +#: templates/connect.php:766 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "Enviando correo electrónico" -#: templates/connect.php:751 +#: templates/connect.php:767 msgctxt "as activating plugin" msgid "Activating" msgstr "Activando" @@ -1543,8 +1644,8 @@ msgctxt "as code debugging" msgid "Debugging" msgstr "Depurando" -#: templates/debug.php54, templates/debug.php238, templates/debug.php364, -#: templates/debug.php:482 +#: templates/debug.php54, templates/debug.php248, templates/debug.php374, +#: templates/debug.php:492 msgid "Actions" msgstr "Acciones" @@ -1568,199 +1669,203 @@ msgstr "Borrar transients de actualizaciones" msgid "Sync Data From Server" msgstr "Sincronizar datos desde el servidor" -#: templates/debug.php:90 +#: templates/debug.php:95 +msgid "Migrate Options to Network" +msgstr "Migrar opciones a la red" + +#: templates/debug.php:100 msgid "Load DB Option" msgstr "Cargar opción de BD" -#: templates/debug.php:93 +#: templates/debug.php:103 msgid "Set DB Option" msgstr "Guardar opción en BD" -#: templates/debug.php:170 +#: templates/debug.php:180 msgid "Key" msgstr "Clave" -#: templates/debug.php:171 +#: templates/debug.php:181 msgid "Value" msgstr "Valor" -#: templates/debug.php:187 +#: templates/debug.php:197 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "Versiones SDK" -#: templates/debug.php:192 +#: templates/debug.php:202 msgid "SDK Path" msgstr "Ruta del SDK" -#: templates/debug.php193, templates/debug.php:232 +#: templates/debug.php203, templates/debug.php:242 msgid "Module Path" msgstr "Ruta del módulo" -#: templates/debug.php:194 +#: templates/debug.php:204 msgid "Is Active" msgstr "Está activo" -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:35 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:35 msgid "Plugins" msgstr "Plugins" -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:56 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:56 msgid "Themes" msgstr "Temas" -#: templates/debug.php227, templates/debug.php359, templates/debug.php441, +#: templates/debug.php237, templates/debug.php369, templates/debug.php451, #: templates/debug/scheduled-crons.php:80 msgid "Slug" msgstr "Ruta" -#: templates/debug.php229, templates/debug.php:440 +#: templates/debug.php239, templates/debug.php:450 msgid "Title" msgstr "Título" -#: templates/debug.php:230 +#: templates/debug.php:240 msgctxt "as application program interface" msgid "API" msgstr "API" -#: templates/debug.php:231 +#: templates/debug.php:241 msgid "Freemius State" msgstr "Estado Freemius" -#: templates/debug.php:235 +#: templates/debug.php:245 msgid "Network Blog" msgstr "Blog de red" -#: templates/debug.php:236 +#: templates/debug.php:246 msgid "Network User" msgstr "Usuario de red" -#: templates/debug.php:273 +#: templates/debug.php:283 msgctxt "as connection was successful" msgid "Connected" msgstr "Conectado" -#: templates/debug.php:274 +#: templates/debug.php:284 msgctxt "as connection blocked" msgid "Blocked" msgstr "Bloqueado" -#: templates/debug.php:310 -msgid "Simulate Trial" +#: templates/debug.php:320 +msgid "Simulate Trial Promotion" msgstr "Simular período de prueba" -#: templates/debug.php:322 +#: templates/debug.php:332 msgid "Simulate Network Upgrade" msgstr "Simular actualización de red" -#: templates/debug.php:348 +#: templates/debug.php:358 msgid "%s Installs" msgstr "%s Instalaciones" -#: templates/debug.php:350 +#: templates/debug.php:360 msgctxt "like websites" msgid "Sites" msgstr "Sitios" -#: templates/debug.php356, templates/account/partials/site.php:148 +#: templates/debug.php366, templates/account/partials/site.php:148 msgid "Blog ID" msgstr "ID del blog" -#: templates/debug.php421, templates/debug.php499, -#: templates/account/partials/addon.php:334 +#: templates/debug.php431, templates/debug.php509, +#: templates/account/partials/addon.php:339 msgctxt "verb" msgid "Delete" msgstr "Borrar" -#: templates/debug.php:435 +#: templates/debug.php:445 msgid "Add Ons of module %s" msgstr "Complementos del módulo %s" -#: templates/debug.php:472 +#: templates/debug.php:482 msgid "Users" msgstr "Usuarios" -#: templates/debug.php:479 +#: templates/debug.php:489 msgid "Verified" msgstr "Verificado" -#: templates/debug.php:510 +#: templates/debug.php:520 msgid "%s Licenses" msgstr "%s Licencias" -#: templates/debug.php:515 +#: templates/debug.php:525 msgid "Plugin ID" msgstr "ID del plugin" -#: templates/debug.php:517 +#: templates/debug.php:527 msgid "Plan ID" msgstr "ID del plan" -#: templates/debug.php:518 +#: templates/debug.php:528 msgid "Quota" msgstr "Cuota" -#: templates/debug.php:519 +#: templates/debug.php:529 msgid "Activated" msgstr "Activado" -#: templates/debug.php:520 +#: templates/debug.php:530 msgid "Blocking" msgstr "Bloqueando" -#: templates/debug.php:522 +#: templates/debug.php:532 msgctxt "as expiration date" msgid "Expiration" msgstr "Caducidad" -#: templates/debug.php:545 +#: templates/debug.php:555 msgid "Debug Log" msgstr "Log de Debug" -#: templates/debug.php:549 +#: templates/debug.php:559 msgid "All Types" msgstr "Todos los Tipos" -#: templates/debug.php:556 +#: templates/debug.php:566 msgid "All Requests" msgstr "Todas las peticiones" -#: templates/debug.php561, templates/debug.php590, +#: templates/debug.php571, templates/debug.php600, #: templates/debug/logger.php:25 msgid "File" msgstr "Archivo" -#: templates/debug.php562, templates/debug.php588, +#: templates/debug.php572, templates/debug.php598, #: templates/debug/logger.php:23 msgid "Function" msgstr "Función" -#: templates/debug.php:563 +#: templates/debug.php:573 msgid "Process ID" msgstr "ID del proceso" -#: templates/debug.php:564 +#: templates/debug.php:574 msgid "Logger" msgstr "Logger" -#: templates/debug.php565, templates/debug.php589, +#: templates/debug.php575, templates/debug.php599, #: templates/debug/logger.php:24 msgid "Message" msgstr "Mensaje" -#: templates/debug.php:567 +#: templates/debug.php:577 msgid "Filter" msgstr "Filtro" -#: templates/debug.php:575 +#: templates/debug.php:585 msgid "Download" msgstr "Descarga" -#: templates/debug.php586, templates/debug/logger.php:22 +#: templates/debug.php596, templates/debug/logger.php:22 msgid "Type" msgstr "Tipo" -#: templates/debug.php591, templates/debug/logger.php:26 +#: templates/debug.php601, templates/debug/logger.php:26 msgid "Timestamp" msgstr "Timestamp" @@ -2111,23 +2216,19 @@ msgstr "El uso del seguimiento se hace con la intención de mejorar %s. Crear un msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." msgstr "Haciendo clic en \"Desistir\", ya no enviaremos los datos de %s a %s." -#: templates/forms/premium-versions-upgrade-handler.php:24 +#: templates/forms/premium-versions-upgrade-handler.php:40 msgid "There is a new version of %s available." msgstr "Hay una nueva versión de %s disponible." -#: templates/forms/premium-versions-upgrade-handler.php:25 -msgid " %sRenew your license now%s to access version %s security & feature updates, and support." -msgstr "%s Renueva tu licencia ahora %s para acceder a la versión %s seguridad y nuevas características y soporte." +#: templates/forms/premium-versions-upgrade-handler.php:41 +msgid " %s to access version %s security & feature updates, and support." +msgstr "%s para acceder a la versión %s de actualizaciones de funciones, seguridad y soporte." -#: templates/forms/premium-versions-upgrade-handler.php:34 +#: templates/forms/premium-versions-upgrade-handler.php:54 msgid "New Version Available" msgstr "Nueva versión disponible" -#: templates/forms/premium-versions-upgrade-handler.php:36 -msgid "Renew license" -msgstr "Renovar la licencia" - -#: templates/forms/premium-versions-upgrade-handler.php:53 +#: templates/forms/premium-versions-upgrade-handler.php:75 msgctxt "close a window" msgid "Dismiss" msgstr "Descartar" @@ -2140,6 +2241,43 @@ msgstr "Enviar clave de licencia" msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." msgstr "Escribe abajo la dirección de correo electrónico que has usado para la actualización y te reenviaremos la clave de licencia." +#: templates/forms/subscription-cancellation.php:37 +msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." +msgstr "Desactivar o desinstalar %s deshabilitará automáticamente la licencia, que podrás usar en otro sitio." + +#: templates/forms/subscription-cancellation.php:47 +msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" +msgstr "En caso de que NO estés planeando utilizar este %s en este sitio (o en cualquier otro sitio), ¿te gustaría cancelar también %s?" + +#: templates/forms/subscription-cancellation.php:52 +msgid "license" +msgstr "licencia" + +#: templates/forms/subscription-cancellation.php:57 +msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." +msgstr "Cancelar %s - No necesito más actualizaciones de características y seguridad, ni soporte para %s porque no pretendo utilizar%s en este, u otro sitio." + +#: templates/forms/subscription-cancellation.php:68 +msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." +msgstr "No cancelar %s - Todavía estoy interesado en obtener actualizaciones de características y seguridad, así como poder contactar con soporte." + +#: templates/forms/subscription-cancellation.php:103 +msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." +msgstr "Una vez que tu licencia caduque no podrás seguir utilizando %s, a no ser que lo actives de nuevo con una licencia premium válida." + +#: templates/forms/subscription-cancellation.php:136 +msgid "Cancel %s?" +msgstr "¿Cancelar %s?" + +#: templates/forms/subscription-cancellation.php:143 +msgid "Proceed" +msgstr "Proceder" + +#: templates/forms/subscription-cancellation.php191, +#: templates/forms/deactivation/form.php:150 +msgid "Cancel %s & Proceed" +msgstr "Cancelar %s y proceder" + #: templates/forms/trial-start.php:22 msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "Estás a sólo 1-click de comenzar tu %1$s días de prueba gratuita del plan %2$s." @@ -2205,20 +2343,16 @@ msgstr "quedan %s" msgid "Last license" msgstr "Última licencia" -#: templates/account/partials/addon.php:111 +#: templates/account/partials/addon.php:115 msgid "Cancelled" msgstr "Cancelado" -#: templates/account/partials/addon.php:116 -msgid "Expired" -msgstr "Caducado" - -#: templates/account/partials/addon.php:121 +#: templates/account/partials/addon.php:125 msgid "No expiration" msgstr "Sin caducidad" -#: templates/account/partials/addon.php259, -#: templates/account/partials/addon.php:312 +#: templates/account/partials/addon.php264, +#: templates/account/partials/addon.php:317 msgid "Activate this add-on" msgstr "Activar este complemento" @@ -2246,47 +2380,47 @@ msgstr "Disculpa las molestias y estamos aquí para ayudarte si nos das una opor msgid "Contact Support" msgstr "Contactar soporte" -#: templates/forms/deactivation/form.php:56 +#: templates/forms/deactivation/form.php:59 msgid "Anonymous feedback" msgstr "Comentarios anónimos" -#: templates/forms/deactivation/form.php:63 +#: templates/forms/deactivation/form.php:66 msgid "Deactivate" msgstr "Desactivar" -#: templates/forms/deactivation/form.php:65 +#: templates/forms/deactivation/form.php:68 msgid "Activate %s" msgstr "Activar %s" -#: templates/forms/deactivation/form.php:76 -msgid "Quick feedback" +#: templates/forms/deactivation/form.php:80 +msgid "Quick Feedback" msgstr "Comentarios rápidos" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "If you have a moment, please let us know why you are %s" -msgstr "Si tienes un momento, por favor, dinos por qué estás desactivando %s" +msgstr "Si tienes un momento, por favor, dinos por qué estás %s" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "deactivating" msgstr "desactivando" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "switching" msgstr "cambiando" -#: templates/forms/deactivation/form.php:269 +#: templates/forms/deactivation/form.php:332 msgid "Submit & %s" msgstr "Enviar y %s" -#: templates/forms/deactivation/form.php:290 +#: templates/forms/deactivation/form.php:353 msgid "Kindly tell us the reason so we can improve." msgstr "Por favor, dínos la razón para que podamos mejorar." -#: templates/forms/deactivation/form.php:411 +#: templates/forms/deactivation/form.php:478 msgid "Yes - %s" msgstr "Si - %s" -#: templates/forms/deactivation/form.php:418 +#: templates/forms/deactivation/form.php:485 msgid "Skip & %s" msgstr "Saltar y %s" diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-fr_FR.mo b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-fr_FR.mo index fe5435185cca1070c42b1266669861a7ac99bcb7..065f63643823689bae74ecb3809920106c32d1ce 100644 GIT binary patch delta 12450 zcmX>(i}~qR=K6a=EK?a67#MVz7#L(27#L~<K|BVAJ4y)Jk%58Xt`Y-7HUk5LyfOpB zS_TG&Ze<3BWCjKXOBDu&U<L+;xhf0{stgPaA5|C_xEUB2#8n}*vMK|ECIbV5zA6I) z8v_GFq$&f05Ca24f+_=p83RK-L$N9Y!xjbxhE=Kz4Dk#M4Do6V49W})4Exm>7$g}O z7#^!JFz_%iF#J_xVBln6VBk_`VBlh4U=UG<7$~pKz`)MHz@Vniz`()4z@P`^n?w2b z>I@7H3=9k&>I@7X3=9mN>JSH9QfFZBXQ*djc&g68z|6qFV5-5uAP4f11_OgU0|P^Z z2E^bB4F(2&1_p)(sQd(|_<9Y9h1)eCK0Tnpz#zcDz;H%`fk6ZmVj2t#q6`cSpP=F# znhXqT3=9mCnhXrO3=9konhXpg^$ZLQd72QPHA5BjYBDhJF)%P}0V!Z$U^uJ^aq$gJ zh>u@uLLBx<lYzmMfq~%{ly9H~aj1nB0|PI}$663`!?Yj{OweLrP-kFZ$kAe8kYHe7 zn4-nNP!9^)wNQn-v>-k>qQ$_F&%nTNRSROFt2P6}JO%~^A8m+3UTZTjNHZ`n{L^M& z03{PC9Z1@-)nQ;TVqjp1(qUjwWME+E)nQ;rWME)eufxD#z`(#DsLQ|rN?uO73=Con z3=AQ<4E122X6r(HRHe(nAk4tP&;;dA(}e`_JScy;E&~G#$Ut3)54S)KJfsWp;T2s5 z25$xih6lP32kGcRJm9GZF*iVufngE@14D`)Bn^GntA|K1=|gBSeMn-{(uV|{xjw`q zM}0`h`0GP_o}kab5DCgH`jDu)29<xR4{^vheTc)E3?L5XHh@HpfB_`v6$}^{G(c&s z-hhF@kb!|A$pDglra(39GJsgP-vAOa7oY~*Fo3xHg#pB&pA8_13}gr>7l;``94==F z32F^Phy$z)A^PkMAyMdM$iPs+z`#%+YskPbg@J+Lnjyr%Y$J#P6-EpU;-IK7g7|Qj z5hR3G8Zj`)FfuUgHDX}sXJBBsWejm(mI(tx2?GN|kqIQ*J~x3ljL{TAi<?41MAsBz zj+rSqx79OvnL>gz(-h*uR#OIsT?`Bi6HFNxrZX@wc$+aWM1#r!GX{n<1_lOua|Q-h z1_p*@=8&jaV-Cr_yUZa`vd<in=p-y4>Z&Xt*}1_2;?M;a5Pd7abUg#ZHVXy@YX$~} zBNmXLVz7iH8dggNhJOqU3_O+)ac(P!0|l%gAteo^HLM^ZWNO90kj22j-~#2Zw}OP^ zJ}ZdNPgpT97&9<1T(n|faAag)V6|po5C-LccN+$VItB)YXd8%6ZrLy}gfcKN+_Qm% zjEOBI(FE8sFi0^lFl5?7iqsZc1_lcT28MOEkOJkoEhK0~?I1<6rX3^-YwaNUeySY< z0}}%S!(KZE244mSh68pC4E5#=3=Dks3=HWE3=D4e3=9Pz1MMMkDDMCXLQ4k*hDuP- zJ3t(=(*Y8smmDCe{gVSEQT=m(#I>L!gs<+%z@Wguz+mMF3HoS9NQfjmLK1zhBSSrd z9s>izd`D1O%)oHY5mX~EFvvMEFn}tZc}@_EA2>lYL^(q&?s101@fv4Hi1E2FFgP(V zFbKIYFz7HaFoe25qO8dU5>@R`dWs7JgDe9B!$KE`NA|naL*n#?3nb1TyFgs}$_0{r zKDj`A$l?m21zaIMlyQZ`sgWxKg9!rzgS9Ip4HURSd|2-aaagA-#N1w2h`Cds{5h_W zs9X$E2&yjkK_yN>ExHJ$@47;w;-xFZN6c=JqLaf7;xl<Dt>ebPZ~|1IxG^v+V_;xl za%W(8%D}*|(w%{!n}LC$-vi<xX-|j;<UJupbiJu3q^Jz{goH$iC&Z$9Pe@{E@r2Z7 z?VgadFvk;8P%ZLgV9;h@U^w9kNn~F<A=!$@3*s;-F9rsE1_lOoFNnqAUJMMmphWHk zN$e-Rz#&u5;NcAk8h>v{Y7h5@SXAr{3GzyBNKm(WLmb%W4Y6pZHzXG<_l9`jB2?Ww zZ%CAU_l9^x#|KhN8u~zr+;ks^eG_~b7@mRZ{~11zAg%X>WTR=mkZg3s7m^Kc_(FnK z&kvFazxzRapy>}O30L?-3aFz2;1Z2NF%axC28TdMneQG5NfY6LkTjAQ2ysY3AOnLI zDF4q4gjAzP0wESW4}=7*WDo;`76Su=YY?R2P!Pnx;K#tgFg*z3gJ(gIxO@lYvjj7M za}!T6BxJ0EAr43lhUA*kV2Hk{!4QYc4Q61d2UQwtf+0b>B^VOa`=J_71VeJc4XF4l zsJhR=kjm*F)FA#4NR-KiK(due2m?bn0|SF?2qdbehCo7iaR|ixT_KRve>jAp9^5Fr z7XnEnPoWB4hCp2UDFot!Um=jRz!eH{kXR_h!5X2ExHS%CU?>KajG+t+IiRLjC?v$Z z!XQ2^41+khAq?W6iD3|j&JU}HFm{AN;{0M5#Nwx6kQU3^Fi4`53y1j7DjX7*4&ji* z<rNOG$UmHc!H0o?p)4FyNgal&*NT8R+#mwt0GkMiIlfTw;Q9zic8QOGSez39abZaW zByO9a@-v_YERA4bSkJ(~uq}dt0n~0!i)3J!#=yYvClZp~CPzWy`fwB^4Lpv5gcNTy zgqDbAV2EL0U{H>Rw1(>&q8S+47#J8%Mnm#>Kn$epPK|-2=86~w24_&Bi-9=kb_~RV zk1-4kt)MntECWLdNIn*ld;Y{ie5e%%@t8pzBsbW`LCkZBgH%Szao|d*o}oLAfx(@D zf#GHxBxn`mAqHqeX~TF(P@6;fHc-A(JOhI(0|SG5JS122#zP!_CmxbU-p4}{9b*C{ z4M;#~^#n++GD`r3cs&C{B2*wVfq~%;s96k_U|=XrggB%UO4lbseA=1_NyV=cAwK+^ z2uVW>Nf5qd62u{DNf3uyCV?zsV6aPKU<d)#vPldKnG6gJvy&JY@<92YH5rm!N|GVv zz?ozQ20I1@hWE(~49%b(O$wxT+mr(CGBJEjfkc%~DkQBqra}^ze=4Nsl#mLEik4JJ zZMP{E5_K0+A&K=_Dx^-~O=DoF2laf^(;z<5PJ`qElQaef6;KBv4ID=dxoMCf-JJ$W zWM|VLY2a@fq@N(04smdAIwZ)?q(dxvoX)@y1?sY8Ffep6FfgQMKtkX{1_MJ7s9?*4 z*8ejyAtl%GOo&UrWkQ0GCyN2p8e@>pf*2H;1!+QU$zouzVPIf*kp*#pYBmEX^ckjR zGcW`&Ffjbch7{eNIgmc({2T^`Squye|8pSygIT$dBKTQuJtXn*=RtxlJP(p>s`DTr zurv>1&?%_6LOvuUyz(KHPE0<e?O2%)iJGnXkdSzj4@o=P1(1@?umBQbJ_QgD<`h88 zZ>leV#KrOgNI`QDO5ZJj#NE#VNKlFwLQ<_=Ap--b$(C6N3F?J~5Oq5WA&Kx>AtZ#} z7edmAauLKriy}xh?N<be;<O@&2kNVeAO=q_f>b_-iXaa80#ztb3<(*PVu-j$F(d?1 ziXlaFSuv!9Yb%EMa8fbEVVjB}4mep1$rbmCA!+P&F(kWwDF&AZ^$gA>5FaF!K!U2F z1Y+>)5=g3E4W;*#Kpc3s1d^Tpmq2{NUJ6k!T?%oCb}7U{^HNBO=K|&XmqJ1y2CA;4 z6jZR)GcYuiLh|Vms6i*88g7<C3Z!SH5Qlvzg~Ta$86<HEmO(63DT5R+24xWS_E6dr zDj!@1aZr32B)jH7<*Pt6DF3%W74|_D&Vtg*%NQ7TF*7i1DPv&BU|?X#uY%NaH>w~* zFh13gKHRTrNV!p518LJutAT{vjv9yqPu4&xv#T`_2eQ>dqEMigfuSB$&?wb1Fq~mv zU`VWmWFx&gNSc^f2Z_@?b&#OEQwK5dc^$+@pX(rHJE#=}8j@kJhsX=nL!w9yN~_gF zN<2_+8&n?5sE3&Qxt^gO+)xm1fYkrl4Uj~V52Y&_AQm(>K!UuZ0g_f`H$W`d38fD< zKpc3o0g~FUG(aqP)c{GfT#XR@YK@RIWC^9S8|xtwa~mNBZfJxQojV#KiRxJ+Bo%*a zgk)3hCWwPnn;`0Snjl5936x*n1PS{3CP?<0&;$vQwNQFz6C`AhLghbz6bdsiFz_}* z5|Lsv#0Lh=kVd9kGsL2!%?u2C7#JANHbYW<R|}+EnAZYv@X;1X+<$IiU~pq#U=VGE z@MBsT7-|_980uOX7$QLJgjPs)4sC;!7xk5Gkhq-G1_{FXZ4e7qwLx6IuMH9<r`jM6 zx!eZHEw|es4t~%E&c_Vzq5AmRAzeA8c1R<(s2!qjUOU9XW$g?M2SLMo?O=QB85%nv z1x8;7B&e5mK;mpy2Snqw4oHyR>wq}yeFwxK=1vBNJO%~^nNCO)c6UPb&4coHbwV6| zwiA+VuR+D{bV7>W_nn~1te$~Eqzf`?<<bSIY|6VJKHS&^v2a@##384;AP&9M1@ZaI zE=Yd<(FJi3TQ@|Xd^gx<3@Y7_G-C)A_wI&-Xh1i_oS1F~h6+&rFYbo)+1_+R44&Kr z$)}5YAaT5=2jY;+J&=Ovc@G1F10w?iQ!fL<d<F&v=RSx}ANN6Oxi@_fAGY^H(!iR2 zh`w|EkdS=Y4+*JX{R|BCpfOvq36KKBW&*@V@e>#rUNA5)<W68<*w4Vg5H=A~@Q6)< z^x?WDL4x$hB#8QdlOWlbXELOPBrqA$a4DS($t^!8L%QXlfhJIYLw5?qqoz|B>cL~Y zE>j?hCT<EOsMk$_Xxui1fgyyEfnhIHTxc4^LaAvGpJ+^j1hwTfNC>%2gOrF-(;y|> z<!O*0e>x2kLLa9=>i=KU7#PAC85rEALrbE0Ga#c``({9V;y06lA(nxGA!sHf2sg}x z<l9R#A*ucEOh}O`GYc|M;X4bGhWckgg7(lX$cW0lS&%f~HXBm#B+Q2Nswd5cG*qV6 z&xSN0p3P=pC}dz@P@2QQ&;e?M&VjU0WamOc#BDAELn8wNgWp_;_=UNUcEHcMkX&Op z4-)5Y^B@k$o(D;k?ejpXoPlA%Jcv0L=0Vcdjd>6U*FTyEN%f-hAuS#M`H)1lbUvhO z<+^}@VHE=dL-hiP57ZVy#&jYULZYm4AtcqGTnI@c=N3ZRj82On7EV|MN$oQhL84^+ zB8Y<yE&`X3^$Z^uK@tPsVn`gxE{14STMWt9dW#`Nu_KfYTnyI8khmC<M(P$bFxWFN zFtjd)mV}ETKK#5G5|w|U>KK<m%;i`Du}5GDDACt5Fi0+e1fk6mh=GAiAaNG41mduw zC6FSsaS6o0rBL-Nmp~l0ZwaKxKDUH{ft8Vg;mHyPhHDHA46l|lFsLyyFdSS4nc#S_ z9O8hvD<I}AUBSR$3d;W{S3rXF{|ZPEtgsTIP<tiBLgST?L}$JdlA6O-LK>S%D<O@| znJXb7a$_YVSA1OwaTwbw$ViCTDu_AWs~~C1A4=a?#lTPx8hlDz4bhOh8Zx$1yBd<e z7q5oI-OAOF>~&x@B&4pahJ?(^)sRH^V>QHq25TTe@4p6;x+B*>JhEyHq}{)14I~Y* zuZ1|&axFtWgD@ilgV$O}s*PI*QBbuGQev%H2dTA=uVY|%#lXOzu%3azih+TFdjkW* z22fXO0|P@WBLl<t4UoDZbQ2^O9N7ek%9ooUY3RcyNIAj08R8*<%@BvGZ-%y53^zl9 z$aXU%?j1KnG(>NP_&fv3uh|Ugh;(j-`0UAMNPpoClrOdg5+ZV2Ah{=O3nXNFwm?E? z&K8Knc5i_+WDeDDfyDU(sKVD<AgS~B7D%FE*$Q#7)K-XvhFc*epygJG!`!z*q9l4N zB+3f5LJTh33MmPvY=x8qyxSm&PHh{+e6MYgG*chE4H6Uu+aMuOwGCon-8M)ZPu&K| zw@aY(wrvoHo!AC($h~clMEGVK149!71B3Q<28IUE81i;VcGTYi34z!h5QpXNfRvow zJ3!fwp`KyS4v0(c?|@kNX9vWm+&du(g?B>Ig3C^b594=2azW}&NWoLM6H+vn?Su@& zE!+v|6aL)^3F_Qk5QmoRf`mlVE{Hj^cY&g~o`GTEE{K8ac0nxOwF{Cu5AA|<N-yt% z1R2wANL|3a8<L-OcQY_-W?*1=v>P%cGi?vV$8LKeab2<(QdCdg3o&=kUPx3Q*~`FC z#lXODelG(<2q^!1?PFlr3K|992kD`N?uR78-2IUHzkNSsW@Fuch&;yuNOh`kfPrBp z0|SHa0Z1F~`vFMbuk;|q=PM6F(#D2^5C<GR2x%3cJqYpG+k*@Ypg|1=nM06XaNQwD zS~zwH5=0lE^ff4b=MW@h9vy-N{pUjvhy6Ijz>ol{Ee}H+z8OlNJq!u*=Z7I_h~WrC zUg!v<4$wKmP!FEljX46z_nAi+7)%%$7-k=VxcI_RP#iHZ+&BvH(bJ=lL8muIAr37% z1~Iti7^L9pgYvf=11BzqW5*!oygUX`|M3{4RsH)IBzIIDuZJ|5J|Bn7-SnM+B)Xp` zAcIR<Cm9$fGB7X{oP<oNFr9*wY+<J$sd@P+h!2mRf@H^gry!$SpH4xdPU<uyw>X}L zL|yo4NMg-D4N3H~>Q6(m-S*RvM7H}hB()wn4T+;mry<kqjAtMQrJjK}u=)%nk*zrc z=?k7d18MhHo`r}XI134Z`)45y8>VxRA(%<$AWbyc^N_AyebaeJ3HJ0nBu@A*Kzw9> z0a6Y`Twq|Z1$90zK<59~UVv0Sk{1~mTo@P_0xm*EJf~h{VCVyNFfKAMl!Mj>T!OTK zm@h;4*_Rm@R)ePTE<@5x{}pgiUC;3H3M5GRu0mWMe-)CA>aIev&zh@{(Xp#gzV0<h zb`68lN!K7HTi!KD&`!Dr3BkSBAaQ>B8l+sgdJPgqPp(1I(vNGPkgsQ8_zx9ez7EmA zbseHX<T@nrC_}}yuS0^=^g5(x69JWPxem$KJ=Y-yPrnWcxp~(ixnwI;d>52HcpVbe zCqVi^`Tyc|NaDD89a2<&1W7P3FfiVLq<+pD5P7j15DWBffLzYNV0r`6n6!kdv$+Au zUY<~O$xwdQ4Ty(YZa^G5`39t|IqwDoLp`Y9E^rePq|!GbE>^z@u|NmPH@FE23DcX9 za={kLcZTx4Z$carcoR}SgxrKgK`K<f_$I{Rl~8>RQ1d%(GSq{ILVKVJzTJdmtG_oP zE|tCoq1A3d(uUzJhywy{K`aWp1&OlsTab_{yajP+-7ScPZMPsE>%9dD*_lxJmA4>K zu<@1(MBy%|0SBS<IjF(6Z-H7Jlg$(z>lH#WQWXjkGgB1GQj3Z+^Yaw)(-c$<ixo19 z6%uobQWH}u6*BXROA>Q(Qd9I40&-Fli&GU6lS?wo5=&AQGD{Rn@)e3p5{pU{l2Y?h z(=tmk^U@VcGEx;(jfxf0QWHx`i&BgA6jY6i89>JBDiq|Drf23Ulw_9Vr0PuWQk=tN zSUkDjAaS#*(t4)JR*H6$FRH9|at!cfa13_#^i)VJD#|Zc$Vp8rQOHcr&tp+jt}rsR zG_XdIF3L>LK$164G_jt1Lp7gU72$@>wrZDHq)RIm5*2bXlT-7GQx)>^%Nd+XE1~?! zJld7Is>KRw3IRp=$*HL+49<yp$*DOCs>KSr3Z4pi`3gDtdFiP|3VEriDGG^sm6JDm z$|mIH7bz5%78K+cl_;d;7lBkKr6wnq7N;tBs^==?<(DWF<Rs?hfx{(V0VEC%o??ak zJcW{s%wipd{34KP3i%}&sYMFKnI)-u2&?TU*J^v~s}@5=azMtY7VGK3lz;_51{Rkl z6(<*E7L;V>=WX7j{hl#9zeu4p4;pzOZ6H;u#R}z_IXMc6r6u{fi6xoIi8(oy3MrYz ziAg!B;CO=uj*dckMrLw`LS=rbdQOf)QmO((1;hvWc?yYnNbcP{S9dX!b~18!spl#b zmw>Fw%qvMPN-Zu)O;O0qQ%FxO0VNSo(5WRBE0m{#98-*JesX?ZNn&ydEKv0(TN=1+ zzHjh_t3DSL$ccF+3ZVt*MTse?3V!(|naQbE44!!ks>L8O8I(FJ^Gg*Hi&7Q*{6i2y zpP#2tS_}z=%wkX^K|>!L-U=ERQJ|@yt5BX_nv((w0fn5*>{JEGl6(cI7okB3^??24 z57uIn-&*I(B<5tMKuk<YElJGGDOO0%&&f$m21iP`%|d2Q$MmAq)ZEm(lF9Gw7fNQP z7lE>oKRDKkL3zn9wWK`1D0_3C125}jU02z7aC9Nk9$G{|9HOI8nwOJWTnu(Aa^_4- zPt43yD9<d(P)JlL1G}!EC^a{;G#8raQzy@GRb@=tywBB{r9Lme1e696OBBjeA;|=k zdXa2QFG|cyNlOH$)BMtsltfUZ78GSBg8~+m_={5WQp*!_iuLnS%N3AQWU)eGT1je= zLLxK-a}q&8qNm`Q26l6DMt**AeJUsbz(#;mBC>vk+{C<6a9RbG9T}+#X{Df&MF(yy z$Q7vynR&@Ypb`p}dP^z`ph-MGIk~h5l;@ID6%rLHQxl7Hz&3+}Hz`#iIU`ZLC_Oa= zY;$P=!fUB|n}2$~WnxNAnf$;fiP3Gcvv2=oB}I|R=Y3!BAUkogs=xK*E<fGL3jQ0p zKxIg7KFE)oFZ$QB3#%4`3)W(V#InT998gx$+w2m~#5sABrwnsme$nQ@1Y7pWchmVf zU`9?ppd`))&QLj%r==Tiev^KSl^vQnCqK<q<4P@umD!Uy^OkTUW&g>m^Rzc#$g^PN zGBngRvQ#iMw=&r*R3OhRq)?DwTBMMeoP2m?3Me*8D<%t^QJO5URB-aFV!<>Wh13#- z#8P<HWAI6Y*`ZL7SecktlB$rB3a%egi%S$z4zJ8QyZ}}|9A25Kr{J4fl$;4tlcNq! zhp9ynE0Yed%sad?Ei*YYwP>>b8BtD9{Q#~OCLbtXF9)g`$`Tbab8`=`Ovy|v0p}1< z(SLYVNovvLj#jP7q0RDwsTBp8MX5!J3Mq+spiHc{Ij>|7lb~ub#FB#4qTJMylA_ef z3pQFzo?R>;0QOK$D%?YpHOsGvg6bA{EdpYItBWZW1&l?LC+?Tn{I}v6E0<$(Mk*-5 zmgY@%C>9ZBK=4x`Stoh&!@52>)nZVPfkL&oG_$NImBBGDuQVqWTn*?dOm>(kI{EW# zv-&)6n82zDkaAEFRFGJdoT^Y*nyQeMs*tCin5j^ZSgeqv4k|J8Kxs!IMZL5nGbgh+ zwMZc+6{MxOv`8U26<oyVDCCzal;oF!VyvVHBBqCIzdf8YIltal51ivbQKMQ6kw6jv z)h95Qm*s;@o7_>aw)s-M2a{NSDJY_gp%n?tC6mpYHS~1AjxWnEg+xG6YLx=qy&#vC z=7B02nA<k<HZd~m_<`CR#R`eY;pCO7P?lO+0rE{&J}8?Or6#AA<!4TwztO@>M<FpY zuQ(HIRf_uIRUp@;<|*W+7MB)*lOwdkfVd1A#(I-^Taz|FYBlAp_smPnF9Owd`FRSN zuqp(sF*ma~RpIag1(2NzRtzqXL<OO9QWcUDixu(@?^FQ$FHb$OEVW7@z%dwC1SO+K zkb(v%f{amP2vo0><(KB9R_TJxO)M=g&V+{sB$DkX%T2zh6m)oHa%sWgl|`_4Dh9;^ zq*h5O1to#a4=39)G8S!?o2t*umY-Krlvpx3V1~@(m>DOOd^6LFz#&qskPoe0KrK8_ zGAcT}vN$!dbhGlzxoq{Jd8rC%`I*HEkZ1=NFv+P3;GA}NWvUL;_o?6<28!T<oYG=M zEQ1}aqfne!nx;^k2~iBo`c<H?&C4$>OHC|QNGwZDRw&JbWu8<8NIk@v3#pb;^(KEf zBdh9}2WrEV!2$=IQ4(_xuguBJ2l+-xwOC0(ar6KAp{(Iysim1YIjL2k7FKEzICbQK z5@KGeLUC$QeqJ#+God7u^u(gXypl|CUdm0(%qz)E%~ME8EmkNf%B%o2YD-gdCUf;l z)$2oDU7?Vel%JOeE{%#65(|nBuP6q40-Som@uH^?4E1($Mt){-W^r+96)2MxrGm`> z6$Lr!2vflISZYoV*ho<L<bcvuUS^RFlJWHliKXeFHUiiNkZB+Xf-+mCLNO@h@>5DP zOBB+<Wol6()G$!sf@88E5!9a40Yx=PpF(bCF~}xxDhH>zVo(v9mY7^pT6B1&9s{(@ zR?o~!$t)~QEmGK=y0nUkD*%)e!G+r7d&_G$ixr9z3o=tuizg?p*gpCH3W>>{#oU|4 zR|+$#g5x$v9T6xXCqvQ`!snAut+JlXzDi^BnpG@}yom}0Mfs2lQXysXhSdcu0g1)M zn^o52bBL%GgY<*Q%;JLlyv(GWRK3mZTfT5{7Zl~EWr9lOl+?+(O|sIUx~NzoHxZnC zON&8eXel&}PTsd)db0c(zR3=!#Y7?I=_ur7BGqo2U+y>Mm|S#1UkTwzg+zrUP@*`z zvgGheNUl7*Qcodl^5#~9$&H7^H*Y%epGgs#Nf?4NOHzv&a*G-KK#4pj2ULoIJ5iHw Yp5D%dFm-bO8Eux-;^M@~JI+i50Qy-Ce*gdg delta 9434 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 diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-fr_FR.po b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-fr_FR.po index 6aa3c6f9a..4bd4b7cc4 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-fr_FR.po +++ b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-fr_FR.po @@ -1,4 +1,4 @@ -# Copyright (C) 2018 freemius +# Copyright (C) 2019 freemius # This file is distributed under the same license as the freemius package. # Translators: # Boris Colombier <transifex.com@wba.fr>, 2018 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: WordPress SDK\n" "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-05-24 15:20+0000\n" +"PO-Revision-Date: 2018-11-29 17:40+0000\n" "Last-Translator: Boris Colombier <transifex.com@wba.fr>\n" "Language: fr_FR\n" "Language-Team: French (France) (http://www.transifex.com/freemius/wordpress-sdk/language/fr_FR/)\n" @@ -21,1294 +21,1391 @@ msgstr "" "X-Poedit-SearchPathExcluded-0: *.js\n" "X-Poedit-SourceCharset: UTF-8\n" -#: includes/class-freemius.php:1551 +#: includes/class-freemius.php:1688 msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "Le SDK Freemius ne trouve pas le fichier principal du plugin. Merci de contacter sdk@freemius.com en indiquant l'erreur." -#: includes/class-freemius.php:1553 +#: includes/class-freemius.php:1690 msgid "Error" msgstr "Erreur" -#: includes/class-freemius.php:1871 +#: includes/class-freemius.php:2011 msgid "I found a better %s" msgstr "J'ai trouvé un meilleur %s" -#: includes/class-freemius.php:1873 +#: includes/class-freemius.php:2013 msgid "What's the %s's name?" msgstr "Quel est le nom du %s ?" -#: includes/class-freemius.php:1879 +#: includes/class-freemius.php:2019 msgid "It's a temporary %s. I'm just debugging an issue." msgstr "C'est une %s temporaire. Je corrige un problème." -#: includes/class-freemius.php:1881 +#: includes/class-freemius.php:2021 msgid "Deactivation" msgstr "Désactivation" -#: includes/class-freemius.php:1882 +#: includes/class-freemius.php:2022 msgid "Theme Switch" msgstr "Changement de Thème" -#: includes/class-freemius.php1891, templates/forms/resend-key.php:24 +#: includes/class-freemius.php2031, templates/forms/resend-key.php:24 msgid "Other" msgstr "Autre" -#: includes/class-freemius.php:1899 +#: includes/class-freemius.php:2039 msgid "I no longer need the %s" msgstr "Je n'ai plus besoin du %s" -#: includes/class-freemius.php:1906 +#: includes/class-freemius.php:2046 msgid "I only needed the %s for a short period" msgstr "Je n'ai besoin de %s que pour une courte période" -#: includes/class-freemius.php:1912 +#: includes/class-freemius.php:2052 msgid "The %s broke my site" msgstr "Le %s a cassé mon site" -#: includes/class-freemius.php:1919 +#: includes/class-freemius.php:2059 msgid "The %s suddenly stopped working" msgstr "Le %s a soudainement arrêté de fonctionner" -#: includes/class-freemius.php:1929 +#: includes/class-freemius.php:2069 msgid "I can't pay for it anymore" msgstr "Je ne peux plus payer pour ça" -#: includes/class-freemius.php:1931 +#: includes/class-freemius.php:2071 msgid "What price would you feel comfortable paying?" msgstr "Quel prix seriez-vous prêt à payer ?" -#: includes/class-freemius.php:1937 +#: includes/class-freemius.php:2077 msgid "I don't like to share my information with you" msgstr "Je ne veux pas partager mes informations avec vous" -#: includes/class-freemius.php:1958 +#: includes/class-freemius.php:2098 msgid "The %s didn't work" msgstr "Le %s n'a pas fonctionné" -#: includes/class-freemius.php:1968 +#: includes/class-freemius.php:2108 msgid "I couldn't understand how to make it work" msgstr "Je ne comprends pas comment le faire fonctionner" -#: includes/class-freemius.php:1976 +#: includes/class-freemius.php:2116 msgid "The %s is great, but I need specific feature that you don't support" msgstr "Le %s est bien mais j'ai besoin de fonctionnalités spécifiques que vous ne proposez pas" -#: includes/class-freemius.php:1978 +#: includes/class-freemius.php:2118 msgid "What feature?" msgstr "Quelle fonctionnalité ?" -#: includes/class-freemius.php:1982 +#: includes/class-freemius.php:2122 msgid "The %s is not working" msgstr "Le %s ne fonctionne pas" -#: includes/class-freemius.php:1984 +#: includes/class-freemius.php:2124 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "Merci de nous indiquer ce qui ne fonctionne pas afin que nous puissions le corriger pour les futurs utilisateurs..." -#: includes/class-freemius.php:1988 +#: includes/class-freemius.php:2128 msgid "It's not what I was looking for" msgstr "Ce n'est pas ce que je recherche" -#: includes/class-freemius.php:1990 +#: includes/class-freemius.php:2130 msgid "What you've been looking for?" msgstr "Que recherchez-vous ?" -#: includes/class-freemius.php:1994 +#: includes/class-freemius.php:2134 msgid "The %s didn't work as expected" msgstr "Le %s n'a pas fonctionné comme prévu" -#: includes/class-freemius.php:1996 +#: includes/class-freemius.php:2136 msgid "What did you expect?" msgstr "À quoi vous attendiez-vous ?" -#: includes/class-freemius.php2729, templates/debug.php:20 +#: includes/class-freemius.php2942, templates/debug.php:20 msgid "Freemius Debug" msgstr "Débuggage Freemius" -#: includes/class-freemius.php:3402 +#: includes/class-freemius.php:3670 msgid "I don't know what is cURL or how to install it, help me!" msgstr "Je ne sais pas ce qu'est cURL ou comment l'installer, aidez moi !" -#: includes/class-freemius.php:3404 +#: includes/class-freemius.php:3672 msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." msgstr "Nous allons contacter votre hébergeur afin de résoudre le problème. Vous recevrez un email à propos de %s dès que nous aurons des nouvelles." -#: includes/class-freemius.php:3411 +#: includes/class-freemius.php:3679 msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." msgstr "Parfait, merci d'installer cURL et de l'activer dans votre fichier php.ini. De plus, recherchez l'instruction 'disable_functions' de votre fichier php.ini et désactivez les commandes commençant par 'curl_'. Pour vérifier la bonne activation, utilisez la fonction 'phpinfo()'. Une fois activé, désactivez le %s et réactivez le à nouveau." -#: includes/class-freemius.php:3516 +#: includes/class-freemius.php:3784 msgid "Yes - do your thing" msgstr "Oui - allez-y" -#: includes/class-freemius.php:3521 +#: includes/class-freemius.php:3789 msgid "No - just deactivate" msgstr "Non - désactivation seulement" -#: includes/class-freemius.php3566, includes/class-freemius.php4066, -#: includes/class-freemius.php5127, includes/class-freemius.php10941, -#: includes/class-freemius.php14205, includes/class-freemius.php14257, -#: includes/class-freemius.php14319, includes/class-freemius.php16448, -#: includes/class-freemius.php16458, includes/class-freemius.php17014, -#: includes/class-freemius.php17032, includes/class-freemius.php17130, -#: includes/class-freemius.php17866, templates/add-ons.php:43 +#: includes/class-freemius.php3834, includes/class-freemius.php4343, +#: includes/class-freemius.php5442, includes/class-freemius.php11545, +#: includes/class-freemius.php14916, includes/class-freemius.php14968, +#: includes/class-freemius.php15030, includes/class-freemius.php17263, +#: includes/class-freemius.php17273, includes/class-freemius.php17882, +#: includes/class-freemius.php18742, includes/class-freemius.php18857, +#: includes/class-freemius.php19001, templates/add-ons.php:43 msgctxt "exclamation" msgid "Oops" msgstr "Oups" -#: includes/class-freemius.php:3635 +#: includes/class-freemius.php:3903 msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." msgstr "Merci de nous permettre de corriger ça. Un message vient d'être envoyé à notre service technique. Nous reviendrons vers vous dès que nous aurons des nouvelles à propos de %s." -#: includes/class-freemius.php:4063 +#: includes/class-freemius.php:4340 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "%s ne peut pas fonctionner sans %s." -#: includes/class-freemius.php:4064 +#: includes/class-freemius.php:4341 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "%s ne peut pas fonctionner sans le plugin." -#: includes/class-freemius.php4176, includes/class-freemius.php4201, -#: includes/class-freemius.php:17103 +#: includes/class-freemius.php4487, includes/class-freemius.php4512, +#: includes/class-freemius.php:17953 msgid "Unexpected API error. Please contact the %s's author with the following error." msgstr "Une erreur est survenue dans l'API. Merci de contacter l'auteur du %s en lui indiquant l'erreur." -#: includes/class-freemius.php:4815 +#: includes/class-freemius.php:5130 msgid "Premium %s version was successfully activated." msgstr "La version premium de %s a été activée avec succès." -#: includes/class-freemius.php4827, includes/class-freemius.php:6660 +#: includes/class-freemius.php5142, includes/class-freemius.php:7004 msgctxt "" msgid "W00t" msgstr "Génial" -#: includes/class-freemius.php:4842 +#: includes/class-freemius.php:5157 msgid "You have a %s license." msgstr "Vous avez une license pour %s." -#: includes/class-freemius.php4846, includes/class-freemius.php13626, -#: includes/class-freemius.php13637, includes/class-freemius.php16376, -#: includes/class-freemius.php16676, includes/class-freemius.php16741, -#: includes/class-freemius.php:16891 +#: includes/class-freemius.php5161, includes/class-freemius.php14337, +#: includes/class-freemius.php14348, includes/class-freemius.php17177, +#: includes/class-freemius.php17491, includes/class-freemius.php17557, +#: includes/class-freemius.php:17707 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "Youpi" -#: includes/class-freemius.php:5110 +#: includes/class-freemius.php:5425 msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." msgstr "La période d'essai du %s a bien été annulé. L'add-on a été désactivé car il ne fonctionne qu'avec la version premium. Si vous souhaitez l'utiliser ultérieurement, vous devrez acheter une licence." -#: includes/class-freemius.php:5114 +#: includes/class-freemius.php:5429 msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "%sest un add-on pour la version premium. Vous devez acheter une licence avant d'activer le plugin." -#: includes/class-freemius.php5123, templates/add-ons.php99, -#: templates/account/partials/addon.php:283 +#: includes/class-freemius.php5438, templates/add-ons.php103, +#: templates/account/partials/addon.php:288 msgid "More information about %s" msgstr "Plus d'informations à propos de %s" -#: includes/class-freemius.php:5124 +#: includes/class-freemius.php:5439 msgid "Purchase License" msgstr "Acheter une licence" -#: includes/class-freemius.php6035, templates/connect.php:161 +#: includes/class-freemius.php6372, templates/connect.php:163 msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." msgstr "Vous devriez recevoir un email d'activation pour %s sur votre boîte %s. Merci de cliquer sur le bouton d'activation dans l'email pour %s." -#: includes/class-freemius.php:6039 +#: includes/class-freemius.php:6376 msgid "start the trial" msgstr "commencer la période d'essai" -#: includes/class-freemius.php6040, templates/connect.php:165 +#: includes/class-freemius.php6377, templates/connect.php:167 msgid "complete the install" msgstr "compléter l'installation" -#: includes/class-freemius.php:6147 +#: includes/class-freemius.php:6490 msgid "You are just one step away - %s" msgstr "Il ne reste qu'une étape - %s" -#: includes/class-freemius.php:6150 +#: includes/class-freemius.php:6493 msgctxt "%s - plugin name. As complete \"PluginX\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "Compléter \"%s\" Activer Maintenant" -#: includes/class-freemius.php:6227 +#: includes/class-freemius.php:6571 msgid "We made a few tweaks to the %s, %s" msgstr "Nous avons fait quelques modifications au %s, %s" -#: includes/class-freemius.php:6231 -msgid "Opt in to make \"%s\" Better!" -msgstr "Cochez la case pour améliorer \"%s\"" +#: includes/class-freemius.php:6575 +msgid "Opt in to make \"%s\" better!" +msgstr "Inscrivez-vous pour améliorer \"%s\" !" -#: includes/class-freemius.php:6659 +#: includes/class-freemius.php:7003 msgid "The upgrade of %s was successfully completed." msgstr "La mise à jour du %s s'est terminée avec succès " -#: includes/class-freemius.php8384, includes/class-fs-plugin-updater.php581, -#: includes/class-fs-plugin-updater.php733, -#: includes/class-fs-plugin-updater.php739, templates/auto-installation.php:32 +#: includes/class-freemius.php8925, includes/class-fs-plugin-updater.php886, +#: includes/class-fs-plugin-updater.php1081, +#: includes/class-fs-plugin-updater.php1088, +#: templates/auto-installation.php:32 msgid "Add-On" msgstr "Add-On" -#: includes/class-freemius.php8386, templates/debug.php349, -#: templates/debug.php:510 +#: includes/class-freemius.php8927, templates/debug.php359, +#: templates/debug.php:520 msgid "Plugin" msgstr "Plugin" -#: includes/class-freemius.php8387, templates/debug.php349, -#: templates/debug.php510, templates/forms/deactivation/form.php:64 +#: includes/class-freemius.php8928, templates/debug.php359, +#: templates/debug.php520, templates/forms/deactivation/form.php:67 msgid "Theme" msgstr "Thème" -#: includes/class-freemius.php:10808 -msgid "invalid_site_details_collection" -msgstr "invalid_site_details_collection" +#: includes/class-freemius.php:11412 +msgid "Invalid site details collection." +msgstr "Récupération des détails du site non valide." -#: includes/class-freemius.php:10928 +#: includes/class-freemius.php:11532 msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "Nous ne trouvons pas votre adresse mail dans notre système, êtes-vous qu'il s'agit de la bonne adresse ?" -#: includes/class-freemius.php:10930 +#: includes/class-freemius.php:11534 msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "Nous ne trouvons aucune licence active associée avec cette adresse email, êtes-vous qu'il s'agit de la bonne adresse ?" -#: includes/class-freemius.php:11166 +#: includes/class-freemius.php:11808 msgid "Account is pending activation." msgstr "Compte en cours d'activation." -#: includes/class-freemius.php:13608 +#: includes/class-freemius.php11920, +#: templates/forms/premium-versions-upgrade-handler.php:47 +msgid "Buy a license now" +msgstr "Acheter une licence maintenant" + +#: includes/class-freemius.php11932, +#: templates/forms/premium-versions-upgrade-handler.php:46 +msgid "Renew your license now" +msgstr "Renouvelez votre licence maintenant" + +#: includes/class-freemius.php:11936 +msgid "%s to access version %s security & feature updates, and support." +msgstr "%s pour permettre les mises à jour de sécurité et de fonctionnalités de la version %s, et le support." + +#: includes/class-freemius.php:14319 msgid "%s activation was successfully completed." msgstr "L'activation de %s s'est terminée avec succès." -#: includes/class-freemius.php:13622 +#: includes/class-freemius.php:14333 msgid "Your account was successfully activated with the %s plan." msgstr "Votre compte a été activé avec succès avec la formule %s." -#: includes/class-freemius.php13633, includes/class-freemius.php:16737 +#: includes/class-freemius.php14344, includes/class-freemius.php:17553 msgid "Your trial has been successfully started." msgstr "Votre période d'essai a bien démarré." -#: includes/class-freemius.php14203, includes/class-freemius.php14255, -#: includes/class-freemius.php:14317 +#: includes/class-freemius.php14914, includes/class-freemius.php14966, +#: includes/class-freemius.php:15028 msgid "Couldn't activate %s." msgstr "Impossible d'activer %s." -#: includes/class-freemius.php14204, includes/class-freemius.php14256, -#: includes/class-freemius.php:14318 +#: includes/class-freemius.php14915, includes/class-freemius.php14967, +#: includes/class-freemius.php:15029 msgid "Please contact us with the following message:" msgstr "Merci de nous contacter avec le message suivant :" -#: includes/class-freemius.php14666, includes/class-freemius.php:18929 +#: includes/class-freemius.php15378, includes/class-freemius.php:19839 msgid "Upgrade" msgstr "Mise à jour" -#: includes/class-freemius.php:14672 +#: includes/class-freemius.php:15384 msgid "Start Trial" msgstr "Essai gratuit" -#: includes/class-freemius.php:14674 +#: includes/class-freemius.php:15386 msgid "Pricing" msgstr "Tarifs" -#: includes/class-freemius.php14734, includes/class-freemius.php:14736 +#: includes/class-freemius.php15448, includes/class-freemius.php:15450 msgid "Affiliation" msgstr "Affiliation" -#: includes/class-freemius.php14756, includes/class-freemius.php14758, -#: templates/account.php146, templates/debug.php:314 +#: includes/class-freemius.php15478, includes/class-freemius.php15480, +#: templates/account.php150, templates/debug.php:324 msgid "Account" msgstr "Compte" -#: includes/class-freemius.php14769, includes/class-freemius.php14771, +#: includes/class-freemius.php15493, includes/class-freemius.php15495, #: includes/customizer/class-fs-customizer-support-section.php:60 msgid "Contact Us" msgstr "Contactez Nous" -#: includes/class-freemius.php14781, includes/class-freemius.php14783, -#: includes/class-freemius.php18939, templates/account.php96, -#: templates/account/partials/addon.php:37 +#: includes/class-freemius.php15505, includes/class-freemius.php15507, +#: includes/class-freemius.php19849, templates/account.php100, +#: templates/account/partials/addon.php:41 msgid "Add-Ons" msgstr "Add-Ons" -#: includes/class-freemius.php14815, templates/pricing.php:97 +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow left icon" +msgid "←" +msgstr "←" + +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow right icon" +msgid "➤" +msgstr "➤" + +#: includes/class-freemius.php15543, templates/pricing.php:97 msgctxt "noun" msgid "Pricing" msgstr "Tarifs" -#: includes/class-freemius.php15009, +#: includes/class-freemius.php15756, #: includes/customizer/class-fs-customizer-support-section.php:67 msgid "Support Forum" msgstr "Forum de Support" -#: includes/class-freemius.php:15794 +#: includes/class-freemius.php:16542 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "Votre email a été vérifié avec succès - vous êtes FORMIDABLE !" -#: includes/class-freemius.php:15795 +#: includes/class-freemius.php:16543 msgctxt "a positive response" msgid "Right on" msgstr "Directement" -#: includes/class-freemius.php:16367 +#: includes/class-freemius.php:17168 msgid "Your %s Add-on plan was successfully upgraded." msgstr "Votre Add-on %s a bien été mis à jour." -#: includes/class-freemius.php:16369 +#: includes/class-freemius.php:17170 msgid "%s Add-on was successfully purchased." msgstr "L'Add-on %s a bien été acheté." -#: includes/class-freemius.php:16372 +#: includes/class-freemius.php:17173 msgid "Download the latest version" msgstr "Télécharger la dernière version" -#: includes/class-freemius.php:16444 +#: includes/class-freemius.php:17259 msgctxt "%1s - plugin title, %2s - API domain" msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" msgstr "Votre serveur bloque l'accès à l4API Freemius qui est indispensable pour la synchronisation %1s. Merci de contacter votre hébergeur pour mettre %2s dans la liste blanche " -#: includes/class-freemius.php16447, includes/class-freemius.php16862, -#: includes/class-freemius.php:16927 +#: includes/class-freemius.php17262, includes/class-freemius.php17678, +#: includes/class-freemius.php:17755 msgid "Error received from the server:" msgstr "Une erreur a été reçu depuis le serveur :" -#: includes/class-freemius.php:16457 +#: includes/class-freemius.php:17272 msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "Il semble que l'un des paramètres d'authentification soit faux. Veuillez mettre à jour votre Public Key, votre Secret Key ainsi que vote User ID et essayez à nouveau." -#: includes/class-freemius.php16639, includes/class-freemius.php16867, -#: includes/class-freemius.php:16910 +#: includes/class-freemius.php17454, includes/class-freemius.php17683, +#: includes/class-freemius.php17726, includes/class-freemius.php:17829 msgctxt "" msgid "Hmm" msgstr "Hmm" -#: includes/class-freemius.php:16652 +#: includes/class-freemius.php:17467 msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." -msgstr "Il semble que vous soyez encore sur la formule %s. Si vous avez mis à jour ou changer vote formule, le problème est probablement de votre côté - désolé." +msgstr "Il semble que vous soyez encore sur la formule %s. Si vous avez mis à jour ou changer votre formule, le problème est probablement de votre côté - désolé." -#: includes/class-freemius.php16653, templates/account.php98, -#: templates/add-ons.php130, templates/account/partials/addon.php:39 +#: includes/class-freemius.php17468, templates/account.php102, +#: templates/add-ons.php134, templates/account/partials/addon.php:43 msgctxt "trial period" msgid "Trial" msgstr "Période d'essai" -#: includes/class-freemius.php:16658 +#: includes/class-freemius.php:17473 msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "J'ai mis à jour mon compte mais quand j'essaie de synchroniser la licence, la formule est toujours %s." -#: includes/class-freemius.php16662, includes/class-freemius.php:16719 +#: includes/class-freemius.php17477, includes/class-freemius.php:17535 msgid "Please contact us here" msgstr "Merci de nous contacter ici" -#: includes/class-freemius.php:16672 +#: includes/class-freemius.php:17487 msgid "Your plan was successfully upgraded." msgstr "Votre formule a bien été mise à jour." -#: includes/class-freemius.php:16689 +#: includes/class-freemius.php:17505 msgid "Your plan was successfully changed to %s." msgstr "Votre formule a bien été modifié vers %s. " -#: includes/class-freemius.php:16705 +#: includes/class-freemius.php:17521 msgid "Your license has expired. You can still continue using the free %s forever." msgstr "Votre licence a expiré. Vous pouvez toujours utiliser la version gratuite indéfiniment." -#: includes/class-freemius.php:16707 +#: includes/class-freemius.php:17523 msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "Votre licence a expiré.%1$sFaites la mise à jour maintenant%2$s pour continuer à utiliser le %3$s sans interruption." -#: includes/class-freemius.php:16715 +#: includes/class-freemius.php:17531 msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "Votre licence a été annulé. Si vous pensez qu'il s'agit d'une erreur, merci de contacter le support." -#: includes/class-freemius.php:16728 +#: includes/class-freemius.php:17544 msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." msgstr "Votre licence a expiré. Vous pouvez toujours utiliser les fonctionnalités %s mais vous devrez renouveler votre licence pour recevoir les mises à jour et une assistance." -#: includes/class-freemius.php:16751 +#: includes/class-freemius.php:17567 msgid "Your free trial has expired. You can still continue using all our free features." msgstr "Votre période d'essai gratuite est terminée. Vous pouvez continuer à utiliser toutes nos fonctionnalités gratuites." -#: includes/class-freemius.php:16753 +#: includes/class-freemius.php:17569 msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "Votre période d'essai gratuite est terminée. %1$sFaites la mise à jour maintenant%2$s pour continuer à utiliser le %3$s sans interruption." -#: includes/class-freemius.php:16858 +#: includes/class-freemius.php:17674 msgid "It looks like the license could not be activated." msgstr "Il semble que la licence ne puisse être activée." -#: includes/class-freemius.php:16888 +#: includes/class-freemius.php:17704 msgid "Your license was successfully activated." msgstr "Votre licence a bien été activée." -#: includes/class-freemius.php:16914 +#: includes/class-freemius.php:17730 msgid "It looks like your site currently doesn't have an active license." msgstr "Il semble que votre site n'ait pas de licence active." -#: includes/class-freemius.php:16926 +#: includes/class-freemius.php:17754 msgid "It looks like the license deactivation failed." msgstr "Il semble que la désactivation de la licence a échoué." -#: includes/class-freemius.php:16954 +#: includes/class-freemius.php:17782 msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "Votre licence a bien été désactivé, vous utilisez à présent la formule %s." -#: includes/class-freemius.php:16955 +#: includes/class-freemius.php:17783 msgid "O.K" msgstr "O.K" -#: includes/class-freemius.php:17003 -msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." -msgstr "La formule a bien été rétrogradé. La licence de votre formule expirera dans %s." +#: includes/class-freemius.php:17836 +msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." +msgstr "Il semble que nous ayons un problème temporaire avec l'annulation de votre abonnement. Merci de réessayer dans quelques minutes." -#: includes/class-freemius.php:17013 -msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." -msgstr "Il semble que nous ayons un problème temporaire pour rétrograder votre formule. Merci de réessayer dans quelques minutes." +#: includes/class-freemius.php:17845 +msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s." +msgstr "Votre abonnement a bien été annulé. Votre licence de la formule %s expirera dans %s." -#: includes/class-freemius.php:17037 +#: includes/class-freemius.php:17887 msgid "You are already running the %s in a trial mode." msgstr "Vous utilisez déjà le %s en période d'essai. " -#: includes/class-freemius.php:17048 +#: includes/class-freemius.php:17898 msgid "You already utilized a trial before." msgstr "Vous avez déjà utilisé la période d'essai." -#: includes/class-freemius.php:17062 +#: includes/class-freemius.php:17912 msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "La formule %s n'existe pas, il n'est pas possible de commencer une période d'essai." -#: includes/class-freemius.php:17073 +#: includes/class-freemius.php:17923 msgid "Plan %s does not support a trial period." msgstr "La formule %s ne propose pas de période d'essai." -#: includes/class-freemius.php:17084 +#: includes/class-freemius.php:17934 msgid "None of the %s's plans supports a trial period." msgstr "Aucune formule du %s ne propose de période d'essai." -#: includes/class-freemius.php:17134 +#: includes/class-freemius.php:17984 msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "Il semble que vous ne soyez plus en période d'essai donc il n'y a rien à annuler :)" -#: includes/class-freemius.php:17185 -msgid "Your %s free trial was successfully cancelled." -msgstr "Votre période d'essai %s a bien été annulé." - -#: includes/class-freemius.php:17190 +#: includes/class-freemius.php:18020 msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "Il semble que nous ayons un problème temporaire pour annuler votre période d'essai. Merci de réessayer dans quelques minutes." -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18039 +msgid "Your %s free trial was successfully cancelled." +msgstr "Votre période d'essai %s a bien été annulé." + +#: includes/class-freemius.php:18346 msgid "Version %s was released." msgstr "La version %s vient d'être publiée." -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18346 msgid "Please download %s." msgstr "Merci de télécharger %s." -#: includes/class-freemius.php:17481 +#: includes/class-freemius.php:18353 msgid "the latest %s version here" msgstr "la dernière version de %s ici" -#: includes/class-freemius.php:17486 +#: includes/class-freemius.php:18358 msgid "New" msgstr "Nouveau" -#: includes/class-freemius.php:17491 +#: includes/class-freemius.php:18363 msgid "Seems like you got the latest release." msgstr "Il semble que vous ayez la dernière version." -#: includes/class-freemius.php:17492 +#: includes/class-freemius.php:18364 msgid "You are all good!" msgstr "Vous êtes tout bon !" -#: includes/class-freemius.php:17758 +#: includes/class-freemius.php:18632 msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "Un email de vérification vient d'être envoyé sur %s. Si vous ne le recevez pas d'ici 5 minutes, merci de vérifier dans vos spams." -#: includes/class-freemius.php:17893 +#: includes/class-freemius.php:18769 msgid "Site successfully opted in." msgstr "Site ajouté avec succès." -#: includes/class-freemius.php17894, includes/class-freemius.php:18671 +#: includes/class-freemius.php18770, includes/class-freemius.php:19581 msgid "Awesome" msgstr "Formidable" -#: includes/class-freemius.php17910, templates/forms/optout.php:32 +#: includes/class-freemius.php18786, templates/forms/optout.php:32 msgid "We appreciate your help in making the %s better by letting us track some usage data." msgstr "Nous vous remercions de votre aide pour améliorer le %s en nous permettant de recevoir des informations concernant son usage." -#: includes/class-freemius.php:17911 +#: includes/class-freemius.php:18787 msgid "Thank you!" msgstr "Merci !" -#: includes/class-freemius.php:17918 +#: includes/class-freemius.php:18794 msgid "We will no longer be sending any usage data of %s on %s to %s." msgstr "Nous n'enverrons plus d'information d'utilisation de %s sur %s à %s." -#: includes/class-freemius.php:18033 +#: includes/class-freemius.php:18923 msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." msgstr "Merci de vérifier votre messagerie, vous devriez recevoir un email via %s pour confirmer le changement de propriétaire. Pour des raisons de sécurité, vous devez confirmer le changement dans les prochaines 15 minutes. Vérifiez vos spams si vous ne recevez pas le message." -#: includes/class-freemius.php:18039 +#: includes/class-freemius.php:18929 msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "Merci pour la confirmation du changement de propriétaire. Un email vient d'être envoyé à %s pour la validation finale." -#: includes/class-freemius.php:18044 +#: includes/class-freemius.php:18934 msgid "%s is the new owner of the account." msgstr "%s est le nouveau propriétaire du compte." -#: includes/class-freemius.php:18046 +#: includes/class-freemius.php:18936 msgctxt "as congratulations" msgid "Congrats" msgstr "Félicitations" -#: includes/class-freemius.php:18066 +#: includes/class-freemius.php:18956 msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "Désolé, nous ne pouvons pas mettre à jour l'email. Il existe déjà un autre utilisateur avec cette adresse." -#: includes/class-freemius.php:18067 +#: includes/class-freemius.php:18957 msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." msgstr "Si vous voulez transférer la propriété du compte de %s à %s cliquez sur le bouton Changement De Propriétaire" -#: includes/class-freemius.php:18074 +#: includes/class-freemius.php:18964 msgid "Change Ownership" msgstr "Changement De Propriétaire" -#: includes/class-freemius.php:18082 +#: includes/class-freemius.php:18972 msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." msgstr "Votre email a été mis à jour. Vous allez recevoir un message avec les instructions de confirmation." -#: includes/class-freemius.php:18094 +#: includes/class-freemius.php:18984 msgid "Please provide your full name." msgstr "Merci d'indiquer vos prénom et nom." -#: includes/class-freemius.php:18099 +#: includes/class-freemius.php:18989 msgid "Your name was successfully updated." msgstr "Votre nom a été mis à jour." -#: includes/class-freemius.php:18160 +#: includes/class-freemius.php:19050 msgid "You have successfully updated your %s." msgstr "Votre %s a bien été mis à jour." -#: includes/class-freemius.php:18300 +#: includes/class-freemius.php:19190 msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "Sachez que les informations de l'add-ons de %s sont issus d'un serveur externe." -#: includes/class-freemius.php:18301 +#: includes/class-freemius.php:19191 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "Avertissement" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgctxt "exclamation" msgid "Hey" msgstr "Hey" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "Que pensez-vous de %s ? Testez nos %s fonctionnalités premium avec %d jours d'essai gratuit." -#: includes/class-freemius.php:18719 +#: includes/class-freemius.php:19629 msgid "No commitment for %s days - cancel anytime!" msgstr "Pas d'engagement durant %s jours - annuler quand vous voulez !" -#: includes/class-freemius.php:18720 +#: includes/class-freemius.php:19630 msgid "No credit card required" msgstr "Pas besoin de carte bancaire" -#: includes/class-freemius.php18727, templates/forms/trial-start.php:53 +#: includes/class-freemius.php19637, templates/forms/trial-start.php:53 msgctxt "call to action" msgid "Start free trial" msgstr "Commencer l'essai gratuit" -#: includes/class-freemius.php:18804 +#: includes/class-freemius.php:19714 msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" msgstr "Dites, savez-vous que %s propose un système de affiliation ? Si vous aimez le %s vous pouvez devenir notre ambassadeur et gagner de l'argent !" -#: includes/class-freemius.php:18813 +#: includes/class-freemius.php:19723 msgid "Learn more" msgstr "En savoir plus" -#: includes/class-freemius.php18963, templates/account.php394, -#: templates/account.php497, templates/connect.php169, -#: templates/connect.php408, templates/forms/license-activation.php24, -#: templates/account/partials/addon.php:230 +#: includes/class-freemius.php19873, templates/account.php406, +#: templates/account.php509, templates/connect.php171, +#: templates/connect.php421, templates/forms/license-activation.php24, +#: templates/account/partials/addon.php:235 msgid "Activate License" msgstr "Activer la licence" -#: includes/class-freemius.php18964, templates/account.php457, -#: templates/account.php496, templates/account/partials/site.php:256 +#: includes/class-freemius.php19874, templates/account.php469, +#: templates/account.php508, templates/account/partials/site.php:256 msgid "Change License" msgstr "Changer la licence" -#: includes/class-freemius.php19046, templates/account/partials/site.php:161 +#: includes/class-freemius.php19956, templates/account/partials/site.php:161 msgid "Opt Out" msgstr "Désinscription" -#: includes/class-freemius.php19048, includes/class-freemius.php19053, +#: includes/class-freemius.php19958, includes/class-freemius.php19963, #: templates/account/partials/site.php43, #: templates/account/partials/site.php:161 msgid "Opt In" msgstr "Inscription" -#: includes/class-freemius.php:19245 +#: includes/class-freemius.php:20187 +msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" +msgstr "La version payante de %1s est déjà installée. Merci de l'activer pour bénéficier des fonctionnalités %2s. %3s" + +#: includes/class-freemius.php:20195 +msgid "Activate %s features" +msgstr "Activer les fonctionnalités %s" + +#: includes/class-freemius.php:20208 msgid "Please follow these steps to complete the upgrade" msgstr "Merci de suivre ces étapes pour finaliser la mise à jour" -#: includes/class-freemius.php:19249 +#: includes/class-freemius.php:20212 msgid "Download the latest %s version" msgstr "Télécharger la dernière version %s" -#: includes/class-freemius.php:19253 +#: includes/class-freemius.php:20216 msgid "Upload and activate the downloaded version" msgstr "Téléverser et activer la version téléchargée" -#: includes/class-freemius.php:19255 +#: includes/class-freemius.php:20218 msgid "How to upload and activate?" msgstr "Comment téléverser et activer ?" -#: includes/class-freemius.php:19384 +#: includes/class-freemius.php:20352 msgid "%sClick here%s to choose the sites where you'd like to activate the license on." msgstr "%sCliquez ici %s pour choisir les sites sur lesquels vous souhaitez activer la licence." -#: includes/class-freemius.php:19545 +#: includes/class-freemius.php:20513 msgid "Auto installation only works for opted-in users." msgstr "L'installation automatique ne fonctionne que pour les utilisateurs qui se sont inscrits." -#: includes/class-freemius.php19555, includes/class-freemius.php19588, -#: includes/class-fs-plugin-updater.php713, -#: includes/class-fs-plugin-updater.php:727 +#: includes/class-freemius.php20523, includes/class-freemius.php20556, +#: includes/class-fs-plugin-updater.php1060, +#: includes/class-fs-plugin-updater.php:1074 msgid "Invalid module ID." msgstr "ID du module non valide." -#: includes/class-freemius.php19564, includes/class-fs-plugin-updater.php:747 +#: includes/class-freemius.php20532, includes/class-fs-plugin-updater.php:1096 msgid "Premium version already active." msgstr "Version premium déjà active." -#: includes/class-freemius.php:19571 +#: includes/class-freemius.php:20539 msgid "You do not have a valid license to access the premium version." msgstr "Vous n'avez pas de licence valide pour accéder à la version premium." -#: includes/class-freemius.php:19578 +#: includes/class-freemius.php:20546 msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." msgstr "Le plugin est un \"Serviceware\" ce qui veut dire qu'il n'a pas de version premium de code." -#: includes/class-freemius.php19596, includes/class-fs-plugin-updater.php:746 +#: includes/class-freemius.php20564, includes/class-fs-plugin-updater.php:1095 msgid "Premium add-on version already installed." msgstr "La version premium de l'add-on est déjà installée." -#: includes/class-freemius.php:19941 +#: includes/class-freemius.php:20909 msgid "View paid features" msgstr "Voir les fonctionnalités payantes" -#: includes/class-freemius.php:20251 +#: includes/class-freemius.php:21229 msgid "Thank you so much for using %s and its add-ons!" msgstr "Merci beaucoup d'utiliser %s et ses add-ons !" -#: includes/class-freemius.php:20252 +#: includes/class-freemius.php:21230 msgid "Thank you so much for using %s!" msgstr "Merci beaucoup d'utiliser %s !" -#: includes/class-freemius.php:20258 +#: includes/class-freemius.php:21236 msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s." msgstr "Vous avez déjà validé notre suivi d'utilisation qui nous permet de continuer à améliorer le %s." -#: includes/class-freemius.php:20262 +#: includes/class-freemius.php:21240 msgid "Thank you so much for using our products!" msgstr "Merci beaucoup d'utiliser nos produits !" -#: includes/class-freemius.php:20263 +#: includes/class-freemius.php:21241 msgid "You've already opted-in to our usage-tracking, which helps us keep improving them." msgstr "Vous avez déjà validé notre suivi d'utilisation qui nous permet de continuer à les améliorer." -#: includes/class-freemius.php:20282 +#: includes/class-freemius.php:21260 msgid "%s and its add-ons" msgstr "%s et ses add-ons" -#: includes/class-freemius.php:20291 +#: includes/class-freemius.php:21269 msgid "Products" msgstr "Produits" -#: includes/class-freemius.php20298, templates/connect.php:259 +#: includes/class-freemius.php21276, templates/connect.php:272 msgid "Yes" msgstr "Oui" -#: includes/class-freemius.php20299, templates/connect.php:260 +#: includes/class-freemius.php21277, templates/connect.php:273 msgid "send me security & feature updates, educational content and offers." msgstr "envoyez moi des mises à jour de sécurité et des fonctionnalités, du contenu instructif et des offres." -#: includes/class-freemius.php20300, templates/connect.php:265 +#: includes/class-freemius.php21278, templates/connect.php:278 msgid "No" msgstr "Non" -#: includes/class-freemius.php20302, templates/connect.php:267 +#: includes/class-freemius.php21280, templates/connect.php:280 msgid "do %sNOT%s send me security & feature updates, educational content and offers." msgstr "ne %sPAS%s m'envoyer de mises à jour de sécurité ou de fonctionnalités, ni de contenu instructif, ni d'offre." -#: includes/class-freemius.php:20312 +#: includes/class-freemius.php:21290 msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" msgstr "Suite au exigences de conformité du %sRèglement européen Général sur la Protection des Données (GDPR)%s il est nécessaire que vous donniez, à nouveau, votre consentement explicite pour confirmer que vous êtes avec nous 🙂" -#: includes/class-freemius.php20314, templates/connect.php:274 +#: includes/class-freemius.php21292, templates/connect.php:287 msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" msgstr "Merci de nous indiquer si vous souhaitez que nous vous contactions pour les mises à jour de sécurité et de fonctionnalités, du contenu instructif et des offres spéciales :" -#: includes/class-freemius.php:20598 +#: includes/class-freemius.php:21574 msgid "License key is empty." msgstr "La clé de licence est vide." #: includes/class-fs-plugin-updater.php184, -#: includes/class-fs-plugin-updater.php:219 -msgid "%sRenew your license now%s to access version %s security & feature updates, and support." -msgstr "%s Renouveler votre licence maintenant %s pour accéder aux mise à jour de sécurité et de fonctionnalités de la version %s ainsi qu'au support." +#: templates/forms/premium-versions-upgrade-handler.php:57 +msgid "Renew license" +msgstr "Renouvelez votre licence" + +#: includes/class-fs-plugin-updater.php189, +#: templates/forms/premium-versions-upgrade-handler.php:58 +msgid "Buy license" +msgstr "Acheter une licence" + +#: includes/class-fs-plugin-updater.php:278 +msgid "There is a %s of %s available." +msgstr "Il y a une %s de %s disponible." + +#: includes/class-fs-plugin-updater.php:282 +msgid "new version" +msgstr "Nouvelle version" -#: includes/class-fs-plugin-updater.php:776 +#: includes/class-fs-plugin-updater.php:305 +msgid "Important Upgrade Notice:" +msgstr "Information importante de mise à jour :" + +#: includes/class-fs-plugin-updater.php:1125 msgid "Installing plugin: %s" msgstr "Installation du plugin : %s" -#: includes/class-fs-plugin-updater.php:817 +#: includes/class-fs-plugin-updater.php:1166 msgid "Unable to connect to the filesystem. Please confirm your credentials." msgstr "Impossible de se connecter au système de fichiers. Merci de confirmer vos autorisations." -#: includes/class-fs-plugin-updater.php:923 +#: includes/class-fs-plugin-updater.php:1348 msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." msgstr "Le package du plugin à télécharger ne contient pas de dossier avec le bon slug et iln'a pas été possible de le renommer." -#: includes/fs-plugin-info-dialog.php336, -#: templates/account/partials/addon.php:287 +#: includes/fs-plugin-info-dialog.php369, +#: templates/account/partials/addon.php:292 msgctxt "verb" msgid "Purchase" msgstr "Acheter" -#: includes/fs-plugin-info-dialog.php:339 +#: includes/fs-plugin-info-dialog.php:372 msgid "Start my free %s" msgstr "Commencer ma %s gratuite" -#: includes/fs-plugin-info-dialog.php:380 +#: includes/fs-plugin-info-dialog.php:413 msgid "Install Free Version Now" msgstr "Installer la version gratuite maintenant" -#: includes/fs-plugin-info-dialog.php381, templates/auto-installation.php111, -#: templates/account/partials/addon.php267, -#: templates/account/partials/addon.php:317 +#: includes/fs-plugin-info-dialog.php414, templates/auto-installation.php111, +#: templates/account/partials/addon.php272, +#: templates/account/partials/addon.php:322 msgid "Install Now" msgstr "Installer maintenant" -#: includes/fs-plugin-info-dialog.php:392 +#: includes/fs-plugin-info-dialog.php:425 msgctxt "as download latest version" msgid "Download Latest Free Version" msgstr "Télécharger la dernière version gratuite" -#: includes/fs-plugin-info-dialog.php393, templates/account.php80, +#: includes/fs-plugin-info-dialog.php426, templates/account.php80, #: templates/account/partials/addon.php:21 msgctxt "as download latest version" msgid "Download Latest" msgstr "Télécharger la dernière version" -#: includes/fs-plugin-info-dialog.php:403 +#: includes/fs-plugin-info-dialog.php:436 msgid "Install Free Version Update Now" msgstr "Installer la dernière mise à jour gratuite maintenant" -#: includes/fs-plugin-info-dialog.php404, templates/account.php:448 +#: includes/fs-plugin-info-dialog.php437, templates/account.php:460 msgid "Install Update Now" msgstr "Installer la mise à jour maintenant" -#: includes/fs-plugin-info-dialog.php:415 +#: includes/fs-plugin-info-dialog.php:448 msgid "Newer Free Version (%s) Installed" msgstr "La nouvelle version gratuite ( %s ) a été installé" -#: includes/fs-plugin-info-dialog.php:416 +#: includes/fs-plugin-info-dialog.php:449 msgid "Newer Version (%s) Installed" msgstr "Nouvelle Version (%s) Installée" -#: includes/fs-plugin-info-dialog.php:424 +#: includes/fs-plugin-info-dialog.php:457 msgid "Latest Free Version Installed" msgstr "La dernière version gratuite a été installé" -#: includes/fs-plugin-info-dialog.php:425 +#: includes/fs-plugin-info-dialog.php:458 msgid "Latest Version Installed" msgstr "Dernière Version Installée" -#: includes/fs-plugin-info-dialog.php:580 +#: includes/fs-plugin-info-dialog.php:613 msgctxt "Plugin installer section title" msgid "Description" msgstr "Description" -#: includes/fs-plugin-info-dialog.php:581 +#: includes/fs-plugin-info-dialog.php:614 msgctxt "Plugin installer section title" msgid "Installation" msgstr "Installation" -#: includes/fs-plugin-info-dialog.php:582 +#: includes/fs-plugin-info-dialog.php:615 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "FAQ" -#: includes/fs-plugin-info-dialog.php583, +#: includes/fs-plugin-info-dialog.php616, #: templates/plugin-info/description.php:55 msgid "Screenshots" msgstr "Captures d'écran" -#: includes/fs-plugin-info-dialog.php:584 +#: includes/fs-plugin-info-dialog.php:617 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "Changelog" -#: includes/fs-plugin-info-dialog.php:585 +#: includes/fs-plugin-info-dialog.php:618 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "Commentaires" -#: includes/fs-plugin-info-dialog.php:586 +#: includes/fs-plugin-info-dialog.php:619 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "Autres Informations" -#: includes/fs-plugin-info-dialog.php:601 +#: includes/fs-plugin-info-dialog.php:634 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "Fonctionnalités & Tarifs" -#: includes/fs-plugin-info-dialog.php:611 +#: includes/fs-plugin-info-dialog.php:644 msgid "Plugin Install" msgstr "Installation du Plugin" -#: includes/fs-plugin-info-dialog.php:683 +#: includes/fs-plugin-info-dialog.php:716 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "Formule %s" -#: includes/fs-plugin-info-dialog.php:709 +#: includes/fs-plugin-info-dialog.php:742 msgctxt "e.g. the best product" msgid "Best" msgstr "Best" -#: includes/fs-plugin-info-dialog.php715, -#: includes/fs-plugin-info-dialog.php:735 +#: includes/fs-plugin-info-dialog.php748, +#: includes/fs-plugin-info-dialog.php:768 msgctxt "as every month" msgid "Monthly" msgstr "Mensuel" -#: includes/fs-plugin-info-dialog.php:718 +#: includes/fs-plugin-info-dialog.php:751 msgctxt "as once a year" msgid "Annual" msgstr "Annuel" -#: includes/fs-plugin-info-dialog.php:721 +#: includes/fs-plugin-info-dialog.php:754 msgid "Lifetime" msgstr "À vie" -#: includes/fs-plugin-info-dialog.php735, -#: includes/fs-plugin-info-dialog.php737, -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php768, +#: includes/fs-plugin-info-dialog.php770, +#: includes/fs-plugin-info-dialog.php:772 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "%s Facturé" -#: includes/fs-plugin-info-dialog.php:737 +#: includes/fs-plugin-info-dialog.php:770 msgctxt "as once a year" msgid "Annually" msgstr "Annuel" -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php:772 msgctxt "as once a year" msgid "Once" msgstr "Une fois" -#: includes/fs-plugin-info-dialog.php:745 +#: includes/fs-plugin-info-dialog.php:778 msgid "Single Site License" msgstr "Licence 1 site" -#: includes/fs-plugin-info-dialog.php:747 +#: includes/fs-plugin-info-dialog.php:780 msgid "Unlimited Licenses" msgstr "Licences sites illimités" -#: includes/fs-plugin-info-dialog.php:749 +#: includes/fs-plugin-info-dialog.php:782 msgid "Up to %s Sites" msgstr "Jusqu'à %s Sites" -#: includes/fs-plugin-info-dialog.php759, +#: includes/fs-plugin-info-dialog.php792, #: templates/plugin-info/features.php:82 msgctxt "as monthly period" msgid "mo" msgstr "mois" -#: includes/fs-plugin-info-dialog.php766, +#: includes/fs-plugin-info-dialog.php799, #: templates/plugin-info/features.php:80 msgctxt "as annual period" msgid "year" msgstr "année" -#: includes/fs-plugin-info-dialog.php:820 +#: includes/fs-plugin-info-dialog.php:853 msgctxt "noun" msgid "Price" msgstr "Tarif" -#: includes/fs-plugin-info-dialog.php:868 +#: includes/fs-plugin-info-dialog.php:901 msgid "Save %s" msgstr "Économisez %s" -#: includes/fs-plugin-info-dialog.php:878 +#: includes/fs-plugin-info-dialog.php:911 msgid "No commitment for %s - cancel anytime" msgstr "Pas d'engagement durant %s - annuler quand vous voulez" -#: includes/fs-plugin-info-dialog.php:881 +#: includes/fs-plugin-info-dialog.php:914 msgid "After your free %s, pay as little as %s" msgstr "Après vos %s gratuits, payez seulement %s" -#: includes/fs-plugin-info-dialog.php:892 +#: includes/fs-plugin-info-dialog.php:925 msgid "Details" msgstr "Détails" -#: includes/fs-plugin-info-dialog.php896, templates/account.php87, -#: templates/debug.php191, templates/debug.php228, templates/debug.php442, -#: templates/account/partials/addon.php:28 +#: includes/fs-plugin-info-dialog.php929, templates/account.php91, +#: templates/debug.php201, templates/debug.php238, templates/debug.php452, +#: templates/account/partials/addon.php:32 msgctxt "product version" msgid "Version" msgstr "Version" -#: includes/fs-plugin-info-dialog.php:903 +#: includes/fs-plugin-info-dialog.php:936 msgctxt "as the plugin author" msgid "Author" msgstr "Auteur" -#: includes/fs-plugin-info-dialog.php:910 +#: includes/fs-plugin-info-dialog.php:943 msgid "Last Updated" msgstr "Dernière mise à jour" -#: includes/fs-plugin-info-dialog.php:915 +#: includes/fs-plugin-info-dialog.php948, templates/account.php:376 msgctxt "x-ago" msgid "%s ago" msgstr "Il y a %s" -#: includes/fs-plugin-info-dialog.php:924 +#: includes/fs-plugin-info-dialog.php:957 msgid "Requires WordPress Version" msgstr "Version de WordPress requise" -#: includes/fs-plugin-info-dialog.php:925 +#: includes/fs-plugin-info-dialog.php:958 msgid "%s or higher" msgstr "%s ou plus" -#: includes/fs-plugin-info-dialog.php:932 +#: includes/fs-plugin-info-dialog.php:965 msgid "Compatible up to" msgstr "Compatible jusqu'à" -#: includes/fs-plugin-info-dialog.php:940 +#: includes/fs-plugin-info-dialog.php:973 msgid "Downloaded" msgstr "Téléchargé" -#: includes/fs-plugin-info-dialog.php:944 +#: includes/fs-plugin-info-dialog.php:977 msgid "%s time" msgstr "%s fois" -#: includes/fs-plugin-info-dialog.php:946 +#: includes/fs-plugin-info-dialog.php:979 msgid "%s times" msgstr "%s fois" -#: includes/fs-plugin-info-dialog.php:956 +#: includes/fs-plugin-info-dialog.php:989 msgid "WordPress.org Plugin Page" msgstr "Page WordPress.org du plugin" -#: includes/fs-plugin-info-dialog.php:964 +#: includes/fs-plugin-info-dialog.php:997 msgid "Plugin Homepage" msgstr "Site Web du plugin" -#: includes/fs-plugin-info-dialog.php972, -#: includes/fs-plugin-info-dialog.php:1054 +#: includes/fs-plugin-info-dialog.php1005, +#: includes/fs-plugin-info-dialog.php:1087 msgid "Donate to this plugin" msgstr "Faire une donation pour ce plugin" -#: includes/fs-plugin-info-dialog.php:979 +#: includes/fs-plugin-info-dialog.php:1012 msgid "Average Rating" msgstr "Note moyenne" -#: includes/fs-plugin-info-dialog.php:986 +#: includes/fs-plugin-info-dialog.php:1019 msgid "based on %s" msgstr "Basé sur %s" -#: includes/fs-plugin-info-dialog.php:990 +#: includes/fs-plugin-info-dialog.php:1023 msgid "%s rating" msgstr "%s notation" -#: includes/fs-plugin-info-dialog.php:992 +#: includes/fs-plugin-info-dialog.php:1025 msgid "%s ratings" msgstr "%snotations " -#: includes/fs-plugin-info-dialog.php:1007 +#: includes/fs-plugin-info-dialog.php:1040 msgid "%s star" msgstr "%s étoile" -#: includes/fs-plugin-info-dialog.php:1009 +#: includes/fs-plugin-info-dialog.php:1042 msgid "%s stars" msgstr "%s étoiles" -#: includes/fs-plugin-info-dialog.php:1020 +#: includes/fs-plugin-info-dialog.php:1053 msgid "Click to see reviews that provided a rating of %s" msgstr "Cliquez pour voir les avis avec une notation de %s" -#: includes/fs-plugin-info-dialog.php:1033 +#: includes/fs-plugin-info-dialog.php:1066 msgid "Contributors" msgstr "Contributeurs" -#: includes/fs-plugin-info-dialog.php1062, -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php1095, +#: includes/fs-plugin-info-dialog.php:1097 msgid "Warning" msgstr "Attention" -#: includes/fs-plugin-info-dialog.php:1062 +#: includes/fs-plugin-info-dialog.php:1095 msgid "This plugin has not been tested with your current version of WordPress." msgstr "Ce plugin n'a pas été testé avec votre actuelle version de WordPress" -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php:1097 msgid "This plugin has not been marked as compatible with your version of WordPress." msgstr "Ce plugin n'a pas été indiqué comme étant compatible avec votre version actuelle de WordPress" -#: includes/fs-plugin-info-dialog.php:1083 +#: includes/fs-plugin-info-dialog.php:1116 msgid "Paid add-on must be deployed to Freemius." msgstr "Les add-ons payant doivent être déposés sur Freemius" -#: includes/fs-plugin-info-dialog.php:1084 +#: includes/fs-plugin-info-dialog.php:1117 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "Les add-ons doivent être déposés sur WordPress.org ou Freemius." -#: templates/account.php81, templates/account/partials/addon.php22, +#: templates/account.php81, templates/forms/subscription-cancellation.php96, +#: templates/account/partials/addon.php22, #: templates/account/partials/site.php:295 -msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." -msgstr "Rétrograder votre formule arrêtera immédiatement tous les futurs paiements récurrents et votre licence de la formule %s expirera dans %s." +msgid "Downgrading your plan" +msgstr "Rétrograder votre formule" -#: templates/account.php82, templates/account/partials/addon.php:23 +#: templates/account.php82, templates/forms/subscription-cancellation.php97, +#: templates/account/partials/addon.php23, +#: templates/account/partials/site.php:296 +msgid "Cancelling the subscription" +msgstr "Annuler votre abonnement" + +#. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the +#. subscription' +#: templates/account.php84, templates/forms/subscription-cancellation.php99, +#: templates/account/partials/addon.php25, +#: templates/account/partials/site.php:298 +msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." +msgstr "%1s va immédiatement arrêter tous les futurs paiements récurrents et la licence de votre formule %s expirera dans %s." + +#: templates/account.php85, templates/forms/subscription-cancellation.php100, +#: templates/account/partials/addon.php26, +#: templates/account/partials/site.php:299 +msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." +msgstr "Veuillez noter que nous ne serons pas en mesure de garantir le maintien des prix actuels pour les renouvellements/nouveaux abonnements après une annulation. Si vous choisissez de renouveler l'abonnement manuellement à l'avenir, après une augmentation de prix, qui se produit généralement une fois par an, le prix mis à jour vous sera facturé." + +#: templates/account.php86, templates/forms/subscription-cancellation.php106, +#: templates/account/partials/addon.php:27 msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "Annuler la période d'essai va immédiatement bloquer les fonctionnalités premium. Souhaitez-vous continuer ?" -#: templates/account.php83, templates/account/partials/addon.php24, -#: templates/account/partials/site.php:296 -msgid "You can still enjoy all %s features but you will not have access to %s updates and support." -msgstr "Vous pouvez toujours bénéficier de toutes les fonctionnalités %s mais vous n'aurez pas accès aux mises à jour et au support %s." +#: templates/account.php87, templates/forms/subscription-cancellation.php101, +#: templates/account/partials/addon.php28, +#: templates/account/partials/site.php:300 +msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." +msgstr "Vous pouvez toujours profiter de toutes les fonctionnalités de %s mais vous n'aurez plus accès aux mises à jour de sécurité ou de fonctionnalités de %s, ni au support." -#: templates/account.php84, templates/account/partials/addon.php25, -#: templates/account/partials/site.php:297 +#: templates/account.php88, templates/forms/subscription-cancellation.php102, +#: templates/account/partials/addon.php29, +#: templates/account/partials/site.php:301 msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." msgstr "Une fois la licence expirée vous pourrez toujours utiliser la version gratuite mais vous n'aurez PAS accès aux fonctionnalités de %s." #. translators: %s: Plan title (e.g. "Professional") -#: templates/account.php86, +#: templates/account.php90, #: templates/account/partials/activate-license-button.php31, -#: templates/account/partials/addon.php:27 +#: templates/account/partials/addon.php:31 msgid "Activate %s Plan" msgstr "Activer la formule %s" #. translators: %s: Time period (e.g. Auto renews in "2 months") -#: templates/account.php89, templates/account/partials/addon.php30, +#: templates/account.php93, templates/account/partials/addon.php34, #: templates/account/partials/site.php:275 msgid "Auto renews in %s" msgstr "Renouvellements automatique dans %s" #. translators: %s: Time period (e.g. Expires in "2 months") -#: templates/account.php91, templates/account/partials/addon.php32, +#: templates/account.php95, templates/account/partials/addon.php36, #: templates/account/partials/site.php:277 msgid "Expires in %s" msgstr "Expire dans %s" -#: templates/account.php92, templates/account/partials/addon.php:33 +#: templates/account.php96, templates/account/partials/addon.php:37 msgctxt "as synchronize license" msgid "Sync License" msgstr "Synchroniser la licence" -#: templates/account.php93, templates/account/partials/addon.php:34 +#: templates/account.php97, templates/account/partials/addon.php:38 msgid "Cancel Trial" msgstr "Annuler la période d'essai" -#: templates/account.php94, templates/account/partials/addon.php:35 +#: templates/account.php98, templates/account/partials/addon.php:39 msgid "Change Plan" msgstr "Changer de formule" -#: templates/account.php95, templates/account/partials/addon.php:36 +#: templates/account.php99, templates/account/partials/addon.php:40 msgctxt "verb" msgid "Upgrade" msgstr "Mise à jour" -#: templates/account.php97, templates/account/partials/addon.php38, -#: templates/account/partials/site.php:298 +#: templates/account.php101, templates/account/partials/addon.php42, +#: templates/account/partials/site.php:302 msgctxt "verb" msgid "Downgrade" msgstr "Rétrograder" -#: templates/account.php99, templates/add-ons.php126, +#: templates/account.php103, templates/add-ons.php130, #: templates/plugin-info/features.php72, -#: templates/account/partials/addon.php40, +#: templates/account/partials/addon.php44, #: templates/account/partials/site.php:31 msgid "Free" msgstr "Gratuit" -#: templates/account.php100, templates/account/partials/addon.php:41 +#: templates/account.php104, templates/account/partials/addon.php:45 msgid "Activate" msgstr "Activer" -#: templates/account.php101, templates/debug.php361, +#: templates/account.php105, templates/debug.php371, #: includes/customizer/class-fs-customizer-upsell-control.php106, -#: templates/account/partials/addon.php:42 +#: templates/account/partials/addon.php:46 msgctxt "as product pricing plan" msgid "Plan" msgstr "Formule" -#: templates/account.php:154 +#: templates/account.php:158 msgid "Free Trial" msgstr "Essai gratuit" -#: templates/account.php:165 +#: templates/account.php:169 msgid "Account Details" msgstr "Détails du compte" -#: templates/account.php:175 +#: templates/account.php:179 msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" msgstr "Supprimer le compte désactivera automatiquement la licence de votre formule %s afin que vous puissiez l'utiliser sur d'autres sites. Si vous voulez aussi annuler le paiement récurrent, cliquez sur le bouton \"Annuler\" et commencez par \"Rétrograder\" votre compte. Êtes-vous sûr de vouloir poursuivre la suppression ? " -#: templates/account.php:177 +#: templates/account.php:181 msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" msgstr "La suppression est permanente. Ne faites cette suppression que si vous ne souhaitez plus utiliser le %s. Êtes-vous sûr de vouloir poursuivre la suppression ?" -#: templates/account.php:180 +#: templates/account.php:184 msgid "Delete Account" msgstr "Supprimer le compte" -#: templates/account.php192, templates/account/partials/addon.php155, +#: templates/account.php196, templates/account/partials/addon.php159, #: templates/account/partials/deactivate-license-button.php:35 msgid "Deactivate License" msgstr "Désactiver la licence" -#: templates/account.php:210 +#: templates/account.php219, templates/forms/subscription-cancellation.php:125 msgid "Are you sure you want to proceed?" msgstr "Êtes-vous de vouloir continuer ?" -#: templates/account.php210, templates/account/partials/addon.php:177 +#: templates/account.php219, templates/account/partials/addon.php:182 msgid "Cancel Subscription" msgstr "Annuler l'abonnement" -#: templates/account.php:239 +#: templates/account.php:247 msgctxt "as synchronize" msgid "Sync" msgstr "Synchroniser" -#: templates/account.php253, templates/debug.php:477 +#: templates/account.php261, templates/debug.php:487 msgid "Name" msgstr "Nom" -#: templates/account.php259, templates/debug.php:478 +#: templates/account.php267, templates/debug.php:488 msgid "Email" msgstr "Email" -#: templates/account.php266, templates/debug.php360, templates/debug.php:516 +#: templates/account.php274, templates/debug.php370, templates/debug.php:526 msgid "User ID" msgstr "User ID" -#: templates/account.php:274 +#: templates/account.php:282 msgid "Site ID" msgstr "Site ID" -#: templates/account.php:277 +#: templates/account.php:285 msgid "No ID" msgstr "ID manquant" -#: templates/account.php282, templates/debug.php233, templates/debug.php362, -#: templates/debug.php443, templates/debug.php480, +#: templates/account.php290, templates/debug.php243, templates/debug.php372, +#: templates/debug.php453, templates/debug.php490, #: templates/account/partials/site.php:219 msgid "Public Key" msgstr "Clef publique" -#: templates/account.php288, templates/debug.php363, templates/debug.php444, -#: templates/debug.php481, templates/account/partials/site.php:231 +#: templates/account.php296, templates/debug.php373, templates/debug.php454, +#: templates/debug.php491, templates/account/partials/site.php:231 msgid "Secret Key" msgstr "Clef secrête" -#: templates/account.php:291 +#: templates/account.php:299 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "Clef secrète manquante" -#: templates/account.php310, templates/account/partials/site.php112, +#: templates/account.php318, templates/account/partials/site.php112, #: templates/account/partials/site.php:114 msgid "Trial" msgstr "Période d'essai" -#: templates/account.php329, templates/debug.php521, +#: templates/account.php337, templates/debug.php531, #: templates/account/partials/site.php:248 msgid "License Key" msgstr "Clef de licence" -#: templates/account.php:359 +#: templates/account.php:367 msgid "not verified" msgstr "Non vérifié" -#: templates/account.php:416 +#: templates/account.php376, templates/account/partials/addon.php:120 +msgid "Expired" +msgstr "Expiré" + +#: templates/account.php:428 msgid "Premium version" msgstr "Version premium" -#: templates/account.php:418 +#: templates/account.php:430 msgid "Free version" msgstr "Version gratuite" -#: templates/account.php:430 +#: templates/account.php:442 msgid "Verify Email" msgstr "Vérifier l'email" -#: templates/account.php:441 +#: templates/account.php:453 msgid "Download %s Version" msgstr "Télécharger la version %s" -#: templates/account.php455, templates/account.php636, +#: templates/account.php467, templates/account.php649, #: templates/account/partials/site.php237, #: templates/account/partials/site.php:255 msgctxt "verb" msgid "Show" msgstr "Afficher" -#: templates/account.php:469 +#: templates/account.php:481 msgid "What is your %s?" msgstr "Quel est votre %s ?" -#: templates/account.php477, templates/account/billing.php:27 +#: templates/account.php489, templates/account/billing.php:27 msgctxt "verb" msgid "Edit" msgstr "Éditer" -#: templates/account.php:490 +#: templates/account.php:502 msgid "Sites" msgstr "Sites" -#: templates/account.php:501 +#: templates/account.php:513 msgid "Search by address" msgstr "Recherche par adresse" -#: templates/account.php510, templates/account.php558, templates/debug.php226, -#: templates/debug.php354, templates/debug.php439, templates/debug.php476, -#: templates/debug.php514, templates/debug.php587, +#: templates/account.php522, templates/account.php570, templates/debug.php236, +#: templates/debug.php364, templates/debug.php449, templates/debug.php486, +#: templates/debug.php524, templates/debug.php597, #: templates/account/payments.php35, templates/debug/logger.php:21 msgid "ID" msgstr "ID" -#: templates/account.php511, templates/debug.php:357 +#: templates/account.php523, templates/debug.php:367 msgid "Address" msgstr "Adresse" -#: templates/account.php:512 +#: templates/account.php:524 msgid "License" msgstr "Licence" -#: templates/account.php:513 +#: templates/account.php:525 msgid "Plan" msgstr "Formule" -#: templates/account.php:561 +#: templates/account.php:573 msgctxt "as software license" msgid "License" msgstr "Licence" -#: templates/account.php:630 +#: templates/account.php:643 msgctxt "verb" msgid "Hide" msgstr "Cacher" -#: templates/account.php:665 +#: templates/account.php:686 +msgid "Cancelling %s" +msgstr "Annulation de %s" + +#: templates/account.php686, templates/account.php703, +#: templates/forms/subscription-cancellation.php27, +#: templates/forms/deactivation/form.php:117 +msgid "trial" +msgstr "essai" + +#: templates/account.php701, templates/forms/deactivation/form.php:134 +msgid "Cancelling %s..." +msgstr "Annulation de %s..." + +#: templates/account.php704, templates/forms/subscription-cancellation.php28, +#: templates/forms/deactivation/form.php:118 +msgid "subscription" +msgstr "abonnement" + +#: templates/account.php:718 msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" msgstr "Désactiver la licence bloquera toutes les fonctionnalités premium mais vous permettra d'activer la licence sur un autre site. Êtes-vous sûr de vouloir continuer ?" @@ -1320,7 +1417,7 @@ msgstr "Add Ons pour %s" msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." msgstr "Nous n'avons pas pu charger la liste des add-ons. C'est probablement une difficulté de notre côté, merci de d'essayer à nouveau dans quelques minutes." -#: templates/add-ons.php:135 +#: templates/add-ons.php:139 msgid "View details" msgstr "Voir les détails" @@ -1359,163 +1456,167 @@ msgid "PCI compliant" msgstr "Compatible PCI" #. translators: %s: name (e.g. Hey John,) -#: templates/connect.php:110 +#: templates/connect.php:112 msgctxt "greeting" msgid "Hey %s," msgstr "Hey %s," -#: templates/connect.php:152 +#: templates/connect.php:154 msgid "Allow & Continue" msgstr "Autoriser & Continuer" -#: templates/connect.php:156 +#: templates/connect.php:158 msgid "Re-send activation email" msgstr "Renvoyer l'email d'activation" -#: templates/connect.php:160 +#: templates/connect.php:162 msgid "Thanks %s!" msgstr "Merci %s !" -#: templates/connect.php170, templates/forms/license-activation.php:43 +#: templates/connect.php172, templates/forms/license-activation.php:43 msgid "Agree & Activate License" msgstr "Valider & Activer la licence" -#: templates/connect.php:179 +#: templates/connect.php:181 msgid "Thanks for purchasing %s! To get started, please enter your license key:" msgstr "Merci d'avoir acheté %s ! Pour commencer, veuillez indiquer votre clef de licence :" -#: templates/connect.php:186 +#: templates/connect.php:188 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." msgstr "Ne ratez jamais une mise à jour importante - acceptez nos notifications de mises à jour de sécurité et de fonctionnalités, de contenu instructif, d'offres ainsi que le suivi d'activité non sensible avec %4$s." -#: templates/connect.php:187 +#: templates/connect.php:189 msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." msgstr "Ne manquez jamais une mise à jour importante - optez pour nos notifications de mises à jour de sécurité et de fonctionnalités, et un suivi diagnostique non sensible avec %4$s." -#: templates/connect.php:193 +#: templates/connect.php:195 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "Ne ratez jamais une mise à jour importante - acceptez nos notifications de mises à jour de sécurité et de fonctionnalités, de contenu instructif, d'offres ainsi que le suivi d'activité non sensible avec %4$s. Dans le cas contraire, pas de problème ! %1$s fonctionnera parfaitement aussi." -#: templates/connect.php:194 +#: templates/connect.php:196 msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "Ne ratez jamais une mise à jour importante - acceptez nos notifications de mises à jour de sécurité et de fonctionnalités ainsi que le suivi d'activité non sensible avec %4$s. Dans le cas contraire, pas de problème ! %1$s fonctionnera parfaitement aussi." -#: templates/connect.php:228 +#: templates/connect.php:230 msgid "We're excited to introduce the Freemius network-level integration." msgstr "Nous sommes impatient de vous présenter l'intégration Freemius au niveau réseau." -#: templates/connect.php:231 +#: templates/connect.php:233 msgid "During the update process we detected %d site(s) that are still pending license activation." msgstr "Durant le processus de mise à jour nous avons détecté %d site(s) toujours en attente d'activation de la licence." -#: templates/connect.php:233 +#: templates/connect.php:235 msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." msgstr "Si vous voulez utiliser le %s sur ces sites, merci d'indiquer votre clé de licence ci-dessous et de cliquer sur le bouton d'activation." -#: templates/connect.php:235 +#: templates/connect.php:237 msgid "%s's paid features" msgstr "Fonctionnalités payantes de %s" -#: templates/connect.php:240 +#: templates/connect.php:242 msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." msgstr "Éventuellement, vous pouvez l'ignorer pour l'instant et activer la licence plus tard, sur votre page de compte du réseau %s." -#: templates/connect.php:242 +#: templates/connect.php:244 msgid "During the update process we detected %s site(s) in the network that are still pending your attention." msgstr "Durant le processus de mise à jour nous avons détecté %s site(s) dans le réseau que vous devez vérifier." -#: templates/connect.php251, templates/forms/license-activation.php:46 +#: templates/connect.php253, templates/forms/license-activation.php:46 msgid "License key" msgstr "Clef de licence" -#: templates/connect.php254, templates/forms/license-activation.php:19 +#: templates/connect.php256, templates/forms/license-activation.php:19 msgid "Can't find your license key?" msgstr "Vous ne trouvez pas votre clef de licence ?" -#: templates/connect.php302, templates/connect.php617, +#: templates/connect.php315, templates/connect.php630, #: templates/forms/deactivation/retry-skip.php:20 msgctxt "verb" msgid "Skip" msgstr "Passer" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "Delegate to Site Admins" msgstr "Déléguer aux administrateurs du site" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "If you click it, this decision will be delegated to the sites administrators." msgstr "Si vous cliquez, cette décision sera déléguée aux administrateurs des sites." -#: templates/connect.php:333 +#: templates/connect.php:346 msgid "Your Profile Overview" msgstr "Résumé de votre profil" -#: templates/connect.php:334 +#: templates/connect.php:347 msgid "Name and email address" msgstr "Nom et adresse email" -#: templates/connect.php:339 +#: templates/connect.php:352 msgid "Your Site Overview" msgstr "Résumé de votre site" -#: templates/connect.php:340 +#: templates/connect.php:353 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "Site URL, WP version, PHP info, plugins & themes" -#: templates/connect.php:345 +#: templates/connect.php:358 msgid "Admin Notices" msgstr "Notifications Administrateur" -#: templates/connect.php346, templates/connect.php:362 +#: templates/connect.php359, templates/connect.php:375 msgid "Updates, announcements, marketing, no spam" msgstr "Mises à jour, annonces, marketing, pas de spam" -#: templates/connect.php:351 +#: templates/connect.php:364 msgid "Current %s Events" msgstr "Évènements du %s actuel" -#: templates/connect.php:352 +#: templates/connect.php:365 msgid "Activation, deactivation and uninstall" msgstr "Activation, désactivation et désintallation" -#: templates/connect.php:361 +#: templates/connect.php:374 msgid "Newsletter" msgstr "Newsletter" -#: templates/connect.php378, templates/forms/license-activation.php:38 +#: templates/connect.php391, templates/forms/license-activation.php:38 msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." msgstr "Le %1$s va régulièrement envoyer des données à %2$s pour vérifier les mises à jour de sécurité et de fonctionnalités ainsi que pour vérifier la validité de votre licence." -#: templates/connect.php:383 +#: templates/connect.php:396 msgid "What permissions are being granted?" msgstr "Quelles autorisations sont accordées ?" -#: templates/connect.php:404 +#: templates/connect.php:417 msgid "Don't have a license key?" msgstr "Vous n'avez pas de clef de licence ?" -#: templates/connect.php:405 +#: templates/connect.php:418 msgid "Activate Free Version" msgstr "Activez la version gratuite" -#: templates/connect.php:407 +#: templates/connect.php:420 msgid "Have a license key?" msgstr "Vous avez une clef de licence ?" -#: templates/connect.php:415 +#: templates/connect.php:428 msgid "Privacy Policy" msgstr "Politique de confidentialité" -#: templates/connect.php:417 +#: templates/connect.php:430 +msgid "License Agreement" +msgstr "Contrat de licence" + +#: templates/connect.php:430 msgid "Terms of Service" msgstr "Conditions générales de service" -#: templates/connect.php:750 +#: templates/connect.php:766 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "Email en cours d'envoi" -#: templates/connect.php:751 +#: templates/connect.php:767 msgctxt "as activating plugin" msgid "Activating" msgstr "Activation en cours" @@ -1543,8 +1644,8 @@ msgctxt "as code debugging" msgid "Debugging" msgstr "Debuggage" -#: templates/debug.php54, templates/debug.php238, templates/debug.php364, -#: templates/debug.php:482 +#: templates/debug.php54, templates/debug.php248, templates/debug.php374, +#: templates/debug.php:492 msgid "Actions" msgstr "Actions" @@ -1568,199 +1669,203 @@ msgstr "Vider les transients de mise à jour" msgid "Sync Data From Server" msgstr "Synchronisation des données depuis le serveur" -#: templates/debug.php:90 +#: templates/debug.php:95 +msgid "Migrate Options to Network" +msgstr "Migrer les options vers le réseau" + +#: templates/debug.php:100 msgid "Load DB Option" msgstr "Chargement des options de la base de données" -#: templates/debug.php:93 +#: templates/debug.php:103 msgid "Set DB Option" msgstr "Mise en place des options de la base de données" -#: templates/debug.php:170 +#: templates/debug.php:180 msgid "Key" msgstr "Clef" -#: templates/debug.php:171 +#: templates/debug.php:181 msgid "Value" msgstr "Valeur" -#: templates/debug.php:187 +#: templates/debug.php:197 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "Versions du SDK" -#: templates/debug.php:192 +#: templates/debug.php:202 msgid "SDK Path" msgstr "Chemin d'accès du SDK" -#: templates/debug.php193, templates/debug.php:232 +#: templates/debug.php203, templates/debug.php:242 msgid "Module Path" msgstr "Chemin d'accès du module" -#: templates/debug.php:194 +#: templates/debug.php:204 msgid "Is Active" msgstr "Est actif" -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:35 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:35 msgid "Plugins" msgstr "Plugins" -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:56 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:56 msgid "Themes" msgstr "Thèmes" -#: templates/debug.php227, templates/debug.php359, templates/debug.php441, +#: templates/debug.php237, templates/debug.php369, templates/debug.php451, #: templates/debug/scheduled-crons.php:80 msgid "Slug" msgstr "Slug" -#: templates/debug.php229, templates/debug.php:440 +#: templates/debug.php239, templates/debug.php:450 msgid "Title" msgstr "Titre" -#: templates/debug.php:230 +#: templates/debug.php:240 msgctxt "as application program interface" msgid "API" msgstr "API" -#: templates/debug.php:231 +#: templates/debug.php:241 msgid "Freemius State" msgstr "État de Freemius" -#: templates/debug.php:235 +#: templates/debug.php:245 msgid "Network Blog" msgstr "Réseau de Blog" -#: templates/debug.php:236 +#: templates/debug.php:246 msgid "Network User" msgstr "Réseau d'Utilisateur" -#: templates/debug.php:273 +#: templates/debug.php:283 msgctxt "as connection was successful" msgid "Connected" msgstr "Connecté" -#: templates/debug.php:274 +#: templates/debug.php:284 msgctxt "as connection blocked" msgid "Blocked" msgstr "Bloqué" -#: templates/debug.php:310 -msgid "Simulate Trial" -msgstr "Simuler l'essai" +#: templates/debug.php:320 +msgid "Simulate Trial Promotion" +msgstr "Simuler la promotion d'essai" -#: templates/debug.php:322 +#: templates/debug.php:332 msgid "Simulate Network Upgrade" msgstr "Simuler la mise à jour du réseau" -#: templates/debug.php:348 +#: templates/debug.php:358 msgid "%s Installs" msgstr "%s Installations" -#: templates/debug.php:350 +#: templates/debug.php:360 msgctxt "like websites" msgid "Sites" msgstr "Sites" -#: templates/debug.php356, templates/account/partials/site.php:148 +#: templates/debug.php366, templates/account/partials/site.php:148 msgid "Blog ID" msgstr "Blog ID" -#: templates/debug.php421, templates/debug.php499, -#: templates/account/partials/addon.php:334 +#: templates/debug.php431, templates/debug.php509, +#: templates/account/partials/addon.php:339 msgctxt "verb" msgid "Delete" msgstr "Supprimer" -#: templates/debug.php:435 +#: templates/debug.php:445 msgid "Add Ons of module %s" msgstr "Add Ons du module %s" -#: templates/debug.php:472 +#: templates/debug.php:482 msgid "Users" msgstr "Utilisateurs" -#: templates/debug.php:479 +#: templates/debug.php:489 msgid "Verified" msgstr "Vérifié" -#: templates/debug.php:510 +#: templates/debug.php:520 msgid "%s Licenses" msgstr "%s Licences" -#: templates/debug.php:515 +#: templates/debug.php:525 msgid "Plugin ID" msgstr "ID du plugin" -#: templates/debug.php:517 +#: templates/debug.php:527 msgid "Plan ID" msgstr "ID de la formule" -#: templates/debug.php:518 +#: templates/debug.php:528 msgid "Quota" msgstr "Quota" -#: templates/debug.php:519 +#: templates/debug.php:529 msgid "Activated" msgstr "Activé" -#: templates/debug.php:520 +#: templates/debug.php:530 msgid "Blocking" msgstr "Bloquant" -#: templates/debug.php:522 +#: templates/debug.php:532 msgctxt "as expiration date" msgid "Expiration" msgstr "Expiration" -#: templates/debug.php:545 +#: templates/debug.php:555 msgid "Debug Log" msgstr "Debug Log" -#: templates/debug.php:549 +#: templates/debug.php:559 msgid "All Types" msgstr "Tous les types" -#: templates/debug.php:556 +#: templates/debug.php:566 msgid "All Requests" msgstr "Toutes les demandes" -#: templates/debug.php561, templates/debug.php590, +#: templates/debug.php571, templates/debug.php600, #: templates/debug/logger.php:25 msgid "File" msgstr "Fichier" -#: templates/debug.php562, templates/debug.php588, +#: templates/debug.php572, templates/debug.php598, #: templates/debug/logger.php:23 msgid "Function" msgstr "Fonction" -#: templates/debug.php:563 +#: templates/debug.php:573 msgid "Process ID" msgstr "ID du processus" -#: templates/debug.php:564 +#: templates/debug.php:574 msgid "Logger" msgstr "Logger" -#: templates/debug.php565, templates/debug.php589, +#: templates/debug.php575, templates/debug.php599, #: templates/debug/logger.php:24 msgid "Message" msgstr "Message" -#: templates/debug.php:567 +#: templates/debug.php:577 msgid "Filter" msgstr "Filter" -#: templates/debug.php:575 +#: templates/debug.php:585 msgid "Download" msgstr "Téléchargement" -#: templates/debug.php586, templates/debug/logger.php:22 +#: templates/debug.php596, templates/debug/logger.php:22 msgid "Type" msgstr "Type" -#: templates/debug.php591, templates/debug/logger.php:26 +#: templates/debug.php601, templates/debug/logger.php:26 msgid "Timestamp" msgstr "Timestamp" @@ -2111,23 +2216,19 @@ msgstr "Le suivi d'utilisation de %s nous permet de l'améliorer. Apporter une m msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." msgstr "En cliquant \"Désincription\", nous n'enverrons plus d'informations de %s à %s." -#: templates/forms/premium-versions-upgrade-handler.php:24 +#: templates/forms/premium-versions-upgrade-handler.php:40 msgid "There is a new version of %s available." msgstr "Il y a une nouvelle version disponible de %s. " -#: templates/forms/premium-versions-upgrade-handler.php:25 -msgid " %sRenew your license now%s to access version %s security & feature updates, and support." -msgstr "%sRenouveler votre licence maintenant%s pour accéder aux mise à jour de sécurité et de fonctionnalités de la version %s ainsi qu'au support." +#: templates/forms/premium-versions-upgrade-handler.php:41 +msgid " %s to access version %s security & feature updates, and support." +msgstr "%s pour accéder aux mises à jour de sécurité et de fonctionnalités de la version %s, et au support." -#: templates/forms/premium-versions-upgrade-handler.php:34 +#: templates/forms/premium-versions-upgrade-handler.php:54 msgid "New Version Available" msgstr "Une nouvelle version est disponible" -#: templates/forms/premium-versions-upgrade-handler.php:36 -msgid "Renew license" -msgstr "Renouvelez votre licence" - -#: templates/forms/premium-versions-upgrade-handler.php:53 +#: templates/forms/premium-versions-upgrade-handler.php:75 msgctxt "close a window" msgid "Dismiss" msgstr "Fermer" @@ -2140,6 +2241,43 @@ msgstr "Envoyer le code de la licence" msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." msgstr "Indiquez ci-dessous l'adresse email que vous avez utilisez pour la mise à jour et nous allons vous renvoyer le code de la licence." +#: templates/forms/subscription-cancellation.php:37 +msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." +msgstr "Désactiver ou désinstaller le %s désactivera automatiquement la licence, que vous pourrez utiliser sur un autre site." + +#: templates/forms/subscription-cancellation.php:47 +msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" +msgstr "Dans le cas où vous n'avez PAS l'intention d'utiliser ce %s sur ce site (ou tout autre site) - voulez-vous aussi annuler le %s ?" + +#: templates/forms/subscription-cancellation.php:52 +msgid "license" +msgstr "licence" + +#: templates/forms/subscription-cancellation.php:57 +msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." +msgstr "Annuler %s - Je n'ai plus besoin de mises à jour de sécurité et de fonctionnalités, ni de support pour %s parce que je n'ai pas l'intention d'utiliser le %s sur ce site, ou tout autre site." + +#: templates/forms/subscription-cancellation.php:68 +msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." +msgstr "Ne pas annuler %s - Je veux toujours recevoir les mises à jour de sécurité et de fonctionnalités, ainsi que d'être en mesure de contacter le support." + +#: templates/forms/subscription-cancellation.php:103 +msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." +msgstr "Une fois votre licence expirée, vous ne pourrez plus utiliser le %s, sauf si vous l'activez à nouveau avec une licence premium valide." + +#: templates/forms/subscription-cancellation.php:136 +msgid "Cancel %s?" +msgstr "Annuler %s ?" + +#: templates/forms/subscription-cancellation.php:143 +msgid "Proceed" +msgstr "Poursuivre" + +#: templates/forms/subscription-cancellation.php191, +#: templates/forms/deactivation/form.php:150 +msgid "Cancel %s & Proceed" +msgstr "Annuler %s et poursuivre" + #: templates/forms/trial-start.php:22 msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "Vous êtes à 1 clic de commencer votre période d'essai gratuite de %1$s jours de la formule %2$s." @@ -2205,20 +2343,16 @@ msgstr "%s restante(s)" msgid "Last license" msgstr "Dernière licence" -#: templates/account/partials/addon.php:111 +#: templates/account/partials/addon.php:115 msgid "Cancelled" msgstr "Annulé" -#: templates/account/partials/addon.php:116 -msgid "Expired" -msgstr "Expiré" - -#: templates/account/partials/addon.php:121 +#: templates/account/partials/addon.php:125 msgid "No expiration" msgstr "Pas d'expiration" -#: templates/account/partials/addon.php259, -#: templates/account/partials/addon.php:312 +#: templates/account/partials/addon.php264, +#: templates/account/partials/addon.php:317 msgid "Activate this add-on" msgstr "Activer cet add-on" @@ -2246,49 +2380,49 @@ msgstr "Désolé pour le dérangement et nous sommes là pour vous aider si vous msgid "Contact Support" msgstr "Contacter l'Assistance" -#: templates/forms/deactivation/form.php:56 +#: templates/forms/deactivation/form.php:59 msgid "Anonymous feedback" msgstr "Commentaire anonyme" -#: templates/forms/deactivation/form.php:63 +#: templates/forms/deactivation/form.php:66 msgid "Deactivate" msgstr "Désactiver" -#: templates/forms/deactivation/form.php:65 +#: templates/forms/deactivation/form.php:68 msgid "Activate %s" msgstr "Activer %s" -#: templates/forms/deactivation/form.php:76 -msgid "Quick feedback" -msgstr "Commentaire rapide" - #: templates/forms/deactivation/form.php:80 +msgid "Quick Feedback" +msgstr "Commentaires rapides" + +#: templates/forms/deactivation/form.php:84 msgid "If you have a moment, please let us know why you are %s" msgstr "Si vous avez un instant, merci de nous indiquer pourquoi %s" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "deactivating" msgstr "Désactivation" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "switching" msgstr "Changement" -#: templates/forms/deactivation/form.php:269 +#: templates/forms/deactivation/form.php:332 msgid "Submit & %s" msgstr "Envoyer & %s" -#: templates/forms/deactivation/form.php:290 +#: templates/forms/deactivation/form.php:353 msgid "Kindly tell us the reason so we can improve." msgstr "S'il vous plait, dites nous pourquoi afin que nous puissions nous améliorer." -#: templates/forms/deactivation/form.php:411 +#: templates/forms/deactivation/form.php:478 msgid "Yes - %s" msgstr "Oui - %s" -#: templates/forms/deactivation/form.php:418 +#: templates/forms/deactivation/form.php:485 msgid "Skip & %s" -msgstr "Zapper & %s" +msgstr "Passer & %s" #: templates/forms/deactivation/retry-skip.php:21 msgid "Click here to use the plugin anonymously" diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-he_IL.mo b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-he_IL.mo index 8afad6ec4c97cfe9355ff8167d1efe080dc8bd13..a7de799c1a74d6a7e62af8d2ed40110c41bf7842 100644 GIT binary patch delta 12097 zcmZ2Fk$Lkf=K6a=EK?a67#MVz7#L(27#L~<K|BVAJ4y)Jk%58Xt`Y-7HUk5LyfOpB zS_TG&Ze<3BWCjKXOBDu&U<L+;xhf0{stgPaA5|C_xEUB2#8n}*vMK|ECIbV5zA6I) z8v_GFq$&f05Ca24f+_=p83RK-L$N9Y!xjbxhE=Kz4Dk#M4Do6V49W})4Exm>7$g}O z7#^!JFz_%iF#J_xVBln6VBk_`VBlh4U=UG<7$~pKz`)MHz@Vniz`()4z@P`^n?w2b z>I@7H3=9k&>I@7X3=9mN>JSH9QfFZBXQ*djc&g68z|6qFV5-5uAP4f11_OgU0|P^Z z2E^bB4F(2&1_p)(sQd(|_<9Y9h1)eCK0Tnpz#zcDz;H%`fk6ZmVj2t#q6`cSpP=F# znhXqT3=9mCnhXrO3=9konhXpg^$ZLQd72QPHA5BjYBDhJF)%P}0V!Z$U^uJ^aq$gJ zh>u@uLLBx<lYzmMfq~%{ly9H~aj1nB0|PI}$663`!?Yj{OweLrP-kFZ$kAe8kYHe7 zn4-nNP!9^)wNQn-v>-k>qQ$_F&%nTNRSROFt2P6}JO%~^A8m+3UTZTjNHZ`n{L^M& z03{PC9Z1@-)nQ;TVqjp1(qUjwWME+E)nQ;rWME)eufxD#z`(#DsLQ|rN?uO73=Con z3=AQ<4E122X6r(HRHe(nAk4tP&;;dA(}e`_JScy;E&~G#$Ut3)54S)KJfsWp;T2s5 z25$xih6lP32kGcRJm9GZF*iVufngE@14D`)Bn^GntA|K1=|gBSeMn-{(uV|{xjw`q zM}0`h`0GP_o}kab5DCgH`jDu)29<xR4{^vheTc)E3?L5XHh@HpfB_`v6$}^{G(c&s z-hhF@kb!|A$pDglra(39GJsgP-vAOa7oY~*Fo3xHg#pB&pA8_13}gr>7l;``94==F z32F^Phy$z)A^PkMAyMdM$iPs+z`#%+YskPbg@J+Lnjyr%Y$J#P6-EpU;-IK7g7|Qj z5hR3G8Zj`)FfuUgHDX}sXJBBsWejm(mI(tx2?GN|kqIQ*J~x3ljL{TAi<?41MAsBz zj+rSqx79OvnL>gz(-h*uR#OIsT?`Bi6HFNxrZX@wc$+aWM1#r!GX{n<1_lOua|Q-h z1_p*@=8&jaV-Cr_yUZa`vd<in=p-y4>Z&Xt*}1_2;?M;a5Pd7abUg#ZHVXy@YX$~} zBNmXLVz7iH8dggNhJOqU3_O+)ac(P!0|l%gAteo^HLM^ZWNO90kj22j-~#2Zw}OP^ zJ}ZdNPgpT97&9<1T(n|faAag)V6|po5C-LccN+$VItB)YXd8%6ZrLy}gfcKN+_Qm% zjEOBI(FE8sFi0^lFl5?7iqsZc1_lcT28MOEkOJkoEhK0~?I1<6rX3^-YwaNUeySY< z0}}%S!(KZE244mSh68pC4E5#=3=Dks3=HWE3=D4e3=9Pz1MMMkDDMCXLQ4k*hDuP- zJ3t(=(*Y8smmDCe{gVSEQT=m(#I>L!gs<+%z@Wguz+mMF3HoS9NQfjmLK1zhBSSrd z9s>izd`D1O%)oHY5mX~EFvvMEFn}tZc}@_EA2>lYL^(q&?s101@fv4Hi1E2FFgP(V zFbKIYFz7HaFoe25qO8dU5>@R`dWs7JgDe9B!$KE`NA|naL*n#?3nb1TyFgs}$_0{r zKDj`A$l?m21zaIMlyQZ`sgWxKg9!rzgS9Ip4HURSd|2-aaagA-#N1w2h`Cds{5h_W zs9X$E2&yjkK_yN>ExHJ$@47;w;-xFZN6c=JqLaf7;xl<Dt>ebPZ~|1IxG^v+V_;xl za%W(8%D}*|(w%{!n}LC$-vi<xX-|j;<UJupbiJu3q^Jz{goH$iC&Z$9Pe@{E@r2Z7 z?VgadFvk;8P%ZLgV9;h@U^w9kNn~F<A=!$@3*s;-F9rsE1_lOoFNnqAUJMMmphWHk zN$e-Rz#&u5;NcAk8h>v{Y7h5@SXAr{3GzyBNKm(WLmb%W4Y6pZHzXG<_l9`jB2?Ww zZ%CAU_l9^x#|KhN8u~zr+;ks^eG_~b7@mRZ{~11zAg%X>WTR=mkZg3s7m^Kc_(FnK z&kvFazxzRapy>}O30L?-3aFz2;1Z2NF%axC28TdMneQG5NfY6LkTjAQ2ysY3AOnLI zDF4q4gjAzP0wESW4}=7*WDo;`76Su=YY?R2P!Pnx;K#tgFg*z3gJ(gIxO@lYvjj7M za}!T6BxJ0EAr43lhUA*kV2Hk{!4QYc4Q61d2UQwtf+0b>B^VOa`=J_71VeJc4XF4l zsJhR=kjm*F)FA#4NR-KiK(due2m?bn0|SF?2qdbehCo7iaR|ixT_KRve>jAp9^5Fr z7XnEnPoWB4hCp2UDFot!Um=jRz!eH{kXR_h!5X2ExHS%CU?>KajG+t+IiRLjC?v$Z z!XQ2^41+khAq?W6iD3|j&JU}HFm{AN;{0M5#Nwx6kQU3^Fi4`53y1j7DjX7*4&ji* z<rNOG$UmHc!H0o?p)4FyNgal&*NT8R+#mwt0GkMiIlfTw;Q9zic8QOGSez39abZaW zByO9a@-v_YERA4bSkJ(~uq}dt0n~0!i)3J!#=yYvClZp~CPzWy`fwB^4Lpv5gcNTy zgqDbAV2EL0U{H>Rw1(>&q8S+47#J8%Mnm#>Kn$epPK|-2=86~w24_&Bi-9=kb_~RV zk1-4kt)MntECWLdNIn*ld;Y{ie5e%%@t8pzBsbW`LCkZBgH%Szao|d*o}oLAfx(@D zf#GHxBxn`mAqHqeX~TF(P@6;fHc-A(JOhI(0|SG5JS122#zP!_CmxbU-p4}{9b*C{ z4M;#~^#n++GD`r3cs&C{B2*wVfq~%;s96k_U|=XrggB%UO4lbseA=1_NyV=cAwK+^ z2uVW>Nf5qd62u{DNf3uyCV?zsV6aPKU<d)#vPldKnG6gJvy&JY@<92YH5rm!N|GVv zz?ozQ20I1@hWE(~49%b(O$wxT+mr(CGBJEjfkc%~DkQBqra}^ze=4Nsl#mLEik4JJ zZMP{E5_K0+A&K=_Dx^-~O=DoF2laf^(;z<5PJ`qElQaef6;KBv4ID=dxoMCf-JJ$W zWM|VLY2a@fq@N(04smdAIwZ)?q(dxvoX)@y1?sY8Ffep6FfgQMKtkX{1_MJ7s9?*4 z*8ejyAtl%GOo&UrWkQ0GCyN2p8e@>pf*2H;1!+QU$zouzVPIf*kp*#pYBmEX^ckjR zGcW`&Ffjbch7{eNIgmc({2T^`Squye|8pSygIT$dBKTQuJtXn*=RtxlJP(p>s`DTr zurv>1&?%_6LOvuUyz(KHPE0<e?O2%)iJGnXkdSzj4@o=P1(1@?umBQbJ_QgD<`h88 zZ>leV#KrOgNI`QDO5ZJj#NE#VNKlFwLQ<_=Ap--b$(C6N3F?J~5Oq5WA&Kx>AtZ#} z7edmAauLKriy}xh?N<be;<O@&2kNVeAO=q_f>b_-iXaa80#ztb3<(*PVu-j$F(d?1 ziXlaFSuv!9Yb%EMa8fbEVVjB}4mep1$rbmCA!+P&F(kWwDF&AZ^$gA>5FaF!K!U2F z1Y+>)5=g3E4W;*#Kpc3s1d^Tpmq2{NUJ6k!T?%oCb}7U{^HNBO=K|&XmqJ1y2CA;4 z6jZR)GcYuiLh|Vms6i*88g7<C3Z!SH5Qlvzg~Ta$86<HEmO(63DT5R+24xWS_E6dr zDj!@1aZr32B)jH7<*Pt6DF3%W74|_D&Vtg*%NQ7hSr{0$ltEg<C#oPrFkICP3>~1# zrW!H?^S>GrMaeagRNY<!36Tvo5C<NBil2e<zt%uJz*x(`P;UkrN~whm!Fbm~vJ0p; z0vcFIsDmWVX>|~nZ>WP9xUUXk!6~TtEvWblsQ8yUNJy~ML-g_0Lxx~v>LHa*Y(2yQ z%jy~G8T=U-7<Se}>VM7#NFw2d(qaveIFxUI#I;rfIMFcJH9&$i7Al|B0C8Ap10?Y^ zHb4^Jj0Q+HTiXDM`%4Xwe#WZ?NYBZtu^tk)#f=ab_ccPA#WNZq*=biJ#GuQK5Es8_ zgw$rg8zG61sR_~m;c9|7)S(IDWA7$Nwu@|nn48}O(O=mFsr`DIAP(D7-vr4{H=*?F zCP<L~ZGx0+;?0l{X>Vp=xB}`GH$&u8TOf5peG8<mc&G)EpWn4WhG4i`AtkC^E2O8C z+X`vWoNt9R-$8XgXb7iXtqtN*r#6U15p9s5PHck&aVb>1sSV=L?lwqnncD^l@<mYb zbx{6+Hb@bBrVUaeO0+{l%)cFCZdf~H2qvo?9Afnhf7>Ajb96uwl~e~rgH{K`L53ZW zAhqg%lm{Likb)?(gMp!!fq|j40}{8)oe+;mLutcKh<^7@h<O2>kPr&*ghXvgCn&en zGcfdaLJF2`osgh;(FyS(Ul+te;VwvAt8_seqSFO&uvHf%gnYUn*)OsS>?4NSE=Zhr zK-EoxiZ6lE>$@OPxT}kSp#qfuuXHgm9AIEz@a={qHohK+0m?m)M55aR@mWw0q&uC_ z1L=5l_CSVUmi0m`HtT~7!8rCoJ=6yY@)vy&{eSu(>V*0s_Q>`#Fw}#(-$wnARGHWh zQP9~B8G@P84;g~-p8)CMJf8q*-8xT%IB?ZOh(TK>LbC74iI5?fvlAH@QbB#cNf7gT zCqY7J#w17x?wJG$fm4$h>cJzGPbNXC(NB{gai%vJqS1UZWC+G-GDO^Q3dAQ~Qy>N; zOo2o})f7lbwNHTz!K{I*6Q2rksP0rq5p6ydQaid$g$%(|O|6II_dU}feY$(oAc-Y* zI;7rDnGSLJuIZ3Ob8kAN`u#o~Qljb4U|@)4U|=Yi!NB0fz`$^B2Bb2RoC#^Vna_kI z&fPO1A$)lz#3R3FLRwZV^|K%b2F-#D!F0`n48eSw1@U3>Y)Ce%oedcY>6{J8@62-` z*-L*8B#zVOK+;Cl97qVwo&yPyjZpDxb08t`eGVj-vCU;*umX+$iOq!+6oGRgMPtKU z$Pmm0sDglb5R1F#K@t_~d`LDjpARWmLgqu_e%pLV|9;ne1_oOO1_q4<kX)3u0OFDC z1(1+vT>vp>?gDVbrk>&a0!UncTL1}q#)XhL<yZ*GW}*urA)vkx;xprgkcNgQR6cVd zq`zOi5aPoP3n3x0e<8$Smls0Jy}l4)&pjyr<w8)=U(dks0crvFB8UR<MGy;>7C{`K zw+LdP!y<@}5*9%UpwvYWhc-gh^(}&o6D(K+8G^}N3>ktESOOV>`L+b&kfx=ON~&`y z1A`(c|1VeyNo0qXLVWOSDa4|$Q2G~C!~dm_xD#6jDX7$zK@y?QGKl`(We^8%Tn2I2 z;boBK`h{f>k1;HVL=pFLNMf&C&cIL)nv?ml98$vlUk>pZ`wECll~+K5TnkD&tbkY$ z2IXh0fV7tDRzT9kiWLwK99;p4k}E497IUs-U`SwKU=UdeX&slYgxI%bB||;KGX@5R zJuAV9fno6~NUe5i6)0{P7<gAhT&%Gg613A+GcdS;=7`one6VZ{q$E^b3n`$S)<HsI z-a1G&JG2gx7EZ5&lmqvn{Fmz>9{alvI{qiT9+Eoc)<YT?X6qp?4_yyQy$S0fKC4;} zX}xx?hXnDB^$>%eu7~*O_j*WfV%`7=8KVsl{V^LLt?aT55Pb_bKtg(5{RW7}QyU-_ zUV<vPy8#l{uQot}{MQCZ1A=EG#7FWQAr3a)2yvMAMo8l{Y9pjvNZ1JJQ%;Afd%qEq z=-4+wLPl;AB!uhLH$mdsX%i&7cy59i=(`D0R>y3DI3#Nm#Nw(=kdm-(6U1T5H$hrJ zJ2ydwVBT+nlpo2PA!*?8W{5h8Esz3AYYW6&?=9evu4jnc0x_^+3&ceew?HghvjtKF z@7V$gDxs~A5YpQU$)1*5Ar5lg3Q0SWTOqCEhOLlF>djV2hy-tgSRA<xqONKiMBl<~ zAam*&7`ASM1j)f|5DQLigT(1osK(dZAR)xF9U?Bg9Wn%?xg9bDb8|an2qu3AB)hTg zgmg~Lc0!u%#XBMGh^;#zaer(l149!71H<K=3=AHi{2#UpG6XY!7dS{5)OJHOxbB8j zCSkilJrxFqlHHIruwyqQ|DWE?z_1Q9<+>X(FtK0{q~FiF7vd4)y$}c6?S)tzvKL~0 z;$DdUhP@07^`N1bWqTpn?%iHUHZj}>F~E8sBnaL1K|;W1AH<+wC_iBzWC$jGA0$_- z-3JNkKTukBKP1uF?T0u#bU!4~X6%PdP&Djks0Yv4UfB<6kKf%78G;cz0Ewf|2Ox=& z{UF34Vh15Ul{pA;VB<kZ+UPk5F?a=(K5!6H-QG9|DM=X)L2?=EA;<s(?;*$#Owyrx z28KM)ob4e<cCkJT8G@O77*bMgI}EAEzaEB!P~{Ow_S$m<;-k+;AVJJ_6q3qijzTQf zI|`}R!;V6tvhOHF-Tb4FM7Z@Rq+GaDe-z@vZ$}}C@b^(jz0GnA)H-Eg&^!idC<GmY zgvf$pkVLlS7^G5qatzW>U^&jf5W&E}P;wlSi_RX0nDgQ|Wax$W1caV(0ulnsCm};H z^%W-}`S<im1_n<C1_s7ckOqeLDM%tIKLv@Jxu+mQFxO5&nox$PA*np|G-Up8(P_vK zjQJS`hH3@|hFNDAz|;9+XCZXiS;!E~wX=}^LE$-YNYyj!JqHQur{^F(QaKOtq04!& z0)~?FkaA$oc}UUv={&@TiWeYhz~%xZNZl_$vRmE-NJwqC0143}7a#@BS*ZHk7a)oG z*#%I6SI@xk7Ao-(O8<dsV7~}4K=dNSBDsr@?4x-RQrmez#Z#el0aShUMM&Ccxd_QE z)1l%^p!C{{5C?4o=>z5eBNrhh;Q5P?#PR~F@#jTI>SwzINi3q5ATHOx1aX)dl(xSF zvC!iZB>P2Qf;hP55+o$rFF_nK8>)WAB}kKQ<0S@$deA}v?aPpY#_}@6W#N}07NuT> zSd?=aVqhth-*6d{ojRf76E8#NisoDf6{!pi^Dje+@YPWDyDvi=a0JS~co`J*3=Fp} zGt@Jbf@V6Q7KU7b`rrygL(LUPfz){glA0%9fs_L~pz`~!KpcAd3dEt8p!97h{RAri z_6o$oU#>tr@&_u;epLlx0N+)J0isY^?kdD5>Q@;U7!)QiEOx9{2+2rQC`imqQ7B6- zD$dN$Q^-$KP&F)8$ShV!%qdDuOsQ1J%quQQ%*jbj(NhS>Nlh$HRY*)O$t+7ONma-! zQ7Fk*C@x7XDp5#E%}Y(oEXmAES18FyRZul5R!B=tEGaEYE!I;|H7;fV8LO*MkW-qT znWs>aS(1~gGr3D~4wGT=WWm<N&8kZ4nI<nSww-)IWsQ?#fG2}vu(PM9LSj)-ez`(U zYFddxW^#TWi<)wUk)fr5HHvgmW_kvaym_LD_2e6>`P`}qH*B_5yTl@0TB(qzkdv95 znpd2vke6T1;8a=(<xl3(uGCd6R!~z2D9TSxO-*5NPRvVA%~4P-R?t=ORLIL$$jQ%3 zPc2f&OHEBtNX)C8ywOuOAuqp3p}4f5Ait<YAuYcMq&g`zIkB`jRl!p|S0OLIM4=!j zF)t4sF8K-|ad7YyE9B=Xlw@QU>nP+GflO1#FUd$PQYg+WN!3GGZ9lnI+go3?7%Gwj zGDfvnPY<R9EC4dFxHPFaxhS)sBr`v6^B(Q@jM@1`3Z;3_$OCBusZuRgD9_BvQAjK; z$<IwJ$xKen$*ELG$t+Gx%1H&s8#Hiq6v{I)lQR@5^GnrpaukwM6(A}gKFH5gNX$cW z@8-F>i<z{Ok;6+pSE0BBWL0KfNorAQaY<^5LS~*qdTI$MiGYGmEwNakJQd`aVr27^ z^Ycm)lS^QMsyErvz-{w=gD+h5xu8H!%qvj{El4j)Oi5Mn%P+}HPPJn2%u`S;29e32 z)LEHds*qTes^I4zf(ZKjJcZI?NGN0$gCYqU`rz<Z(7=cSO$A+r^8C`A6i^5#<YZ>2 zDoB>(D?q&n4N9m7>?eP)7MuLmI$tI+Co=_NVoGXBVrEXULUMjiPHHkZQo?N(GIKhn z7p11=rskDQes8}}GBdphl#Tqsu~rPqOMa;(<@rU~oBJGiStskd%Ep7E3z7EFA_C$N z9fi`ooYdlCuv?KcXJUF{W}ZTMW=V!ZqCy$ibp=JKxtXQ8&_tg)d4{VhW76h*uFfp= zdHE%vG>}-LP@W1&CZN=dWMg_!VqQvGA~>DqmzJa?f+Dq`C^H!pu%N_Wl$w`Xo|sdt zpO;#$fSe+W6%x}*Qi~K4p&^))2nrHC1<y3Fo0Bv0^NZ_KK>+|Z0-O?&^(*8i=9Ple zDyZzpNL5HH1(hs1aAQHPNL9$pOD+PHP_WcnQds~^;`zzRrA44Tmz=7Qs8E@jSfm5C z863PxsS3#%iQ+}+sVQKaOA8QQOV!)_)AKD8Q)<fO2R=!RZj+sT`zI?YicCK5`$7c8 ziIB9BGx^_Y>B+bKzHx!dk=%TcKQ~|WuV)ulEe02^#R`dKiJ3W|?4-BZC7g+K@+MCi z=Dhr(&4CHF?33@N^K-zAoqRw^oDH0*awdx(*4g|#{XQ!@G=ollnybc@S`I6>Cv)a4 z;YKO~Ca=!Z-h3g?f|1+MP}j&*!NA<g$Y`^0K?U>V#l`m7bS(ELKP>KIRs|RGDVy_3 zcEJmIQBWZdFU~;>aJj8hQ6=mMt6&fX_~s=QENleIZ@<Z(>+DPr#r9w;$_?s`tst%g z7u%$k>PhtpO!Y3Q&<qaBb95}?8Lm&fKJ)sF%_kb)F&Vn#=c$)KvofeK)dkmeR4VVc zw!~~MYz^Y6_rzJ?U!Qn=(e<g<C)2dpS15&)`?!n!a}%$~d*(sPRZzXHfTh%5FiC?2 zsnp*;?KGZJzhim<JxhJ*xdN=Cr9SpjfAUYy*v$=#48bM;>Lpctfu)(r*$Qr{sVPZ` z$=Q=FmTrJn0|t{tm)*iw74U9WSgy>7Tpu{ExX2+Fl95`J3T|kFvJj}<jZ!rTZ#;vj z8eZ+<;+X7wSc5k*zZBHogtYZg>j(YKd55PkD?;lBhU*ique!eC`poNd8FGsmKov5y ai9cEY_+{j(V$ul%){>&k#GJ|cC&~b0du1R1 delta 9227 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 diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-he_IL.po b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-he_IL.po index d9d65b8f7..2764ad810 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-he_IL.po +++ b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-he_IL.po @@ -1,4 +1,4 @@ -# Copyright (C) 2018 freemius +# Copyright (C) 2019 freemius # This file is distributed under the same license as the freemius package. # Translators: # Rami Yushuvaev <r_a_m_i@hotmail.com>, 2017 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: WordPress SDK\n" "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-05-27 16:16+0000\n" +"PO-Revision-Date: 2018-11-25 07:22+0000\n" "Last-Translator: Vova Feldman <vova@freemius.com>\n" "Language: he_IL\n" "Language-Team: Hebrew (Israel) (http://www.transifex.com/freemius/wordpress-sdk/language/he_IL/)\n" @@ -22,1294 +22,1391 @@ msgstr "" "X-Poedit-SearchPathExcluded-0: *.js\n" "X-Poedit-SourceCharset: UTF-8\n" -#: includes/class-freemius.php:1551 +#: includes/class-freemius.php:1688 msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." -#: includes/class-freemius.php:1553 +#: includes/class-freemius.php:1690 msgid "Error" msgstr "שגיאה" -#: includes/class-freemius.php:1871 +#: includes/class-freemius.php:2011 msgid "I found a better %s" msgstr "מצאתי %s יותר טוב" -#: includes/class-freemius.php:1873 +#: includes/class-freemius.php:2013 msgid "What's the %s's name?" msgstr "What's the %s's name?" -#: includes/class-freemius.php:1879 +#: includes/class-freemius.php:2019 msgid "It's a temporary %s. I'm just debugging an issue." msgstr "It's a temporary %s. I'm just debugging an issue." -#: includes/class-freemius.php:1881 +#: includes/class-freemius.php:2021 msgid "Deactivation" msgstr "דיאקטיבציה" -#: includes/class-freemius.php:1882 +#: includes/class-freemius.php:2022 msgid "Theme Switch" msgstr "החלפת תֵמָה" -#: includes/class-freemius.php1891, templates/forms/resend-key.php:24 +#: includes/class-freemius.php2031, templates/forms/resend-key.php:24 msgid "Other" msgstr "אחר" -#: includes/class-freemius.php:1899 +#: includes/class-freemius.php:2039 msgid "I no longer need the %s" msgstr "I no longer need the %s" -#: includes/class-freemius.php:1906 +#: includes/class-freemius.php:2046 msgid "I only needed the %s for a short period" msgstr "I only needed the %s for a short period" -#: includes/class-freemius.php:1912 +#: includes/class-freemius.php:2052 msgid "The %s broke my site" msgstr "ה%s הרס לי את האתר" -#: includes/class-freemius.php:1919 +#: includes/class-freemius.php:2059 msgid "The %s suddenly stopped working" msgstr "ה%s הפסיק פתאום לעבוד" -#: includes/class-freemius.php:1929 +#: includes/class-freemius.php:2069 msgid "I can't pay for it anymore" msgstr "אני לא יכול/ה להמשיך לשלם על זה" -#: includes/class-freemius.php:1931 +#: includes/class-freemius.php:2071 msgid "What price would you feel comfortable paying?" msgstr "מה המחיר שכן תרגיש\\י בנוח לשלם?" -#: includes/class-freemius.php:1937 +#: includes/class-freemius.php:2077 msgid "I don't like to share my information with you" msgstr "אני לא אוהב את הרעיון של שיתוף מידע איתכם" -#: includes/class-freemius.php:1958 +#: includes/class-freemius.php:2098 msgid "The %s didn't work" msgstr "ה%s לא עבד" -#: includes/class-freemius.php:1968 +#: includes/class-freemius.php:2108 msgid "I couldn't understand how to make it work" msgstr "לא הצלחתי להבין איך לגרום לזה לעבוד" -#: includes/class-freemius.php:1976 +#: includes/class-freemius.php:2116 msgid "The %s is great, but I need specific feature that you don't support" msgstr "The %s is great, but I need specific feature that you don't support" -#: includes/class-freemius.php:1978 +#: includes/class-freemius.php:2118 msgid "What feature?" msgstr "איזה פיטצ'ר?" -#: includes/class-freemius.php:1982 +#: includes/class-freemius.php:2122 msgid "The %s is not working" msgstr "ה%s לא עובד" -#: includes/class-freemius.php:1984 +#: includes/class-freemius.php:2124 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "אנא שתפ\\י מה לא עבד כדי שנוכל לתקן זאת עבור משתמשים עתידיים..." -#: includes/class-freemius.php:1988 +#: includes/class-freemius.php:2128 msgid "It's not what I was looking for" msgstr "חיפשתי משהו אחר" -#: includes/class-freemius.php:1990 +#: includes/class-freemius.php:2130 msgid "What you've been looking for?" msgstr "מה חיפשת?" -#: includes/class-freemius.php:1994 +#: includes/class-freemius.php:2134 msgid "The %s didn't work as expected" msgstr "ה%s לא עבד כמצופה" -#: includes/class-freemius.php:1996 +#: includes/class-freemius.php:2136 msgid "What did you expect?" msgstr "למה ציפית?" -#: includes/class-freemius.php2729, templates/debug.php:20 +#: includes/class-freemius.php2942, templates/debug.php:20 msgid "Freemius Debug" msgstr "ניפוי תקלות פרימיוס" -#: includes/class-freemius.php:3402 +#: includes/class-freemius.php:3670 msgid "I don't know what is cURL or how to install it, help me!" msgstr "אין לי מושג מה זה cURL או איך להתקין אותו - אשמח לעזרה!" -#: includes/class-freemius.php:3404 +#: includes/class-freemius.php:3672 msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." msgstr "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." -#: includes/class-freemius.php:3411 +#: includes/class-freemius.php:3679 msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." msgstr "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." -#: includes/class-freemius.php:3516 +#: includes/class-freemius.php:3784 msgid "Yes - do your thing" msgstr "כן - בצעו את מה שצריך" -#: includes/class-freemius.php:3521 +#: includes/class-freemius.php:3789 msgid "No - just deactivate" msgstr "לא - פשוט כבה" -#: includes/class-freemius.php3566, includes/class-freemius.php4066, -#: includes/class-freemius.php5127, includes/class-freemius.php10941, -#: includes/class-freemius.php14205, includes/class-freemius.php14257, -#: includes/class-freemius.php14319, includes/class-freemius.php16448, -#: includes/class-freemius.php16458, includes/class-freemius.php17014, -#: includes/class-freemius.php17032, includes/class-freemius.php17130, -#: includes/class-freemius.php17866, templates/add-ons.php:43 +#: includes/class-freemius.php3834, includes/class-freemius.php4343, +#: includes/class-freemius.php5442, includes/class-freemius.php11545, +#: includes/class-freemius.php14916, includes/class-freemius.php14968, +#: includes/class-freemius.php15030, includes/class-freemius.php17263, +#: includes/class-freemius.php17273, includes/class-freemius.php17882, +#: includes/class-freemius.php18742, includes/class-freemius.php18857, +#: includes/class-freemius.php19001, templates/add-ons.php:43 msgctxt "exclamation" msgid "Oops" msgstr "אופס" -#: includes/class-freemius.php:3635 +#: includes/class-freemius.php:3903 msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." msgstr "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." -#: includes/class-freemius.php:4063 +#: includes/class-freemius.php:4340 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "%s לא יכול לעבוד ללא %s." -#: includes/class-freemius.php:4064 +#: includes/class-freemius.php:4341 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "ההרחבה %s אינה יכולה לפעול ללא התוסף." -#: includes/class-freemius.php4176, includes/class-freemius.php4201, -#: includes/class-freemius.php:17103 +#: includes/class-freemius.php4487, includes/class-freemius.php4512, +#: includes/class-freemius.php:17953 msgid "Unexpected API error. Please contact the %s's author with the following error." msgstr "Unexpected API error. Please contact the %s's author with the following error." -#: includes/class-freemius.php:4815 +#: includes/class-freemius.php:5130 msgid "Premium %s version was successfully activated." msgstr "Premium %s version was successfully activated." -#: includes/class-freemius.php4827, includes/class-freemius.php:6660 +#: includes/class-freemius.php5142, includes/class-freemius.php:7004 msgctxt "" msgid "W00t" msgstr "יש" -#: includes/class-freemius.php:4842 +#: includes/class-freemius.php:5157 msgid "You have a %s license." msgstr "יש לך רישיון %s." -#: includes/class-freemius.php4846, includes/class-freemius.php13626, -#: includes/class-freemius.php13637, includes/class-freemius.php16376, -#: includes/class-freemius.php16676, includes/class-freemius.php16741, -#: includes/class-freemius.php:16891 +#: includes/class-freemius.php5161, includes/class-freemius.php14337, +#: includes/class-freemius.php14348, includes/class-freemius.php17177, +#: includes/class-freemius.php17491, includes/class-freemius.php17557, +#: includes/class-freemius.php:17707 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "יששש" -#: includes/class-freemius.php:5110 +#: includes/class-freemius.php:5425 msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." msgstr "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." -#: includes/class-freemius.php:5114 +#: includes/class-freemius.php:5429 msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin." -#: includes/class-freemius.php5123, templates/add-ons.php99, -#: templates/account/partials/addon.php:283 +#: includes/class-freemius.php5438, templates/add-ons.php103, +#: templates/account/partials/addon.php:288 msgid "More information about %s" msgstr "מידע נוסף אודות %s" -#: includes/class-freemius.php:5124 +#: includes/class-freemius.php:5439 msgid "Purchase License" msgstr "קניית רישיון" -#: includes/class-freemius.php6035, templates/connect.php:161 +#: includes/class-freemius.php6372, templates/connect.php:163 msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." msgstr "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." -#: includes/class-freemius.php:6039 +#: includes/class-freemius.php:6376 msgid "start the trial" msgstr "התחל תקופת ניסיון" -#: includes/class-freemius.php6040, templates/connect.php:165 +#: includes/class-freemius.php6377, templates/connect.php:167 msgid "complete the install" msgstr "השלם התקנה" -#: includes/class-freemius.php:6147 +#: includes/class-freemius.php:6490 msgid "You are just one step away - %s" msgstr "You are just one step away - %s" -#: includes/class-freemius.php:6150 +#: includes/class-freemius.php:6493 msgctxt "%s - plugin name. As complete \"PluginX\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "השלם הפעלת \"%s\" עכשיו" -#: includes/class-freemius.php:6227 +#: includes/class-freemius.php:6571 msgid "We made a few tweaks to the %s, %s" msgstr "We made a few tweaks to the %s, %s" -#: includes/class-freemius.php:6231 -msgid "Opt in to make \"%s\" Better!" -msgstr "Opt in to make \"%s\" Better!" +#: includes/class-freemius.php:6575 +msgid "Opt in to make \"%s\" better!" +msgstr "Opt in to make \"%s\" better!" -#: includes/class-freemius.php:6659 +#: includes/class-freemius.php:7003 msgid "The upgrade of %s was successfully completed." msgstr "The upgrade of %s was successfully completed." -#: includes/class-freemius.php8384, includes/class-fs-plugin-updater.php581, -#: includes/class-fs-plugin-updater.php733, -#: includes/class-fs-plugin-updater.php739, templates/auto-installation.php:32 +#: includes/class-freemius.php8925, includes/class-fs-plugin-updater.php886, +#: includes/class-fs-plugin-updater.php1081, +#: includes/class-fs-plugin-updater.php1088, +#: templates/auto-installation.php:32 msgid "Add-On" msgstr "Add-On" -#: includes/class-freemius.php8386, templates/debug.php349, -#: templates/debug.php:510 +#: includes/class-freemius.php8927, templates/debug.php359, +#: templates/debug.php:520 msgid "Plugin" msgstr "תוסף" -#: includes/class-freemius.php8387, templates/debug.php349, -#: templates/debug.php510, templates/forms/deactivation/form.php:64 +#: includes/class-freemius.php8928, templates/debug.php359, +#: templates/debug.php520, templates/forms/deactivation/form.php:67 msgid "Theme" msgstr "תבנית" -#: includes/class-freemius.php:10808 -msgid "invalid_site_details_collection" -msgstr "invalid_site_details_collection" +#: includes/class-freemius.php:11412 +msgid "Invalid site details collection." +msgstr "Invalid site details collection." -#: includes/class-freemius.php:10928 +#: includes/class-freemius.php:11532 msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "We couldn't find your email address in the system, are you sure it's the right address?" -#: includes/class-freemius.php:10930 +#: includes/class-freemius.php:11534 msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?" -#: includes/class-freemius.php:11166 +#: includes/class-freemius.php:11808 msgid "Account is pending activation." msgstr "Account is pending activation." -#: includes/class-freemius.php:13608 +#: includes/class-freemius.php11920, +#: templates/forms/premium-versions-upgrade-handler.php:47 +msgid "Buy a license now" +msgstr "Buy a license now" + +#: includes/class-freemius.php11932, +#: templates/forms/premium-versions-upgrade-handler.php:46 +msgid "Renew your license now" +msgstr "Renew your license now" + +#: includes/class-freemius.php:11936 +msgid "%s to access version %s security & feature updates, and support." +msgstr "%s to access version %s security & feature updates, and support." + +#: includes/class-freemius.php:14319 msgid "%s activation was successfully completed." msgstr "הפעלת %s הושלמה בהצלחה." -#: includes/class-freemius.php:13622 +#: includes/class-freemius.php:14333 msgid "Your account was successfully activated with the %s plan." msgstr "חשבונך הופעל בהצלחה עם חבילת %s." -#: includes/class-freemius.php13633, includes/class-freemius.php:16737 +#: includes/class-freemius.php14344, includes/class-freemius.php:17553 msgid "Your trial has been successfully started." msgstr "הניסיון שלך הופעל בהצלחה." -#: includes/class-freemius.php14203, includes/class-freemius.php14255, -#: includes/class-freemius.php:14317 +#: includes/class-freemius.php14914, includes/class-freemius.php14966, +#: includes/class-freemius.php:15028 msgid "Couldn't activate %s." msgstr "לא ניתן להפעיל את %s." -#: includes/class-freemius.php14204, includes/class-freemius.php14256, -#: includes/class-freemius.php:14318 +#: includes/class-freemius.php14915, includes/class-freemius.php14967, +#: includes/class-freemius.php:15029 msgid "Please contact us with the following message:" msgstr "אנא צור איתנו קשר יחד עם ההודעה הבאה:" -#: includes/class-freemius.php14666, includes/class-freemius.php:18929 +#: includes/class-freemius.php15378, includes/class-freemius.php:19839 msgid "Upgrade" msgstr "שדרג" -#: includes/class-freemius.php:14672 +#: includes/class-freemius.php:15384 msgid "Start Trial" msgstr "התחל תקופת ניסיון" -#: includes/class-freemius.php:14674 +#: includes/class-freemius.php:15386 msgid "Pricing" msgstr "מחירון" -#: includes/class-freemius.php14734, includes/class-freemius.php:14736 +#: includes/class-freemius.php15448, includes/class-freemius.php:15450 msgid "Affiliation" msgstr "אפיליאציה" -#: includes/class-freemius.php14756, includes/class-freemius.php14758, -#: templates/account.php146, templates/debug.php:314 +#: includes/class-freemius.php15478, includes/class-freemius.php15480, +#: templates/account.php150, templates/debug.php:324 msgid "Account" msgstr "חשבון" -#: includes/class-freemius.php14769, includes/class-freemius.php14771, +#: includes/class-freemius.php15493, includes/class-freemius.php15495, #: includes/customizer/class-fs-customizer-support-section.php:60 msgid "Contact Us" msgstr "יצירת קשר" -#: includes/class-freemius.php14781, includes/class-freemius.php14783, -#: includes/class-freemius.php18939, templates/account.php96, -#: templates/account/partials/addon.php:37 +#: includes/class-freemius.php15505, includes/class-freemius.php15507, +#: includes/class-freemius.php19849, templates/account.php100, +#: templates/account/partials/addon.php:41 msgid "Add-Ons" msgstr "Add-Ons" -#: includes/class-freemius.php14815, templates/pricing.php:97 +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow left icon" +msgid "←" +msgstr "←" + +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow right icon" +msgid "➤" +msgstr "➤" + +#: includes/class-freemius.php15543, templates/pricing.php:97 msgctxt "noun" msgid "Pricing" msgstr "מחירון" -#: includes/class-freemius.php15009, +#: includes/class-freemius.php15756, #: includes/customizer/class-fs-customizer-support-section.php:67 msgid "Support Forum" msgstr "פורום תמיכה" -#: includes/class-freemius.php:15794 +#: includes/class-freemius.php:16542 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "Your email has been successfully verified - you are AWESOME!" -#: includes/class-freemius.php:15795 +#: includes/class-freemius.php:16543 msgctxt "a positive response" msgid "Right on" msgstr "מעולה" -#: includes/class-freemius.php:16367 +#: includes/class-freemius.php:17168 msgid "Your %s Add-on plan was successfully upgraded." msgstr "חבילת ההרחבה %s שודרגה בהצלחה." -#: includes/class-freemius.php:16369 +#: includes/class-freemius.php:17170 msgid "%s Add-on was successfully purchased." msgstr "ההרחבה %s נרכשה בהצלחה." -#: includes/class-freemius.php:16372 +#: includes/class-freemius.php:17173 msgid "Download the latest version" msgstr "הורד את הגרסה האחרונה" -#: includes/class-freemius.php:16444 +#: includes/class-freemius.php:17259 msgctxt "%1s - plugin title, %2s - API domain" msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" -#: includes/class-freemius.php16447, includes/class-freemius.php16862, -#: includes/class-freemius.php:16927 +#: includes/class-freemius.php17262, includes/class-freemius.php17678, +#: includes/class-freemius.php:17755 msgid "Error received from the server:" msgstr "הוחזרה שגיאה מהשרת:" -#: includes/class-freemius.php:16457 +#: includes/class-freemius.php:17272 msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." -#: includes/class-freemius.php16639, includes/class-freemius.php16867, -#: includes/class-freemius.php:16910 +#: includes/class-freemius.php17454, includes/class-freemius.php17683, +#: includes/class-freemius.php17726, includes/class-freemius.php:17829 msgctxt "" msgid "Hmm" msgstr "אממ" -#: includes/class-freemius.php:16652 +#: includes/class-freemius.php:17467 msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." msgstr "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." -#: includes/class-freemius.php16653, templates/account.php98, -#: templates/add-ons.php130, templates/account/partials/addon.php:39 +#: includes/class-freemius.php17468, templates/account.php102, +#: templates/add-ons.php134, templates/account/partials/addon.php:43 msgctxt "trial period" msgid "Trial" msgstr "ניסיון" -#: includes/class-freemius.php:16658 +#: includes/class-freemius.php:17473 msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "שידרגתי את החשבון שלי אבל כשאני מנסה לבצע סנכרון לרישיון החבילה נשארת %s." -#: includes/class-freemius.php16662, includes/class-freemius.php:16719 +#: includes/class-freemius.php17477, includes/class-freemius.php:17535 msgid "Please contact us here" msgstr "אנא צור איתנו קשר כאן" -#: includes/class-freemius.php:16672 +#: includes/class-freemius.php:17487 msgid "Your plan was successfully upgraded." msgstr "החבילה שודרגה בהצלחה." -#: includes/class-freemius.php:16689 +#: includes/class-freemius.php:17505 msgid "Your plan was successfully changed to %s." msgstr "החבילה עודכנה בהצלחה אל %s." -#: includes/class-freemius.php:16705 +#: includes/class-freemius.php:17521 msgid "Your license has expired. You can still continue using the free %s forever." msgstr "Your license has expired. You can still continue using the free %s forever." -#: includes/class-freemius.php:16707 +#: includes/class-freemius.php:17523 msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." -#: includes/class-freemius.php:16715 +#: includes/class-freemius.php:17531 msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "רשיונך בוטל. אם לדעתך זו טעות, נא ליצור קשר עם התמיכה." -#: includes/class-freemius.php:16728 +#: includes/class-freemius.php:17544 msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." msgstr "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." -#: includes/class-freemius.php:16751 +#: includes/class-freemius.php:17567 msgid "Your free trial has expired. You can still continue using all our free features." msgstr "תקופת הניסיון שלך הסתיימה. הפיטצ'רים החינאמיים עדיין ניתנים לשימוש." -#: includes/class-freemius.php:16753 +#: includes/class-freemius.php:17569 msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." -#: includes/class-freemius.php:16858 +#: includes/class-freemius.php:17674 msgid "It looks like the license could not be activated." msgstr "נראה שלא ניתן להפעיל את הרישיון." -#: includes/class-freemius.php:16888 +#: includes/class-freemius.php:17704 msgid "Your license was successfully activated." msgstr "הרישיון הופעל בהצלחה." -#: includes/class-freemius.php:16914 +#: includes/class-freemius.php:17730 msgid "It looks like your site currently doesn't have an active license." msgstr "נראה לאתר עדיין אין רישיון פעיל." -#: includes/class-freemius.php:16926 +#: includes/class-freemius.php:17754 msgid "It looks like the license deactivation failed." msgstr "נראה שניתוק הרישיון נכשל." -#: includes/class-freemius.php:16954 +#: includes/class-freemius.php:17782 msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "רישיונך נותק בהצלחה, חזרת לחבילת %s" -#: includes/class-freemius.php:16955 +#: includes/class-freemius.php:17783 msgid "O.K" msgstr "אוקיי" -#: includes/class-freemius.php:17003 -msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." -msgstr "Your plan was successfully downgraded. Your %s plan license will expire in %s." +#: includes/class-freemius.php:17836 +msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." +msgstr "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." -#: includes/class-freemius.php:17013 -msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." -msgstr "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." +#: includes/class-freemius.php:17845 +msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s." +msgstr "Your subscription was successfully cancelled. Your %s plan license will expire in %s." -#: includes/class-freemius.php:17037 +#: includes/class-freemius.php:17887 msgid "You are already running the %s in a trial mode." msgstr "You are already running the %s in a trial mode." -#: includes/class-freemius.php:17048 +#: includes/class-freemius.php:17898 msgid "You already utilized a trial before." msgstr "הניסיון כבר נוצל בעבר." -#: includes/class-freemius.php:17062 +#: includes/class-freemius.php:17912 msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "החבילה %s אינה קיימת, לכן, לא ניתן להתחיל תקופת ניסיון." -#: includes/class-freemius.php:17073 +#: includes/class-freemius.php:17923 msgid "Plan %s does not support a trial period." msgstr "תוכנית %s אינה תומכת בתקופת ניסיון." -#: includes/class-freemius.php:17084 +#: includes/class-freemius.php:17934 msgid "None of the %s's plans supports a trial period." msgstr "None of the %s's plans supports a trial period." -#: includes/class-freemius.php:17134 +#: includes/class-freemius.php:17984 msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)" -#: includes/class-freemius.php:17185 -msgid "Your %s free trial was successfully cancelled." -msgstr "תקופת הניסיון החינמית של %s בוטלה בהצלחה." - -#: includes/class-freemius.php:17190 +#: includes/class-freemius.php:18020 msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "נראה שיש תקלה זמנית המונעת את ביטול הניסיון. אנא נסו שוב בעוד כמה דקות." -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18039 +msgid "Your %s free trial was successfully cancelled." +msgstr "תקופת הניסיון החינמית של %s בוטלה בהצלחה." + +#: includes/class-freemius.php:18346 msgid "Version %s was released." msgstr "גרסה %s הושקה." -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18346 msgid "Please download %s." msgstr "נא להוריד את %s." -#: includes/class-freemius.php:17481 +#: includes/class-freemius.php:18353 msgid "the latest %s version here" msgstr "גרסת ה-%s האחרונה כאן" -#: includes/class-freemius.php:17486 +#: includes/class-freemius.php:18358 msgid "New" msgstr "חדש" -#: includes/class-freemius.php:17491 +#: includes/class-freemius.php:18363 msgid "Seems like you got the latest release." msgstr "נראה שיש לך את הגרסה האחרונה." -#: includes/class-freemius.php:17492 +#: includes/class-freemius.php:18364 msgid "You are all good!" msgstr "את\\ה מסודר!" -#: includes/class-freemius.php:17758 +#: includes/class-freemius.php:18632 msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." -#: includes/class-freemius.php:17893 +#: includes/class-freemius.php:18769 msgid "Site successfully opted in." msgstr "Site successfully opted in." -#: includes/class-freemius.php17894, includes/class-freemius.php:18671 +#: includes/class-freemius.php18770, includes/class-freemius.php:19581 msgid "Awesome" msgstr "אדיר" -#: includes/class-freemius.php17910, templates/forms/optout.php:32 +#: includes/class-freemius.php18786, templates/forms/optout.php:32 msgid "We appreciate your help in making the %s better by letting us track some usage data." msgstr "We appreciate your help in making the %s better by letting us track some usage data." -#: includes/class-freemius.php:17911 +#: includes/class-freemius.php:18787 msgid "Thank you!" msgstr "תודה רבה!" -#: includes/class-freemius.php:17918 +#: includes/class-freemius.php:18794 msgid "We will no longer be sending any usage data of %s on %s to %s." msgstr "We will no longer be sending any usage data of %s on %s to %s." -#: includes/class-freemius.php:18033 +#: includes/class-freemius.php:18923 msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." msgstr "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." -#: includes/class-freemius.php:18039 +#: includes/class-freemius.php:18929 msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "תודה על אישור ביצוע החלפת הבעלות. הרגע נשלח מייל ל-%s כדי לקבל אישור סופי." -#: includes/class-freemius.php:18044 +#: includes/class-freemius.php:18934 msgid "%s is the new owner of the account." msgstr "%s הינו הבעלים החד של חשבון זה." -#: includes/class-freemius.php:18046 +#: includes/class-freemius.php:18936 msgctxt "as congratulations" msgid "Congrats" msgstr "מזל טוב" -#: includes/class-freemius.php:18066 +#: includes/class-freemius.php:18956 msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered." -#: includes/class-freemius.php:18067 +#: includes/class-freemius.php:18957 msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." -#: includes/class-freemius.php:18074 +#: includes/class-freemius.php:18964 msgid "Change Ownership" msgstr "עדכון בעלות" -#: includes/class-freemius.php:18082 +#: includes/class-freemius.php:18972 msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." msgstr "כתובת הדואל שלך עודכנה בהצלחה. הודעת אישור אמורה להתקבל בדואל שלך ברגעים הקרובים." -#: includes/class-freemius.php:18094 +#: includes/class-freemius.php:18984 msgid "Please provide your full name." msgstr "נא למלא את שמך המלא." -#: includes/class-freemius.php:18099 +#: includes/class-freemius.php:18989 msgid "Your name was successfully updated." msgstr "שמך עודכן בהצלחה." -#: includes/class-freemius.php:18160 +#: includes/class-freemius.php:19050 msgid "You have successfully updated your %s." msgstr "עידכנת בהצלחה את ה%s." -#: includes/class-freemius.php:18300 +#: includes/class-freemius.php:19190 msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server." -#: includes/class-freemius.php:18301 +#: includes/class-freemius.php:19191 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "לתשמות לבך" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgctxt "exclamation" msgid "Hey" msgstr "היי" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial." -#: includes/class-freemius.php:18719 +#: includes/class-freemius.php:19629 msgid "No commitment for %s days - cancel anytime!" msgstr "ללא התחייבות ל-%s ימין - בטלו בכל רגע!" -#: includes/class-freemius.php:18720 +#: includes/class-freemius.php:19630 msgid "No credit card required" msgstr "לא נדרש כרטיס אשראי" -#: includes/class-freemius.php18727, templates/forms/trial-start.php:53 +#: includes/class-freemius.php19637, templates/forms/trial-start.php:53 msgctxt "call to action" msgid "Start free trial" msgstr "התחלת ניסיון חינם" -#: includes/class-freemius.php:18804 +#: includes/class-freemius.php:19714 msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" msgstr "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" -#: includes/class-freemius.php:18813 +#: includes/class-freemius.php:19723 msgid "Learn more" msgstr "Learn more" -#: includes/class-freemius.php18963, templates/account.php394, -#: templates/account.php497, templates/connect.php169, -#: templates/connect.php408, templates/forms/license-activation.php24, -#: templates/account/partials/addon.php:230 +#: includes/class-freemius.php19873, templates/account.php406, +#: templates/account.php509, templates/connect.php171, +#: templates/connect.php421, templates/forms/license-activation.php24, +#: templates/account/partials/addon.php:235 msgid "Activate License" msgstr "הפעלת רישיון" -#: includes/class-freemius.php18964, templates/account.php457, -#: templates/account.php496, templates/account/partials/site.php:256 +#: includes/class-freemius.php19874, templates/account.php469, +#: templates/account.php508, templates/account/partials/site.php:256 msgid "Change License" msgstr "שינוי רישיון" -#: includes/class-freemius.php19046, templates/account/partials/site.php:161 +#: includes/class-freemius.php19956, templates/account/partials/site.php:161 msgid "Opt Out" msgstr "Opt Out" -#: includes/class-freemius.php19048, includes/class-freemius.php19053, +#: includes/class-freemius.php19958, includes/class-freemius.php19963, #: templates/account/partials/site.php43, #: templates/account/partials/site.php:161 msgid "Opt In" msgstr "Opt In" -#: includes/class-freemius.php:19245 +#: includes/class-freemius.php:20187 +msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" +msgstr " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" + +#: includes/class-freemius.php:20195 +msgid "Activate %s features" +msgstr "Activate %s features" + +#: includes/class-freemius.php:20208 msgid "Please follow these steps to complete the upgrade" msgstr "נא לבצע את הצעדים הבאים להשלמת השידרוג" -#: includes/class-freemius.php:19249 +#: includes/class-freemius.php:20212 msgid "Download the latest %s version" msgstr "הורד\\י את גרסת ה-%s העדכנית" -#: includes/class-freemius.php:19253 +#: includes/class-freemius.php:20216 msgid "Upload and activate the downloaded version" msgstr "העלה\\י והפעיל\\י את הגרסה שהורדת" -#: includes/class-freemius.php:19255 +#: includes/class-freemius.php:20218 msgid "How to upload and activate?" msgstr "איך להעלות ולהפעיל?" -#: includes/class-freemius.php:19384 +#: includes/class-freemius.php:20352 msgid "%sClick here%s to choose the sites where you'd like to activate the license on." msgstr "%sClick here%s to choose the sites where you'd like to activate the license on." -#: includes/class-freemius.php:19545 +#: includes/class-freemius.php:20513 msgid "Auto installation only works for opted-in users." msgstr "Auto installation only works for opted-in users." -#: includes/class-freemius.php19555, includes/class-freemius.php19588, -#: includes/class-fs-plugin-updater.php713, -#: includes/class-fs-plugin-updater.php:727 +#: includes/class-freemius.php20523, includes/class-freemius.php20556, +#: includes/class-fs-plugin-updater.php1060, +#: includes/class-fs-plugin-updater.php:1074 msgid "Invalid module ID." msgstr "מזהה המודול לא תקני." -#: includes/class-freemius.php19564, includes/class-fs-plugin-updater.php:747 +#: includes/class-freemius.php20532, includes/class-fs-plugin-updater.php:1096 msgid "Premium version already active." msgstr "הגרסה בתשלום כבר פעילה." -#: includes/class-freemius.php:19571 +#: includes/class-freemius.php:20539 msgid "You do not have a valid license to access the premium version." msgstr "אין ברשותך רישיון בר תוקף לשימוש בגרסת הפרימיום." -#: includes/class-freemius.php:19578 +#: includes/class-freemius.php:20546 msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version." -#: includes/class-freemius.php19596, includes/class-fs-plugin-updater.php:746 +#: includes/class-freemius.php20564, includes/class-fs-plugin-updater.php:1095 msgid "Premium add-on version already installed." msgstr "Premium add-on version already installed." -#: includes/class-freemius.php:19941 +#: includes/class-freemius.php:20909 msgid "View paid features" msgstr "צפה בפיטצ'רים שבתשלום" -#: includes/class-freemius.php:20251 +#: includes/class-freemius.php:21229 msgid "Thank you so much for using %s and its add-ons!" msgstr "Thank you so much for using %s and its add-ons!" -#: includes/class-freemius.php:20252 +#: includes/class-freemius.php:21230 msgid "Thank you so much for using %s!" msgstr "אנו מודים לך על היותך כמשתמש של %s!" -#: includes/class-freemius.php:20258 +#: includes/class-freemius.php:21236 msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s." msgstr "You've already opted-in to our usage-tracking, which helps us keep improving the %s." -#: includes/class-freemius.php:20262 +#: includes/class-freemius.php:21240 msgid "Thank you so much for using our products!" msgstr "אנו מודים לך על השימוש במוצרים שלנו!" -#: includes/class-freemius.php:20263 +#: includes/class-freemius.php:21241 msgid "You've already opted-in to our usage-tracking, which helps us keep improving them." msgstr "You've already opted-in to our usage-tracking, which helps us keep improving them." -#: includes/class-freemius.php:20282 +#: includes/class-freemius.php:21260 msgid "%s and its add-ons" msgstr "%s and its add-ons" -#: includes/class-freemius.php:20291 +#: includes/class-freemius.php:21269 msgid "Products" msgstr "מוצרים" -#: includes/class-freemius.php20298, templates/connect.php:259 +#: includes/class-freemius.php21276, templates/connect.php:272 msgid "Yes" msgstr "כן" -#: includes/class-freemius.php20299, templates/connect.php:260 +#: includes/class-freemius.php21277, templates/connect.php:273 msgid "send me security & feature updates, educational content and offers." msgstr "תשלחו לי עדכוני אבטחה ופיטצ'רים, תוכן חינוכי, ומידע אודות מבצעים." -#: includes/class-freemius.php20300, templates/connect.php:265 +#: includes/class-freemius.php21278, templates/connect.php:278 msgid "No" msgstr "לא" -#: includes/class-freemius.php20302, templates/connect.php:267 +#: includes/class-freemius.php21280, templates/connect.php:280 msgid "do %sNOT%s send me security & feature updates, educational content and offers." msgstr "%sאל%2$s תשלחו לי עדכוני אבטחה, פיטצ'רים, תוכן חינוכי, ומידע על מבצעים." -#: includes/class-freemius.php:20312 +#: includes/class-freemius.php:21290 msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" msgstr "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" -#: includes/class-freemius.php20314, templates/connect.php:274 +#: includes/class-freemius.php21292, templates/connect.php:287 msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" msgstr "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" -#: includes/class-freemius.php:20598 +#: includes/class-freemius.php:21574 msgid "License key is empty." msgstr "מפתח הרישיון ריק." #: includes/class-fs-plugin-updater.php184, -#: includes/class-fs-plugin-updater.php:219 -msgid "%sRenew your license now%s to access version %s security & feature updates, and support." -msgstr "%sRenew your license now%s to access version %s security & feature updates, and support." +#: templates/forms/premium-versions-upgrade-handler.php:57 +msgid "Renew license" +msgstr "חידוש רישיון" + +#: includes/class-fs-plugin-updater.php189, +#: templates/forms/premium-versions-upgrade-handler.php:58 +msgid "Buy license" +msgstr "Buy license" + +#: includes/class-fs-plugin-updater.php:278 +msgid "There is a %s of %s available." +msgstr "There is a %s of %s available." + +#: includes/class-fs-plugin-updater.php:282 +msgid "new version" +msgstr "new version" + +#: includes/class-fs-plugin-updater.php:305 +msgid "Important Upgrade Notice:" +msgstr "Important Upgrade Notice:" -#: includes/class-fs-plugin-updater.php:776 +#: includes/class-fs-plugin-updater.php:1125 msgid "Installing plugin: %s" msgstr "Installing plugin: %s" -#: includes/class-fs-plugin-updater.php:817 +#: includes/class-fs-plugin-updater.php:1166 msgid "Unable to connect to the filesystem. Please confirm your credentials." msgstr "Unable to connect to the filesystem. Please confirm your credentials." -#: includes/class-fs-plugin-updater.php:923 +#: includes/class-fs-plugin-updater.php:1348 msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work." -#: includes/fs-plugin-info-dialog.php336, -#: templates/account/partials/addon.php:287 +#: includes/fs-plugin-info-dialog.php369, +#: templates/account/partials/addon.php:292 msgctxt "verb" msgid "Purchase" msgstr "רכישה" -#: includes/fs-plugin-info-dialog.php:339 +#: includes/fs-plugin-info-dialog.php:372 msgid "Start my free %s" msgstr "התחל את %s הניסיון שלי" -#: includes/fs-plugin-info-dialog.php:380 +#: includes/fs-plugin-info-dialog.php:413 msgid "Install Free Version Now" msgstr "התקן גרסה חינאמית עכשיו" -#: includes/fs-plugin-info-dialog.php381, templates/auto-installation.php111, -#: templates/account/partials/addon.php267, -#: templates/account/partials/addon.php:317 +#: includes/fs-plugin-info-dialog.php414, templates/auto-installation.php111, +#: templates/account/partials/addon.php272, +#: templates/account/partials/addon.php:322 msgid "Install Now" msgstr "התקן עכשיו" -#: includes/fs-plugin-info-dialog.php:392 +#: includes/fs-plugin-info-dialog.php:425 msgctxt "as download latest version" msgid "Download Latest Free Version" msgstr "Download Latest Free Version" -#: includes/fs-plugin-info-dialog.php393, templates/account.php80, +#: includes/fs-plugin-info-dialog.php426, templates/account.php80, #: templates/account/partials/addon.php:21 msgctxt "as download latest version" msgid "Download Latest" msgstr "הורד גרסה אחרונה" -#: includes/fs-plugin-info-dialog.php:403 +#: includes/fs-plugin-info-dialog.php:436 msgid "Install Free Version Update Now" msgstr "התקן עדכון גרסה חינאמית עכשיו" -#: includes/fs-plugin-info-dialog.php404, templates/account.php:448 +#: includes/fs-plugin-info-dialog.php437, templates/account.php:460 msgid "Install Update Now" msgstr "התקן עדכון במיידי" -#: includes/fs-plugin-info-dialog.php:415 +#: includes/fs-plugin-info-dialog.php:448 msgid "Newer Free Version (%s) Installed" msgstr "Newer Free Version (%s) Installed" -#: includes/fs-plugin-info-dialog.php:416 +#: includes/fs-plugin-info-dialog.php:449 msgid "Newer Version (%s) Installed" msgstr "גרסה חדשה (%s) הותקנה" -#: includes/fs-plugin-info-dialog.php:424 +#: includes/fs-plugin-info-dialog.php:457 msgid "Latest Free Version Installed" msgstr "גרסה חינאמית עדכנית הותקנה" -#: includes/fs-plugin-info-dialog.php:425 +#: includes/fs-plugin-info-dialog.php:458 msgid "Latest Version Installed" msgstr "הגרסה האחרונה הותקנה" -#: includes/fs-plugin-info-dialog.php:580 +#: includes/fs-plugin-info-dialog.php:613 msgctxt "Plugin installer section title" msgid "Description" msgstr "תיאור" -#: includes/fs-plugin-info-dialog.php:581 +#: includes/fs-plugin-info-dialog.php:614 msgctxt "Plugin installer section title" msgid "Installation" msgstr "התקנה" -#: includes/fs-plugin-info-dialog.php:582 +#: includes/fs-plugin-info-dialog.php:615 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "שאלות נפוצות" -#: includes/fs-plugin-info-dialog.php583, +#: includes/fs-plugin-info-dialog.php616, #: templates/plugin-info/description.php:55 msgid "Screenshots" msgstr "צילומי מסך" -#: includes/fs-plugin-info-dialog.php:584 +#: includes/fs-plugin-info-dialog.php:617 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "לוג שינויים" -#: includes/fs-plugin-info-dialog.php:585 +#: includes/fs-plugin-info-dialog.php:618 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "ביקורות" -#: includes/fs-plugin-info-dialog.php:586 +#: includes/fs-plugin-info-dialog.php:619 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "היערות נוספות" -#: includes/fs-plugin-info-dialog.php:601 +#: includes/fs-plugin-info-dialog.php:634 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "פיטצ'רים ומחירים" -#: includes/fs-plugin-info-dialog.php:611 +#: includes/fs-plugin-info-dialog.php:644 msgid "Plugin Install" msgstr "התקנת תוסף" -#: includes/fs-plugin-info-dialog.php:683 +#: includes/fs-plugin-info-dialog.php:716 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "חבילה %s" -#: includes/fs-plugin-info-dialog.php:709 +#: includes/fs-plugin-info-dialog.php:742 msgctxt "e.g. the best product" msgid "Best" msgstr "הכי טוב" -#: includes/fs-plugin-info-dialog.php715, -#: includes/fs-plugin-info-dialog.php:735 +#: includes/fs-plugin-info-dialog.php748, +#: includes/fs-plugin-info-dialog.php:768 msgctxt "as every month" msgid "Monthly" msgstr "חודשי" -#: includes/fs-plugin-info-dialog.php:718 +#: includes/fs-plugin-info-dialog.php:751 msgctxt "as once a year" msgid "Annual" msgstr "שנתי" -#: includes/fs-plugin-info-dialog.php:721 +#: includes/fs-plugin-info-dialog.php:754 msgid "Lifetime" msgstr "לכל החיים" -#: includes/fs-plugin-info-dialog.php735, -#: includes/fs-plugin-info-dialog.php737, -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php768, +#: includes/fs-plugin-info-dialog.php770, +#: includes/fs-plugin-info-dialog.php:772 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "מחוייב על בסיס %s" -#: includes/fs-plugin-info-dialog.php:737 +#: includes/fs-plugin-info-dialog.php:770 msgctxt "as once a year" msgid "Annually" msgstr "שנתי" -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php:772 msgctxt "as once a year" msgid "Once" msgstr "פעם אחת" -#: includes/fs-plugin-info-dialog.php:745 +#: includes/fs-plugin-info-dialog.php:778 msgid "Single Site License" msgstr "רשיון לאתר אחד" -#: includes/fs-plugin-info-dialog.php:747 +#: includes/fs-plugin-info-dialog.php:780 msgid "Unlimited Licenses" msgstr "רשיונות ללא הגבלה" -#: includes/fs-plugin-info-dialog.php:749 +#: includes/fs-plugin-info-dialog.php:782 msgid "Up to %s Sites" msgstr "עד %s אתרים" -#: includes/fs-plugin-info-dialog.php759, +#: includes/fs-plugin-info-dialog.php792, #: templates/plugin-info/features.php:82 msgctxt "as monthly period" msgid "mo" msgstr "חודשים" -#: includes/fs-plugin-info-dialog.php766, +#: includes/fs-plugin-info-dialog.php799, #: templates/plugin-info/features.php:80 msgctxt "as annual period" msgid "year" msgstr "שנה" -#: includes/fs-plugin-info-dialog.php:820 +#: includes/fs-plugin-info-dialog.php:853 msgctxt "noun" msgid "Price" msgstr "מחיר" -#: includes/fs-plugin-info-dialog.php:868 +#: includes/fs-plugin-info-dialog.php:901 msgid "Save %s" msgstr "שמירת %s" -#: includes/fs-plugin-info-dialog.php:878 +#: includes/fs-plugin-info-dialog.php:911 msgid "No commitment for %s - cancel anytime" msgstr "No commitment for %s - cancel anytime" -#: includes/fs-plugin-info-dialog.php:881 +#: includes/fs-plugin-info-dialog.php:914 msgid "After your free %s, pay as little as %s" msgstr "After your free %s, pay as little as %s" -#: includes/fs-plugin-info-dialog.php:892 +#: includes/fs-plugin-info-dialog.php:925 msgid "Details" msgstr "פרטים" -#: includes/fs-plugin-info-dialog.php896, templates/account.php87, -#: templates/debug.php191, templates/debug.php228, templates/debug.php442, -#: templates/account/partials/addon.php:28 +#: includes/fs-plugin-info-dialog.php929, templates/account.php91, +#: templates/debug.php201, templates/debug.php238, templates/debug.php452, +#: templates/account/partials/addon.php:32 msgctxt "product version" msgid "Version" msgstr "גרסה" -#: includes/fs-plugin-info-dialog.php:903 +#: includes/fs-plugin-info-dialog.php:936 msgctxt "as the plugin author" msgid "Author" msgstr "Author" -#: includes/fs-plugin-info-dialog.php:910 +#: includes/fs-plugin-info-dialog.php:943 msgid "Last Updated" msgstr "עודכן לאחרונה" -#: includes/fs-plugin-info-dialog.php:915 +#: includes/fs-plugin-info-dialog.php948, templates/account.php:376 msgctxt "x-ago" msgid "%s ago" msgstr "לפני %s" -#: includes/fs-plugin-info-dialog.php:924 +#: includes/fs-plugin-info-dialog.php:957 msgid "Requires WordPress Version" msgstr "Requires WordPress Version" -#: includes/fs-plugin-info-dialog.php:925 +#: includes/fs-plugin-info-dialog.php:958 msgid "%s or higher" msgstr "%s ומעלה" -#: includes/fs-plugin-info-dialog.php:932 +#: includes/fs-plugin-info-dialog.php:965 msgid "Compatible up to" msgstr "Compatible up to" -#: includes/fs-plugin-info-dialog.php:940 +#: includes/fs-plugin-info-dialog.php:973 msgid "Downloaded" msgstr "Downloaded" -#: includes/fs-plugin-info-dialog.php:944 +#: includes/fs-plugin-info-dialog.php:977 msgid "%s time" msgstr "פעם %s" -#: includes/fs-plugin-info-dialog.php:946 +#: includes/fs-plugin-info-dialog.php:979 msgid "%s times" msgstr "%s פעמים" -#: includes/fs-plugin-info-dialog.php:956 +#: includes/fs-plugin-info-dialog.php:989 msgid "WordPress.org Plugin Page" msgstr "WordPress.org Plugin Page" -#: includes/fs-plugin-info-dialog.php:964 +#: includes/fs-plugin-info-dialog.php:997 msgid "Plugin Homepage" msgstr "עמוד התוסף" -#: includes/fs-plugin-info-dialog.php972, -#: includes/fs-plugin-info-dialog.php:1054 +#: includes/fs-plugin-info-dialog.php1005, +#: includes/fs-plugin-info-dialog.php:1087 msgid "Donate to this plugin" msgstr "תרום לתוסף" -#: includes/fs-plugin-info-dialog.php:979 +#: includes/fs-plugin-info-dialog.php:1012 msgid "Average Rating" msgstr "דירוג ממוצע" -#: includes/fs-plugin-info-dialog.php:986 +#: includes/fs-plugin-info-dialog.php:1019 msgid "based on %s" msgstr "מבוסס על %s" -#: includes/fs-plugin-info-dialog.php:990 +#: includes/fs-plugin-info-dialog.php:1023 msgid "%s rating" msgstr "דרוג %s" -#: includes/fs-plugin-info-dialog.php:992 +#: includes/fs-plugin-info-dialog.php:1025 msgid "%s ratings" msgstr "%s דרוגים" -#: includes/fs-plugin-info-dialog.php:1007 +#: includes/fs-plugin-info-dialog.php:1040 msgid "%s star" msgstr "כוכב %s" -#: includes/fs-plugin-info-dialog.php:1009 +#: includes/fs-plugin-info-dialog.php:1042 msgid "%s stars" msgstr "%s כוכבים" -#: includes/fs-plugin-info-dialog.php:1020 +#: includes/fs-plugin-info-dialog.php:1053 msgid "Click to see reviews that provided a rating of %s" msgstr "Click to see reviews that provided a rating of %s" -#: includes/fs-plugin-info-dialog.php:1033 +#: includes/fs-plugin-info-dialog.php:1066 msgid "Contributors" msgstr "תורמים" -#: includes/fs-plugin-info-dialog.php1062, -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php1095, +#: includes/fs-plugin-info-dialog.php:1097 msgid "Warning" msgstr "Warning" -#: includes/fs-plugin-info-dialog.php:1062 +#: includes/fs-plugin-info-dialog.php:1095 msgid "This plugin has not been tested with your current version of WordPress." msgstr "תוסף זה לא נבדק עם גרסת הוורדפרס שלך." -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php:1097 msgid "This plugin has not been marked as compatible with your version of WordPress." msgstr "התוסף לא סומן כתואם לגרסת הוורדפרס שלך." -#: includes/fs-plugin-info-dialog.php:1083 +#: includes/fs-plugin-info-dialog.php:1116 msgid "Paid add-on must be deployed to Freemius." msgstr "Paid add-on must be deployed to Freemius." -#: includes/fs-plugin-info-dialog.php:1084 +#: includes/fs-plugin-info-dialog.php:1117 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "Add-on must be deployed to WordPress.org or Freemius." -#: templates/account.php81, templates/account/partials/addon.php22, +#: templates/account.php81, templates/forms/subscription-cancellation.php96, +#: templates/account/partials/addon.php22, #: templates/account/partials/site.php:295 -msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." -msgstr "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." +msgid "Downgrading your plan" +msgstr "Downgrading your plan" + +#: templates/account.php82, templates/forms/subscription-cancellation.php97, +#: templates/account/partials/addon.php23, +#: templates/account/partials/site.php:296 +msgid "Cancelling the subscription" +msgstr "Cancelling the subscription" + +#. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the +#. subscription' +#: templates/account.php84, templates/forms/subscription-cancellation.php99, +#: templates/account/partials/addon.php25, +#: templates/account/partials/site.php:298 +msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." +msgstr "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." -#: templates/account.php82, templates/account/partials/addon.php:23 +#: templates/account.php85, templates/forms/subscription-cancellation.php100, +#: templates/account/partials/addon.php26, +#: templates/account/partials/site.php:299 +msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." +msgstr "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." + +#: templates/account.php86, templates/forms/subscription-cancellation.php106, +#: templates/account/partials/addon.php:27 msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "ביטול הניסיון יחסום מייד את הפיטצ'רים שהינם בתשלום. האם ברצונך בכל זאת להמשיך?" -#: templates/account.php83, templates/account/partials/addon.php24, -#: templates/account/partials/site.php:296 -msgid "You can still enjoy all %s features but you will not have access to %s updates and support." -msgstr "You can still enjoy all %s features but you will not have access to %s updates and support." +#: templates/account.php87, templates/forms/subscription-cancellation.php101, +#: templates/account/partials/addon.php28, +#: templates/account/partials/site.php:300 +msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." +msgstr "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." -#: templates/account.php84, templates/account/partials/addon.php25, -#: templates/account/partials/site.php:297 +#: templates/account.php88, templates/forms/subscription-cancellation.php102, +#: templates/account/partials/addon.php29, +#: templates/account/partials/site.php:301 msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features." #. translators: %s: Plan title (e.g. "Professional") -#: templates/account.php86, +#: templates/account.php90, #: templates/account/partials/activate-license-button.php31, -#: templates/account/partials/addon.php:27 +#: templates/account/partials/addon.php:31 msgid "Activate %s Plan" msgstr "הפעל חבילה %s" #. translators: %s: Time period (e.g. Auto renews in "2 months") -#: templates/account.php89, templates/account/partials/addon.php30, +#: templates/account.php93, templates/account/partials/addon.php34, #: templates/account/partials/site.php:275 msgid "Auto renews in %s" msgstr "עדכן אוטומטית בעוד %s" #. translators: %s: Time period (e.g. Expires in "2 months") -#: templates/account.php91, templates/account/partials/addon.php32, +#: templates/account.php95, templates/account/partials/addon.php36, #: templates/account/partials/site.php:277 msgid "Expires in %s" msgstr "פג תוקף בעוד %s" -#: templates/account.php92, templates/account/partials/addon.php:33 +#: templates/account.php96, templates/account/partials/addon.php:37 msgctxt "as synchronize license" msgid "Sync License" msgstr "סינכרן רישיון" -#: templates/account.php93, templates/account/partials/addon.php:34 +#: templates/account.php97, templates/account/partials/addon.php:38 msgid "Cancel Trial" msgstr "ביט" -#: templates/account.php94, templates/account/partials/addon.php:35 +#: templates/account.php98, templates/account/partials/addon.php:39 msgid "Change Plan" msgstr "שינוי חבילה" -#: templates/account.php95, templates/account/partials/addon.php:36 +#: templates/account.php99, templates/account/partials/addon.php:40 msgctxt "verb" msgid "Upgrade" msgstr "שדרג" -#: templates/account.php97, templates/account/partials/addon.php38, -#: templates/account/partials/site.php:298 +#: templates/account.php101, templates/account/partials/addon.php42, +#: templates/account/partials/site.php:302 msgctxt "verb" msgid "Downgrade" msgstr "שנמך" -#: templates/account.php99, templates/add-ons.php126, +#: templates/account.php103, templates/add-ons.php130, #: templates/plugin-info/features.php72, -#: templates/account/partials/addon.php40, +#: templates/account/partials/addon.php44, #: templates/account/partials/site.php:31 msgid "Free" msgstr "חינם" -#: templates/account.php100, templates/account/partials/addon.php:41 +#: templates/account.php104, templates/account/partials/addon.php:45 msgid "Activate" msgstr "הפעלה" -#: templates/account.php101, templates/debug.php361, +#: templates/account.php105, templates/debug.php371, #: includes/customizer/class-fs-customizer-upsell-control.php106, -#: templates/account/partials/addon.php:42 +#: templates/account/partials/addon.php:46 msgctxt "as product pricing plan" msgid "Plan" msgstr "חבילה" -#: templates/account.php:154 +#: templates/account.php:158 msgid "Free Trial" msgstr "ניסיון חינם" -#: templates/account.php:165 +#: templates/account.php:169 msgid "Account Details" msgstr "פרטי חשבון" -#: templates/account.php:175 +#: templates/account.php:179 msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" msgstr "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" -#: templates/account.php:177 +#: templates/account.php:181 msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" msgstr "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" -#: templates/account.php:180 +#: templates/account.php:184 msgid "Delete Account" msgstr "מחיקת חשבון" -#: templates/account.php192, templates/account/partials/addon.php155, +#: templates/account.php196, templates/account/partials/addon.php159, #: templates/account/partials/deactivate-license-button.php:35 msgid "Deactivate License" msgstr "שיחרור רישיון" -#: templates/account.php:210 +#: templates/account.php219, templates/forms/subscription-cancellation.php:125 msgid "Are you sure you want to proceed?" msgstr "האם את/ה בטוח רוצה להמשיך?" -#: templates/account.php210, templates/account/partials/addon.php:177 +#: templates/account.php219, templates/account/partials/addon.php:182 msgid "Cancel Subscription" msgstr "בטל מנוי" -#: templates/account.php:239 +#: templates/account.php:247 msgctxt "as synchronize" msgid "Sync" msgstr "סינכרון" -#: templates/account.php253, templates/debug.php:477 +#: templates/account.php261, templates/debug.php:487 msgid "Name" msgstr "שם" -#: templates/account.php259, templates/debug.php:478 +#: templates/account.php267, templates/debug.php:488 msgid "Email" msgstr "דוא\"ל" -#: templates/account.php266, templates/debug.php360, templates/debug.php:516 +#: templates/account.php274, templates/debug.php370, templates/debug.php:526 msgid "User ID" msgstr "מזהה משתמש" -#: templates/account.php:274 +#: templates/account.php:282 msgid "Site ID" msgstr "מזהה אתר" -#: templates/account.php:277 +#: templates/account.php:285 msgid "No ID" msgstr "אין מזהה" -#: templates/account.php282, templates/debug.php233, templates/debug.php362, -#: templates/debug.php443, templates/debug.php480, +#: templates/account.php290, templates/debug.php243, templates/debug.php372, +#: templates/debug.php453, templates/debug.php490, #: templates/account/partials/site.php:219 msgid "Public Key" msgstr "מפתח פומבי" -#: templates/account.php288, templates/debug.php363, templates/debug.php444, -#: templates/debug.php481, templates/account/partials/site.php:231 +#: templates/account.php296, templates/debug.php373, templates/debug.php454, +#: templates/debug.php491, templates/account/partials/site.php:231 msgid "Secret Key" msgstr "מפתח סודי" -#: templates/account.php:291 +#: templates/account.php:299 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "אין מפתח סודי" -#: templates/account.php310, templates/account/partials/site.php112, +#: templates/account.php318, templates/account/partials/site.php112, #: templates/account/partials/site.php:114 msgid "Trial" msgstr "ניסיון" -#: templates/account.php329, templates/debug.php521, +#: templates/account.php337, templates/debug.php531, #: templates/account/partials/site.php:248 msgid "License Key" msgstr "License Key" -#: templates/account.php:359 +#: templates/account.php:367 msgid "not verified" msgstr "לא מאומת" -#: templates/account.php:416 +#: templates/account.php376, templates/account/partials/addon.php:120 +msgid "Expired" +msgstr "פג תוקף" + +#: templates/account.php:428 msgid "Premium version" msgstr "גירסת פרימיום" -#: templates/account.php:418 +#: templates/account.php:430 msgid "Free version" msgstr "גירסה חינאמית" -#: templates/account.php:430 +#: templates/account.php:442 msgid "Verify Email" msgstr "אמת כתובת דוא\"ל" -#: templates/account.php:441 +#: templates/account.php:453 msgid "Download %s Version" msgstr "הורד גרסת %s" -#: templates/account.php455, templates/account.php636, +#: templates/account.php467, templates/account.php649, #: templates/account/partials/site.php237, #: templates/account/partials/site.php:255 msgctxt "verb" msgid "Show" msgstr "הצג" -#: templates/account.php:469 +#: templates/account.php:481 msgid "What is your %s?" msgstr "מה ה%s שלך?" -#: templates/account.php477, templates/account/billing.php:27 +#: templates/account.php489, templates/account/billing.php:27 msgctxt "verb" msgid "Edit" msgstr "ערוך" -#: templates/account.php:490 +#: templates/account.php:502 msgid "Sites" msgstr "אתרים" -#: templates/account.php:501 +#: templates/account.php:513 msgid "Search by address" msgstr "חפש לפי כתובת" -#: templates/account.php510, templates/account.php558, templates/debug.php226, -#: templates/debug.php354, templates/debug.php439, templates/debug.php476, -#: templates/debug.php514, templates/debug.php587, +#: templates/account.php522, templates/account.php570, templates/debug.php236, +#: templates/debug.php364, templates/debug.php449, templates/debug.php486, +#: templates/debug.php524, templates/debug.php597, #: templates/account/payments.php35, templates/debug/logger.php:21 msgid "ID" msgstr "מזהה" -#: templates/account.php511, templates/debug.php:357 +#: templates/account.php523, templates/debug.php:367 msgid "Address" msgstr "כתובת" -#: templates/account.php:512 +#: templates/account.php:524 msgid "License" msgstr "רישיון" -#: templates/account.php:513 +#: templates/account.php:525 msgid "Plan" msgstr "חבילה" -#: templates/account.php:561 +#: templates/account.php:573 msgctxt "as software license" msgid "License" msgstr "רישיון" -#: templates/account.php:630 +#: templates/account.php:643 msgctxt "verb" msgid "Hide" msgstr "הסתר" -#: templates/account.php:665 +#: templates/account.php:686 +msgid "Cancelling %s" +msgstr "Cancelling %s" + +#: templates/account.php686, templates/account.php703, +#: templates/forms/subscription-cancellation.php27, +#: templates/forms/deactivation/form.php:117 +msgid "trial" +msgstr "trial" + +#: templates/account.php701, templates/forms/deactivation/form.php:134 +msgid "Cancelling %s..." +msgstr "Cancelling %s..." + +#: templates/account.php704, templates/forms/subscription-cancellation.php28, +#: templates/forms/deactivation/form.php:118 +msgid "subscription" +msgstr "subscription" + +#: templates/account.php:718 msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" msgstr "ביטול הרישיון יחסום את כל הפיטצ'רים שבתשלום אך יאפשר להפעיל את הרישיון על אתר אחר. האם תרצו להמשיך בכל זאת?" @@ -1321,7 +1418,7 @@ msgstr "הרחבות עבור %s" msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." -#: templates/add-ons.php:135 +#: templates/add-ons.php:139 msgid "View details" msgstr "פרטים נוספים" @@ -1360,163 +1457,167 @@ msgid "PCI compliant" msgstr "עומד בתקן PCI" #. translators: %s: name (e.g. Hey John,) -#: templates/connect.php:110 +#: templates/connect.php:112 msgctxt "greeting" msgid "Hey %s," msgstr "היי %s," -#: templates/connect.php:152 +#: templates/connect.php:154 msgid "Allow & Continue" msgstr "אפשר\\י והמשכ\\י" -#: templates/connect.php:156 +#: templates/connect.php:158 msgid "Re-send activation email" msgstr "שליחה חוזרת של מייל האקטיבציה" -#: templates/connect.php:160 +#: templates/connect.php:162 msgid "Thanks %s!" msgstr "תודה %s!" -#: templates/connect.php170, templates/forms/license-activation.php:43 +#: templates/connect.php172, templates/forms/license-activation.php:43 msgid "Agree & Activate License" msgstr "הסכמה והפעלת רישיון" -#: templates/connect.php:179 +#: templates/connect.php:181 msgid "Thanks for purchasing %s! To get started, please enter your license key:" msgstr "Thanks for purchasing %s! To get started, please enter your license key:" -#: templates/connect.php:186 +#: templates/connect.php:188 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." -#: templates/connect.php:187 +#: templates/connect.php:189 msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." msgstr "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." -#: templates/connect.php:193 +#: templates/connect.php:195 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." -#: templates/connect.php:194 +#: templates/connect.php:196 msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." -#: templates/connect.php:228 +#: templates/connect.php:230 msgid "We're excited to introduce the Freemius network-level integration." msgstr "We're excited to introduce the Freemius network-level integration." -#: templates/connect.php:231 +#: templates/connect.php:233 msgid "During the update process we detected %d site(s) that are still pending license activation." msgstr "During the update process we detected %d site(s) that are still pending license activation." -#: templates/connect.php:233 +#: templates/connect.php:235 msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." msgstr "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." -#: templates/connect.php:235 +#: templates/connect.php:237 msgid "%s's paid features" msgstr "%s's paid features" -#: templates/connect.php:240 +#: templates/connect.php:242 msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." msgstr "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." -#: templates/connect.php:242 +#: templates/connect.php:244 msgid "During the update process we detected %s site(s) in the network that are still pending your attention." msgstr "During the update process we detected %s site(s) in the network that are still pending your attention." -#: templates/connect.php251, templates/forms/license-activation.php:46 +#: templates/connect.php253, templates/forms/license-activation.php:46 msgid "License key" msgstr "מפתח רישיון" -#: templates/connect.php254, templates/forms/license-activation.php:19 +#: templates/connect.php256, templates/forms/license-activation.php:19 msgid "Can't find your license key?" msgstr "האם אינך מוצא את מפתח הרישיון?" -#: templates/connect.php302, templates/connect.php617, +#: templates/connect.php315, templates/connect.php630, #: templates/forms/deactivation/retry-skip.php:20 msgctxt "verb" msgid "Skip" msgstr "דלג" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "Delegate to Site Admins" msgstr "האצלה למנהלי האתרים" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "If you click it, this decision will be delegated to the sites administrators." msgstr "If you click it, this decision will be delegated to the sites administrators." -#: templates/connect.php:333 +#: templates/connect.php:346 msgid "Your Profile Overview" msgstr "פרטים כלליים על הפרופיל" -#: templates/connect.php:334 +#: templates/connect.php:347 msgid "Name and email address" msgstr "שם וכתובת דו\"אל" -#: templates/connect.php:339 +#: templates/connect.php:352 msgid "Your Site Overview" msgstr "פרטים כלליים על האתר" -#: templates/connect.php:340 +#: templates/connect.php:353 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "כתובת אתר, גרסת וורדפרס, פרטי PHP, תוספים ותבניות" -#: templates/connect.php:345 +#: templates/connect.php:358 msgid "Admin Notices" msgstr "התראות מנהל" -#: templates/connect.php346, templates/connect.php:362 +#: templates/connect.php359, templates/connect.php:375 msgid "Updates, announcements, marketing, no spam" msgstr "עדכונים, הכרזות, הודעות שיווקיות, ללא דואר זבל" -#: templates/connect.php:351 +#: templates/connect.php:364 msgid "Current %s Events" msgstr "Current %s Events" -#: templates/connect.php:352 +#: templates/connect.php:365 msgid "Activation, deactivation and uninstall" msgstr "הפעלה, כיבוי והסרה" -#: templates/connect.php:361 +#: templates/connect.php:374 msgid "Newsletter" msgstr "ניוסלטר" -#: templates/connect.php378, templates/forms/license-activation.php:38 +#: templates/connect.php391, templates/forms/license-activation.php:38 msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." msgstr "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." -#: templates/connect.php:383 +#: templates/connect.php:396 msgid "What permissions are being granted?" msgstr "מהן ההרשאות המוענקות?" -#: templates/connect.php:404 +#: templates/connect.php:417 msgid "Don't have a license key?" msgstr "האם אין ברשותך מפתח רישיון?" -#: templates/connect.php:405 +#: templates/connect.php:418 msgid "Activate Free Version" msgstr "הפעלת גירסה חינאמית" -#: templates/connect.php:407 +#: templates/connect.php:420 msgid "Have a license key?" msgstr "האם ברשותך רישיון?" -#: templates/connect.php:415 +#: templates/connect.php:428 msgid "Privacy Policy" msgstr "מדיניות פרטיות" -#: templates/connect.php:417 +#: templates/connect.php:430 +msgid "License Agreement" +msgstr "License Agreement" + +#: templates/connect.php:430 msgid "Terms of Service" msgstr "תנאי השירות" -#: templates/connect.php:750 +#: templates/connect.php:766 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "שולח דוא\"ל" -#: templates/connect.php:751 +#: templates/connect.php:767 msgctxt "as activating plugin" msgid "Activating" msgstr "מפעיל" @@ -1544,8 +1645,8 @@ msgctxt "as code debugging" msgid "Debugging" msgstr "דיבוג" -#: templates/debug.php54, templates/debug.php238, templates/debug.php364, -#: templates/debug.php:482 +#: templates/debug.php54, templates/debug.php248, templates/debug.php374, +#: templates/debug.php:492 msgid "Actions" msgstr "פעולות" @@ -1569,199 +1670,203 @@ msgstr "Clear Updates Transients" msgid "Sync Data From Server" msgstr "סנכרון מידע מהשרת" -#: templates/debug.php:90 +#: templates/debug.php:95 +msgid "Migrate Options to Network" +msgstr "Migrate Options to Network" + +#: templates/debug.php:100 msgid "Load DB Option" msgstr "Load DB Option" -#: templates/debug.php:93 +#: templates/debug.php:103 msgid "Set DB Option" msgstr "Set DB Option" -#: templates/debug.php:170 +#: templates/debug.php:180 msgid "Key" msgstr "Key" -#: templates/debug.php:171 +#: templates/debug.php:181 msgid "Value" msgstr "Value" -#: templates/debug.php:187 +#: templates/debug.php:197 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "גרסאות SDK" -#: templates/debug.php:192 +#: templates/debug.php:202 msgid "SDK Path" msgstr "מיקום SDK" -#: templates/debug.php193, templates/debug.php:232 +#: templates/debug.php203, templates/debug.php:242 msgid "Module Path" msgstr "Module Path" -#: templates/debug.php:194 +#: templates/debug.php:204 msgid "Is Active" msgstr "האם פעיל" -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:35 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:35 msgid "Plugins" msgstr "תוספים" -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:56 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:56 msgid "Themes" msgstr "תבניות" -#: templates/debug.php227, templates/debug.php359, templates/debug.php441, +#: templates/debug.php237, templates/debug.php369, templates/debug.php451, #: templates/debug/scheduled-crons.php:80 msgid "Slug" msgstr "מזהה כתובת" -#: templates/debug.php229, templates/debug.php:440 +#: templates/debug.php239, templates/debug.php:450 msgid "Title" msgstr "כותרת" -#: templates/debug.php:230 +#: templates/debug.php:240 msgctxt "as application program interface" msgid "API" msgstr "API" -#: templates/debug.php:231 +#: templates/debug.php:241 msgid "Freemius State" msgstr "מצב פרימיוס" -#: templates/debug.php:235 +#: templates/debug.php:245 msgid "Network Blog" msgstr "Network Blog" -#: templates/debug.php:236 +#: templates/debug.php:246 msgid "Network User" msgstr "משתמש רשת" -#: templates/debug.php:273 +#: templates/debug.php:283 msgctxt "as connection was successful" msgid "Connected" msgstr "מחובר" -#: templates/debug.php:274 +#: templates/debug.php:284 msgctxt "as connection blocked" msgid "Blocked" msgstr "חסום" -#: templates/debug.php:310 -msgid "Simulate Trial" -msgstr "Simulate Trial" +#: templates/debug.php:320 +msgid "Simulate Trial Promotion" +msgstr "Simulate Trial Promotion" -#: templates/debug.php:322 +#: templates/debug.php:332 msgid "Simulate Network Upgrade" msgstr "סמלוץ עדכון לרשת" -#: templates/debug.php:348 +#: templates/debug.php:358 msgid "%s Installs" msgstr "%s התקנות" -#: templates/debug.php:350 +#: templates/debug.php:360 msgctxt "like websites" msgid "Sites" msgstr "אתרים" -#: templates/debug.php356, templates/account/partials/site.php:148 +#: templates/debug.php366, templates/account/partials/site.php:148 msgid "Blog ID" msgstr "מזהה בלוג" -#: templates/debug.php421, templates/debug.php499, -#: templates/account/partials/addon.php:334 +#: templates/debug.php431, templates/debug.php509, +#: templates/account/partials/addon.php:339 msgctxt "verb" msgid "Delete" msgstr "מחק" -#: templates/debug.php:435 +#: templates/debug.php:445 msgid "Add Ons of module %s" msgstr "Add Ons of module %s" -#: templates/debug.php:472 +#: templates/debug.php:482 msgid "Users" msgstr "משתמשים" -#: templates/debug.php:479 +#: templates/debug.php:489 msgid "Verified" msgstr "מאומת" -#: templates/debug.php:510 +#: templates/debug.php:520 msgid "%s Licenses" msgstr "%s Licenses" -#: templates/debug.php:515 +#: templates/debug.php:525 msgid "Plugin ID" msgstr "Plugin ID" -#: templates/debug.php:517 +#: templates/debug.php:527 msgid "Plan ID" msgstr "Plan ID" -#: templates/debug.php:518 +#: templates/debug.php:528 msgid "Quota" msgstr "Quota" -#: templates/debug.php:519 +#: templates/debug.php:529 msgid "Activated" msgstr "Activated" -#: templates/debug.php:520 +#: templates/debug.php:530 msgid "Blocking" msgstr "Blocking" -#: templates/debug.php:522 +#: templates/debug.php:532 msgctxt "as expiration date" msgid "Expiration" msgstr "תפוגה" -#: templates/debug.php:545 +#: templates/debug.php:555 msgid "Debug Log" msgstr "Debug Log" -#: templates/debug.php:549 +#: templates/debug.php:559 msgid "All Types" msgstr "כל הסוגים" -#: templates/debug.php:556 +#: templates/debug.php:566 msgid "All Requests" msgstr "כל הבקשות" -#: templates/debug.php561, templates/debug.php590, +#: templates/debug.php571, templates/debug.php600, #: templates/debug/logger.php:25 msgid "File" msgstr "קובץ" -#: templates/debug.php562, templates/debug.php588, +#: templates/debug.php572, templates/debug.php598, #: templates/debug/logger.php:23 msgid "Function" msgstr "פונקציה" -#: templates/debug.php:563 +#: templates/debug.php:573 msgid "Process ID" msgstr "Process ID" -#: templates/debug.php:564 +#: templates/debug.php:574 msgid "Logger" msgstr "Logger" -#: templates/debug.php565, templates/debug.php589, +#: templates/debug.php575, templates/debug.php599, #: templates/debug/logger.php:24 msgid "Message" msgstr "הודעה" -#: templates/debug.php:567 +#: templates/debug.php:577 msgid "Filter" msgstr "פילטר" -#: templates/debug.php:575 +#: templates/debug.php:585 msgid "Download" msgstr "הורדה" -#: templates/debug.php586, templates/debug/logger.php:22 +#: templates/debug.php596, templates/debug/logger.php:22 msgid "Type" msgstr "סוג" -#: templates/debug.php591, templates/debug/logger.php:26 +#: templates/debug.php601, templates/debug/logger.php:26 msgid "Timestamp" msgstr "Timestamp" @@ -2112,23 +2217,19 @@ msgstr "Usage tracking is done in the name of making %s better. Making a better msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." -#: templates/forms/premium-versions-upgrade-handler.php:24 +#: templates/forms/premium-versions-upgrade-handler.php:40 msgid "There is a new version of %s available." msgstr "יש גרסה חדשה עבור ה%s." -#: templates/forms/premium-versions-upgrade-handler.php:25 -msgid " %sRenew your license now%s to access version %s security & feature updates, and support." -msgstr " %sRenew your license now%s to access version %s security & feature updates, and support." +#: templates/forms/premium-versions-upgrade-handler.php:41 +msgid " %s to access version %s security & feature updates, and support." +msgstr " %s to access version %s security & feature updates, and support." -#: templates/forms/premium-versions-upgrade-handler.php:34 +#: templates/forms/premium-versions-upgrade-handler.php:54 msgid "New Version Available" msgstr "יש גרסה חדשה" -#: templates/forms/premium-versions-upgrade-handler.php:36 -msgid "Renew license" -msgstr "חידוש רישיון" - -#: templates/forms/premium-versions-upgrade-handler.php:53 +#: templates/forms/premium-versions-upgrade-handler.php:75 msgctxt "close a window" msgid "Dismiss" msgstr "סגירה" @@ -2141,6 +2242,43 @@ msgstr "שליחת מפתח רישיון" msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." msgstr "הזן את כתובת הדואל שאיתה שידרגת כדי לקבל את הרישיון שוב." +#: templates/forms/subscription-cancellation.php:37 +msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." +msgstr "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." + +#: templates/forms/subscription-cancellation.php:47 +msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" +msgstr "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" + +#: templates/forms/subscription-cancellation.php:52 +msgid "license" +msgstr "license" + +#: templates/forms/subscription-cancellation.php:57 +msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." +msgstr "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." + +#: templates/forms/subscription-cancellation.php:68 +msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." +msgstr "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." + +#: templates/forms/subscription-cancellation.php:103 +msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." +msgstr "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." + +#: templates/forms/subscription-cancellation.php:136 +msgid "Cancel %s?" +msgstr "Cancel %s?" + +#: templates/forms/subscription-cancellation.php:143 +msgid "Proceed" +msgstr "Proceed" + +#: templates/forms/subscription-cancellation.php191, +#: templates/forms/deactivation/form.php:150 +msgid "Cancel %s & Proceed" +msgstr "Cancel %s & Proceed" + #: templates/forms/trial-start.php:22 msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." @@ -2206,20 +2344,16 @@ msgstr "נשארו %s" msgid "Last license" msgstr "רישיון אחרון" -#: templates/account/partials/addon.php:111 +#: templates/account/partials/addon.php:115 msgid "Cancelled" msgstr "בוטל" -#: templates/account/partials/addon.php:116 -msgid "Expired" -msgstr "פג תוקף" - -#: templates/account/partials/addon.php:121 +#: templates/account/partials/addon.php:125 msgid "No expiration" msgstr "ללא תפוגה" -#: templates/account/partials/addon.php259, -#: templates/account/partials/addon.php:312 +#: templates/account/partials/addon.php264, +#: templates/account/partials/addon.php:317 msgid "Activate this add-on" msgstr "הפעל את ההרחבה" @@ -2247,47 +2381,47 @@ msgstr "מצטערים על חוסר הנעימות, אנחנו כאן כדי ל msgid "Contact Support" msgstr "צור קשר" -#: templates/forms/deactivation/form.php:56 +#: templates/forms/deactivation/form.php:59 msgid "Anonymous feedback" msgstr "פידבק אנונימי" -#: templates/forms/deactivation/form.php:63 +#: templates/forms/deactivation/form.php:66 msgid "Deactivate" msgstr "כיבוי" -#: templates/forms/deactivation/form.php:65 +#: templates/forms/deactivation/form.php:68 msgid "Activate %s" msgstr "Activate %s" -#: templates/forms/deactivation/form.php:76 -msgid "Quick feedback" -msgstr "פידבק זריז" - #: templates/forms/deactivation/form.php:80 +msgid "Quick Feedback" +msgstr "Quick Feedback" + +#: templates/forms/deactivation/form.php:84 msgid "If you have a moment, please let us know why you are %s" msgstr "If you have a moment, please let us know why you are %s" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "deactivating" msgstr "deactivating" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "switching" msgstr "switching" -#: templates/forms/deactivation/form.php:269 +#: templates/forms/deactivation/form.php:332 msgid "Submit & %s" msgstr "Submit & %s" -#: templates/forms/deactivation/form.php:290 +#: templates/forms/deactivation/form.php:353 msgid "Kindly tell us the reason so we can improve." msgstr "אנא שתף את הסיבה כדי שנוכל להשתפר." -#: templates/forms/deactivation/form.php:411 +#: templates/forms/deactivation/form.php:478 msgid "Yes - %s" msgstr "Yes - %s" -#: templates/forms/deactivation/form.php:418 +#: templates/forms/deactivation/form.php:485 msgid "Skip & %s" msgstr "דלג ו%s" diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-hu_HU.mo b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-hu_HU.mo new file mode 100644 index 0000000000000000000000000000000000000000..d116b1b504d3d1bc39765bd2ba4da513e2ed719c GIT binary patch literal 52634 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©2^--4DG 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 Pw#dP)16`e*p3eXP*?|s9 literal 0 HcmV?d00001 diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-hu_HU.po b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-hu_HU.po new file mode 100644 index 000000000..52543d6c0 --- /dev/null +++ b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-hu_HU.po @@ -0,0 +1,2433 @@ +# Copyright (C) 2019 freemius +# This file is distributed under the same license as the freemius package. +# Translators: +# Peter Ambrus, 2018-2019 +msgid "" +msgstr "" +"Project-Id-Version: WordPress SDK\n" +"Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" +"POT-Creation-Date: \n" +"PO-Revision-Date: 2019-01-10 20:38+0000\n" +"Last-Translator: Peter Ambrus\n" +"Language: hu_HU\n" +"Language-Team: Hungarian (Hungary) (http://www.transifex.com/freemius/wordpress-sdk/language/hu_HU/)\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"MIME-Version: 1.0\n" +"X-Poedit-Basepath: ..\n" +"X-Poedit-KeywordsList: get_text_inline;fs_text_inline;fs_echo_inline;fs_esc_js_inline;fs_esc_attr_inline;fs_esc_attr_echo_inline;fs_esc_html_inline;fs_esc_html_echo_inline;get_text_x_inline:1,2c;fs_text_x_inline:1,2c;fs_echo_x_inline:1,2c;fs_esc_attr_x_inline:1,2c;fs_esc_js_x_inline:1,2c;fs_esc_js_echo_x_inline:1,2c;fs_esc_html_x_inline:1,2c;fs_esc_html_echo_x_inline:1,2c\n" +"X-Poedit-SearchPath-0: .\n" +"X-Poedit-SearchPathExcluded-0: *.js\n" +"X-Poedit-SourceCharset: UTF-8\n" + +#: includes/class-freemius.php:1688 +msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." +msgstr "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." + +#: includes/class-freemius.php:1690 +msgid "Error" +msgstr "Hiba" + +#: includes/class-freemius.php:2011 +msgid "I found a better %s" +msgstr "Jobb %st találtam" + +#: includes/class-freemius.php:2013 +msgid "What's the %s's name?" +msgstr "Mi a %s neve?" + +#: includes/class-freemius.php:2019 +msgid "It's a temporary %s. I'm just debugging an issue." +msgstr "Ez csak egy ideiglenes %s. Egy hibát kell megoldanom." + +#: includes/class-freemius.php:2021 +msgid "Deactivation" +msgstr "Deaktiválás" + +#: includes/class-freemius.php:2022 +msgid "Theme Switch" +msgstr "Sablon váltás" + +#: includes/class-freemius.php2031, templates/forms/resend-key.php:24 +msgid "Other" +msgstr "Egyéb" + +#: includes/class-freemius.php:2039 +msgid "I no longer need the %s" +msgstr "I no longer need the %s" + +#: includes/class-freemius.php:2046 +msgid "I only needed the %s for a short period" +msgstr "I only needed the %s for a short period" + +#: includes/class-freemius.php:2052 +msgid "The %s broke my site" +msgstr "The %s broke my site" + +#: includes/class-freemius.php:2059 +msgid "The %s suddenly stopped working" +msgstr "The %s suddenly stopped working" + +#: includes/class-freemius.php:2069 +msgid "I can't pay for it anymore" +msgstr "Nem tudom tovább fizetni" + +#: includes/class-freemius.php:2071 +msgid "What price would you feel comfortable paying?" +msgstr "Mi lenne az elfogadható ár, amit tudnál fizetni?" + +#: includes/class-freemius.php:2077 +msgid "I don't like to share my information with you" +msgstr "Nem szeretném megosztani veletek az információt" + +#: includes/class-freemius.php:2098 +msgid "The %s didn't work" +msgstr "A %s nem működött" + +#: includes/class-freemius.php:2108 +msgid "I couldn't understand how to make it work" +msgstr "Nem értettem, hogy kell használni" + +#: includes/class-freemius.php:2116 +msgid "The %s is great, but I need specific feature that you don't support" +msgstr "The %s is great, but I need specific feature that you don't support" + +#: includes/class-freemius.php:2118 +msgid "What feature?" +msgstr "Melyik funkcióra van szükséged?" + +#: includes/class-freemius.php:2122 +msgid "The %s is not working" +msgstr "A(z) %s nem működik" + +#: includes/class-freemius.php:2124 +msgid "Kindly share what didn't work so we can fix it for future users..." +msgstr "Ha elmondod mi nem működött, ki tudjuk javítani a leendő felhasználók számára..." + +#: includes/class-freemius.php:2128 +msgid "It's not what I was looking for" +msgstr "Nem ezt kerestem" + +#: includes/class-freemius.php:2130 +msgid "What you've been looking for?" +msgstr "Pontosan mit kerestél?" + +#: includes/class-freemius.php:2134 +msgid "The %s didn't work as expected" +msgstr "A %s nem az elvárásoknak megfelelően működött" + +#: includes/class-freemius.php:2136 +msgid "What did you expect?" +msgstr "Mire számítottál?" + +#: includes/class-freemius.php2942, templates/debug.php:20 +msgid "Freemius Debug" +msgstr "Freemius Debug" + +#: includes/class-freemius.php:3670 +msgid "I don't know what is cURL or how to install it, help me!" +msgstr "I don't know what is cURL or how to install it, help me!" + +#: includes/class-freemius.php:3672 +msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." +msgstr "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." + +#: includes/class-freemius.php:3679 +msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." +msgstr "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." + +#: includes/class-freemius.php:3784 +msgid "Yes - do your thing" +msgstr "Igen - tedd a dolgod" + +#: includes/class-freemius.php:3789 +msgid "No - just deactivate" +msgstr "Nem - csak deaktiválom" + +#: includes/class-freemius.php3834, includes/class-freemius.php4343, +#: includes/class-freemius.php5442, includes/class-freemius.php11545, +#: includes/class-freemius.php14916, includes/class-freemius.php14968, +#: includes/class-freemius.php15030, includes/class-freemius.php17263, +#: includes/class-freemius.php17273, includes/class-freemius.php17882, +#: includes/class-freemius.php18742, includes/class-freemius.php18857, +#: includes/class-freemius.php19001, templates/add-ons.php:43 +msgctxt "exclamation" +msgid "Oops" +msgstr "Hoppá" + +#: includes/class-freemius.php:3903 +msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." +msgstr "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." + +#: includes/class-freemius.php:4340 +msgctxt "addonX cannot run without pluginY" +msgid "%s cannot run without %s." +msgstr "%s cannot run without %s." + +#: includes/class-freemius.php:4341 +msgctxt "addonX cannot run..." +msgid "%s cannot run without the plugin." +msgstr "%s cannot run without the plugin." + +#: includes/class-freemius.php4487, includes/class-freemius.php4512, +#: includes/class-freemius.php:17953 +msgid "Unexpected API error. Please contact the %s's author with the following error." +msgstr "Unexpected API error. Please contact the %s's author with the following error." + +#: includes/class-freemius.php:5130 +msgid "Premium %s version was successfully activated." +msgstr "Premium %s version was successfully activated." + +#: includes/class-freemius.php5142, includes/class-freemius.php:7004 +msgctxt "" +msgid "W00t" +msgstr "Fantasztikus" + +#: includes/class-freemius.php:5157 +msgid "You have a %s license." +msgstr "You have a %s license." + +#: includes/class-freemius.php5161, includes/class-freemius.php14337, +#: includes/class-freemius.php14348, includes/class-freemius.php17177, +#: includes/class-freemius.php17491, includes/class-freemius.php17557, +#: includes/class-freemius.php:17707 +msgctxt "interjection expressing joy or exuberance" +msgid "Yee-haw" +msgstr "Juhuuu" + +#: includes/class-freemius.php:5425 +msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." +msgstr "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." + +#: includes/class-freemius.php:5429 +msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." +msgstr "%s is a premium only add-on. You have to purchase a license first before activating the plugin." + +#: includes/class-freemius.php5438, templates/add-ons.php103, +#: templates/account/partials/addon.php:288 +msgid "More information about %s" +msgstr "More information about %s" + +#: includes/class-freemius.php:5439 +msgid "Purchase License" +msgstr "Licensz vásárlása" + +#: includes/class-freemius.php6372, templates/connect.php:163 +msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." +msgstr "Küldtünk egy aktivációs emailt a(z) %s szoftverünkhöz a következő email címre: %s. Kérlek kattints a levélben található aktivációs linkre, hogy %s." + +#: includes/class-freemius.php:6376 +msgid "start the trial" +msgstr "próbaidő indítása" + +#: includes/class-freemius.php6377, templates/connect.php:167 +msgid "complete the install" +msgstr "befejezd a telepítést" + +#: includes/class-freemius.php:6490 +msgid "You are just one step away - %s" +msgstr "Már csak egy lépés van hátra - %s" + +#: includes/class-freemius.php:6493 +msgctxt "%s - plugin name. As complete \"PluginX\" activation now" +msgid "Complete \"%s\" Activation Now" +msgstr "\"%s\" aktiválásának a befejezése most" + +#: includes/class-freemius.php:6571 +msgid "We made a few tweaks to the %s, %s" +msgstr "We made a few tweaks to the %s, %s" + +#: includes/class-freemius.php:6575 +msgid "Opt in to make \"%s\" better!" +msgstr "Opt in to make \"%s\" better!" + +#: includes/class-freemius.php:7003 +msgid "The upgrade of %s was successfully completed." +msgstr "The upgrade of %s was successfully completed." + +#: includes/class-freemius.php8925, includes/class-fs-plugin-updater.php886, +#: includes/class-fs-plugin-updater.php1081, +#: includes/class-fs-plugin-updater.php1088, +#: templates/auto-installation.php:32 +msgid "Add-On" +msgstr "Kiegészítő" + +#: includes/class-freemius.php8927, templates/debug.php359, +#: templates/debug.php:520 +msgid "Plugin" +msgstr "Bővítmény" + +#: includes/class-freemius.php8928, templates/debug.php359, +#: templates/debug.php520, templates/forms/deactivation/form.php:67 +msgid "Theme" +msgstr "Sablon" + +#: includes/class-freemius.php:11412 +msgid "Invalid site details collection." +msgstr "Invalid site details collection." + +#: includes/class-freemius.php:11532 +msgid "We couldn't find your email address in the system, are you sure it's the right address?" +msgstr "We couldn't find your email address in the system, are you sure it's the right address?" + +#: includes/class-freemius.php:11534 +msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" +msgstr "We can't see any active licenses associated with that email address, are you sure it's the right address?" + +#: includes/class-freemius.php:11808 +msgid "Account is pending activation." +msgstr "A fiók aktiválása függőben." + +#: includes/class-freemius.php11920, +#: templates/forms/premium-versions-upgrade-handler.php:47 +msgid "Buy a license now" +msgstr "Vásárolj licenszet most" + +#: includes/class-freemius.php11932, +#: templates/forms/premium-versions-upgrade-handler.php:46 +msgid "Renew your license now" +msgstr "Licensz kulcs megújítása" + +#: includes/class-freemius.php:11936 +msgid "%s to access version %s security & feature updates, and support." +msgstr "%s to access version %s security & feature updates, and support." + +#: includes/class-freemius.php:14319 +msgid "%s activation was successfully completed." +msgstr "%s activation was successfully completed." + +#: includes/class-freemius.php:14333 +msgid "Your account was successfully activated with the %s plan." +msgstr "A fiókodat sikeresen aktiváltuk a következő csomaggal: %s" + +#: includes/class-freemius.php14344, includes/class-freemius.php:17553 +msgid "Your trial has been successfully started." +msgstr "A próbaidőszakodat sikeresen aktiváltuk." + +#: includes/class-freemius.php14914, includes/class-freemius.php14966, +#: includes/class-freemius.php:15028 +msgid "Couldn't activate %s." +msgstr "Couldn't activate %s." + +#: includes/class-freemius.php14915, includes/class-freemius.php14967, +#: includes/class-freemius.php:15029 +msgid "Please contact us with the following message:" +msgstr "Please contact us with the following message:" + +#: includes/class-freemius.php15378, includes/class-freemius.php:19839 +msgid "Upgrade" +msgstr "Előfizetés frissítése" + +#: includes/class-freemius.php:15384 +msgid "Start Trial" +msgstr "Próbaidő indítása" + +#: includes/class-freemius.php:15386 +msgid "Pricing" +msgstr "Árak" + +#: includes/class-freemius.php15448, includes/class-freemius.php:15450 +msgid "Affiliation" +msgstr "Affiliation" + +#: includes/class-freemius.php15478, includes/class-freemius.php15480, +#: templates/account.php150, templates/debug.php:324 +msgid "Account" +msgstr "Fiók" + +#: includes/class-freemius.php15493, includes/class-freemius.php15495, +#: includes/customizer/class-fs-customizer-support-section.php:60 +msgid "Contact Us" +msgstr "Kapcsolat" + +#: includes/class-freemius.php15505, includes/class-freemius.php15507, +#: includes/class-freemius.php19849, templates/account.php100, +#: templates/account/partials/addon.php:41 +msgid "Add-Ons" +msgstr "Kiegészítők" + +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow left icon" +msgid "←" +msgstr "←" + +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow right icon" +msgid "➤" +msgstr "➤" + +#: includes/class-freemius.php15543, templates/pricing.php:97 +msgctxt "noun" +msgid "Pricing" +msgstr "Árak" + +#: includes/class-freemius.php15756, +#: includes/customizer/class-fs-customizer-support-section.php:67 +msgid "Support Forum" +msgstr "Támogató fórum" + +#: includes/class-freemius.php:16542 +msgid "Your email has been successfully verified - you are AWESOME!" +msgstr "Az email címedet sikerült ellenőrizni - ez nagyszerű!" + +#: includes/class-freemius.php:16543 +msgctxt "a positive response" +msgid "Right on" +msgstr "Right on" + +#: includes/class-freemius.php:17168 +msgid "Your %s Add-on plan was successfully upgraded." +msgstr "Your %s Add-on plan was successfully upgraded." + +#: includes/class-freemius.php:17170 +msgid "%s Add-on was successfully purchased." +msgstr "%s Add-on was successfully purchased." + +#: includes/class-freemius.php:17173 +msgid "Download the latest version" +msgstr "Töltsd le a legfrissebb verziót" + +#: includes/class-freemius.php:17259 +msgctxt "%1s - plugin title, %2s - API domain" +msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" +msgstr "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" + +#: includes/class-freemius.php17262, includes/class-freemius.php17678, +#: includes/class-freemius.php:17755 +msgid "Error received from the server:" +msgstr "Error received from the server:" + +#: includes/class-freemius.php:17272 +msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." +msgstr "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." + +#: includes/class-freemius.php17454, includes/class-freemius.php17683, +#: includes/class-freemius.php17726, includes/class-freemius.php:17829 +msgctxt "" +msgid "Hmm" +msgstr "Hmm" + +#: includes/class-freemius.php:17467 +msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." +msgstr "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." + +#: includes/class-freemius.php17468, templates/account.php102, +#: templates/add-ons.php134, templates/account/partials/addon.php:43 +msgctxt "trial period" +msgid "Trial" +msgstr "Próbaidő" + +#: includes/class-freemius.php:17473 +msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." +msgstr "I have upgraded my account but when I try to Sync the License, the plan remains %s." + +#: includes/class-freemius.php17477, includes/class-freemius.php:17535 +msgid "Please contact us here" +msgstr "Please contact us here" + +#: includes/class-freemius.php:17487 +msgid "Your plan was successfully upgraded." +msgstr "Your plan was successfully upgraded." + +#: includes/class-freemius.php:17505 +msgid "Your plan was successfully changed to %s." +msgstr "Your plan was successfully changed to %s." + +#: includes/class-freemius.php:17521 +msgid "Your license has expired. You can still continue using the free %s forever." +msgstr "Your license has expired. You can still continue using the free %s forever." + +#: includes/class-freemius.php:17523 +msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." +msgstr "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." + +#: includes/class-freemius.php:17531 +msgid "Your license has been cancelled. If you think it's a mistake, please contact support." +msgstr "Your license has been cancelled. If you think it's a mistake, please contact support." + +#: includes/class-freemius.php:17544 +msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." +msgstr "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." + +#: includes/class-freemius.php:17567 +msgid "Your free trial has expired. You can still continue using all our free features." +msgstr "Your free trial has expired. You can still continue using all our free features." + +#: includes/class-freemius.php:17569 +msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." +msgstr "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." + +#: includes/class-freemius.php:17674 +msgid "It looks like the license could not be activated." +msgstr "It looks like the license could not be activated." + +#: includes/class-freemius.php:17704 +msgid "Your license was successfully activated." +msgstr "Your license was successfully activated." + +#: includes/class-freemius.php:17730 +msgid "It looks like your site currently doesn't have an active license." +msgstr "It looks like your site currently doesn't have an active license." + +#: includes/class-freemius.php:17754 +msgid "It looks like the license deactivation failed." +msgstr "Úgy tűnik a licensz deaktiválása nem sikerült." + +#: includes/class-freemius.php:17782 +msgid "Your license was successfully deactivated, you are back to the %s plan." +msgstr "A licenszedet sikeresen deaktiváltuk, az aktuális csomagod: %s" + +#: includes/class-freemius.php:17783 +msgid "O.K" +msgstr "Rendben" + +#: includes/class-freemius.php:17836 +msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." +msgstr "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." + +#: includes/class-freemius.php:17845 +msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s." +msgstr "Your subscription was successfully cancelled. Your %s plan license will expire in %s." + +#: includes/class-freemius.php:17887 +msgid "You are already running the %s in a trial mode." +msgstr "You are already running the %s in a trial mode." + +#: includes/class-freemius.php:17898 +msgid "You already utilized a trial before." +msgstr "You already utilized a trial before." + +#: includes/class-freemius.php:17912 +msgid "Plan %s do not exist, therefore, can't start a trial." +msgstr "Plan %s do not exist, therefore, can't start a trial." + +#: includes/class-freemius.php:17923 +msgid "Plan %s does not support a trial period." +msgstr "Plan %s does not support a trial period." + +#: includes/class-freemius.php:17934 +msgid "None of the %s's plans supports a trial period." +msgstr "None of the %s's plans supports a trial period." + +#: includes/class-freemius.php:17984 +msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" +msgstr "It looks like you are not in trial mode anymore so there's nothing to cancel :)" + +#: includes/class-freemius.php:18020 +msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." +msgstr "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." + +#: includes/class-freemius.php:18039 +msgid "Your %s free trial was successfully cancelled." +msgstr "Your %s free trial was successfully cancelled." + +#: includes/class-freemius.php:18346 +msgid "Version %s was released." +msgstr "Version %s was released." + +#: includes/class-freemius.php:18346 +msgid "Please download %s." +msgstr "Please download %s." + +#: includes/class-freemius.php:18353 +msgid "the latest %s version here" +msgstr "the latest %s version here" + +#: includes/class-freemius.php:18358 +msgid "New" +msgstr "Új" + +#: includes/class-freemius.php:18363 +msgid "Seems like you got the latest release." +msgstr "Seems like you got the latest release." + +#: includes/class-freemius.php:18364 +msgid "You are all good!" +msgstr "Minden rendben!" + +#: includes/class-freemius.php:18632 +msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." +msgstr "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." + +#: includes/class-freemius.php:18769 +msgid "Site successfully opted in." +msgstr "Site successfully opted in." + +#: includes/class-freemius.php18770, includes/class-freemius.php:19581 +msgid "Awesome" +msgstr "Nagyszerű" + +#: includes/class-freemius.php18786, templates/forms/optout.php:32 +msgid "We appreciate your help in making the %s better by letting us track some usage data." +msgstr "We appreciate your help in making the %s better by letting us track some usage data." + +#: includes/class-freemius.php:18787 +msgid "Thank you!" +msgstr "Köszönjük!" + +#: includes/class-freemius.php:18794 +msgid "We will no longer be sending any usage data of %s on %s to %s." +msgstr "We will no longer be sending any usage data of %s on %s to %s." + +#: includes/class-freemius.php:18923 +msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." +msgstr "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." + +#: includes/class-freemius.php:18929 +msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." +msgstr "Thanks for confirming the ownership change. An email was just sent to %s for final approval." + +#: includes/class-freemius.php:18934 +msgid "%s is the new owner of the account." +msgstr "%s is the new owner of the account." + +#: includes/class-freemius.php:18936 +msgctxt "as congratulations" +msgid "Congrats" +msgstr "Gratulálunk" + +#: includes/class-freemius.php:18956 +msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." +msgstr "Sorry, we could not complete the email update. Another user with the same email is already registered." + +#: includes/class-freemius.php:18957 +msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." +msgstr "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." + +#: includes/class-freemius.php:18964 +msgid "Change Ownership" +msgstr "Tulajdonos módosítása" + +#: includes/class-freemius.php:18972 +msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." +msgstr "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." + +#: includes/class-freemius.php:18984 +msgid "Please provide your full name." +msgstr "Kérlek add meg a teljes neved!" + +#: includes/class-freemius.php:18989 +msgid "Your name was successfully updated." +msgstr "A neved sikeresen frissítettük." + +#: includes/class-freemius.php:19050 +msgid "You have successfully updated your %s." +msgstr "You have successfully updated your %s." + +#: includes/class-freemius.php:19190 +msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." +msgstr "Just letting you know that the add-ons information of %s is being pulled from an external server." + +#: includes/class-freemius.php:19191 +msgctxt "advance notice of something that will need attention." +msgid "Heads up" +msgstr "Figyelem" + +#: includes/class-freemius.php:19621 +msgctxt "exclamation" +msgid "Hey" +msgstr "Üdv" + +#: includes/class-freemius.php:19621 +msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." +msgstr "How do you like %s so far? Test all our %s premium features with a %d-day free trial." + +#: includes/class-freemius.php:19629 +msgid "No commitment for %s days - cancel anytime!" +msgstr "No commitment for %s days - cancel anytime!" + +#: includes/class-freemius.php:19630 +msgid "No credit card required" +msgstr "Bankkártya megadása nem kötelező" + +#: includes/class-freemius.php19637, templates/forms/trial-start.php:53 +msgctxt "call to action" +msgid "Start free trial" +msgstr "Start free trial" + +#: includes/class-freemius.php:19714 +msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" +msgstr "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" + +#: includes/class-freemius.php:19723 +msgid "Learn more" +msgstr "Bővebben" + +#: includes/class-freemius.php19873, templates/account.php406, +#: templates/account.php509, templates/connect.php171, +#: templates/connect.php421, templates/forms/license-activation.php24, +#: templates/account/partials/addon.php:235 +msgid "Activate License" +msgstr "Licensz aktiválása" + +#: includes/class-freemius.php19874, templates/account.php469, +#: templates/account.php508, templates/account/partials/site.php:256 +msgid "Change License" +msgstr "Licensz módosítása" + +#: includes/class-freemius.php19956, templates/account/partials/site.php:161 +msgid "Opt Out" +msgstr "Leiratkozás" + +#: includes/class-freemius.php19958, includes/class-freemius.php19963, +#: templates/account/partials/site.php43, +#: templates/account/partials/site.php:161 +msgid "Opt In" +msgstr "Feliratkozás" + +#: includes/class-freemius.php:20187 +msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" +msgstr " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" + +#: includes/class-freemius.php:20195 +msgid "Activate %s features" +msgstr "Activate %s features" + +#: includes/class-freemius.php:20208 +msgid "Please follow these steps to complete the upgrade" +msgstr "Please follow these steps to complete the upgrade" + +#: includes/class-freemius.php:20212 +msgid "Download the latest %s version" +msgstr "Download the latest %s version" + +#: includes/class-freemius.php:20216 +msgid "Upload and activate the downloaded version" +msgstr "Upload and activate the downloaded version" + +#: includes/class-freemius.php:20218 +msgid "How to upload and activate?" +msgstr "How to upload and activate?" + +#: includes/class-freemius.php:20352 +msgid "%sClick here%s to choose the sites where you'd like to activate the license on." +msgstr "%sClick here%s to choose the sites where you'd like to activate the license on." + +#: includes/class-freemius.php:20513 +msgid "Auto installation only works for opted-in users." +msgstr "Auto installation only works for opted-in users." + +#: includes/class-freemius.php20523, includes/class-freemius.php20556, +#: includes/class-fs-plugin-updater.php1060, +#: includes/class-fs-plugin-updater.php:1074 +msgid "Invalid module ID." +msgstr "Invalid module ID." + +#: includes/class-freemius.php20532, includes/class-fs-plugin-updater.php:1096 +msgid "Premium version already active." +msgstr "Premium version already active." + +#: includes/class-freemius.php:20539 +msgid "You do not have a valid license to access the premium version." +msgstr "You do not have a valid license to access the premium version." + +#: includes/class-freemius.php:20546 +msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." +msgstr "Plugin is a \"Serviceware\" which means it does not have a premium code version." + +#: includes/class-freemius.php20564, includes/class-fs-plugin-updater.php:1095 +msgid "Premium add-on version already installed." +msgstr "Premium add-on version already installed." + +#: includes/class-freemius.php:20909 +msgid "View paid features" +msgstr "Fizetős funkciók megtekintése" + +#: includes/class-freemius.php:21229 +msgid "Thank you so much for using %s and its add-ons!" +msgstr "Thank you so much for using %s and its add-ons!" + +#: includes/class-freemius.php:21230 +msgid "Thank you so much for using %s!" +msgstr "Thank you so much for using %s!" + +#: includes/class-freemius.php:21236 +msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s." +msgstr "You've already opted-in to our usage-tracking, which helps us keep improving the %s." + +#: includes/class-freemius.php:21240 +msgid "Thank you so much for using our products!" +msgstr "Thank you so much for using our products!" + +#: includes/class-freemius.php:21241 +msgid "You've already opted-in to our usage-tracking, which helps us keep improving them." +msgstr "You've already opted-in to our usage-tracking, which helps us keep improving them." + +#: includes/class-freemius.php:21260 +msgid "%s and its add-ons" +msgstr "%s and its add-ons" + +#: includes/class-freemius.php:21269 +msgid "Products" +msgstr "Termékek" + +#: includes/class-freemius.php21276, templates/connect.php:272 +msgid "Yes" +msgstr "Igen" + +#: includes/class-freemius.php21277, templates/connect.php:273 +msgid "send me security & feature updates, educational content and offers." +msgstr "kérek biztonsági és funkcionális frissítéseket, használati ismertetőket és ajánlatokat." + +#: includes/class-freemius.php21278, templates/connect.php:278 +msgid "No" +msgstr "Nem" + +#: includes/class-freemius.php21280, templates/connect.php:280 +msgid "do %sNOT%s send me security & feature updates, educational content and offers." +msgstr "do %sNOT%s send me security & feature updates, educational content and offers." + +#: includes/class-freemius.php:21290 +msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" +msgstr "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" + +#: includes/class-freemius.php21292, templates/connect.php:287 +msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" +msgstr "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" + +#: includes/class-freemius.php:21574 +msgid "License key is empty." +msgstr "A licensz kulcs üres." + +#: includes/class-fs-plugin-updater.php184, +#: templates/forms/premium-versions-upgrade-handler.php:57 +msgid "Renew license" +msgstr "Licensz megújítása" + +#: includes/class-fs-plugin-updater.php189, +#: templates/forms/premium-versions-upgrade-handler.php:58 +msgid "Buy license" +msgstr "Licensz vásárlása" + +#: includes/class-fs-plugin-updater.php:278 +msgid "There is a %s of %s available." +msgstr "There is a %s of %s available." + +#: includes/class-fs-plugin-updater.php:282 +msgid "new version" +msgstr "új verzió" + +#: includes/class-fs-plugin-updater.php:305 +msgid "Important Upgrade Notice:" +msgstr "Important Upgrade Notice:" + +#: includes/class-fs-plugin-updater.php:1125 +msgid "Installing plugin: %s" +msgstr "Bővítmény telepítése: %s" + +#: includes/class-fs-plugin-updater.php:1166 +msgid "Unable to connect to the filesystem. Please confirm your credentials." +msgstr "Unable to connect to the filesystem. Please confirm your credentials." + +#: includes/class-fs-plugin-updater.php:1348 +msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." +msgstr "The remote plugin package does not contain a folder with the desired slug and renaming did not work." + +#: includes/fs-plugin-info-dialog.php369, +#: templates/account/partials/addon.php:292 +msgctxt "verb" +msgid "Purchase" +msgstr "Vásárlás" + +#: includes/fs-plugin-info-dialog.php:372 +msgid "Start my free %s" +msgstr "Start my free %s" + +#: includes/fs-plugin-info-dialog.php:413 +msgid "Install Free Version Now" +msgstr "Install Free Version Now" + +#: includes/fs-plugin-info-dialog.php414, templates/auto-installation.php111, +#: templates/account/partials/addon.php272, +#: templates/account/partials/addon.php:322 +msgid "Install Now" +msgstr "Telepítés most" + +#: includes/fs-plugin-info-dialog.php:425 +msgctxt "as download latest version" +msgid "Download Latest Free Version" +msgstr "Download Latest Free Version" + +#: includes/fs-plugin-info-dialog.php426, templates/account.php80, +#: templates/account/partials/addon.php:21 +msgctxt "as download latest version" +msgid "Download Latest" +msgstr "Download Latest" + +#: includes/fs-plugin-info-dialog.php:436 +msgid "Install Free Version Update Now" +msgstr "Install Free Version Update Now" + +#: includes/fs-plugin-info-dialog.php437, templates/account.php:460 +msgid "Install Update Now" +msgstr "Frissítés telepítése most" + +#: includes/fs-plugin-info-dialog.php:448 +msgid "Newer Free Version (%s) Installed" +msgstr "Newer Free Version (%s) Installed" + +#: includes/fs-plugin-info-dialog.php:449 +msgid "Newer Version (%s) Installed" +msgstr "Newer Version (%s) Installed" + +#: includes/fs-plugin-info-dialog.php:457 +msgid "Latest Free Version Installed" +msgstr "Legfrissebb ingyenes verzió telepítve" + +#: includes/fs-plugin-info-dialog.php:458 +msgid "Latest Version Installed" +msgstr "Legfrissebb verzió telepítve" + +#: includes/fs-plugin-info-dialog.php:613 +msgctxt "Plugin installer section title" +msgid "Description" +msgstr "Leírás" + +#: includes/fs-plugin-info-dialog.php:614 +msgctxt "Plugin installer section title" +msgid "Installation" +msgstr "Telepítés" + +#: includes/fs-plugin-info-dialog.php:615 +msgctxt "Plugin installer section title" +msgid "FAQ" +msgstr "GYIK" + +#: includes/fs-plugin-info-dialog.php616, +#: templates/plugin-info/description.php:55 +msgid "Screenshots" +msgstr "Képernyőfotók" + +#: includes/fs-plugin-info-dialog.php:617 +msgctxt "Plugin installer section title" +msgid "Changelog" +msgstr "Változtatások" + +#: includes/fs-plugin-info-dialog.php:618 +msgctxt "Plugin installer section title" +msgid "Reviews" +msgstr "Vélemények" + +#: includes/fs-plugin-info-dialog.php:619 +msgctxt "Plugin installer section title" +msgid "Other Notes" +msgstr "Egyéb megjegyzések" + +#: includes/fs-plugin-info-dialog.php:634 +msgctxt "Plugin installer section title" +msgid "Features & Pricing" +msgstr "Funkciók & Árak" + +#: includes/fs-plugin-info-dialog.php:644 +msgid "Plugin Install" +msgstr "Bővítmény telepítése" + +#: includes/fs-plugin-info-dialog.php:716 +msgctxt "e.g. Professional Plan" +msgid "%s Plan" +msgstr "%s csomag" + +#: includes/fs-plugin-info-dialog.php:742 +msgctxt "e.g. the best product" +msgid "Best" +msgstr "Legjobb" + +#: includes/fs-plugin-info-dialog.php748, +#: includes/fs-plugin-info-dialog.php:768 +msgctxt "as every month" +msgid "Monthly" +msgstr "Havi" + +#: includes/fs-plugin-info-dialog.php:751 +msgctxt "as once a year" +msgid "Annual" +msgstr "Éves" + +#: includes/fs-plugin-info-dialog.php:754 +msgid "Lifetime" +msgstr "Örök" + +#: includes/fs-plugin-info-dialog.php768, +#: includes/fs-plugin-info-dialog.php770, +#: includes/fs-plugin-info-dialog.php:772 +msgctxt "e.g. billed monthly" +msgid "Billed %s" +msgstr "%s számlázás" + +#: includes/fs-plugin-info-dialog.php:770 +msgctxt "as once a year" +msgid "Annually" +msgstr "Éves" + +#: includes/fs-plugin-info-dialog.php:772 +msgctxt "as once a year" +msgid "Once" +msgstr "Egyszeri" + +#: includes/fs-plugin-info-dialog.php:778 +msgid "Single Site License" +msgstr "Egy weboldalas licensz" + +#: includes/fs-plugin-info-dialog.php:780 +msgid "Unlimited Licenses" +msgstr "Korlátlan licensz" + +#: includes/fs-plugin-info-dialog.php:782 +msgid "Up to %s Sites" +msgstr "Up to %s Sites" + +#: includes/fs-plugin-info-dialog.php792, +#: templates/plugin-info/features.php:82 +msgctxt "as monthly period" +msgid "mo" +msgstr "hó" + +#: includes/fs-plugin-info-dialog.php799, +#: templates/plugin-info/features.php:80 +msgctxt "as annual period" +msgid "year" +msgstr "év" + +#: includes/fs-plugin-info-dialog.php:853 +msgctxt "noun" +msgid "Price" +msgstr "Ár" + +#: includes/fs-plugin-info-dialog.php:901 +msgid "Save %s" +msgstr "%s mentése" + +#: includes/fs-plugin-info-dialog.php:911 +msgid "No commitment for %s - cancel anytime" +msgstr "No commitment for %s - cancel anytime" + +#: includes/fs-plugin-info-dialog.php:914 +msgid "After your free %s, pay as little as %s" +msgstr "After your free %s, pay as little as %s" + +#: includes/fs-plugin-info-dialog.php:925 +msgid "Details" +msgstr "Részletek" + +#: includes/fs-plugin-info-dialog.php929, templates/account.php91, +#: templates/debug.php201, templates/debug.php238, templates/debug.php452, +#: templates/account/partials/addon.php:32 +msgctxt "product version" +msgid "Version" +msgstr "Verzió" + +#: includes/fs-plugin-info-dialog.php:936 +msgctxt "as the plugin author" +msgid "Author" +msgstr "Szerző" + +#: includes/fs-plugin-info-dialog.php:943 +msgid "Last Updated" +msgstr "Utolsó frissítés" + +#: includes/fs-plugin-info-dialog.php948, templates/account.php:376 +msgctxt "x-ago" +msgid "%s ago" +msgstr "%s ago" + +#: includes/fs-plugin-info-dialog.php:957 +msgid "Requires WordPress Version" +msgstr "A következő WordPress verzió szükséges:" + +#: includes/fs-plugin-info-dialog.php:958 +msgid "%s or higher" +msgstr "%s or higher" + +#: includes/fs-plugin-info-dialog.php:965 +msgid "Compatible up to" +msgstr "Compatible up to" + +#: includes/fs-plugin-info-dialog.php:973 +msgid "Downloaded" +msgstr "Letöltések száma:" + +#: includes/fs-plugin-info-dialog.php:977 +msgid "%s time" +msgstr "%s" + +#: includes/fs-plugin-info-dialog.php:979 +msgid "%s times" +msgstr "%s" + +#: includes/fs-plugin-info-dialog.php:989 +msgid "WordPress.org Plugin Page" +msgstr "WordPress.org bővítmény oldal" + +#: includes/fs-plugin-info-dialog.php:997 +msgid "Plugin Homepage" +msgstr "Bővítmény oldala" + +#: includes/fs-plugin-info-dialog.php1005, +#: includes/fs-plugin-info-dialog.php:1087 +msgid "Donate to this plugin" +msgstr "Bővítmény támogatása" + +#: includes/fs-plugin-info-dialog.php:1012 +msgid "Average Rating" +msgstr "Átlagos értékelés" + +#: includes/fs-plugin-info-dialog.php:1019 +msgid "based on %s" +msgstr "based on %s" + +#: includes/fs-plugin-info-dialog.php:1023 +msgid "%s rating" +msgstr "%s rating" + +#: includes/fs-plugin-info-dialog.php:1025 +msgid "%s ratings" +msgstr "%s ratings" + +#: includes/fs-plugin-info-dialog.php:1040 +msgid "%s star" +msgstr "%s star" + +#: includes/fs-plugin-info-dialog.php:1042 +msgid "%s stars" +msgstr "%s stars" + +#: includes/fs-plugin-info-dialog.php:1053 +msgid "Click to see reviews that provided a rating of %s" +msgstr "Click to see reviews that provided a rating of %s" + +#: includes/fs-plugin-info-dialog.php:1066 +msgid "Contributors" +msgstr "Közreműködők" + +#: includes/fs-plugin-info-dialog.php1095, +#: includes/fs-plugin-info-dialog.php:1097 +msgid "Warning" +msgstr "Figyelmeztetés" + +#: includes/fs-plugin-info-dialog.php:1095 +msgid "This plugin has not been tested with your current version of WordPress." +msgstr "This plugin has not been tested with your current version of WordPress." + +#: includes/fs-plugin-info-dialog.php:1097 +msgid "This plugin has not been marked as compatible with your version of WordPress." +msgstr "This plugin has not been marked as compatible with your version of WordPress." + +#: includes/fs-plugin-info-dialog.php:1116 +msgid "Paid add-on must be deployed to Freemius." +msgstr "Paid add-on must be deployed to Freemius." + +#: includes/fs-plugin-info-dialog.php:1117 +msgid "Add-on must be deployed to WordPress.org or Freemius." +msgstr "Add-on must be deployed to WordPress.org or Freemius." + +#: templates/account.php81, templates/forms/subscription-cancellation.php96, +#: templates/account/partials/addon.php22, +#: templates/account/partials/site.php:295 +msgid "Downgrading your plan" +msgstr "Downgrading your plan" + +#: templates/account.php82, templates/forms/subscription-cancellation.php97, +#: templates/account/partials/addon.php23, +#: templates/account/partials/site.php:296 +msgid "Cancelling the subscription" +msgstr "Cancelling the subscription" + +#. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the +#. subscription' +#: templates/account.php84, templates/forms/subscription-cancellation.php99, +#: templates/account/partials/addon.php25, +#: templates/account/partials/site.php:298 +msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." +msgstr "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." + +#: templates/account.php85, templates/forms/subscription-cancellation.php100, +#: templates/account/partials/addon.php26, +#: templates/account/partials/site.php:299 +msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." +msgstr "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." + +#: templates/account.php86, templates/forms/subscription-cancellation.php106, +#: templates/account/partials/addon.php:27 +msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" +msgstr "Cancelling the trial will immediately block access to all premium features. Are you sure?" + +#: templates/account.php87, templates/forms/subscription-cancellation.php101, +#: templates/account/partials/addon.php28, +#: templates/account/partials/site.php:300 +msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." +msgstr "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." + +#: templates/account.php88, templates/forms/subscription-cancellation.php102, +#: templates/account/partials/addon.php29, +#: templates/account/partials/site.php:301 +msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." +msgstr "Once your license expires you can still use the Free version but you will NOT have access to the %s features." + +#. translators: %s: Plan title (e.g. "Professional") +#: templates/account.php90, +#: templates/account/partials/activate-license-button.php31, +#: templates/account/partials/addon.php:31 +msgid "Activate %s Plan" +msgstr "%s csomag aktiválása" + +#. translators: %s: Time period (e.g. Auto renews in "2 months") +#: templates/account.php93, templates/account/partials/addon.php34, +#: templates/account/partials/site.php:275 +msgid "Auto renews in %s" +msgstr "Auto renews in %s" + +#. translators: %s: Time period (e.g. Expires in "2 months") +#: templates/account.php95, templates/account/partials/addon.php36, +#: templates/account/partials/site.php:277 +msgid "Expires in %s" +msgstr "Hátralévő idő: %s" + +#: templates/account.php96, templates/account/partials/addon.php:37 +msgctxt "as synchronize license" +msgid "Sync License" +msgstr "Licensz szinkronizálása" + +#: templates/account.php97, templates/account/partials/addon.php:38 +msgid "Cancel Trial" +msgstr "Próbaidő törlése" + +#: templates/account.php98, templates/account/partials/addon.php:39 +msgid "Change Plan" +msgstr "Csomag módosítása" + +#: templates/account.php99, templates/account/partials/addon.php:40 +msgctxt "verb" +msgid "Upgrade" +msgstr "Váltás nagyobb csomagra" + +#: templates/account.php101, templates/account/partials/addon.php42, +#: templates/account/partials/site.php:302 +msgctxt "verb" +msgid "Downgrade" +msgstr "Váltás kisebb csomagra" + +#: templates/account.php103, templates/add-ons.php130, +#: templates/plugin-info/features.php72, +#: templates/account/partials/addon.php44, +#: templates/account/partials/site.php:31 +msgid "Free" +msgstr "Ingyenes" + +#: templates/account.php104, templates/account/partials/addon.php:45 +msgid "Activate" +msgstr "Aktiválás" + +#: templates/account.php105, templates/debug.php371, +#: includes/customizer/class-fs-customizer-upsell-control.php106, +#: templates/account/partials/addon.php:46 +msgctxt "as product pricing plan" +msgid "Plan" +msgstr "Csomag" + +#: templates/account.php:158 +msgid "Free Trial" +msgstr "Ingyenes próbaidő" + +#: templates/account.php:169 +msgid "Account Details" +msgstr "Fiók információk" + +#: templates/account.php:179 +msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" +msgstr "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" + +#: templates/account.php:181 +msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" +msgstr "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" + +#: templates/account.php:184 +msgid "Delete Account" +msgstr "Fiók törlése" + +#: templates/account.php196, templates/account/partials/addon.php159, +#: templates/account/partials/deactivate-license-button.php:35 +msgid "Deactivate License" +msgstr "Licensz deaktiválása" + +#: templates/account.php219, templates/forms/subscription-cancellation.php:125 +msgid "Are you sure you want to proceed?" +msgstr "Are you sure you want to proceed?" + +#: templates/account.php219, templates/account/partials/addon.php:182 +msgid "Cancel Subscription" +msgstr "Előfizetés törlése" + +#: templates/account.php:247 +msgctxt "as synchronize" +msgid "Sync" +msgstr "Szinkronizálás" + +#: templates/account.php261, templates/debug.php:487 +msgid "Name" +msgstr "Név" + +#: templates/account.php267, templates/debug.php:488 +msgid "Email" +msgstr "Email" + +#: templates/account.php274, templates/debug.php370, templates/debug.php:526 +msgid "User ID" +msgstr "Felhasználó ID" + +#: templates/account.php:282 +msgid "Site ID" +msgstr "Weboldal ID" + +#: templates/account.php:285 +msgid "No ID" +msgstr "Nincs ID" + +#: templates/account.php290, templates/debug.php243, templates/debug.php372, +#: templates/debug.php453, templates/debug.php490, +#: templates/account/partials/site.php:219 +msgid "Public Key" +msgstr "Publikus kulcs" + +#: templates/account.php296, templates/debug.php373, templates/debug.php454, +#: templates/debug.php491, templates/account/partials/site.php:231 +msgid "Secret Key" +msgstr "Titkos kulcs" + +#: templates/account.php:299 +msgctxt "as secret encryption key missing" +msgid "No Secret" +msgstr "Nincs titkos kulcs" + +#: templates/account.php318, templates/account/partials/site.php112, +#: templates/account/partials/site.php:114 +msgid "Trial" +msgstr "Próbaidő" + +#: templates/account.php337, templates/debug.php531, +#: templates/account/partials/site.php:248 +msgid "License Key" +msgstr "Licensz kulcs" + +#: templates/account.php:367 +msgid "not verified" +msgstr "nem ellenőrzött" + +#: templates/account.php376, templates/account/partials/addon.php:120 +msgid "Expired" +msgstr "Lejárt" + +#: templates/account.php:428 +msgid "Premium version" +msgstr "Prémium verzió" + +#: templates/account.php:430 +msgid "Free version" +msgstr "Ingyenes verzió" + +#: templates/account.php:442 +msgid "Verify Email" +msgstr "Email ellenőrzése" + +#: templates/account.php:453 +msgid "Download %s Version" +msgstr "%s verzió letöltése" + +#: templates/account.php467, templates/account.php649, +#: templates/account/partials/site.php237, +#: templates/account/partials/site.php:255 +msgctxt "verb" +msgid "Show" +msgstr "Mutasd" + +#: templates/account.php:481 +msgid "What is your %s?" +msgstr "Mi a te %s?" + +#: templates/account.php489, templates/account/billing.php:27 +msgctxt "verb" +msgid "Edit" +msgstr "Szerkesztés" + +#: templates/account.php:502 +msgid "Sites" +msgstr "Weboldalak" + +#: templates/account.php:513 +msgid "Search by address" +msgstr "Keresés cím alapján" + +#: templates/account.php522, templates/account.php570, templates/debug.php236, +#: templates/debug.php364, templates/debug.php449, templates/debug.php486, +#: templates/debug.php524, templates/debug.php597, +#: templates/account/payments.php35, templates/debug/logger.php:21 +msgid "ID" +msgstr "ID" + +#: templates/account.php523, templates/debug.php:367 +msgid "Address" +msgstr "Cím" + +#: templates/account.php:524 +msgid "License" +msgstr "Licensz" + +#: templates/account.php:525 +msgid "Plan" +msgstr "Csomag" + +#: templates/account.php:573 +msgctxt "as software license" +msgid "License" +msgstr "Licensz" + +#: templates/account.php:643 +msgctxt "verb" +msgid "Hide" +msgstr "Elrejt" + +#: templates/account.php:686 +msgid "Cancelling %s" +msgstr "Cancelling %s" + +#: templates/account.php686, templates/account.php703, +#: templates/forms/subscription-cancellation.php27, +#: templates/forms/deactivation/form.php:117 +msgid "trial" +msgstr "próbaidő" + +#: templates/account.php701, templates/forms/deactivation/form.php:134 +msgid "Cancelling %s..." +msgstr "Cancelling %s..." + +#: templates/account.php704, templates/forms/subscription-cancellation.php28, +#: templates/forms/deactivation/form.php:118 +msgid "subscription" +msgstr "előfizetés" + +#: templates/account.php:718 +msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" +msgstr "A licensz deaktiválása után a prémium funkciók használata nem elérhető, de így tudod másik weboldalon aktiválni ugyanezt a licenszt. Folytatod a deaktiválást?" + +#: templates/add-ons.php:36 +msgid "Add Ons for %s" +msgstr "Add Ons for %s" + +#: templates/add-ons.php:44 +msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." +msgstr "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." + +#: templates/add-ons.php:139 +msgid "View details" +msgstr "Részletek megtekintése" + +#: templates/admin-notice.php13, templates/forms/license-activation.php208, +#: templates/forms/resend-key.php:77 +msgctxt "as close a window" +msgid "Dismiss" +msgstr "Mégsem" + +#: templates/auto-installation.php:45 +msgid "%s sec" +msgstr "%s sec" + +#: templates/auto-installation.php:83 +msgid "Automatic Installation" +msgstr "Automatikus telepítés" + +#: templates/auto-installation.php:93 +msgid "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now." +msgstr "An automated download and installation of %s (paid version) from %s will start in %s. If you would like to do it manually - click the cancellation button now." + +#: templates/auto-installation.php:104 +msgid "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page." +msgstr "The installation process has started and may take a few minutes to complete. Please wait until it is done - do not refresh this page." + +#: templates/auto-installation.php:109 +msgid "Cancel Installation" +msgstr "Telepítés törlése" + +#: templates/checkout.php:172 +msgid "Checkout" +msgstr "Pénztár" + +#: templates/checkout.php:172 +msgid "PCI compliant" +msgstr "PCI compliant" + +#. translators: %s: name (e.g. Hey John,) +#: templates/connect.php:112 +msgctxt "greeting" +msgid "Hey %s," +msgstr "Üdv %s!" + +#: templates/connect.php:154 +msgid "Allow & Continue" +msgstr "Engedélyezés és folytatás" + +#: templates/connect.php:158 +msgid "Re-send activation email" +msgstr "Aktivációs email újraküldése" + +#: templates/connect.php:162 +msgid "Thanks %s!" +msgstr "Köszönjük %s!" + +#: templates/connect.php172, templates/forms/license-activation.php:43 +msgid "Agree & Activate License" +msgstr "Licensz elfogadása és aktiválása" + +#: templates/connect.php:181 +msgid "Thanks for purchasing %s! To get started, please enter your license key:" +msgstr "Köszönjük, hogy megvásároltad a %s szoftverünket! A folytatáshoz most meg kell adnod a licensz kulcsot, amit a vásárlás után kaptál emailben:" + +#: templates/connect.php:188 +msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." +msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." + +#: templates/connect.php:189 +msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." +msgstr "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." + +#: templates/connect.php:195 +msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." +msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." + +#: templates/connect.php:196 +msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." +msgstr "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." + +#: templates/connect.php:230 +msgid "We're excited to introduce the Freemius network-level integration." +msgstr "We're excited to introduce the Freemius network-level integration." + +#: templates/connect.php:233 +msgid "During the update process we detected %d site(s) that are still pending license activation." +msgstr "During the update process we detected %d site(s) that are still pending license activation." + +#: templates/connect.php:235 +msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." +msgstr "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." + +#: templates/connect.php:237 +msgid "%s's paid features" +msgstr "%s's paid features" + +#: templates/connect.php:242 +msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." +msgstr "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." + +#: templates/connect.php:244 +msgid "During the update process we detected %s site(s) in the network that are still pending your attention." +msgstr "During the update process we detected %s site(s) in the network that are still pending your attention." + +#: templates/connect.php253, templates/forms/license-activation.php:46 +msgid "License key" +msgstr "Licensz kulcs" + +#: templates/connect.php256, templates/forms/license-activation.php:19 +msgid "Can't find your license key?" +msgstr "Nem találod a licensz kulcsod?" + +#: templates/connect.php315, templates/connect.php630, +#: templates/forms/deactivation/retry-skip.php:20 +msgctxt "verb" +msgid "Skip" +msgstr "Ugrás" + +#: templates/connect.php:318 +msgid "Delegate to Site Admins" +msgstr "Delegate to Site Admins" + +#: templates/connect.php:318 +msgid "If you click it, this decision will be delegated to the sites administrators." +msgstr "If you click it, this decision will be delegated to the sites administrators." + +#: templates/connect.php:346 +msgid "Your Profile Overview" +msgstr "Fiókod áttekintése" + +#: templates/connect.php:347 +msgid "Name and email address" +msgstr "Név és email cím" + +#: templates/connect.php:352 +msgid "Your Site Overview" +msgstr "Weboldalad adatainak áttekintése" + +#: templates/connect.php:353 +msgid "Site URL, WP version, PHP info, plugins & themes" +msgstr "Weboldal címe, WP verzió, PHP információk, bővítmények és sablonok" + +#: templates/connect.php:358 +msgid "Admin Notices" +msgstr "Admin értesítések" + +#: templates/connect.php359, templates/connect.php:375 +msgid "Updates, announcements, marketing, no spam" +msgstr "Frissítések, közlemények, marketing, de semmi SPAM!" + +#: templates/connect.php:364 +msgid "Current %s Events" +msgstr "Aktuális %s események" + +#: templates/connect.php:365 +msgid "Activation, deactivation and uninstall" +msgstr "Aktiválás, deaktiválás és kikapcsolás" + +#: templates/connect.php:374 +msgid "Newsletter" +msgstr "Hírlevél" + +#: templates/connect.php391, templates/forms/license-activation.php:38 +msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." +msgstr "A %1$s időközönként adatot küld a %2$s weboldalnak, hogy ellenőrizze a biztonsági és funkcionális frissítéseket, valamint ellenőrzi az érvényes licensz kulcsot." + +#: templates/connect.php:396 +msgid "What permissions are being granted?" +msgstr "Milyen jogosultágok lesznek engedélyezve?" + +#: templates/connect.php:417 +msgid "Don't have a license key?" +msgstr "Nincs még licensz kulcsod?" + +#: templates/connect.php:418 +msgid "Activate Free Version" +msgstr "Ingyenes verzió aktiválása" + +#: templates/connect.php:420 +msgid "Have a license key?" +msgstr "Van licensz kulcsod?" + +#: templates/connect.php:428 +msgid "Privacy Policy" +msgstr "Adatkezelési tájékoztató" + +#: templates/connect.php:430 +msgid "License Agreement" +msgstr "Licensz szerződés" + +#: templates/connect.php:430 +msgid "Terms of Service" +msgstr "Szolgáltatási feltételek" + +#: templates/connect.php:766 +msgctxt "as in the process of sending an email" +msgid "Sending email" +msgstr "Email küldése" + +#: templates/connect.php:767 +msgctxt "as activating plugin" +msgid "Activating" +msgstr "Aktiválás" + +#: templates/contact.php:78 +msgid "Contact" +msgstr "Kapcsolat" + +#: templates/debug.php:17 +msgctxt "as turned off" +msgid "Off" +msgstr "Off" + +#: templates/debug.php:18 +msgctxt "as turned on" +msgid "On" +msgstr "On" + +#: templates/debug.php:20 +msgid "SDK" +msgstr "SDK" + +#: templates/debug.php:24 +msgctxt "as code debugging" +msgid "Debugging" +msgstr "Debugging" + +#: templates/debug.php54, templates/debug.php248, templates/debug.php374, +#: templates/debug.php:492 +msgid "Actions" +msgstr "Események" + +#: templates/debug.php:64 +msgid "Are you sure you want to delete all Freemius data?" +msgstr "Are you sure you want to delete all Freemius data?" + +#: templates/debug.php:64 +msgid "Delete All Accounts" +msgstr "Minden fiók törlése" + +#: templates/debug.php:71 +msgid "Clear API Cache" +msgstr "Clear API Cache" + +#: templates/debug.php:79 +msgid "Clear Updates Transients" +msgstr "Clear Updates Transients" + +#: templates/debug.php:86 +msgid "Sync Data From Server" +msgstr "Adatok szinkronizálása a szerverről" + +#: templates/debug.php:95 +msgid "Migrate Options to Network" +msgstr "Migrate Options to Network" + +#: templates/debug.php:100 +msgid "Load DB Option" +msgstr "Load DB Option" + +#: templates/debug.php:103 +msgid "Set DB Option" +msgstr "Set DB Option" + +#: templates/debug.php:180 +msgid "Key" +msgstr "Kulcs" + +#: templates/debug.php:181 +msgid "Value" +msgstr "Érték" + +#: templates/debug.php:197 +msgctxt "as software development kit versions" +msgid "SDK Versions" +msgstr "SDK verziók" + +#: templates/debug.php:202 +msgid "SDK Path" +msgstr "SDK útvonal" + +#: templates/debug.php203, templates/debug.php:242 +msgid "Module Path" +msgstr "Module Path" + +#: templates/debug.php:204 +msgid "Is Active" +msgstr "Aktív" + +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:35 +msgid "Plugins" +msgstr "Bővítmények" + +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:56 +msgid "Themes" +msgstr "Sablonok" + +#: templates/debug.php237, templates/debug.php369, templates/debug.php451, +#: templates/debug/scheduled-crons.php:80 +msgid "Slug" +msgstr "Slug" + +#: templates/debug.php239, templates/debug.php:450 +msgid "Title" +msgstr "Cím" + +#: templates/debug.php:240 +msgctxt "as application program interface" +msgid "API" +msgstr "API" + +#: templates/debug.php:241 +msgid "Freemius State" +msgstr "Freemius State" + +#: templates/debug.php:245 +msgid "Network Blog" +msgstr "Network Blog" + +#: templates/debug.php:246 +msgid "Network User" +msgstr "Network User" + +#: templates/debug.php:283 +msgctxt "as connection was successful" +msgid "Connected" +msgstr "Connected" + +#: templates/debug.php:284 +msgctxt "as connection blocked" +msgid "Blocked" +msgstr "Blocked" + +#: templates/debug.php:320 +msgid "Simulate Trial Promotion" +msgstr "Simulate Trial Promotion" + +#: templates/debug.php:332 +msgid "Simulate Network Upgrade" +msgstr "Simulate Network Upgrade" + +#: templates/debug.php:358 +msgid "%s Installs" +msgstr "%s Installs" + +#: templates/debug.php:360 +msgctxt "like websites" +msgid "Sites" +msgstr "Weboldalak" + +#: templates/debug.php366, templates/account/partials/site.php:148 +msgid "Blog ID" +msgstr "Blog ID" + +#: templates/debug.php431, templates/debug.php509, +#: templates/account/partials/addon.php:339 +msgctxt "verb" +msgid "Delete" +msgstr "Törlés" + +#: templates/debug.php:445 +msgid "Add Ons of module %s" +msgstr "Add Ons of module %s" + +#: templates/debug.php:482 +msgid "Users" +msgstr "Felhasználók" + +#: templates/debug.php:489 +msgid "Verified" +msgstr "Ellenőrzött" + +#: templates/debug.php:520 +msgid "%s Licenses" +msgstr "%s Licenses" + +#: templates/debug.php:525 +msgid "Plugin ID" +msgstr "Bővítmény ID" + +#: templates/debug.php:527 +msgid "Plan ID" +msgstr "Csomag ID" + +#: templates/debug.php:528 +msgid "Quota" +msgstr "Quota" + +#: templates/debug.php:529 +msgid "Activated" +msgstr "Sikeres aktiválás" + +#: templates/debug.php:530 +msgid "Blocking" +msgstr "Blocking" + +#: templates/debug.php:532 +msgctxt "as expiration date" +msgid "Expiration" +msgstr "Expiration" + +#: templates/debug.php:555 +msgid "Debug Log" +msgstr "Debug Log" + +#: templates/debug.php:559 +msgid "All Types" +msgstr "All Types" + +#: templates/debug.php:566 +msgid "All Requests" +msgstr "All Requests" + +#: templates/debug.php571, templates/debug.php600, +#: templates/debug/logger.php:25 +msgid "File" +msgstr "File" + +#: templates/debug.php572, templates/debug.php598, +#: templates/debug/logger.php:23 +msgid "Function" +msgstr "Function" + +#: templates/debug.php:573 +msgid "Process ID" +msgstr "Művelet ID" + +#: templates/debug.php:574 +msgid "Logger" +msgstr "Logger" + +#: templates/debug.php575, templates/debug.php599, +#: templates/debug/logger.php:24 +msgid "Message" +msgstr "Message" + +#: templates/debug.php:577 +msgid "Filter" +msgstr "Filter" + +#: templates/debug.php:585 +msgid "Download" +msgstr "Download" + +#: templates/debug.php596, templates/debug/logger.php:22 +msgid "Type" +msgstr "Type" + +#: templates/debug.php601, templates/debug/logger.php:26 +msgid "Timestamp" +msgstr "Timestamp" + +#: templates/secure-https-header.php:28 +msgid "Secure HTTPS %s page, running from an external domain" +msgstr "Secure HTTPS %s page, running from an external domain" + +#: includes/customizer/class-fs-customizer-support-section.php55, +#: templates/plugin-info/features.php:43 +msgid "Support" +msgstr "Support" + +#: includes/debug/class-fs-debug-bar-panel.php48, +#: templates/debug/api-calls.php54, templates/debug/logger.php:62 +msgctxt "milliseconds" +msgid "ms" +msgstr "ms" + +#: includes/debug/debug-bar-start.php:41 +msgid "Freemius API" +msgstr "Freemius API" + +#: includes/debug/debug-bar-start.php:42 +msgid "Requests" +msgstr "Requests" + +#: templates/account/billing.php:28 +msgctxt "verb" +msgid "Update" +msgstr "Frissítés" + +#: templates/account/billing.php:39 +msgid "Billing" +msgstr "Számlázás" + +#: templates/account/billing.php44, templates/account/billing.php:44 +msgid "Business name" +msgstr "Cégnév" + +#: templates/account/billing.php45, templates/account/billing.php:45 +msgid "Tax / VAT ID" +msgstr "Közösségi adószám" + +#: templates/account/billing.php48, templates/account/billing.php48, +#: templates/account/billing.php49, templates/account/billing.php:49 +msgid "Address Line %d" +msgstr "Cím %d" + +#: templates/account/billing.php52, templates/account/billing.php:52 +msgid "City" +msgstr "Város" + +#: templates/account/billing.php52, templates/account/billing.php:52 +msgid "Town" +msgstr "Town" + +#: templates/account/billing.php53, templates/account/billing.php:53 +msgid "ZIP / Postal Code" +msgstr "Irányítószám" + +#: templates/account/billing.php:308 +msgid "Country" +msgstr "Ország" + +#: templates/account/billing.php:310 +msgid "Select Country" +msgstr "Válaszz országot" + +#: templates/account/billing.php317, templates/account/billing.php:318 +msgid "State" +msgstr "Megye" + +#: templates/account/billing.php317, templates/account/billing.php:318 +msgid "Province" +msgstr "Province" + +#: templates/account/payments.php:29 +msgid "Payments" +msgstr "Fizetési módok" + +#: templates/account/payments.php:36 +msgid "Date" +msgstr "Dátum" + +#: templates/account/payments.php:37 +msgid "Amount" +msgstr "Mennyiség" + +#: templates/account/payments.php38, templates/account/payments.php:50 +msgid "Invoice" +msgstr "Számla" + +#: templates/debug/api-calls.php:56 +msgid "API" +msgstr "API" + +#: templates/debug/api-calls.php:68 +msgid "Method" +msgstr "Method" + +#: templates/debug/api-calls.php:69 +msgid "Code" +msgstr "Kód" + +#: templates/debug/api-calls.php:70 +msgid "Length" +msgstr "Hossz" + +#: templates/debug/api-calls.php:71 +msgctxt "as file/folder path" +msgid "Path" +msgstr "Path" + +#: templates/debug/api-calls.php:73 +msgid "Body" +msgstr "Body" + +#: templates/debug/api-calls.php:75 +msgid "Result" +msgstr "Result" + +#: templates/debug/api-calls.php:76 +msgid "Start" +msgstr "Start" + +#: templates/debug/api-calls.php:77 +msgid "End" +msgstr "End" + +#: templates/debug/logger.php:15 +msgid "Log" +msgstr "Log" + +#. translators: %s: time period (e.g. In "2 hours") +#: templates/debug/plugins-themes-sync.php18, +#: templates/debug/scheduled-crons.php:91 +msgid "In %s" +msgstr "In %s" + +#. translators: %s: time period (e.g. "2 hours" ago) +#: templates/debug/plugins-themes-sync.php20, +#: templates/debug/scheduled-crons.php:93 +msgid "%s ago" +msgstr "%s ago" + +#: templates/debug/plugins-themes-sync.php21, +#: templates/debug/scheduled-crons.php:74 +msgctxt "seconds" +msgid "sec" +msgstr "sec" + +#: templates/debug/plugins-themes-sync.php:23 +msgid "Plugins & Themes Sync" +msgstr "Bővítmények és sablonok szinkronizálása" + +#: templates/debug/plugins-themes-sync.php:28 +msgid "Total" +msgstr "Összesen" + +#: templates/debug/plugins-themes-sync.php29, +#: templates/debug/scheduled-crons.php:84 +msgid "Last" +msgstr "Last" + +#: templates/debug/scheduled-crons.php:76 +msgid "Scheduled Crons" +msgstr "Scheduled Crons" + +#: templates/debug/scheduled-crons.php:81 +msgid "Module" +msgstr "Module" + +#: templates/debug/scheduled-crons.php:82 +msgid "Module Type" +msgstr "Module Type" + +#: templates/debug/scheduled-crons.php:83 +msgid "Cron Type" +msgstr "Cron Type" + +#: templates/debug/scheduled-crons.php:85 +msgid "Next" +msgstr "Next" + +#: templates/forms/affiliation.php:82 +msgid "Non-expiring" +msgstr "Non-expiring" + +#: templates/forms/affiliation.php:85 +msgid "Apply to become an affiliate" +msgstr "Apply to become an affiliate" + +#: templates/forms/affiliation.php:104 +msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s." +msgstr "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s." + +#: templates/forms/affiliation.php:119 +msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information." +msgstr "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information." + +#: templates/forms/affiliation.php:122 +msgid "Your affiliation account was temporarily suspended." +msgstr "Your affiliation account was temporarily suspended." + +#: templates/forms/affiliation.php:125 +msgid "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days." +msgstr "Thank you for applying for our affiliate program, unfortunately, we've decided at this point to reject your application. Please try again in 30 days." + +#: templates/forms/affiliation.php:128 +msgid "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support." +msgstr "Due to violation of our affiliation terms, we decided to temporarily block your affiliation account. If you have any questions, please contact support." + +#: templates/forms/affiliation.php:141 +msgid "Like the %s? Become our ambassador and earn cash ;-)" +msgstr "Like the %s? Become our ambassador and earn cash ;-)" + +#: templates/forms/affiliation.php:142 +msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!" +msgstr "Refer new customers to our %s and earn %s commission on each successful sale you refer!" + +#: templates/forms/affiliation.php:145 +msgid "Program Summary" +msgstr "Program Summary" + +#: templates/forms/affiliation.php:147 +msgid "%s commission when a customer purchases a new license." +msgstr "%s commission when a customer purchases a new license." + +#: templates/forms/affiliation.php:149 +msgid "Get commission for automated subscription renewals." +msgstr "Get commission for automated subscription renewals." + +#: templates/forms/affiliation.php:152 +msgid "%s tracking cookie after the first visit to maximize earnings potential." +msgstr "%s tracking cookie after the first visit to maximize earnings potential." + +#: templates/forms/affiliation.php:155 +msgid "Unlimited commissions." +msgstr "Unlimited commissions." + +#: templates/forms/affiliation.php:157 +msgid "%s minimum payout amount." +msgstr "%s minimum payout amount." + +#: templates/forms/affiliation.php:158 +msgid "Payouts are in USD and processed monthly via PayPal." +msgstr "Payouts are in USD and processed monthly via PayPal." + +#: templates/forms/affiliation.php:159 +msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days." +msgstr "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days." + +#: templates/forms/affiliation.php:162 +msgid "Affiliate" +msgstr "Affiliate" + +#: templates/forms/affiliation.php165, templates/forms/resend-key.php:23 +msgid "Email address" +msgstr "Email cím" + +#: templates/forms/affiliation.php:169 +msgid "Full name" +msgstr "Teljes név" + +#: templates/forms/affiliation.php:173 +msgid "PayPal account email address" +msgstr "PayPal fiók email címe" + +#: templates/forms/affiliation.php:177 +msgid "Where are you going to promote the %s?" +msgstr "Where are you going to promote the %s?" + +#: templates/forms/affiliation.php:179 +msgid "Enter the domain of your website or other websites from where you plan to promote the %s." +msgstr "Enter the domain of your website or other websites from where you plan to promote the %s." + +#: templates/forms/affiliation.php:181 +msgid "Add another domain" +msgstr "Másik domain hozzáadása" + +#: templates/forms/affiliation.php:185 +msgid "Extra Domains" +msgstr "További domainek" + +#: templates/forms/affiliation.php:186 +msgid "Extra domains where you will be marketing the product from." +msgstr "Extra domains where you will be marketing the product from." + +#: templates/forms/affiliation.php:196 +msgid "Promotion methods" +msgstr "Promotion methods" + +#: templates/forms/affiliation.php:199 +msgid "Social media (Facebook, Twitter, etc.)" +msgstr "Social media (Facebook, Twitter, etc.)" + +#: templates/forms/affiliation.php:203 +msgid "Mobile apps" +msgstr "Mobile apps" + +#: templates/forms/affiliation.php:207 +msgid "Website, email, and social media statistics (optional)" +msgstr "Weboldal, email és közösségi média statisztikák (opcionális)" + +#: templates/forms/affiliation.php:210 +msgid "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)." +msgstr "Please feel free to provide any relevant website or social media statistics, e.g. monthly unique site visits, number of email subscribers, followers, etc. (we will keep this information confidential)." + +#: templates/forms/affiliation.php:214 +msgid "How will you promote us?" +msgstr "How will you promote us?" + +#: templates/forms/affiliation.php:217 +msgid "Please provide details on how you intend to promote %s (please be as specific as possible)." +msgstr "Please provide details on how you intend to promote %s (please be as specific as possible)." + +#: templates/forms/affiliation.php223, templates/forms/resend-key.php:22 +msgid "Cancel" +msgstr "Mégsem" + +#: templates/forms/affiliation.php:225 +msgid "Become an affiliate" +msgstr "Become an affiliate" + +#: templates/forms/license-activation.php:20 +msgid "Please enter the license key that you received in the email right after the purchase:" +msgstr "Kérlek add meg a licensz kulcsot, amit emailben kaptál a vásárlásod után:" + +#: templates/forms/license-activation.php:25 +msgid "Update License" +msgstr "Licensz frissítése" + +#: templates/forms/optout.php:30 +msgctxt "verb" +msgid "Opt Out" +msgstr "Leiratkozás" + +#: templates/forms/optout.php:31 +msgctxt "verb" +msgid "Opt In" +msgstr "Feliratkozás" + +#: templates/forms/optout.php:33 +msgid "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking." +msgstr "Usage tracking is done in the name of making %s better. Making a better user experience, prioritizing new features, and more good things. We'd really appreciate if you'll reconsider letting us continue with the tracking." + +#: templates/forms/optout.php:35 +msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." +msgstr "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." + +#: templates/forms/premium-versions-upgrade-handler.php:40 +msgid "There is a new version of %s available." +msgstr "A(z) %s új verziója érhető el." + +#: templates/forms/premium-versions-upgrade-handler.php:41 +msgid " %s to access version %s security & feature updates, and support." +msgstr " %s to access version %s security & feature updates, and support." + +#: templates/forms/premium-versions-upgrade-handler.php:54 +msgid "New Version Available" +msgstr "Új verzió érhető el" + +#: templates/forms/premium-versions-upgrade-handler.php:75 +msgctxt "close a window" +msgid "Dismiss" +msgstr "Mégsem" + +#: templates/forms/resend-key.php:21 +msgid "Send License Key" +msgstr "Licensz kulcs küldése" + +#: templates/forms/resend-key.php:57 +msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." +msgstr "Add meg az email címet, amit a vásárlás során használtál és újraküldjük a licensz kulcsot." + +#: templates/forms/subscription-cancellation.php:37 +msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." +msgstr "A(z) %s deaktiválása vagy törlése automatikusan törli az oldalhoz tartozó licenszed is, amit így másik weboldalon tudsz újra aktiválni." + +#: templates/forms/subscription-cancellation.php:47 +msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" +msgstr "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" + +#: templates/forms/subscription-cancellation.php:52 +msgid "license" +msgstr "licensz" + +#: templates/forms/subscription-cancellation.php:57 +msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." +msgstr "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." + +#: templates/forms/subscription-cancellation.php:68 +msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." +msgstr "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." + +#: templates/forms/subscription-cancellation.php:103 +msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." +msgstr "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." + +#: templates/forms/subscription-cancellation.php:136 +msgid "Cancel %s?" +msgstr "Cancel %s?" + +#: templates/forms/subscription-cancellation.php:143 +msgid "Proceed" +msgstr "Proceed" + +#: templates/forms/subscription-cancellation.php191, +#: templates/forms/deactivation/form.php:150 +msgid "Cancel %s & Proceed" +msgstr "Cancel %s & Proceed" + +#: templates/forms/trial-start.php:22 +msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." +msgstr "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." + +#: templates/forms/trial-start.php:28 +msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial." +msgstr "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial." + +#: templates/js/style-premium-theme.php:37 +msgid "Premium" +msgstr "Prémium" + +#: templates/partials/network-activation.php:23 +msgid "Activate license on all sites in the network." +msgstr "Activate license on all sites in the network." + +#: templates/partials/network-activation.php:24 +msgid "Apply on all sites in the network." +msgstr "Apply on all sites in the network." + +#: templates/partials/network-activation.php:27 +msgid "Activate license on all pending sites." +msgstr "Activate license on all pending sites." + +#: templates/partials/network-activation.php:28 +msgid "Apply on all pending sites." +msgstr "Apply on all pending sites." + +#: templates/partials/network-activation.php36, +#: templates/partials/network-activation.php:68 +msgid "allow" +msgstr "allow" + +#: templates/partials/network-activation.php38, +#: templates/partials/network-activation.php:70 +msgid "delegate" +msgstr "delegate" + +#: templates/partials/network-activation.php41, +#: templates/partials/network-activation.php:73 +msgid "skip" +msgstr "ugrás" + +#: templates/plugin-info/description.php72, +#: templates/plugin-info/screenshots.php:31 +msgid "Click to view full-size screenshot %d" +msgstr "Click to view full-size screenshot %d" + +#: templates/plugin-info/features.php:56 +msgid "Unlimited Updates" +msgstr "Korlátlan frissítés" + +#: templates/account/partials/activate-license-button.php:46 +msgid "Localhost" +msgstr "Localhost" + +#: templates/account/partials/activate-license-button.php:50 +msgctxt "as 5 licenses left" +msgid "%s left" +msgstr "%s left" + +#: templates/account/partials/activate-license-button.php:51 +msgid "Last license" +msgstr "Last license" + +#: templates/account/partials/addon.php:115 +msgid "Cancelled" +msgstr "Törölve" + +#: templates/account/partials/addon.php:125 +msgid "No expiration" +msgstr "No expiration" + +#: templates/account/partials/addon.php264, +#: templates/account/partials/addon.php:317 +msgid "Activate this add-on" +msgstr "Activate this add-on" + +#: templates/account/partials/site.php:181 +msgid "Owner Name" +msgstr "Tulajdonos neve" + +#: templates/account/partials/site.php:193 +msgid "Owner Email" +msgstr "Tulajdonos email címe" + +#: templates/account/partials/site.php:205 +msgid "Owner ID" +msgstr "Tulajdonos ID" + +#: templates/account/partials/site.php:270 +msgid "Subscription" +msgstr "Előfizetés" + +#: templates/forms/deactivation/contact.php:19 +msgid "Sorry for the inconvenience and we are here to help if you give us a chance." +msgstr "Sorry for the inconvenience and we are here to help if you give us a chance." + +#: templates/forms/deactivation/contact.php:22 +msgid "Contact Support" +msgstr "Írás az ügyfélszolgálatra" + +#: templates/forms/deactivation/form.php:59 +msgid "Anonymous feedback" +msgstr "Névtelen visszajelzés" + +#: templates/forms/deactivation/form.php:66 +msgid "Deactivate" +msgstr "Deaktiválás" + +#: templates/forms/deactivation/form.php:68 +msgid "Activate %s" +msgstr "%s aktiválása" + +#: templates/forms/deactivation/form.php:80 +msgid "Quick Feedback" +msgstr "Gyors visszajelzés" + +#: templates/forms/deactivation/form.php:84 +msgid "If you have a moment, please let us know why you are %s" +msgstr "Kérlek mondd el, miért %s" + +#: templates/forms/deactivation/form.php:84 +msgid "deactivating" +msgstr "deaktiválod" + +#: templates/forms/deactivation/form.php:84 +msgid "switching" +msgstr "váltasz" + +#: templates/forms/deactivation/form.php:332 +msgid "Submit & %s" +msgstr "Küldés & %s" + +#: templates/forms/deactivation/form.php:353 +msgid "Kindly tell us the reason so we can improve." +msgstr "Ha elmondod az okát, tudunk fejlődni." + +#: templates/forms/deactivation/form.php:478 +msgid "Yes - %s" +msgstr "Yes - %s" + +#: templates/forms/deactivation/form.php:485 +msgid "Skip & %s" +msgstr "Kihagyás & %s" + +#: templates/forms/deactivation/retry-skip.php:21 +msgid "Click here to use the plugin anonymously" +msgstr "Kattints ide, ha névtelenül szeretnéd használni a bővítményt" + +#: templates/forms/deactivation/retry-skip.php:23 +msgid "You might have missed it, but you don't have to share any data and can just %s the opt-in." +msgstr "You might have missed it, but you don't have to share any data and can just %s the opt-in." diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-it_IT.mo b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-it_IT.mo index 84e0dcb5c5229af227ae536ea0bfa72177ff0de0..7069d02c59a1bc56750761381a272ab7725d7260 100755 GIT binary patch delta 12276 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 delta 9620 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 Ks5<%e#TEb>3q*qe diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-it_IT.po b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-it_IT.po index b877e6eb7..6e479838b 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-it_IT.po +++ b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-it_IT.po @@ -1,8 +1,9 @@ -# Copyright (C) 2018 freemius +# Copyright (C) 2019 freemius # This file is distributed under the same license as the freemius package. # Translators: # Alessandro Pelly Benassi <plasmax@gmail.com>, 2016 # Daniele Scasciafratte Mte90 <mte90net@gmail.com>, 2015-2018 +# Dario Curvino <d.curvino@gmail.com>, 2018 # Alessandro Pelly Benassi <plasmax@gmail.com>, 2016-2017 # Vova Feldman <vova@freemius.com>, 2015-2016 msgid "" @@ -10,8 +11,8 @@ msgstr "" "Project-Id-Version: WordPress SDK\n" "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-05-25 22:15+0000\n" -"Last-Translator: Daniele Scasciafratte Mte90 <mte90net@gmail.com>\n" +"PO-Revision-Date: 2018-12-23 14:23+0000\n" +"Last-Translator: Dario Curvino <d.curvino@gmail.com>\n" "Language: it_IT\n" "Language-Team: Italian (Italy) (http://www.transifex.com/freemius/wordpress-sdk/language/it_IT/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,1294 +25,1391 @@ msgstr "" "X-Poedit-SearchPathExcluded-0: *.js\n" "X-Poedit-SourceCharset: UTF-8\n" -#: includes/class-freemius.php:1551 +#: includes/class-freemius.php:1688 msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "L'SDK di Freemius non è riuscito a trovare il file principale del plugin. Per favore contatta sdk@freemius.com riportando l'errore." -#: includes/class-freemius.php:1553 +#: includes/class-freemius.php:1690 msgid "Error" msgstr "Errore" -#: includes/class-freemius.php:1871 +#: includes/class-freemius.php:2011 msgid "I found a better %s" msgstr "Ho trovato un migliore %s" -#: includes/class-freemius.php:1873 +#: includes/class-freemius.php:2013 msgid "What's the %s's name?" msgstr "Qual è il nome di %s?" -#: includes/class-freemius.php:1879 +#: includes/class-freemius.php:2019 msgid "It's a temporary %s. I'm just debugging an issue." msgstr "È una %s temporanea. Sto solo cercando di risolvere un problema." -#: includes/class-freemius.php:1881 +#: includes/class-freemius.php:2021 msgid "Deactivation" msgstr "Disattivazione" -#: includes/class-freemius.php:1882 +#: includes/class-freemius.php:2022 msgid "Theme Switch" msgstr "Cambio tema" -#: includes/class-freemius.php1891, templates/forms/resend-key.php:24 +#: includes/class-freemius.php2031, templates/forms/resend-key.php:24 msgid "Other" msgstr "Altro" -#: includes/class-freemius.php:1899 +#: includes/class-freemius.php:2039 msgid "I no longer need the %s" msgstr "Non ho più bisogno di %s" -#: includes/class-freemius.php:1906 +#: includes/class-freemius.php:2046 msgid "I only needed the %s for a short period" msgstr "Ho avuto bisogno di %s per un breve periodo" -#: includes/class-freemius.php:1912 +#: includes/class-freemius.php:2052 msgid "The %s broke my site" msgstr "%s ha rotto il mio sito" -#: includes/class-freemius.php:1919 +#: includes/class-freemius.php:2059 msgid "The %s suddenly stopped working" msgstr "%s ha improvvisamente smesso di funzionare" -#: includes/class-freemius.php:1929 +#: includes/class-freemius.php:2069 msgid "I can't pay for it anymore" msgstr "Non posso piú pagarlo" -#: includes/class-freemius.php:1931 +#: includes/class-freemius.php:2071 msgid "What price would you feel comfortable paying?" msgstr "Che prezzo ritieni opportuno pagare?" -#: includes/class-freemius.php:1937 +#: includes/class-freemius.php:2077 msgid "I don't like to share my information with you" msgstr "Non voglio condividere i miei dati con te" -#: includes/class-freemius.php:1958 +#: includes/class-freemius.php:2098 msgid "The %s didn't work" msgstr "%s non funziona" -#: includes/class-freemius.php:1968 +#: includes/class-freemius.php:2108 msgid "I couldn't understand how to make it work" msgstr "Non capisco come farlo funzionare" -#: includes/class-freemius.php:1976 +#: includes/class-freemius.php:2116 msgid "The %s is great, but I need specific feature that you don't support" msgstr "%s è ottimo ma ho bisogno di una funzionalità specifica non supportata" -#: includes/class-freemius.php:1978 +#: includes/class-freemius.php:2118 msgid "What feature?" msgstr "Quale funzionalitá?" -#: includes/class-freemius.php:1982 +#: includes/class-freemius.php:2122 msgid "The %s is not working" msgstr "%s non funziona" -#: includes/class-freemius.php:1984 +#: includes/class-freemius.php:2124 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "Condividi cosa non ha funzionato in modo da migliorare il prodotto per gli utenti futuri..." -#: includes/class-freemius.php:1988 +#: includes/class-freemius.php:2128 msgid "It's not what I was looking for" msgstr "Non é quello che stavo cercando" -#: includes/class-freemius.php:1990 +#: includes/class-freemius.php:2130 msgid "What you've been looking for?" msgstr "Che cosa stai cercando?" -#: includes/class-freemius.php:1994 +#: includes/class-freemius.php:2134 msgid "The %s didn't work as expected" msgstr "%s non ha funzionato come mi aspettavo" -#: includes/class-freemius.php:1996 +#: includes/class-freemius.php:2136 msgid "What did you expect?" msgstr "Che cosa ti aspettavi?" -#: includes/class-freemius.php2729, templates/debug.php:20 +#: includes/class-freemius.php2942, templates/debug.php:20 msgid "Freemius Debug" msgstr "Debug Freemius" -#: includes/class-freemius.php:3402 +#: includes/class-freemius.php:3670 msgid "I don't know what is cURL or how to install it, help me!" msgstr "Non ho idea di cosa sia cURL o come installarlo, aiutami!" -#: includes/class-freemius.php:3404 +#: includes/class-freemius.php:3672 msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." msgstr "Contatteremo il tuo hosting e risolveremo il problema. Riceverai un' email a %s non appena ci saranno aggiornamenti." -#: includes/class-freemius.php:3411 +#: includes/class-freemius.php:3679 msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." msgstr "Installa cURL e abilitalo nel file file php.ini. Inoltre cerca per il parametro 'disable_functions' nel tuo file php.ini e rimuovi ogni metodo disattivato che inizia con 'curl_'. Per verificare che tutti sia attivato usa 'phpinfo()'. Una volta attivato, disattiva 1%s e riattivalo di nuovo." -#: includes/class-freemius.php:3516 +#: includes/class-freemius.php:3784 msgid "Yes - do your thing" msgstr "Sì - fai pure" -#: includes/class-freemius.php:3521 +#: includes/class-freemius.php:3789 msgid "No - just deactivate" msgstr "No - disattiva e basta" -#: includes/class-freemius.php3566, includes/class-freemius.php4066, -#: includes/class-freemius.php5127, includes/class-freemius.php10941, -#: includes/class-freemius.php14205, includes/class-freemius.php14257, -#: includes/class-freemius.php14319, includes/class-freemius.php16448, -#: includes/class-freemius.php16458, includes/class-freemius.php17014, -#: includes/class-freemius.php17032, includes/class-freemius.php17130, -#: includes/class-freemius.php17866, templates/add-ons.php:43 +#: includes/class-freemius.php3834, includes/class-freemius.php4343, +#: includes/class-freemius.php5442, includes/class-freemius.php11545, +#: includes/class-freemius.php14916, includes/class-freemius.php14968, +#: includes/class-freemius.php15030, includes/class-freemius.php17263, +#: includes/class-freemius.php17273, includes/class-freemius.php17882, +#: includes/class-freemius.php18742, includes/class-freemius.php18857, +#: includes/class-freemius.php19001, templates/add-ons.php:43 msgctxt "exclamation" msgid "Oops" msgstr "Ops" -#: includes/class-freemius.php:3635 +#: includes/class-freemius.php:3903 msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." msgstr "Grazie per averci dato la possibilità di risolvere il problema! È stato appena inviato un messaggio al nostro staff tecnico. Ti risponderemo non appena avremo un aggiornamento riguardante %s. Grazie per la tua pazienza." -#: includes/class-freemius.php:4063 +#: includes/class-freemius.php:4340 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "%s non può funzionare senza %s." -#: includes/class-freemius.php:4064 +#: includes/class-freemius.php:4341 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "%s non può funzionare senza il plugin." -#: includes/class-freemius.php4176, includes/class-freemius.php4201, -#: includes/class-freemius.php:17103 +#: includes/class-freemius.php4487, includes/class-freemius.php4512, +#: includes/class-freemius.php:17953 msgid "Unexpected API error. Please contact the %s's author with the following error." msgstr "Errore API inaspettato. Contatta l'autore di %s con il seguente errore." -#: includes/class-freemius.php:4815 +#: includes/class-freemius.php:5130 msgid "Premium %s version was successfully activated." msgstr "La versione 1%s Permium è stata attivata con successo." -#: includes/class-freemius.php4827, includes/class-freemius.php:6660 +#: includes/class-freemius.php5142, includes/class-freemius.php:7004 msgctxt "" msgid "W00t" msgstr "Forte" -#: includes/class-freemius.php:4842 +#: includes/class-freemius.php:5157 msgid "You have a %s license." msgstr "Hai la licenza %s." -#: includes/class-freemius.php4846, includes/class-freemius.php13626, -#: includes/class-freemius.php13637, includes/class-freemius.php16376, -#: includes/class-freemius.php16676, includes/class-freemius.php16741, -#: includes/class-freemius.php:16891 +#: includes/class-freemius.php5161, includes/class-freemius.php14337, +#: includes/class-freemius.php14348, includes/class-freemius.php17177, +#: includes/class-freemius.php17491, includes/class-freemius.php17557, +#: includes/class-freemius.php:17707 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "Evvai" -#: includes/class-freemius.php:5110 +#: includes/class-freemius.php:5425 msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." msgstr "Il periodo di prova gratuito %s è stato annullato con successo. Siccome l'add-on è premium, è stato disattivato automaticamente. Se vorrai usarlo in futuro, dovrai comprare una licenza." -#: includes/class-freemius.php:5114 +#: includes/class-freemius.php:5429 msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "%s è un add-on premium. Devi comprare una licenza prima di poter attivare il plugin." -#: includes/class-freemius.php5123, templates/add-ons.php99, -#: templates/account/partials/addon.php:283 +#: includes/class-freemius.php5438, templates/add-ons.php103, +#: templates/account/partials/addon.php:288 msgid "More information about %s" msgstr "Ulteriori informazioni su %s" -#: includes/class-freemius.php:5124 +#: includes/class-freemius.php:5439 msgid "Purchase License" msgstr "Acquista licenza" -#: includes/class-freemius.php6035, templates/connect.php:161 +#: includes/class-freemius.php6372, templates/connect.php:163 msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." msgstr "Dovresti ricevere un'email di attivazione di %s all'indirizzo %s. Assicurati di fare clic sul pulsante di attivazione nell'email per %s." -#: includes/class-freemius.php:6039 +#: includes/class-freemius.php:6376 msgid "start the trial" msgstr "Inizia il periodo di prova gratuito" -#: includes/class-freemius.php6040, templates/connect.php:165 +#: includes/class-freemius.php6377, templates/connect.php:167 msgid "complete the install" msgstr "completa l'installazione" -#: includes/class-freemius.php:6147 +#: includes/class-freemius.php:6490 msgid "You are just one step away - %s" msgstr "Sei a un passo dalla fine - %s" -#: includes/class-freemius.php:6150 +#: includes/class-freemius.php:6493 msgctxt "%s - plugin name. As complete \"PluginX\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "Completa l'attivazione di \"%s\" ora" -#: includes/class-freemius.php:6227 +#: includes/class-freemius.php:6571 msgid "We made a few tweaks to the %s, %s" msgstr "Abbiamo fatto alcune migliore a %s,%s" -#: includes/class-freemius.php:6231 -msgid "Opt in to make \"%s\" Better!" -msgstr "Accetta per rendere \"%s\" migliore!" +#: includes/class-freemius.php:6575 +msgid "Opt in to make \"%s\" better!" +msgstr "Opt in to make \"%s\" better!" -#: includes/class-freemius.php:6659 +#: includes/class-freemius.php:7003 msgid "The upgrade of %s was successfully completed." msgstr "L'aggiornamento di %s è stato completato con successo." -#: includes/class-freemius.php8384, includes/class-fs-plugin-updater.php581, -#: includes/class-fs-plugin-updater.php733, -#: includes/class-fs-plugin-updater.php739, templates/auto-installation.php:32 +#: includes/class-freemius.php8925, includes/class-fs-plugin-updater.php886, +#: includes/class-fs-plugin-updater.php1081, +#: includes/class-fs-plugin-updater.php1088, +#: templates/auto-installation.php:32 msgid "Add-On" msgstr "Add-on" -#: includes/class-freemius.php8386, templates/debug.php349, -#: templates/debug.php:510 +#: includes/class-freemius.php8927, templates/debug.php359, +#: templates/debug.php:520 msgid "Plugin" msgstr "Plugin" -#: includes/class-freemius.php8387, templates/debug.php349, -#: templates/debug.php510, templates/forms/deactivation/form.php:64 +#: includes/class-freemius.php8928, templates/debug.php359, +#: templates/debug.php520, templates/forms/deactivation/form.php:67 msgid "Theme" msgstr "Tema" -#: includes/class-freemius.php:10808 -msgid "invalid_site_details_collection" -msgstr "invalid_site_details_collection" +#: includes/class-freemius.php:11412 +msgid "Invalid site details collection." +msgstr "Invalid site details collection." -#: includes/class-freemius.php:10928 +#: includes/class-freemius.php:11532 msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "Non siamo riusciti a trovare il tuo indirizzo email nel sistema, sei sicuro che sia l'indirizzo giusto?" -#: includes/class-freemius.php:10930 +#: includes/class-freemius.php:11534 msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "Non siamo riusciti a trovare alcuna licenza attiva associata al tuo indirizzo email, sei sicuro che sia l'indirizzo giusto?" -#: includes/class-freemius.php:11166 +#: includes/class-freemius.php:11808 msgid "Account is pending activation." msgstr "Account in attesa di attivazione." -#: includes/class-freemius.php:13608 +#: includes/class-freemius.php11920, +#: templates/forms/premium-versions-upgrade-handler.php:47 +msgid "Buy a license now" +msgstr "Compra una licenza ora" + +#: includes/class-freemius.php11932, +#: templates/forms/premium-versions-upgrade-handler.php:46 +msgid "Renew your license now" +msgstr "Rinnova la tua licenza ora" + +#: includes/class-freemius.php:11936 +msgid "%s to access version %s security & feature updates, and support." +msgstr "%s to access version %s security & feature updates, and support." + +#: includes/class-freemius.php:14319 msgid "%s activation was successfully completed." msgstr "%s è stato attivato con successo." -#: includes/class-freemius.php:13622 +#: includes/class-freemius.php:14333 msgid "Your account was successfully activated with the %s plan." msgstr "Il tuo account è stato attivato correttamente con il piano %s." -#: includes/class-freemius.php13633, includes/class-freemius.php:16737 +#: includes/class-freemius.php14344, includes/class-freemius.php:17553 msgid "Your trial has been successfully started." msgstr "La versione di prova è stata avviata correttamente." -#: includes/class-freemius.php14203, includes/class-freemius.php14255, -#: includes/class-freemius.php:14317 +#: includes/class-freemius.php14914, includes/class-freemius.php14966, +#: includes/class-freemius.php:15028 msgid "Couldn't activate %s." msgstr "Non é stato possibile attivare %s." -#: includes/class-freemius.php14204, includes/class-freemius.php14256, -#: includes/class-freemius.php:14318 +#: includes/class-freemius.php14915, includes/class-freemius.php14967, +#: includes/class-freemius.php:15029 msgid "Please contact us with the following message:" msgstr "Contattaci con il seguente messaggio:" -#: includes/class-freemius.php14666, includes/class-freemius.php:18929 +#: includes/class-freemius.php15378, includes/class-freemius.php:19839 msgid "Upgrade" msgstr "Aggiornamento" -#: includes/class-freemius.php:14672 +#: includes/class-freemius.php:15384 msgid "Start Trial" msgstr "Inizia il periodo di prova gratuito" -#: includes/class-freemius.php:14674 +#: includes/class-freemius.php:15386 msgid "Pricing" msgstr "Prezzi" -#: includes/class-freemius.php14734, includes/class-freemius.php:14736 +#: includes/class-freemius.php15448, includes/class-freemius.php:15450 msgid "Affiliation" msgstr "Affiliazione" -#: includes/class-freemius.php14756, includes/class-freemius.php14758, -#: templates/account.php146, templates/debug.php:314 +#: includes/class-freemius.php15478, includes/class-freemius.php15480, +#: templates/account.php150, templates/debug.php:324 msgid "Account" msgstr "Account" -#: includes/class-freemius.php14769, includes/class-freemius.php14771, +#: includes/class-freemius.php15493, includes/class-freemius.php15495, #: includes/customizer/class-fs-customizer-support-section.php:60 msgid "Contact Us" msgstr "Contattaci" -#: includes/class-freemius.php14781, includes/class-freemius.php14783, -#: includes/class-freemius.php18939, templates/account.php96, -#: templates/account/partials/addon.php:37 +#: includes/class-freemius.php15505, includes/class-freemius.php15507, +#: includes/class-freemius.php19849, templates/account.php100, +#: templates/account/partials/addon.php:41 msgid "Add-Ons" msgstr "Addon" -#: includes/class-freemius.php14815, templates/pricing.php:97 +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow left icon" +msgid "←" +msgstr "←" + +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow right icon" +msgid "➤" +msgstr "➤" + +#: includes/class-freemius.php15543, templates/pricing.php:97 msgctxt "noun" msgid "Pricing" msgstr "Prezzi" -#: includes/class-freemius.php15009, +#: includes/class-freemius.php15756, #: includes/customizer/class-fs-customizer-support-section.php:67 msgid "Support Forum" msgstr "Forum di supporto" -#: includes/class-freemius.php:15794 +#: includes/class-freemius.php:16542 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "Il tuo indirizzo email è stato verificato con successo - SEI UN GRANDE!" -#: includes/class-freemius.php:15795 +#: includes/class-freemius.php:16543 msgctxt "a positive response" msgid "Right on" msgstr "Sì" -#: includes/class-freemius.php:16367 +#: includes/class-freemius.php:17168 msgid "Your %s Add-on plan was successfully upgraded." msgstr "Il piano del tuo add-on %s è stato aggiornato con successo." -#: includes/class-freemius.php:16369 +#: includes/class-freemius.php:17170 msgid "%s Add-on was successfully purchased." msgstr "L' add-on %s è stato acquistato con successo." -#: includes/class-freemius.php:16372 +#: includes/class-freemius.php:17173 msgid "Download the latest version" msgstr "Scarica l'ultima versione" -#: includes/class-freemius.php:16444 +#: includes/class-freemius.php:17259 msgctxt "%1s - plugin title, %2s - API domain" msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" msgstr "Il tuo server sta bloccando l'accesso all'API di Freemius. L'accesso è cruciale per quanto riguarda la la sincronizzazione di %1s. Per favore contatta il tuo host per aggiungere %2s alla whitelist." -#: includes/class-freemius.php16447, includes/class-freemius.php16862, -#: includes/class-freemius.php:16927 +#: includes/class-freemius.php17262, includes/class-freemius.php17678, +#: includes/class-freemius.php:17755 msgid "Error received from the server:" msgstr "Errore ricevuto dal server:" -#: includes/class-freemius.php:16457 +#: includes/class-freemius.php:17272 msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "Sembra che uno dei parametri di autenticazione sia sbagliato. Aggiorna la tua chiave pubblica, Secret Key & User ID e riprova." -#: includes/class-freemius.php16639, includes/class-freemius.php16867, -#: includes/class-freemius.php:16910 +#: includes/class-freemius.php17454, includes/class-freemius.php17683, +#: includes/class-freemius.php17726, includes/class-freemius.php:17829 msgctxt "" msgid "Hmm" msgstr "Uhm" -#: includes/class-freemius.php:16652 +#: includes/class-freemius.php:17467 msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." msgstr "Sembra che tu sia ancora usando il piano %s. Se hai effettuato un upgrade o cambiato il piano, è probabile che ci sia un problema nei nostri sistemi." -#: includes/class-freemius.php16653, templates/account.php98, -#: templates/add-ons.php130, templates/account/partials/addon.php:39 +#: includes/class-freemius.php17468, templates/account.php102, +#: templates/add-ons.php134, templates/account/partials/addon.php:43 msgctxt "trial period" msgid "Trial" msgstr "Prova gratuita" -#: includes/class-freemius.php:16658 +#: includes/class-freemius.php:17473 msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "Ho aggiornato il mio account, ma quando cerco di sincronizzare la licenza, il piano rimane %s." -#: includes/class-freemius.php16662, includes/class-freemius.php:16719 +#: includes/class-freemius.php17477, includes/class-freemius.php:17535 msgid "Please contact us here" msgstr "Contattaci qui" -#: includes/class-freemius.php:16672 +#: includes/class-freemius.php:17487 msgid "Your plan was successfully upgraded." msgstr "Il piano è stato aggiornato con successo." -#: includes/class-freemius.php:16689 +#: includes/class-freemius.php:17505 msgid "Your plan was successfully changed to %s." msgstr "Il piano è stato cambiato con successo a %s." -#: includes/class-freemius.php:16705 +#: includes/class-freemius.php:17521 msgid "Your license has expired. You can still continue using the free %s forever." msgstr "La tua licenza è scaduta. Puoi continuare ad usare la versione gratuita %s per sempre." -#: includes/class-freemius.php:16707 +#: includes/class-freemius.php:17523 msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "La tua licenza è scaduta. %1$saggiorna ora %2$sper continuare ad utilizzare %3$s senza interruzioni." -#: includes/class-freemius.php:16715 +#: includes/class-freemius.php:17531 msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "La tua licenza è stata cancellata. Se credi sia un errore, per favore contatta il supporto." -#: includes/class-freemius.php:16728 +#: includes/class-freemius.php:17544 msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." msgstr "La licenza è scaduta. È comunque possibile continuare a utilizzare tutte le funzionalità di %s, ma sarà necessario rinnovare la licenza per continuare a ricevere gli aggiornamenti ed il supporto." -#: includes/class-freemius.php:16751 +#: includes/class-freemius.php:17567 msgid "Your free trial has expired. You can still continue using all our free features." msgstr "La tua versione di prova gratuita è scaduta. Puoi continuare ad usare tutte le funzionalità gratuite." -#: includes/class-freemius.php:16753 +#: includes/class-freemius.php:17569 msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "La tua versione prova è scaduta.%1$s aggiorna ora %2$s per continuare ad usare %3$s senza interruzioni." -#: includes/class-freemius.php:16858 +#: includes/class-freemius.php:17674 msgid "It looks like the license could not be activated." msgstr "Sembra che la licenza non possa essere attivata." -#: includes/class-freemius.php:16888 +#: includes/class-freemius.php:17704 msgid "Your license was successfully activated." msgstr "La tua licenza è stata attivata correttamente." -#: includes/class-freemius.php:16914 +#: includes/class-freemius.php:17730 msgid "It looks like your site currently doesn't have an active license." msgstr "Sembra che il tuo sito non disponga di alcuna licenza attiva." -#: includes/class-freemius.php:16926 +#: includes/class-freemius.php:17754 msgid "It looks like the license deactivation failed." msgstr "Sembra che la disattivazione della licenza non sia riuscita." -#: includes/class-freemius.php:16954 +#: includes/class-freemius.php:17782 msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "La tua licenza é stata disattivata con successo, sei tornato al piano %s." -#: includes/class-freemius.php:16955 +#: includes/class-freemius.php:17783 msgid "O.K" msgstr "OK" -#: includes/class-freemius.php:17003 -msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." -msgstr "Il tuo piano è stato declassato con successo. La licenza del piano %s scadrà in %s." +#: includes/class-freemius.php:17836 +msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." +msgstr "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." -#: includes/class-freemius.php:17013 -msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." -msgstr "Stiamo avendo qualche problema temporaneo con il downgrade del piano. Riprova tra qualche minuto." +#: includes/class-freemius.php:17845 +msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s." +msgstr "Your subscription was successfully cancelled. Your %s plan license will expire in %s." -#: includes/class-freemius.php:17037 +#: includes/class-freemius.php:17887 msgid "You are already running the %s in a trial mode." msgstr "Stai già usando %s in modalità prova." -#: includes/class-freemius.php:17048 +#: includes/class-freemius.php:17898 msgid "You already utilized a trial before." msgstr "Hai già utilizzato una prova gratuita in passato." -#: includes/class-freemius.php:17062 +#: includes/class-freemius.php:17912 msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "Il piano %s non esiste, per questo motivo non è possibile iniziare il periodo di prova." -#: includes/class-freemius.php:17073 +#: includes/class-freemius.php:17923 msgid "Plan %s does not support a trial period." msgstr "Il piano %s non supporta il periodo di prova." -#: includes/class-freemius.php:17084 +#: includes/class-freemius.php:17934 msgid "None of the %s's plans supports a trial period." msgstr "Nessuno dei piani di %ssupporta il periodo di prova." -#: includes/class-freemius.php:17134 +#: includes/class-freemius.php:17984 msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "Sembra che tu non stia più usando la prova gratuita, quindi non c'è niente che tu debba annullare :)" -#: includes/class-freemius.php:17185 -msgid "Your %s free trial was successfully cancelled." -msgstr "Il tuo periodo di prova gratuito %s è stato annullato con successo." - -#: includes/class-freemius.php:17190 +#: includes/class-freemius.php:18020 msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "Stiamo avendo qualche problema temporaneo con l'annullamento del periodo di prova. Riprova tra qualche minuto." -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18039 +msgid "Your %s free trial was successfully cancelled." +msgstr "Il tuo periodo di prova gratuito %s è stato annullato con successo." + +#: includes/class-freemius.php:18346 msgid "Version %s was released." msgstr "La versione %s é stata rilasciata." -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18346 msgid "Please download %s." msgstr "Scarica %s." -#: includes/class-freemius.php:17481 +#: includes/class-freemius.php:18353 msgid "the latest %s version here" msgstr "l'ultima versione %s é quì" -#: includes/class-freemius.php:17486 +#: includes/class-freemius.php:18358 msgid "New" msgstr "Nuovo" -#: includes/class-freemius.php:17491 +#: includes/class-freemius.php:18363 msgid "Seems like you got the latest release." msgstr "Sembra che tu abbia la versione più recente." -#: includes/class-freemius.php:17492 +#: includes/class-freemius.php:18364 msgid "You are all good!" msgstr "Sei fantastico!" -#: includes/class-freemius.php:17758 +#: includes/class-freemius.php:18632 msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "L'email di verifica è stata inviata a %s. Se dopo 5 minuti non è ancora arrivata, per favore controlla nella tua casella di posta indesiderata." -#: includes/class-freemius.php:17893 +#: includes/class-freemius.php:18769 msgid "Site successfully opted in." msgstr "Sito accettato con successo." -#: includes/class-freemius.php17894, includes/class-freemius.php:18671 +#: includes/class-freemius.php18770, includes/class-freemius.php:19581 msgid "Awesome" msgstr "Fantastico" -#: includes/class-freemius.php17910, templates/forms/optout.php:32 +#: includes/class-freemius.php18786, templates/forms/optout.php:32 msgid "We appreciate your help in making the %s better by letting us track some usage data." msgstr "Ti ringraziamo per averci concesso di tracciare alcuni dati di utilizzo al fine di migliorare %s." -#: includes/class-freemius.php:17911 +#: includes/class-freemius.php:18787 msgid "Thank you!" msgstr "Grazie!" -#: includes/class-freemius.php:17918 +#: includes/class-freemius.php:18794 msgid "We will no longer be sending any usage data of %s on %s to %s." msgstr "Non possiamo più inviare i dati di utilizzo di %ssu %sa %s." -#: includes/class-freemius.php:18033 +#: includes/class-freemius.php:18923 msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." msgstr "Verifica di aver ricevuto l'email da %s per confermare il cambiamento del proprietario. Per ragioni di sicurezza devi confermare il cambiamento entro 15 minuti. Se non trovi l'email controlla nella posta indesiderata." -#: includes/class-freemius.php:18039 +#: includes/class-freemius.php:18929 msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "Grazie per aver confermato il cambiamento del proprietario. Un' email è stata appena inviata a %s per la conferma finale." -#: includes/class-freemius.php:18044 +#: includes/class-freemius.php:18934 msgid "%s is the new owner of the account." msgstr "%s è il nuovo proprietario dell'account." -#: includes/class-freemius.php:18046 +#: includes/class-freemius.php:18936 msgctxt "as congratulations" msgid "Congrats" msgstr "Congratulazioni" -#: includes/class-freemius.php:18066 +#: includes/class-freemius.php:18956 msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "Siamo spiacenti, non siamo riusciti a completare l'aggiornamento via email. Un altro utente con lo stesso indirizzo email è già registrato." -#: includes/class-freemius.php:18067 +#: includes/class-freemius.php:18957 msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." msgstr "Puoi abbandonare la proprietà dell'account %s a %scliccando il pulsante Cambia proprietario." -#: includes/class-freemius.php:18074 +#: includes/class-freemius.php:18964 msgid "Change Ownership" msgstr "Cambia Proprietario" -#: includes/class-freemius.php:18082 +#: includes/class-freemius.php:18972 msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." msgstr "Il tuo indirizzo email è stato aggiornato correttamente. Riceverai un'email con le istruzioni di conferma in pochi istanti." -#: includes/class-freemius.php:18094 +#: includes/class-freemius.php:18984 msgid "Please provide your full name." msgstr "Per favore inserisci il tuo nome completo." -#: includes/class-freemius.php:18099 +#: includes/class-freemius.php:18989 msgid "Your name was successfully updated." msgstr "Il tuo nome è stato aggiornato correttamente." -#: includes/class-freemius.php:18160 +#: includes/class-freemius.php:19050 msgid "You have successfully updated your %s." msgstr "Hai aggiornato con successo il tuo %s." -#: includes/class-freemius.php:18300 +#: includes/class-freemius.php:19190 msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "Le informazioni sugli add-on di %s vengono scaricate da un server esterno." -#: includes/class-freemius.php:18301 +#: includes/class-freemius.php:19191 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "Attenzione" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgctxt "exclamation" msgid "Hey" msgstr "Hey" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "Come sta andando con %s? Prova tutte le funzionalità premium di %s con una prova gratuita di %d giorni." -#: includes/class-freemius.php:18719 +#: includes/class-freemius.php:19629 msgid "No commitment for %s days - cancel anytime!" msgstr "Nessun impegno per %s giorni - puoi annullare in qualsiasi momento!" -#: includes/class-freemius.php:18720 +#: includes/class-freemius.php:19630 msgid "No credit card required" msgstr "Nessuna carta di credito richiesta" -#: includes/class-freemius.php18727, templates/forms/trial-start.php:53 +#: includes/class-freemius.php19637, templates/forms/trial-start.php:53 msgctxt "call to action" msgid "Start free trial" msgstr "Inizia il periodo di prova gratuito" -#: includes/class-freemius.php:18804 +#: includes/class-freemius.php:19714 msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" msgstr "Ciao, sai che %s ha il programma di affiliazione? Se ti piace %s puoi diventare un nostro ambasciatore e guadagnare denaro!" -#: includes/class-freemius.php:18813 +#: includes/class-freemius.php:19723 msgid "Learn more" msgstr "Scopri altro" -#: includes/class-freemius.php18963, templates/account.php394, -#: templates/account.php497, templates/connect.php169, -#: templates/connect.php408, templates/forms/license-activation.php24, -#: templates/account/partials/addon.php:230 +#: includes/class-freemius.php19873, templates/account.php406, +#: templates/account.php509, templates/connect.php171, +#: templates/connect.php421, templates/forms/license-activation.php24, +#: templates/account/partials/addon.php:235 msgid "Activate License" msgstr "Attiva licenza" -#: includes/class-freemius.php18964, templates/account.php457, -#: templates/account.php496, templates/account/partials/site.php:256 +#: includes/class-freemius.php19874, templates/account.php469, +#: templates/account.php508, templates/account/partials/site.php:256 msgid "Change License" msgstr "Cambia licenza" -#: includes/class-freemius.php19046, templates/account/partials/site.php:161 +#: includes/class-freemius.php19956, templates/account/partials/site.php:161 msgid "Opt Out" msgstr "Cancella iscrizione" -#: includes/class-freemius.php19048, includes/class-freemius.php19053, +#: includes/class-freemius.php19958, includes/class-freemius.php19963, #: templates/account/partials/site.php43, #: templates/account/partials/site.php:161 msgid "Opt In" msgstr "Iscriviti" -#: includes/class-freemius.php:19245 +#: includes/class-freemius.php:20187 +msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" +msgstr " La versione a pagamento di%1s è già installata. Attivala per iniziare a usare le funzionalità di %2s features. %3s" + +#: includes/class-freemius.php:20195 +msgid "Activate %s features" +msgstr "Activate %s features" + +#: includes/class-freemius.php:20208 msgid "Please follow these steps to complete the upgrade" msgstr "Segui i passi seguenti per completare l'aggiornamento" -#: includes/class-freemius.php:19249 +#: includes/class-freemius.php:20212 msgid "Download the latest %s version" msgstr "Scarica l'ultima versione di %s" -#: includes/class-freemius.php:19253 +#: includes/class-freemius.php:20216 msgid "Upload and activate the downloaded version" msgstr "Carica e attiva la versione scaricata" -#: includes/class-freemius.php:19255 +#: includes/class-freemius.php:20218 msgid "How to upload and activate?" msgstr "Come faccio a caricare ed attivare?" -#: includes/class-freemius.php:19384 +#: includes/class-freemius.php:20352 msgid "%sClick here%s to choose the sites where you'd like to activate the license on." msgstr "%sClicca qui%s per scegliere i siti dove vuoi attivare la licenza." -#: includes/class-freemius.php:19545 +#: includes/class-freemius.php:20513 msgid "Auto installation only works for opted-in users." msgstr "L'installazione automatica funziona solo per gli utenti che hanno dato il consenso." -#: includes/class-freemius.php19555, includes/class-freemius.php19588, -#: includes/class-fs-plugin-updater.php713, -#: includes/class-fs-plugin-updater.php:727 +#: includes/class-freemius.php20523, includes/class-freemius.php20556, +#: includes/class-fs-plugin-updater.php1060, +#: includes/class-fs-plugin-updater.php:1074 msgid "Invalid module ID." msgstr "ID modulo non valida." -#: includes/class-freemius.php19564, includes/class-fs-plugin-updater.php:747 +#: includes/class-freemius.php20532, includes/class-fs-plugin-updater.php:1096 msgid "Premium version already active." msgstr "Versione Premium già attiva." -#: includes/class-freemius.php:19571 +#: includes/class-freemius.php:20539 msgid "You do not have a valid license to access the premium version." msgstr "Non disponi di una licenza valida per accedere alla versione Premium." -#: includes/class-freemius.php:19578 +#: includes/class-freemius.php:20546 msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." msgstr "Il plugin è un \"Serviceware\", quindi non dispone di una versione del codice Premium." -#: includes/class-freemius.php19596, includes/class-fs-plugin-updater.php:746 +#: includes/class-freemius.php20564, includes/class-fs-plugin-updater.php:1095 msgid "Premium add-on version already installed." msgstr "Versione Premium dell'add-on già installata." -#: includes/class-freemius.php:19941 +#: includes/class-freemius.php:20909 msgid "View paid features" msgstr "Vedi funzionalità a pagamento" -#: includes/class-freemius.php:20251 +#: includes/class-freemius.php:21229 msgid "Thank you so much for using %s and its add-ons!" msgstr "Grazie per utilizzare %se i suoi addon!" -#: includes/class-freemius.php:20252 +#: includes/class-freemius.php:21230 msgid "Thank you so much for using %s!" msgstr "Grazie per utilizzare %s!" -#: includes/class-freemius.php:20258 +#: includes/class-freemius.php:21236 msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s." msgstr "Hai già accettato il tracciamento d'uso, ci aiuterà a migliorare %s." -#: includes/class-freemius.php:20262 +#: includes/class-freemius.php:21240 msgid "Thank you so much for using our products!" msgstr "Grazie per utilizzare i nostri prodotti!" -#: includes/class-freemius.php:20263 +#: includes/class-freemius.php:21241 msgid "You've already opted-in to our usage-tracking, which helps us keep improving them." msgstr "Hai già accettato il tracciamento d'uso che ci aiuta a migliorare." -#: includes/class-freemius.php:20282 +#: includes/class-freemius.php:21260 msgid "%s and its add-ons" msgstr "%se i suoi addon" -#: includes/class-freemius.php:20291 +#: includes/class-freemius.php:21269 msgid "Products" msgstr "Prodotti" -#: includes/class-freemius.php20298, templates/connect.php:259 +#: includes/class-freemius.php21276, templates/connect.php:272 msgid "Yes" msgstr "Si" -#: includes/class-freemius.php20299, templates/connect.php:260 +#: includes/class-freemius.php21277, templates/connect.php:273 msgid "send me security & feature updates, educational content and offers." msgstr "inviami aggiornamenti di funzionalità e sicurezza, contenuti formativi e offerte." -#: includes/class-freemius.php20300, templates/connect.php:265 +#: includes/class-freemius.php21278, templates/connect.php:278 msgid "No" msgstr "No" -#: includes/class-freemius.php20302, templates/connect.php:267 +#: includes/class-freemius.php21280, templates/connect.php:280 msgid "do %sNOT%s send me security & feature updates, educational content and offers." msgstr "%snon %s mi invierà aggiornamenti di funzionalità e sicurezza, contenuti formativi e offerte." -#: includes/class-freemius.php:20312 +#: includes/class-freemius.php:21290 msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" msgstr "A causa della nuova %sRegolamento Europeo sulla Privacy (GDPR)%se i suoi requisiti è necessario che accetti esplicitamente il consenso confermando nuovamente che accetti" -#: includes/class-freemius.php20314, templates/connect.php:274 +#: includes/class-freemius.php21292, templates/connect.php:287 msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" msgstr "Facci sapere se vuoi essere contattato per aggiornamenti di sicurezza e di funzionalità, contenuti formativi e offerte occasionali:" -#: includes/class-freemius.php:20598 +#: includes/class-freemius.php:21574 msgid "License key is empty." msgstr "La chiave licenza è vuota." #: includes/class-fs-plugin-updater.php184, -#: includes/class-fs-plugin-updater.php:219 -msgid "%sRenew your license now%s to access version %s security & feature updates, and support." -msgstr "%sRinnova la tua licenza ora%s per accedere alla versione %s con aggiornamenti di sicurezza e funzionalità e supporto." +#: templates/forms/premium-versions-upgrade-handler.php:57 +msgid "Renew license" +msgstr "Rinnova licenza" + +#: includes/class-fs-plugin-updater.php189, +#: templates/forms/premium-versions-upgrade-handler.php:58 +msgid "Buy license" +msgstr "Buy license" + +#: includes/class-fs-plugin-updater.php:278 +msgid "There is a %s of %s available." +msgstr "There is a %s of %s available." + +#: includes/class-fs-plugin-updater.php:282 +msgid "new version" +msgstr "new version" + +#: includes/class-fs-plugin-updater.php:305 +msgid "Important Upgrade Notice:" +msgstr "Important Upgrade Notice:" -#: includes/class-fs-plugin-updater.php:776 +#: includes/class-fs-plugin-updater.php:1125 msgid "Installing plugin: %s" msgstr "Installazione plugin: %s" -#: includes/class-fs-plugin-updater.php:817 +#: includes/class-fs-plugin-updater.php:1166 msgid "Unable to connect to the filesystem. Please confirm your credentials." msgstr "Impossibile accedere al filesystem. Conferma le tue credenziali." -#: includes/class-fs-plugin-updater.php:923 +#: includes/class-fs-plugin-updater.php:1348 msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." msgstr "Il pacchetto remoto del plugin non contiene una cartella con lo slug desiderato e la rinominazione non ha funzionato." -#: includes/fs-plugin-info-dialog.php336, -#: templates/account/partials/addon.php:287 +#: includes/fs-plugin-info-dialog.php369, +#: templates/account/partials/addon.php:292 msgctxt "verb" msgid "Purchase" msgstr "Acquisto" -#: includes/fs-plugin-info-dialog.php:339 +#: includes/fs-plugin-info-dialog.php:372 msgid "Start my free %s" msgstr "Inizia la mia %s" -#: includes/fs-plugin-info-dialog.php:380 +#: includes/fs-plugin-info-dialog.php:413 msgid "Install Free Version Now" msgstr "Installa la versione gratuita ora" -#: includes/fs-plugin-info-dialog.php381, templates/auto-installation.php111, -#: templates/account/partials/addon.php267, -#: templates/account/partials/addon.php:317 +#: includes/fs-plugin-info-dialog.php414, templates/auto-installation.php111, +#: templates/account/partials/addon.php272, +#: templates/account/partials/addon.php:322 msgid "Install Now" msgstr "Installa ora" -#: includes/fs-plugin-info-dialog.php:392 +#: includes/fs-plugin-info-dialog.php:425 msgctxt "as download latest version" msgid "Download Latest Free Version" msgstr "Scarica l'ultima versione gratuita" -#: includes/fs-plugin-info-dialog.php393, templates/account.php80, +#: includes/fs-plugin-info-dialog.php426, templates/account.php80, #: templates/account/partials/addon.php:21 msgctxt "as download latest version" msgid "Download Latest" msgstr "Scarica l'ultima versione" -#: includes/fs-plugin-info-dialog.php:403 +#: includes/fs-plugin-info-dialog.php:436 msgid "Install Free Version Update Now" msgstr "Installa l'ultima versione gratuita" -#: includes/fs-plugin-info-dialog.php404, templates/account.php:448 +#: includes/fs-plugin-info-dialog.php437, templates/account.php:460 msgid "Install Update Now" msgstr "Installa l'aggiornamento ora" -#: includes/fs-plugin-info-dialog.php:415 +#: includes/fs-plugin-info-dialog.php:448 msgid "Newer Free Version (%s) Installed" msgstr "Nuova versione gratuita (%s) installata" -#: includes/fs-plugin-info-dialog.php:416 +#: includes/fs-plugin-info-dialog.php:449 msgid "Newer Version (%s) Installed" msgstr "Versione più recente (%s) installata" -#: includes/fs-plugin-info-dialog.php:424 +#: includes/fs-plugin-info-dialog.php:457 msgid "Latest Free Version Installed" msgstr "Ultima versione gratuita installata" -#: includes/fs-plugin-info-dialog.php:425 +#: includes/fs-plugin-info-dialog.php:458 msgid "Latest Version Installed" msgstr "Versione più recente installata" -#: includes/fs-plugin-info-dialog.php:580 +#: includes/fs-plugin-info-dialog.php:613 msgctxt "Plugin installer section title" msgid "Description" msgstr "Descrizione" -#: includes/fs-plugin-info-dialog.php:581 +#: includes/fs-plugin-info-dialog.php:614 msgctxt "Plugin installer section title" msgid "Installation" msgstr "Installazione" -#: includes/fs-plugin-info-dialog.php:582 +#: includes/fs-plugin-info-dialog.php:615 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "FAQ" -#: includes/fs-plugin-info-dialog.php583, +#: includes/fs-plugin-info-dialog.php616, #: templates/plugin-info/description.php:55 msgid "Screenshots" msgstr "Screenshot" -#: includes/fs-plugin-info-dialog.php:584 +#: includes/fs-plugin-info-dialog.php:617 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "Changelog" -#: includes/fs-plugin-info-dialog.php:585 +#: includes/fs-plugin-info-dialog.php:618 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "Recensioni" -#: includes/fs-plugin-info-dialog.php:586 +#: includes/fs-plugin-info-dialog.php:619 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "Altre note" -#: includes/fs-plugin-info-dialog.php:601 +#: includes/fs-plugin-info-dialog.php:634 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "Caratteristiche & prezzi" -#: includes/fs-plugin-info-dialog.php:611 +#: includes/fs-plugin-info-dialog.php:644 msgid "Plugin Install" msgstr "Installazione del plugin" -#: includes/fs-plugin-info-dialog.php:683 +#: includes/fs-plugin-info-dialog.php:716 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "Piano %s" -#: includes/fs-plugin-info-dialog.php:709 +#: includes/fs-plugin-info-dialog.php:742 msgctxt "e.g. the best product" msgid "Best" msgstr "Migliore" -#: includes/fs-plugin-info-dialog.php715, -#: includes/fs-plugin-info-dialog.php:735 +#: includes/fs-plugin-info-dialog.php748, +#: includes/fs-plugin-info-dialog.php:768 msgctxt "as every month" msgid "Monthly" msgstr "Mensilmente" -#: includes/fs-plugin-info-dialog.php:718 +#: includes/fs-plugin-info-dialog.php:751 msgctxt "as once a year" msgid "Annual" msgstr "Annuale" -#: includes/fs-plugin-info-dialog.php:721 +#: includes/fs-plugin-info-dialog.php:754 msgid "Lifetime" msgstr "Tutta la vita" -#: includes/fs-plugin-info-dialog.php735, -#: includes/fs-plugin-info-dialog.php737, -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php768, +#: includes/fs-plugin-info-dialog.php770, +#: includes/fs-plugin-info-dialog.php:772 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "Fatturato %s" -#: includes/fs-plugin-info-dialog.php:737 +#: includes/fs-plugin-info-dialog.php:770 msgctxt "as once a year" msgid "Annually" msgstr "Annualmente" -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php:772 msgctxt "as once a year" msgid "Once" msgstr "Una volta" -#: includes/fs-plugin-info-dialog.php:745 +#: includes/fs-plugin-info-dialog.php:778 msgid "Single Site License" msgstr "Licenza per sito singolo" -#: includes/fs-plugin-info-dialog.php:747 +#: includes/fs-plugin-info-dialog.php:780 msgid "Unlimited Licenses" msgstr "Licenze illimitate" -#: includes/fs-plugin-info-dialog.php:749 +#: includes/fs-plugin-info-dialog.php:782 msgid "Up to %s Sites" msgstr "Fino a %s siti" -#: includes/fs-plugin-info-dialog.php759, +#: includes/fs-plugin-info-dialog.php792, #: templates/plugin-info/features.php:82 msgctxt "as monthly period" msgid "mo" msgstr "mese" -#: includes/fs-plugin-info-dialog.php766, +#: includes/fs-plugin-info-dialog.php799, #: templates/plugin-info/features.php:80 msgctxt "as annual period" msgid "year" msgstr "anno" -#: includes/fs-plugin-info-dialog.php:820 +#: includes/fs-plugin-info-dialog.php:853 msgctxt "noun" msgid "Price" msgstr "Prezzo" -#: includes/fs-plugin-info-dialog.php:868 +#: includes/fs-plugin-info-dialog.php:901 msgid "Save %s" msgstr "Risparmia %s" -#: includes/fs-plugin-info-dialog.php:878 +#: includes/fs-plugin-info-dialog.php:911 msgid "No commitment for %s - cancel anytime" msgstr "Nessun impegno con %s - cancella quando vuoi" -#: includes/fs-plugin-info-dialog.php:881 +#: includes/fs-plugin-info-dialog.php:914 msgid "After your free %s, pay as little as %s" msgstr "Dopo il tuo %s gratuito, paghi solamente %s" -#: includes/fs-plugin-info-dialog.php:892 +#: includes/fs-plugin-info-dialog.php:925 msgid "Details" msgstr "Dettagli" -#: includes/fs-plugin-info-dialog.php896, templates/account.php87, -#: templates/debug.php191, templates/debug.php228, templates/debug.php442, -#: templates/account/partials/addon.php:28 +#: includes/fs-plugin-info-dialog.php929, templates/account.php91, +#: templates/debug.php201, templates/debug.php238, templates/debug.php452, +#: templates/account/partials/addon.php:32 msgctxt "product version" msgid "Version" msgstr "Versione" -#: includes/fs-plugin-info-dialog.php:903 +#: includes/fs-plugin-info-dialog.php:936 msgctxt "as the plugin author" msgid "Author" msgstr "Autore" -#: includes/fs-plugin-info-dialog.php:910 +#: includes/fs-plugin-info-dialog.php:943 msgid "Last Updated" msgstr "Ultimo aggiornamento" -#: includes/fs-plugin-info-dialog.php:915 +#: includes/fs-plugin-info-dialog.php948, templates/account.php:376 msgctxt "x-ago" msgid "%s ago" msgstr "%s fa" -#: includes/fs-plugin-info-dialog.php:924 +#: includes/fs-plugin-info-dialog.php:957 msgid "Requires WordPress Version" msgstr "Richiede la versione di WordPress" -#: includes/fs-plugin-info-dialog.php:925 +#: includes/fs-plugin-info-dialog.php:958 msgid "%s or higher" msgstr "%s o superiore" -#: includes/fs-plugin-info-dialog.php:932 +#: includes/fs-plugin-info-dialog.php:965 msgid "Compatible up to" msgstr "Compatibile fino a" -#: includes/fs-plugin-info-dialog.php:940 +#: includes/fs-plugin-info-dialog.php:973 msgid "Downloaded" msgstr "Scaricato" -#: includes/fs-plugin-info-dialog.php:944 +#: includes/fs-plugin-info-dialog.php:977 msgid "%s time" msgstr "% volta" -#: includes/fs-plugin-info-dialog.php:946 +#: includes/fs-plugin-info-dialog.php:979 msgid "%s times" msgstr "%s volte" -#: includes/fs-plugin-info-dialog.php:956 +#: includes/fs-plugin-info-dialog.php:989 msgid "WordPress.org Plugin Page" msgstr "Pagina dei plugin di WordPress.org" -#: includes/fs-plugin-info-dialog.php:964 +#: includes/fs-plugin-info-dialog.php:997 msgid "Plugin Homepage" msgstr "Homepage del plugin" -#: includes/fs-plugin-info-dialog.php972, -#: includes/fs-plugin-info-dialog.php:1054 +#: includes/fs-plugin-info-dialog.php1005, +#: includes/fs-plugin-info-dialog.php:1087 msgid "Donate to this plugin" msgstr "Fai una donazione a questo plugin" -#: includes/fs-plugin-info-dialog.php:979 +#: includes/fs-plugin-info-dialog.php:1012 msgid "Average Rating" msgstr "Valutazione media" -#: includes/fs-plugin-info-dialog.php:986 +#: includes/fs-plugin-info-dialog.php:1019 msgid "based on %s" msgstr "basato su %s" -#: includes/fs-plugin-info-dialog.php:990 +#: includes/fs-plugin-info-dialog.php:1023 msgid "%s rating" msgstr "%s valutazione" -#: includes/fs-plugin-info-dialog.php:992 +#: includes/fs-plugin-info-dialog.php:1025 msgid "%s ratings" msgstr "%s valutazioni" -#: includes/fs-plugin-info-dialog.php:1007 +#: includes/fs-plugin-info-dialog.php:1040 msgid "%s star" msgstr "%s stella" -#: includes/fs-plugin-info-dialog.php:1009 +#: includes/fs-plugin-info-dialog.php:1042 msgid "%s stars" msgstr "%s stelle" -#: includes/fs-plugin-info-dialog.php:1020 +#: includes/fs-plugin-info-dialog.php:1053 msgid "Click to see reviews that provided a rating of %s" msgstr "Fai clic per vedere le recensioni che hanno fornito una valutazione di %s" -#: includes/fs-plugin-info-dialog.php:1033 +#: includes/fs-plugin-info-dialog.php:1066 msgid "Contributors" msgstr "Contributori" -#: includes/fs-plugin-info-dialog.php1062, -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php1095, +#: includes/fs-plugin-info-dialog.php:1097 msgid "Warning" msgstr "Avviso" -#: includes/fs-plugin-info-dialog.php:1062 +#: includes/fs-plugin-info-dialog.php:1095 msgid "This plugin has not been tested with your current version of WordPress." msgstr "Questo plugin non è stato testato con la versione corrente di WordPress." -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php:1097 msgid "This plugin has not been marked as compatible with your version of WordPress." msgstr "Questo plugin non è stato segnato come compatibile con la tua versione di WordPress." -#: includes/fs-plugin-info-dialog.php:1083 +#: includes/fs-plugin-info-dialog.php:1116 msgid "Paid add-on must be deployed to Freemius." msgstr "Gli add-on a pagamento devono essere distribuiti da Freemius." -#: includes/fs-plugin-info-dialog.php:1084 +#: includes/fs-plugin-info-dialog.php:1117 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "L'add-on dev'essere distribuito da WordPress.org o Freemius." -#: templates/account.php81, templates/account/partials/addon.php22, +#: templates/account.php81, templates/forms/subscription-cancellation.php96, +#: templates/account/partials/addon.php22, #: templates/account/partials/site.php:295 -msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." -msgstr "Effettuare il downgrade del piano interromperà immediatamente tutti i futuri pagamenti ricorrenti e la licenza del piano %s scadrà in %s." +msgid "Downgrading your plan" +msgstr "Downgrading your plan" + +#: templates/account.php82, templates/forms/subscription-cancellation.php97, +#: templates/account/partials/addon.php23, +#: templates/account/partials/site.php:296 +msgid "Cancelling the subscription" +msgstr "Cancelling the subscription" + +#. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the +#. subscription' +#: templates/account.php84, templates/forms/subscription-cancellation.php99, +#: templates/account/partials/addon.php25, +#: templates/account/partials/site.php:298 +msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." +msgstr "%1s fermerà immediatamente ogni futuro pagamento ricorrente e la tua %s licenza scadrà il %s." -#: templates/account.php82, templates/account/partials/addon.php:23 +#: templates/account.php85, templates/forms/subscription-cancellation.php100, +#: templates/account/partials/addon.php26, +#: templates/account/partials/site.php:299 +msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." +msgstr "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." + +#: templates/account.php86, templates/forms/subscription-cancellation.php106, +#: templates/account/partials/addon.php:27 msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "Cancellando il periodo di prova gratuito bloccherai immediatamente l'accesso a tutte le funzionalità premium. Vuoi continuare?" -#: templates/account.php83, templates/account/partials/addon.php24, -#: templates/account/partials/site.php:296 -msgid "You can still enjoy all %s features but you will not have access to %s updates and support." -msgstr "Puoi continuare ad usufruire di tutte le funzionalità di %sma non potrai accedere agli aggiornamenti e supporto di %s." +#: templates/account.php87, templates/forms/subscription-cancellation.php101, +#: templates/account/partials/addon.php28, +#: templates/account/partials/site.php:300 +msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." +msgstr "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." -#: templates/account.php84, templates/account/partials/addon.php25, -#: templates/account/partials/site.php:297 +#: templates/account.php88, templates/forms/subscription-cancellation.php102, +#: templates/account/partials/addon.php29, +#: templates/account/partials/site.php:301 msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." msgstr "Quando la tua licenza scadrà, potrai comunque continuare a usare la versione gratuita, ma NON avrai accesso alle funzionalità %s." #. translators: %s: Plan title (e.g. "Professional") -#: templates/account.php86, +#: templates/account.php90, #: templates/account/partials/activate-license-button.php31, -#: templates/account/partials/addon.php:27 +#: templates/account/partials/addon.php:31 msgid "Activate %s Plan" msgstr "Attivare il piano %s" #. translators: %s: Time period (e.g. Auto renews in "2 months") -#: templates/account.php89, templates/account/partials/addon.php30, +#: templates/account.php93, templates/account/partials/addon.php34, #: templates/account/partials/site.php:275 msgid "Auto renews in %s" msgstr "Rinnovo automatico in %s" #. translators: %s: Time period (e.g. Expires in "2 months") -#: templates/account.php91, templates/account/partials/addon.php32, +#: templates/account.php95, templates/account/partials/addon.php36, #: templates/account/partials/site.php:277 msgid "Expires in %s" msgstr "Scade in %s" -#: templates/account.php92, templates/account/partials/addon.php:33 +#: templates/account.php96, templates/account/partials/addon.php:37 msgctxt "as synchronize license" msgid "Sync License" msgstr "Sincronizza la licenza" -#: templates/account.php93, templates/account/partials/addon.php:34 +#: templates/account.php97, templates/account/partials/addon.php:38 msgid "Cancel Trial" msgstr "Annulla prova gratuita" -#: templates/account.php94, templates/account/partials/addon.php:35 +#: templates/account.php98, templates/account/partials/addon.php:39 msgid "Change Plan" msgstr "Cambia piano" -#: templates/account.php95, templates/account/partials/addon.php:36 +#: templates/account.php99, templates/account/partials/addon.php:40 msgctxt "verb" msgid "Upgrade" msgstr "Aggiornamento" -#: templates/account.php97, templates/account/partials/addon.php38, -#: templates/account/partials/site.php:298 +#: templates/account.php101, templates/account/partials/addon.php42, +#: templates/account/partials/site.php:302 msgctxt "verb" msgid "Downgrade" msgstr "Downgrade" -#: templates/account.php99, templates/add-ons.php126, +#: templates/account.php103, templates/add-ons.php130, #: templates/plugin-info/features.php72, -#: templates/account/partials/addon.php40, +#: templates/account/partials/addon.php44, #: templates/account/partials/site.php:31 msgid "Free" msgstr "Gratuito" -#: templates/account.php100, templates/account/partials/addon.php:41 +#: templates/account.php104, templates/account/partials/addon.php:45 msgid "Activate" msgstr "Attiva" -#: templates/account.php101, templates/debug.php361, +#: templates/account.php105, templates/debug.php371, #: includes/customizer/class-fs-customizer-upsell-control.php106, -#: templates/account/partials/addon.php:42 +#: templates/account/partials/addon.php:46 msgctxt "as product pricing plan" msgid "Plan" msgstr "Piano" -#: templates/account.php:154 +#: templates/account.php:158 msgid "Free Trial" msgstr "Prova gratuita" -#: templates/account.php:165 +#: templates/account.php:169 msgid "Account Details" msgstr "Dettagli dell'account" -#: templates/account.php:175 +#: templates/account.php:179 msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" msgstr "L'eliminazione dell'account disattiva automaticamente la tua licenza del piano %s quindi è possibile utilizzarlo su altri siti. Se si desidera anche terminare i pagamenti ricorrenti, fare clic sul pulsante \"Annulla\" ed effettuare il \"Downgrade\" del tuo account. Sei sicuro di voler continuare con l'eliminazione?" -#: templates/account.php:177 +#: templates/account.php:181 msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" msgstr "La cancellazione non è temporanea. Cancella solamente se non vuoi più utilizzare %s. Sei sicuro di voler cancellare questi dati?" -#: templates/account.php:180 +#: templates/account.php:184 msgid "Delete Account" msgstr "Elimina Account" -#: templates/account.php192, templates/account/partials/addon.php155, +#: templates/account.php196, templates/account/partials/addon.php159, #: templates/account/partials/deactivate-license-button.php:35 msgid "Deactivate License" msgstr "Disattiva licenza" -#: templates/account.php:210 +#: templates/account.php219, templates/forms/subscription-cancellation.php:125 msgid "Are you sure you want to proceed?" msgstr "Sei sicuro di voler procedere?" -#: templates/account.php210, templates/account/partials/addon.php:177 +#: templates/account.php219, templates/account/partials/addon.php:182 msgid "Cancel Subscription" msgstr "Annulla sottoscrizione" -#: templates/account.php:239 +#: templates/account.php:247 msgctxt "as synchronize" msgid "Sync" msgstr "Sincronizza" -#: templates/account.php253, templates/debug.php:477 +#: templates/account.php261, templates/debug.php:487 msgid "Name" msgstr "Nome" -#: templates/account.php259, templates/debug.php:478 +#: templates/account.php267, templates/debug.php:488 msgid "Email" msgstr "Email" -#: templates/account.php266, templates/debug.php360, templates/debug.php:516 +#: templates/account.php274, templates/debug.php370, templates/debug.php:526 msgid "User ID" msgstr "ID utente" -#: templates/account.php:274 +#: templates/account.php:282 msgid "Site ID" msgstr "ID del sito" -#: templates/account.php:277 +#: templates/account.php:285 msgid "No ID" msgstr "Nessun ID" -#: templates/account.php282, templates/debug.php233, templates/debug.php362, -#: templates/debug.php443, templates/debug.php480, +#: templates/account.php290, templates/debug.php243, templates/debug.php372, +#: templates/debug.php453, templates/debug.php490, #: templates/account/partials/site.php:219 msgid "Public Key" msgstr "Chiave pubblica" -#: templates/account.php288, templates/debug.php363, templates/debug.php444, -#: templates/debug.php481, templates/account/partials/site.php:231 +#: templates/account.php296, templates/debug.php373, templates/debug.php454, +#: templates/debug.php491, templates/account/partials/site.php:231 msgid "Secret Key" msgstr "Chiave segreta" -#: templates/account.php:291 +#: templates/account.php:299 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "Nessuna chiave" -#: templates/account.php310, templates/account/partials/site.php112, +#: templates/account.php318, templates/account/partials/site.php112, #: templates/account/partials/site.php:114 msgid "Trial" msgstr "Prova gratuita" -#: templates/account.php329, templates/debug.php521, +#: templates/account.php337, templates/debug.php531, #: templates/account/partials/site.php:248 msgid "License Key" msgstr "Chiave della licenza" -#: templates/account.php:359 +#: templates/account.php:367 msgid "not verified" msgstr "non verificato" -#: templates/account.php:416 +#: templates/account.php376, templates/account/partials/addon.php:120 +msgid "Expired" +msgstr "Scaduto" + +#: templates/account.php:428 msgid "Premium version" msgstr "Versione premium" -#: templates/account.php:418 +#: templates/account.php:430 msgid "Free version" msgstr "Versione gratuita" -#: templates/account.php:430 +#: templates/account.php:442 msgid "Verify Email" msgstr "Verifica email" -#: templates/account.php:441 +#: templates/account.php:453 msgid "Download %s Version" msgstr "Scarica la versione %s" -#: templates/account.php455, templates/account.php636, +#: templates/account.php467, templates/account.php649, #: templates/account/partials/site.php237, #: templates/account/partials/site.php:255 msgctxt "verb" msgid "Show" msgstr "Mostra" -#: templates/account.php:469 +#: templates/account.php:481 msgid "What is your %s?" msgstr "Qual è il tuo %s?" -#: templates/account.php477, templates/account/billing.php:27 +#: templates/account.php489, templates/account/billing.php:27 msgctxt "verb" msgid "Edit" msgstr "Modifica" -#: templates/account.php:490 +#: templates/account.php:502 msgid "Sites" msgstr "Siti" -#: templates/account.php:501 +#: templates/account.php:513 msgid "Search by address" msgstr "Cerca per indirizzo" -#: templates/account.php510, templates/account.php558, templates/debug.php226, -#: templates/debug.php354, templates/debug.php439, templates/debug.php476, -#: templates/debug.php514, templates/debug.php587, +#: templates/account.php522, templates/account.php570, templates/debug.php236, +#: templates/debug.php364, templates/debug.php449, templates/debug.php486, +#: templates/debug.php524, templates/debug.php597, #: templates/account/payments.php35, templates/debug/logger.php:21 msgid "ID" msgstr "ID" -#: templates/account.php511, templates/debug.php:357 +#: templates/account.php523, templates/debug.php:367 msgid "Address" msgstr "Indirizzo" -#: templates/account.php:512 +#: templates/account.php:524 msgid "License" msgstr "Licenza" -#: templates/account.php:513 +#: templates/account.php:525 msgid "Plan" msgstr "Piano" -#: templates/account.php:561 +#: templates/account.php:573 msgctxt "as software license" msgid "License" msgstr "Licenza" -#: templates/account.php:630 +#: templates/account.php:643 msgctxt "verb" msgid "Hide" msgstr "Nascondi" -#: templates/account.php:665 +#: templates/account.php:686 +msgid "Cancelling %s" +msgstr "Cancelling %s" + +#: templates/account.php686, templates/account.php703, +#: templates/forms/subscription-cancellation.php27, +#: templates/forms/deactivation/form.php:117 +msgid "trial" +msgstr "trial" + +#: templates/account.php701, templates/forms/deactivation/form.php:134 +msgid "Cancelling %s..." +msgstr "Cancelling %s..." + +#: templates/account.php704, templates/forms/subscription-cancellation.php28, +#: templates/forms/deactivation/form.php:118 +msgid "subscription" +msgstr "subscription" + +#: templates/account.php:718 msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" msgstr "Disattiva la tua licenza bloccando tutte le funzionalità premium ma potrai attivare la licenza su un altro sito. Sei sicuro di voler continuare?" @@ -1323,7 +1421,7 @@ msgstr "Add-on per %s" msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." msgstr "Non siamo riusciti a caricare la lista degli add-on. Si tratta probabilmente di un problema nel nostro sistema, per favore riprova tra qualche minuto." -#: templates/add-ons.php:135 +#: templates/add-ons.php:139 msgid "View details" msgstr "Visualizza dettagli" @@ -1362,163 +1460,167 @@ msgid "PCI compliant" msgstr "PCI compliant" #. translators: %s: name (e.g. Hey John,) -#: templates/connect.php:110 +#: templates/connect.php:112 msgctxt "greeting" msgid "Hey %s," msgstr "Hey %s," -#: templates/connect.php:152 +#: templates/connect.php:154 msgid "Allow & Continue" msgstr "Consenti & Continua" -#: templates/connect.php:156 +#: templates/connect.php:158 msgid "Re-send activation email" msgstr "Invia nuovamente l'email di attivazione" -#: templates/connect.php:160 +#: templates/connect.php:162 msgid "Thanks %s!" msgstr "Grazie %s!" -#: templates/connect.php170, templates/forms/license-activation.php:43 +#: templates/connect.php172, templates/forms/license-activation.php:43 msgid "Agree & Activate License" msgstr "Accetta e attiva la licenza" -#: templates/connect.php:179 +#: templates/connect.php:181 msgid "Thanks for purchasing %s! To get started, please enter your license key:" msgstr "Grazie per aver acquistato %s! Per iniziare, per favore inserisci la tua chiave di licenza:" -#: templates/connect.php:186 +#: templates/connect.php:188 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." msgstr "Non perdere nessun aggiornamento importante, accetta gli aggiornamenti di sicurezza e funzionalità, contenuti formativi, offerte e il tracciamento diagnostico senza dati sensibili con %4$s." -#: templates/connect.php:187 +#: templates/connect.php:189 msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." msgstr "Non perdere nessun aggiornamento importante, accetta i nostri aggiornamenti di sicurezza e notifiche di funzionalità e il tracciamento diagnostico senza dati sensibili con %4$s." -#: templates/connect.php:193 +#: templates/connect.php:195 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "Non perdere nessun aggiornamento importante, accetta i nostri aggiornamenti di sicurezza e di nuove funzionalità, contenuto formativo, offerte e tracciamento diagnostico senza dati sensibili con %4$s. Se vuoi saltare questo passaggio non è un problema! %1$scontinuerà a funzionare." -#: templates/connect.php:194 +#: templates/connect.php:196 msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "Non perdere nessun aggiornamento importante, accetta i nostri aggiornamenti di sicurezza e di nuove funzionalità, contenuto formativo, offerte e tracciamento diagnostico senza dati sensibili con %4$s. Se vuoi saltare questo passaggio non è un problema! %1$s continuerà a funzionare." -#: templates/connect.php:228 +#: templates/connect.php:230 msgid "We're excited to introduce the Freemius network-level integration." msgstr "Siamo felici di presentarvi il supporto al sistema multi network di Freemius." -#: templates/connect.php:231 +#: templates/connect.php:233 msgid "During the update process we detected %d site(s) that are still pending license activation." msgstr "Durante la procedura di aggiornamento abbiamo individuato%d sito/i che sono in attesa della attivazione della licenza." -#: templates/connect.php:233 +#: templates/connect.php:235 msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." msgstr "Se vuoi utilizzare %s su questi siti, inserisci la tua licenza sotto e fai clic sul pulsante di attivazione." -#: templates/connect.php:235 +#: templates/connect.php:237 msgid "%s's paid features" msgstr "Funzionalità a pagamento di %s" -#: templates/connect.php:240 +#: templates/connect.php:242 msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." msgstr "In caso puoi saltare per adesso e attivare la licenza successivamente nella tua pagina di attivazione network di %s." -#: templates/connect.php:242 +#: templates/connect.php:244 msgid "During the update process we detected %s site(s) in the network that are still pending your attention." msgstr "Durante la procedura di aggiornamenti abbiamo individuato %s sito/i del network che sono in attesa di un tuo controllo." -#: templates/connect.php251, templates/forms/license-activation.php:46 +#: templates/connect.php253, templates/forms/license-activation.php:46 msgid "License key" msgstr "Chiave di licenza" -#: templates/connect.php254, templates/forms/license-activation.php:19 +#: templates/connect.php256, templates/forms/license-activation.php:19 msgid "Can't find your license key?" msgstr "Non trovi la tua chiave di licenza?" -#: templates/connect.php302, templates/connect.php617, +#: templates/connect.php315, templates/connect.php630, #: templates/forms/deactivation/retry-skip.php:20 msgctxt "verb" msgid "Skip" msgstr "Salta" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "Delegate to Site Admins" msgstr "Delega ai proprietari del sito" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "If you click it, this decision will be delegated to the sites administrators." msgstr "Se fai clic questa decisione sarà delegata agli amministratori del sito." -#: templates/connect.php:333 +#: templates/connect.php:346 msgid "Your Profile Overview" msgstr "Panoramica del tuo profilo" -#: templates/connect.php:334 +#: templates/connect.php:347 msgid "Name and email address" msgstr "Nome ed indirizzo email" -#: templates/connect.php:339 +#: templates/connect.php:352 msgid "Your Site Overview" msgstr "Panoramica del tuo sito" -#: templates/connect.php:340 +#: templates/connect.php:353 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "URL del sito, versione di WP, informazioni PHP, plugin e temi" -#: templates/connect.php:345 +#: templates/connect.php:358 msgid "Admin Notices" msgstr "Avvisi amministratore" -#: templates/connect.php346, templates/connect.php:362 +#: templates/connect.php359, templates/connect.php:375 msgid "Updates, announcements, marketing, no spam" msgstr "Aggiornamenti, annunci, marketing, no spam" -#: templates/connect.php:351 +#: templates/connect.php:364 msgid "Current %s Events" msgstr "Eventi %sattuali" -#: templates/connect.php:352 +#: templates/connect.php:365 msgid "Activation, deactivation and uninstall" msgstr "Attiva, disattivazione e disinstallazione" -#: templates/connect.php:361 +#: templates/connect.php:374 msgid "Newsletter" msgstr "Newsletter" -#: templates/connect.php378, templates/forms/license-activation.php:38 +#: templates/connect.php391, templates/forms/license-activation.php:38 msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." msgstr " Il %1$s invierà periodicamente dei dati a %2$s per verificare aggiornamenti di sicurezza e di funzionalità e verificare la validità della tua licenza." -#: templates/connect.php:383 +#: templates/connect.php:396 msgid "What permissions are being granted?" msgstr "Quali autorizzazioni vengono concesse?" -#: templates/connect.php:404 +#: templates/connect.php:417 msgid "Don't have a license key?" msgstr "Non hai una chiave di licenza?" -#: templates/connect.php:405 +#: templates/connect.php:418 msgid "Activate Free Version" msgstr "Attiva versione gratuita" -#: templates/connect.php:407 +#: templates/connect.php:420 msgid "Have a license key?" msgstr "Hai una chiave di licenza?" -#: templates/connect.php:415 +#: templates/connect.php:428 msgid "Privacy Policy" msgstr "Politica sulla privacy" -#: templates/connect.php:417 +#: templates/connect.php:430 +msgid "License Agreement" +msgstr "License Agreement" + +#: templates/connect.php:430 msgid "Terms of Service" msgstr "Termini del Servizio" -#: templates/connect.php:750 +#: templates/connect.php:766 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "Invio email" -#: templates/connect.php:751 +#: templates/connect.php:767 msgctxt "as activating plugin" msgid "Activating" msgstr "Attivazione" @@ -1546,8 +1648,8 @@ msgctxt "as code debugging" msgid "Debugging" msgstr "Debugging" -#: templates/debug.php54, templates/debug.php238, templates/debug.php364, -#: templates/debug.php:482 +#: templates/debug.php54, templates/debug.php248, templates/debug.php374, +#: templates/debug.php:492 msgid "Actions" msgstr "Azioni" @@ -1571,199 +1673,203 @@ msgstr "Svuota le Transient degli aggiornamenti" msgid "Sync Data From Server" msgstr "Sincronizza i dati dal server" -#: templates/debug.php:90 +#: templates/debug.php:95 +msgid "Migrate Options to Network" +msgstr "Migrate Options to Network" + +#: templates/debug.php:100 msgid "Load DB Option" msgstr "Carica opzioni del DB" -#: templates/debug.php:93 +#: templates/debug.php:103 msgid "Set DB Option" msgstr "Imposta opzione del DB" -#: templates/debug.php:170 +#: templates/debug.php:180 msgid "Key" msgstr "Chiave" -#: templates/debug.php:171 +#: templates/debug.php:181 msgid "Value" msgstr "Valore" -#: templates/debug.php:187 +#: templates/debug.php:197 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "Versioni SDK" -#: templates/debug.php:192 +#: templates/debug.php:202 msgid "SDK Path" msgstr "Percorso SDK" -#: templates/debug.php193, templates/debug.php:232 +#: templates/debug.php203, templates/debug.php:242 msgid "Module Path" msgstr "Percorso modulo" -#: templates/debug.php:194 +#: templates/debug.php:204 msgid "Is Active" msgstr "è attiva" -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:35 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:35 msgid "Plugins" msgstr "Plugin" -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:56 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:56 msgid "Themes" msgstr "Temi" -#: templates/debug.php227, templates/debug.php359, templates/debug.php441, +#: templates/debug.php237, templates/debug.php369, templates/debug.php451, #: templates/debug/scheduled-crons.php:80 msgid "Slug" msgstr "Slug" -#: templates/debug.php229, templates/debug.php:440 +#: templates/debug.php239, templates/debug.php:450 msgid "Title" msgstr "Titolo" -#: templates/debug.php:230 +#: templates/debug.php:240 msgctxt "as application program interface" msgid "API" msgstr "API" -#: templates/debug.php:231 +#: templates/debug.php:241 msgid "Freemius State" msgstr "Stato di Freemius" -#: templates/debug.php:235 +#: templates/debug.php:245 msgid "Network Blog" msgstr "Network Blog" -#: templates/debug.php:236 +#: templates/debug.php:246 msgid "Network User" msgstr "Utente Network" -#: templates/debug.php:273 +#: templates/debug.php:283 msgctxt "as connection was successful" msgid "Connected" msgstr "Connesso" -#: templates/debug.php:274 +#: templates/debug.php:284 msgctxt "as connection blocked" msgid "Blocked" msgstr "Bloccato" -#: templates/debug.php:310 -msgid "Simulate Trial" -msgstr "Simula versione di prova" +#: templates/debug.php:320 +msgid "Simulate Trial Promotion" +msgstr "Simulate Trial Promotion" -#: templates/debug.php:322 +#: templates/debug.php:332 msgid "Simulate Network Upgrade" msgstr "Simula aggiornamento network" -#: templates/debug.php:348 +#: templates/debug.php:358 msgid "%s Installs" msgstr "%s Installazioni" -#: templates/debug.php:350 +#: templates/debug.php:360 msgctxt "like websites" msgid "Sites" msgstr "Siti" -#: templates/debug.php356, templates/account/partials/site.php:148 +#: templates/debug.php366, templates/account/partials/site.php:148 msgid "Blog ID" msgstr "Blog ID" -#: templates/debug.php421, templates/debug.php499, -#: templates/account/partials/addon.php:334 +#: templates/debug.php431, templates/debug.php509, +#: templates/account/partials/addon.php:339 msgctxt "verb" msgid "Delete" msgstr "Elimina" -#: templates/debug.php:435 +#: templates/debug.php:445 msgid "Add Ons of module %s" msgstr "Addon del modulo %s" -#: templates/debug.php:472 +#: templates/debug.php:482 msgid "Users" msgstr "Utenti" -#: templates/debug.php:479 +#: templates/debug.php:489 msgid "Verified" msgstr "Verificato" -#: templates/debug.php:510 +#: templates/debug.php:520 msgid "%s Licenses" msgstr "%s Licenze" -#: templates/debug.php:515 +#: templates/debug.php:525 msgid "Plugin ID" msgstr "Plugin ID" -#: templates/debug.php:517 +#: templates/debug.php:527 msgid "Plan ID" msgstr "ID Piano" -#: templates/debug.php:518 +#: templates/debug.php:528 msgid "Quota" msgstr "Quota" -#: templates/debug.php:519 +#: templates/debug.php:529 msgid "Activated" msgstr "Attivato" -#: templates/debug.php:520 +#: templates/debug.php:530 msgid "Blocking" msgstr "Bloccato" -#: templates/debug.php:522 +#: templates/debug.php:532 msgctxt "as expiration date" msgid "Expiration" msgstr "Scadenza" -#: templates/debug.php:545 +#: templates/debug.php:555 msgid "Debug Log" msgstr "Debug Log" -#: templates/debug.php:549 +#: templates/debug.php:559 msgid "All Types" msgstr "Tutti i tipi" -#: templates/debug.php:556 +#: templates/debug.php:566 msgid "All Requests" msgstr "Tutte le richieste" -#: templates/debug.php561, templates/debug.php590, +#: templates/debug.php571, templates/debug.php600, #: templates/debug/logger.php:25 msgid "File" msgstr "File" -#: templates/debug.php562, templates/debug.php588, +#: templates/debug.php572, templates/debug.php598, #: templates/debug/logger.php:23 msgid "Function" msgstr "Funzione" -#: templates/debug.php:563 +#: templates/debug.php:573 msgid "Process ID" msgstr "ID processo" -#: templates/debug.php:564 +#: templates/debug.php:574 msgid "Logger" msgstr "Logger" -#: templates/debug.php565, templates/debug.php589, +#: templates/debug.php575, templates/debug.php599, #: templates/debug/logger.php:24 msgid "Message" msgstr "Messaggio" -#: templates/debug.php:567 +#: templates/debug.php:577 msgid "Filter" msgstr "Filtro" -#: templates/debug.php:575 +#: templates/debug.php:585 msgid "Download" msgstr "Download" -#: templates/debug.php586, templates/debug/logger.php:22 +#: templates/debug.php596, templates/debug/logger.php:22 msgid "Type" msgstr "Tipo" -#: templates/debug.php591, templates/debug/logger.php:26 +#: templates/debug.php601, templates/debug/logger.php:26 msgid "Timestamp" msgstr "Timestamp" @@ -2114,23 +2220,19 @@ msgstr "Tracciamo l'utilizzo esclusivamente per rendere %s migliore, creando una msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." msgstr "Cliccando su \"Cancella iscrizione\", non invieremo più nessuna informazione da %s a %s." -#: templates/forms/premium-versions-upgrade-handler.php:24 +#: templates/forms/premium-versions-upgrade-handler.php:40 msgid "There is a new version of %s available." msgstr "C'è una nuova versione di %s disponibile." -#: templates/forms/premium-versions-upgrade-handler.php:25 -msgid " %sRenew your license now%s to access version %s security & feature updates, and support." -msgstr "%sRinnova la tua licenza ora %s per accedere alla versione %s con aggiornamenti di sicurezza e funzionalità oltre che supporto." +#: templates/forms/premium-versions-upgrade-handler.php:41 +msgid " %s to access version %s security & feature updates, and support." +msgstr " %s to access version %s security & feature updates, and support." -#: templates/forms/premium-versions-upgrade-handler.php:34 +#: templates/forms/premium-versions-upgrade-handler.php:54 msgid "New Version Available" msgstr "Nuova versione disponibile" -#: templates/forms/premium-versions-upgrade-handler.php:36 -msgid "Renew license" -msgstr "Rinnova licenza" - -#: templates/forms/premium-versions-upgrade-handler.php:53 +#: templates/forms/premium-versions-upgrade-handler.php:75 msgctxt "close a window" msgid "Dismiss" msgstr "Chiudi" @@ -2143,6 +2245,43 @@ msgstr "Invia chiave di licenza" msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." msgstr "Inserisci qui sotto l'indirizzo email che hai usato per registrare l'aggiornamento e ti invieremo di nuovo la chiave di licenza." +#: templates/forms/subscription-cancellation.php:37 +msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." +msgstr "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." + +#: templates/forms/subscription-cancellation.php:47 +msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" +msgstr "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" + +#: templates/forms/subscription-cancellation.php:52 +msgid "license" +msgstr "license" + +#: templates/forms/subscription-cancellation.php:57 +msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." +msgstr "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." + +#: templates/forms/subscription-cancellation.php:68 +msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." +msgstr "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." + +#: templates/forms/subscription-cancellation.php:103 +msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." +msgstr "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." + +#: templates/forms/subscription-cancellation.php:136 +msgid "Cancel %s?" +msgstr "Cancel %s?" + +#: templates/forms/subscription-cancellation.php:143 +msgid "Proceed" +msgstr "Proceed" + +#: templates/forms/subscription-cancellation.php191, +#: templates/forms/deactivation/form.php:150 +msgid "Cancel %s & Proceed" +msgstr "Cancel %s & Proceed" + #: templates/forms/trial-start.php:22 msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "Sei a un clic di distanza dall'iniziare il tuo periodo di prova gratuito di %1$s giorni per il piano %2$s." @@ -2208,20 +2347,16 @@ msgstr "%s rimanenti" msgid "Last license" msgstr "Ultima licenza" -#: templates/account/partials/addon.php:111 +#: templates/account/partials/addon.php:115 msgid "Cancelled" msgstr "Annullato" -#: templates/account/partials/addon.php:116 -msgid "Expired" -msgstr "Scaduto" - -#: templates/account/partials/addon.php:121 +#: templates/account/partials/addon.php:125 msgid "No expiration" msgstr "Nessuna scadenza" -#: templates/account/partials/addon.php259, -#: templates/account/partials/addon.php:312 +#: templates/account/partials/addon.php264, +#: templates/account/partials/addon.php:317 msgid "Activate this add-on" msgstr "Attivare questo addon" @@ -2249,47 +2384,47 @@ msgstr "Siamo spiacenti per l'inconveniente e siamo qui per aiutarti con il tuo msgid "Contact Support" msgstr "Contatta il supporto" -#: templates/forms/deactivation/form.php:56 +#: templates/forms/deactivation/form.php:59 msgid "Anonymous feedback" msgstr "Feedback anonimo" -#: templates/forms/deactivation/form.php:63 +#: templates/forms/deactivation/form.php:66 msgid "Deactivate" msgstr "Disattiva" -#: templates/forms/deactivation/form.php:65 +#: templates/forms/deactivation/form.php:68 msgid "Activate %s" msgstr "Attiva %s" -#: templates/forms/deactivation/form.php:76 -msgid "Quick feedback" -msgstr "Feedback veloce" - #: templates/forms/deactivation/form.php:80 +msgid "Quick Feedback" +msgstr "Quick Feedback" + +#: templates/forms/deactivation/form.php:84 msgid "If you have a moment, please let us know why you are %s" msgstr "Se hai un attimo, facci sapere perché %s" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "deactivating" msgstr "disattivazione in corso" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "switching" msgstr "passa a" -#: templates/forms/deactivation/form.php:269 +#: templates/forms/deactivation/form.php:332 msgid "Submit & %s" msgstr "Invia e %s" -#: templates/forms/deactivation/form.php:290 +#: templates/forms/deactivation/form.php:353 msgid "Kindly tell us the reason so we can improve." msgstr "Spiegandoci il motivo ci aiuterai a migliorare." -#: templates/forms/deactivation/form.php:411 +#: templates/forms/deactivation/form.php:478 msgid "Yes - %s" msgstr "SI - %s" -#: templates/forms/deactivation/form.php:418 +#: templates/forms/deactivation/form.php:485 msgid "Skip & %s" msgstr "Salta & %s" diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-ja_JP.mo b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-ja_JP.mo index d708212ff6b8560ade81375e13ba6ece5c2ce486..1e80fd08c3e81b6da2fda57bda08fbae816be131 100644 GIT binary patch delta 12261 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 Kmrs6vZy^9^zRmjp delta 9881 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 diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-ja_JP.po b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-ja_JP.po index a0e8714f1..01dee4f2d 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-ja_JP.po +++ b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-ja_JP.po @@ -1,17 +1,17 @@ -# Copyright (C) 2018 freemius +# Copyright (C) 2019 freemius # This file is distributed under the same license as the freemius package. # Translators: # Odyssey <8bitodyssey+github@gmail.com>, 2016 -# aka.tsundoa, 2018 +# Tomohyco Tsunoda, 2018 # Takayuki Miyauchi <miya0001@users.noreply.github.com>, 2016 -# aka.tsundoa, 2018 +# Tomohyco Tsunoda, 2018 msgid "" msgstr "" "Project-Id-Version: WordPress SDK\n" "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-05-24 22:49+0000\n" -"Last-Translator: aka.tsundoa\n" +"PO-Revision-Date: 2018-11-25 07:22+0000\n" +"Last-Translator: Vova Feldman <vova@freemius.com>\n" "Language: ja_JP\n" "Language-Team: Japanese (Japan) (http://www.transifex.com/freemius/wordpress-sdk/language/ja_JP/)\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -24,1294 +24,1391 @@ msgstr "" "X-Poedit-SearchPathExcluded-0: *.js\n" "X-Poedit-SourceCharset: UTF-8\n" -#: includes/class-freemius.php:1551 +#: includes/class-freemius.php:1688 msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "Freemius SDK がプラグインのメインファイルを見つけることができませんでした。現在のエラーを添えて sdk@freemius.com に連絡してください。" -#: includes/class-freemius.php:1553 +#: includes/class-freemius.php:1690 msgid "Error" msgstr "エラー" -#: includes/class-freemius.php:1871 +#: includes/class-freemius.php:2011 msgid "I found a better %s" msgstr "より良い %sを見つけました" -#: includes/class-freemius.php:1873 +#: includes/class-freemius.php:2013 msgid "What's the %s's name?" msgstr "%sの名前は何ですか?" -#: includes/class-freemius.php:1879 +#: includes/class-freemius.php:2019 msgid "It's a temporary %s. I'm just debugging an issue." msgstr "%sは一時的なものです。現在この問題をデバッグ中です。" -#: includes/class-freemius.php:1881 +#: includes/class-freemius.php:2021 msgid "Deactivation" msgstr "無効化" -#: includes/class-freemius.php:1882 +#: includes/class-freemius.php:2022 msgid "Theme Switch" msgstr "テーマ変更" -#: includes/class-freemius.php1891, templates/forms/resend-key.php:24 +#: includes/class-freemius.php2031, templates/forms/resend-key.php:24 msgid "Other" msgstr "その他" -#: includes/class-freemius.php:1899 +#: includes/class-freemius.php:2039 msgid "I no longer need the %s" msgstr "%sはもう不要です" -#: includes/class-freemius.php:1906 +#: includes/class-freemius.php:2046 msgid "I only needed the %s for a short period" msgstr "短期間だけ %sが 必要です。" -#: includes/class-freemius.php:1912 +#: includes/class-freemius.php:2052 msgid "The %s broke my site" msgstr "%s の影響でサイトを崩れました" -#: includes/class-freemius.php:1919 +#: includes/class-freemius.php:2059 msgid "The %s suddenly stopped working" msgstr "%s の動作が突然停止しました" -#: includes/class-freemius.php:1929 +#: includes/class-freemius.php:2069 msgid "I can't pay for it anymore" msgstr "もう払うことができません" -#: includes/class-freemius.php:1931 +#: includes/class-freemius.php:2071 msgid "What price would you feel comfortable paying?" msgstr " 支払ってもよいと思う価格はいくらですか?" -#: includes/class-freemius.php:1937 +#: includes/class-freemius.php:2077 msgid "I don't like to share my information with you" msgstr "自分の情報を共有したくありません" -#: includes/class-freemius.php:1958 +#: includes/class-freemius.php:2098 msgid "The %s didn't work" msgstr "%s が動作しませんでした" -#: includes/class-freemius.php:1968 +#: includes/class-freemius.php:2108 msgid "I couldn't understand how to make it work" msgstr "どうしたら動作するか分かりませんでした。" -#: includes/class-freemius.php:1976 +#: includes/class-freemius.php:2116 msgid "The %s is great, but I need specific feature that you don't support" msgstr "%s は素晴らしいのですが、サポートされていないある機能が必要です" -#: includes/class-freemius.php:1978 +#: includes/class-freemius.php:2118 msgid "What feature?" msgstr "何の機能ですか?" -#: includes/class-freemius.php:1982 +#: includes/class-freemius.php:2122 msgid "The %s is not working" msgstr "%s が動作していません" -#: includes/class-freemius.php:1984 +#: includes/class-freemius.php:2124 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "将来のユーザーのために修正できるよう、何が動作しなかったのかどうか共有してください…" -#: includes/class-freemius.php:1988 +#: includes/class-freemius.php:2128 msgid "It's not what I was looking for" msgstr "探していたものではありません" -#: includes/class-freemius.php:1990 +#: includes/class-freemius.php:2130 msgid "What you've been looking for?" msgstr "探していたのは何ですか?" -#: includes/class-freemius.php:1994 +#: includes/class-freemius.php:2134 msgid "The %s didn't work as expected" msgstr "%sが期待通りに動きませんでした " -#: includes/class-freemius.php:1996 +#: includes/class-freemius.php:2136 msgid "What did you expect?" msgstr "何を期待していましたか?" -#: includes/class-freemius.php2729, templates/debug.php:20 +#: includes/class-freemius.php2942, templates/debug.php:20 msgid "Freemius Debug" msgstr "Freemius デバッグ" -#: includes/class-freemius.php:3402 +#: includes/class-freemius.php:3670 msgid "I don't know what is cURL or how to install it, help me!" msgstr "cURL がなにか、そのインストール方法を知りません。助けてください。" -#: includes/class-freemius.php:3404 +#: includes/class-freemius.php:3672 msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." msgstr "ホスティング会社に連絡して問題を解決してください。 更新が完了したら、 %s へのフォローアップメールが届きます。" -#: includes/class-freemius.php:3411 +#: includes/class-freemius.php:3679 msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." msgstr "すばらしい。cURL をインストールし、 php.ini ファイルで有効化してください。加えて、php.ini 内で 'disable_functions' ディレクティブを検索して、'curl_' で始まる無効化されたメソッドを削除してください。'phpinfo()' を使って正常に起動されたことを確認してください。有効化されている場合は %s を一度無効化し、再度有効化し直してください。" -#: includes/class-freemius.php:3516 +#: includes/class-freemius.php:3784 msgid "Yes - do your thing" msgstr "はい - お構いなく" -#: includes/class-freemius.php:3521 +#: includes/class-freemius.php:3789 msgid "No - just deactivate" msgstr "いいえ - すぐに無効化" -#: includes/class-freemius.php3566, includes/class-freemius.php4066, -#: includes/class-freemius.php5127, includes/class-freemius.php10941, -#: includes/class-freemius.php14205, includes/class-freemius.php14257, -#: includes/class-freemius.php14319, includes/class-freemius.php16448, -#: includes/class-freemius.php16458, includes/class-freemius.php17014, -#: includes/class-freemius.php17032, includes/class-freemius.php17130, -#: includes/class-freemius.php17866, templates/add-ons.php:43 +#: includes/class-freemius.php3834, includes/class-freemius.php4343, +#: includes/class-freemius.php5442, includes/class-freemius.php11545, +#: includes/class-freemius.php14916, includes/class-freemius.php14968, +#: includes/class-freemius.php15030, includes/class-freemius.php17263, +#: includes/class-freemius.php17273, includes/class-freemius.php17882, +#: includes/class-freemius.php18742, includes/class-freemius.php18857, +#: includes/class-freemius.php19001, templates/add-ons.php:43 msgctxt "exclamation" msgid "Oops" msgstr "おっと" -#: includes/class-freemius.php:3635 +#: includes/class-freemius.php:3903 msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." msgstr "修正するチャンスをいただきありがとうございます! テクニカルスタッフにメッセージが送信されました。 %s への更新が行われるとすぐにあなたに連絡します。 あなたの忍耐に感謝します。" -#: includes/class-freemius.php:4063 +#: includes/class-freemius.php:4340 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "%s は、%s が無いと実行することができません。" -#: includes/class-freemius.php:4064 +#: includes/class-freemius.php:4341 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "%s は、プラグインが無いと実行することができません。" -#: includes/class-freemius.php4176, includes/class-freemius.php4201, -#: includes/class-freemius.php:17103 +#: includes/class-freemius.php4487, includes/class-freemius.php4512, +#: includes/class-freemius.php:17953 msgid "Unexpected API error. Please contact the %s's author with the following error." msgstr "予期しない API エラーです。%sの作者に次のエラーを連絡してください。" -#: includes/class-freemius.php:4815 +#: includes/class-freemius.php:5130 msgid "Premium %s version was successfully activated." msgstr "プレミアムバージョンの %sは有効化に成功しました。" -#: includes/class-freemius.php4827, includes/class-freemius.php:6660 +#: includes/class-freemius.php5142, includes/class-freemius.php:7004 msgctxt "" msgid "W00t" msgstr "やったー" -#: includes/class-freemius.php:4842 +#: includes/class-freemius.php:5157 msgid "You have a %s license." msgstr "%s ライセンスを持っています。" -#: includes/class-freemius.php4846, includes/class-freemius.php13626, -#: includes/class-freemius.php13637, includes/class-freemius.php16376, -#: includes/class-freemius.php16676, includes/class-freemius.php16741, -#: includes/class-freemius.php:16891 +#: includes/class-freemius.php5161, includes/class-freemius.php14337, +#: includes/class-freemius.php14348, includes/class-freemius.php17177, +#: includes/class-freemius.php17491, includes/class-freemius.php17557, +#: includes/class-freemius.php:17707 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "ヤッホー" -#: includes/class-freemius.php:5110 +#: includes/class-freemius.php:5425 msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." msgstr "%s の無料試用が正常にキャンセルされました。 アドオンはプレミアムなので、自動的に無効化されました。 将来使用したい場合は、ライセンスを購入する必要があります。" -#: includes/class-freemius.php:5114 +#: includes/class-freemius.php:5429 msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "%s はプレミアムのみのアドオンです。そのプラグインを有効化する前にライセンスを購入する必要があります。" -#: includes/class-freemius.php5123, templates/add-ons.php99, -#: templates/account/partials/addon.php:283 +#: includes/class-freemius.php5438, templates/add-ons.php103, +#: templates/account/partials/addon.php:288 msgid "More information about %s" msgstr "%s に関する詳細情報" -#: includes/class-freemius.php:5124 +#: includes/class-freemius.php:5439 msgid "Purchase License" msgstr "ライセンスを購入" -#: includes/class-freemius.php6035, templates/connect.php:161 +#: includes/class-freemius.php6372, templates/connect.php:163 msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." msgstr "%s のメールボックスに %s の有効化のメールを受け取っているはずです。%s のメールに記載された有効化ボタンをクリックしてください。" -#: includes/class-freemius.php:6039 +#: includes/class-freemius.php:6376 msgid "start the trial" msgstr "トライアルを開始" -#: includes/class-freemius.php6040, templates/connect.php:165 +#: includes/class-freemius.php6377, templates/connect.php:167 msgid "complete the install" msgstr "インストールを完了" -#: includes/class-freemius.php:6147 +#: includes/class-freemius.php:6490 msgid "You are just one step away - %s" msgstr "もうあとわずかです - %s" -#: includes/class-freemius.php:6150 +#: includes/class-freemius.php:6493 msgctxt "%s - plugin name. As complete \"PluginX\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "すぐに \"%s\" 有効化を完了してください" -#: includes/class-freemius.php:6227 +#: includes/class-freemius.php:6571 msgid "We made a few tweaks to the %s, %s" msgstr "プラグインを微調整します、 %s, %s" -#: includes/class-freemius.php:6231 -msgid "Opt in to make \"%s\" Better!" -msgstr "\"%s\" をより良くするためにオプトインをしてください!" +#: includes/class-freemius.php:6575 +msgid "Opt in to make \"%s\" better!" +msgstr "Opt in to make \"%s\" better!" -#: includes/class-freemius.php:6659 +#: includes/class-freemius.php:7003 msgid "The upgrade of %s was successfully completed." msgstr "%s のアップグレードが完了しました。" -#: includes/class-freemius.php8384, includes/class-fs-plugin-updater.php581, -#: includes/class-fs-plugin-updater.php733, -#: includes/class-fs-plugin-updater.php739, templates/auto-installation.php:32 +#: includes/class-freemius.php8925, includes/class-fs-plugin-updater.php886, +#: includes/class-fs-plugin-updater.php1081, +#: includes/class-fs-plugin-updater.php1088, +#: templates/auto-installation.php:32 msgid "Add-On" msgstr "アドオン" -#: includes/class-freemius.php8386, templates/debug.php349, -#: templates/debug.php:510 +#: includes/class-freemius.php8927, templates/debug.php359, +#: templates/debug.php:520 msgid "Plugin" msgstr "プラグイン" -#: includes/class-freemius.php8387, templates/debug.php349, -#: templates/debug.php510, templates/forms/deactivation/form.php:64 +#: includes/class-freemius.php8928, templates/debug.php359, +#: templates/debug.php520, templates/forms/deactivation/form.php:67 msgid "Theme" msgstr "テーマ" -#: includes/class-freemius.php:10808 -msgid "invalid_site_details_collection" -msgstr "invalid_site_details_collection" +#: includes/class-freemius.php:11412 +msgid "Invalid site details collection." +msgstr "Invalid site details collection." -#: includes/class-freemius.php:10928 +#: includes/class-freemius.php:11532 msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "システムではメールアドレスを見つけることができませんでした。メールアドレスが正しいか確認してください。" -#: includes/class-freemius.php:10930 +#: includes/class-freemius.php:11534 msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "メールアドレスに関連付けられた有効なライセンスが見つかりません。メールアドレスが正しいか確認してください。" -#: includes/class-freemius.php:11166 +#: includes/class-freemius.php:11808 msgid "Account is pending activation." msgstr "アカウントは有効化待ちです。" -#: includes/class-freemius.php:13608 +#: includes/class-freemius.php11920, +#: templates/forms/premium-versions-upgrade-handler.php:47 +msgid "Buy a license now" +msgstr "Buy a license now" + +#: includes/class-freemius.php11932, +#: templates/forms/premium-versions-upgrade-handler.php:46 +msgid "Renew your license now" +msgstr "Renew your license now" + +#: includes/class-freemius.php:11936 +msgid "%s to access version %s security & feature updates, and support." +msgstr "%s to access version %s security & feature updates, and support." + +#: includes/class-freemius.php:14319 msgid "%s activation was successfully completed." msgstr "%s の有効化が成功しました。" -#: includes/class-freemius.php:13622 +#: includes/class-freemius.php:14333 msgid "Your account was successfully activated with the %s plan." msgstr "アカウントが %s プランで有効化できました。" -#: includes/class-freemius.php13633, includes/class-freemius.php:16737 +#: includes/class-freemius.php14344, includes/class-freemius.php:17553 msgid "Your trial has been successfully started." msgstr "トライアル版の利用を開始しました。" -#: includes/class-freemius.php14203, includes/class-freemius.php14255, -#: includes/class-freemius.php:14317 +#: includes/class-freemius.php14914, includes/class-freemius.php14966, +#: includes/class-freemius.php:15028 msgid "Couldn't activate %s." msgstr "%s を有効化できません。" -#: includes/class-freemius.php14204, includes/class-freemius.php14256, -#: includes/class-freemius.php:14318 +#: includes/class-freemius.php14915, includes/class-freemius.php14967, +#: includes/class-freemius.php:15029 msgid "Please contact us with the following message:" msgstr "以下のメッセージとともに私たちに連絡をください。" -#: includes/class-freemius.php14666, includes/class-freemius.php:18929 +#: includes/class-freemius.php15378, includes/class-freemius.php:19839 msgid "Upgrade" msgstr "アップグレード" -#: includes/class-freemius.php:14672 +#: includes/class-freemius.php:15384 msgid "Start Trial" msgstr "トライアルを開始" -#: includes/class-freemius.php:14674 +#: includes/class-freemius.php:15386 msgid "Pricing" msgstr "料金表" -#: includes/class-freemius.php14734, includes/class-freemius.php:14736 +#: includes/class-freemius.php15448, includes/class-freemius.php:15450 msgid "Affiliation" msgstr "アフィリエイト" -#: includes/class-freemius.php14756, includes/class-freemius.php14758, -#: templates/account.php146, templates/debug.php:314 +#: includes/class-freemius.php15478, includes/class-freemius.php15480, +#: templates/account.php150, templates/debug.php:324 msgid "Account" msgstr "アカウント" -#: includes/class-freemius.php14769, includes/class-freemius.php14771, +#: includes/class-freemius.php15493, includes/class-freemius.php15495, #: includes/customizer/class-fs-customizer-support-section.php:60 msgid "Contact Us" msgstr "連絡" -#: includes/class-freemius.php14781, includes/class-freemius.php14783, -#: includes/class-freemius.php18939, templates/account.php96, -#: templates/account/partials/addon.php:37 +#: includes/class-freemius.php15505, includes/class-freemius.php15507, +#: includes/class-freemius.php19849, templates/account.php100, +#: templates/account/partials/addon.php:41 msgid "Add-Ons" msgstr "アドオン" -#: includes/class-freemius.php14815, templates/pricing.php:97 +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow left icon" +msgid "←" +msgstr "←" + +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow right icon" +msgid "➤" +msgstr "➤" + +#: includes/class-freemius.php15543, templates/pricing.php:97 msgctxt "noun" msgid "Pricing" msgstr "料金表" -#: includes/class-freemius.php15009, +#: includes/class-freemius.php15756, #: includes/customizer/class-fs-customizer-support-section.php:67 msgid "Support Forum" msgstr "サポートフォーラム" -#: includes/class-freemius.php:15794 +#: includes/class-freemius.php:16542 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "あなたのメールアドレスの承認が完了しました。すごい!" -#: includes/class-freemius.php:15795 +#: includes/class-freemius.php:16543 msgctxt "a positive response" msgid "Right on" msgstr "そうだ" -#: includes/class-freemius.php:16367 +#: includes/class-freemius.php:17168 msgid "Your %s Add-on plan was successfully upgraded." msgstr "%s のアドオンのプランのアップグレードが完了しました。" -#: includes/class-freemius.php:16369 +#: includes/class-freemius.php:17170 msgid "%s Add-on was successfully purchased." msgstr "%s のアドオンの支払いが完了しました。" -#: includes/class-freemius.php:16372 +#: includes/class-freemius.php:17173 msgid "Download the latest version" msgstr "最新版をダウンロード" -#: includes/class-freemius.php:16444 +#: includes/class-freemius.php:17259 msgctxt "%1s - plugin title, %2s - API domain" msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" msgstr "サーバーは %1s の同期に不可欠な Freemius の API へのアクセスをブロックしています。 ホワイトリストに %2s を追加していただけるようあなたのホスティング会社に連絡してください。" -#: includes/class-freemius.php16447, includes/class-freemius.php16862, -#: includes/class-freemius.php:16927 +#: includes/class-freemius.php17262, includes/class-freemius.php17678, +#: includes/class-freemius.php:17755 msgid "Error received from the server:" msgstr "サーバーからエラーを受信しました。" -#: includes/class-freemius.php:16457 +#: includes/class-freemius.php:17272 msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "認証パラメータの1つが間違っているようです。 公開鍵、秘密鍵、ユーザーIDを更新して、もう一度お試しください。" -#: includes/class-freemius.php16639, includes/class-freemius.php16867, -#: includes/class-freemius.php:16910 +#: includes/class-freemius.php17454, includes/class-freemius.php17683, +#: includes/class-freemius.php17726, includes/class-freemius.php:17829 msgctxt "" msgid "Hmm" msgstr "ふむ" -#: includes/class-freemius.php:16652 +#: includes/class-freemius.php:17467 msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." msgstr "まだ %s プランのようです。もしアップグレードやプランの変更をしたのなら、こちらで何らかの問題が発生しているようです。申し訳ありません。" -#: includes/class-freemius.php16653, templates/account.php98, -#: templates/add-ons.php130, templates/account/partials/addon.php:39 +#: includes/class-freemius.php17468, templates/account.php102, +#: templates/add-ons.php134, templates/account/partials/addon.php:43 msgctxt "trial period" msgid "Trial" msgstr "トライアル" -#: includes/class-freemius.php:16658 +#: includes/class-freemius.php:17473 msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "アカウントをアップグレードしましたが、ライセンスを同期しようとするとプランが %s のままです。" -#: includes/class-freemius.php16662, includes/class-freemius.php:16719 +#: includes/class-freemius.php17477, includes/class-freemius.php:17535 msgid "Please contact us here" msgstr "こちらで私たちに連絡をとってください。" -#: includes/class-freemius.php:16672 +#: includes/class-freemius.php:17487 msgid "Your plan was successfully upgraded." msgstr "プランのアップグレードが成功しました。" -#: includes/class-freemius.php:16689 +#: includes/class-freemius.php:17505 msgid "Your plan was successfully changed to %s." msgstr "プランの %s への変更が成功しました。" -#: includes/class-freemius.php:16705 +#: includes/class-freemius.php:17521 msgid "Your license has expired. You can still continue using the free %s forever." msgstr "ライセンスの有効期限が切れました。無料バージョンの%s は引き続き利用できます。" -#: includes/class-freemius.php:16707 +#: includes/class-freemius.php:17523 msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "ライセンスの有効期限が切れました。 %1$s %3$sに邪魔されずに利用を継続するには,今すぐ%2$sアップグレードを行ってください。" -#: includes/class-freemius.php:16715 +#: includes/class-freemius.php:17531 msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "ライセンスはキャンセルされました。もしそれが間違いだと思うならサポートに連絡してください。" -#: includes/class-freemius.php:16728 +#: includes/class-freemius.php:17544 msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." msgstr "ライセンスは有効期限がきれました。%s の機能を引き続き利用することができます。ただし、アップデートやサポートをうけるにはライセンスをアップデートする必要があります。" -#: includes/class-freemius.php:16751 +#: includes/class-freemius.php:17567 msgid "Your free trial has expired. You can still continue using all our free features." msgstr "フリートライアル期間が終了しました。無料で使える機能は引き続き利用可能です。" -#: includes/class-freemius.php:16753 +#: includes/class-freemius.php:17569 msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "フリートライアル期間が終了しました。%1$s %3$sに邪魔されずに利用を継続するには,今すぐ %2$s のアップグレードを行ってください。" -#: includes/class-freemius.php:16858 +#: includes/class-freemius.php:17674 msgid "It looks like the license could not be activated." msgstr "ライセンスの有効化ができませんでした。" -#: includes/class-freemius.php:16888 +#: includes/class-freemius.php:17704 msgid "Your license was successfully activated." msgstr "ライセンスの有効化が成功しました。" -#: includes/class-freemius.php:16914 +#: includes/class-freemius.php:17730 msgid "It looks like your site currently doesn't have an active license." msgstr "サイトは有効なライセンスを持っていないようです。" -#: includes/class-freemius.php:16926 +#: includes/class-freemius.php:17754 msgid "It looks like the license deactivation failed." msgstr "ライセンスの無効化ができませんでした。" -#: includes/class-freemius.php:16954 +#: includes/class-freemius.php:17782 msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "ライセンスの無効化が完了しました。%s プランに戻りました。" -#: includes/class-freemius.php:16955 +#: includes/class-freemius.php:17783 msgid "O.K" msgstr "O.K" -#: includes/class-freemius.php:17003 -msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." -msgstr "プランのダウングレードが完了しました。%s プランは %s に有効期限が切れます。" +#: includes/class-freemius.php:17836 +msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." +msgstr "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." -#: includes/class-freemius.php:17013 -msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." -msgstr "プランのダウングレードの際に一時的な問題が発生したようです。数分後に再度操作してください。" +#: includes/class-freemius.php:17845 +msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s." +msgstr "Your subscription was successfully cancelled. Your %s plan license will expire in %s." -#: includes/class-freemius.php:17037 +#: includes/class-freemius.php:17887 msgid "You are already running the %s in a trial mode." msgstr "すでに%sをトライアルモードで利用中です。" -#: includes/class-freemius.php:17048 +#: includes/class-freemius.php:17898 msgid "You already utilized a trial before." msgstr "以前すでに試用版を利用しました。" -#: includes/class-freemius.php:17062 +#: includes/class-freemius.php:17912 msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "%s プランは存在しないため、試用を開始できません。" -#: includes/class-freemius.php:17073 +#: includes/class-freemius.php:17923 msgid "Plan %s does not support a trial period." msgstr "%s プランにはトライアル期間はありません。" -#: includes/class-freemius.php:17084 +#: includes/class-freemius.php:17934 msgid "None of the %s's plans supports a trial period." msgstr "%sのプランにはトライアル期間はありません。" -#: includes/class-freemius.php:17134 +#: includes/class-freemius.php:17984 msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "すでにトライアルモードではないようなので、キャンセルする必要はありません :)" -#: includes/class-freemius.php:17185 -msgid "Your %s free trial was successfully cancelled." -msgstr "%s のフリートライアルはキャンセルされました。" - -#: includes/class-freemius.php:17190 +#: includes/class-freemius.php:18020 msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "トライアルのキャンセルに一時的な問題がありました。数分後に再度お試しください。" -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18039 +msgid "Your %s free trial was successfully cancelled." +msgstr "%s のフリートライアルはキャンセルされました。" + +#: includes/class-freemius.php:18346 msgid "Version %s was released." msgstr "バージョン %s をリリースしました。" -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18346 msgid "Please download %s." msgstr "%s をダウンロードしてください。" -#: includes/class-freemius.php:17481 +#: includes/class-freemius.php:18353 msgid "the latest %s version here" msgstr "最新の %s バージョンはこちらです。" -#: includes/class-freemius.php:17486 +#: includes/class-freemius.php:18358 msgid "New" msgstr "新規" -#: includes/class-freemius.php:17491 +#: includes/class-freemius.php:18363 msgid "Seems like you got the latest release." msgstr "最新版を取得できました。" -#: includes/class-freemius.php:17492 +#: includes/class-freemius.php:18364 msgid "You are all good!" msgstr "すべて完璧です!" -#: includes/class-freemius.php:17758 +#: includes/class-freemius.php:18632 msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "%s に確認メールを送信しました。もし5分以内にそれが届かない場合、迷惑メールボックスを確認してください。" -#: includes/class-freemius.php:17893 +#: includes/class-freemius.php:18769 msgid "Site successfully opted in." msgstr "サイトのオプトインに成功しました。" -#: includes/class-freemius.php17894, includes/class-freemius.php:18671 +#: includes/class-freemius.php18770, includes/class-freemius.php:19581 msgid "Awesome" msgstr "すごい!" -#: includes/class-freemius.php17910, templates/forms/optout.php:32 +#: includes/class-freemius.php18786, templates/forms/optout.php:32 msgid "We appreciate your help in making the %s better by letting us track some usage data." msgstr "使用データを追跡できるよう許可してくれたことで、%s をより良くするための手助けに感謝致します。" -#: includes/class-freemius.php:17911 +#: includes/class-freemius.php:18787 msgid "Thank you!" msgstr "ありがとうございます!" -#: includes/class-freemius.php:17918 +#: includes/class-freemius.php:18794 msgid "We will no longer be sending any usage data of %s on %s to %s." msgstr "もう%s上の%sから%sへのデータ送信は行いません。" -#: includes/class-freemius.php:18033 +#: includes/class-freemius.php:18923 msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." msgstr "メールボックスを確認してください。所有権の変更を確認するには、%s でメールを受け取る必要があります。 セキュリティ上の理由から、次の15分以内に変更を確認する必要があります。 電子メールが見つからない場合は、迷惑メールフォルダを確認してください。" -#: includes/class-freemius.php:18039 +#: includes/class-freemius.php:18929 msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "所有権の変更を確認していただきありがとうございます。 %s に承認メールが送信されました。" -#: includes/class-freemius.php:18044 +#: includes/class-freemius.php:18934 msgid "%s is the new owner of the account." msgstr "%s は新しいオーナーです。" -#: includes/class-freemius.php:18046 +#: includes/class-freemius.php:18936 msgctxt "as congratulations" msgid "Congrats" msgstr "おめでとう" -#: includes/class-freemius.php:18066 +#: includes/class-freemius.php:18956 msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "メールアドレスのアップデートを完了できませんでした。他のユーザーがすでに同じメールアドレスで登録しているようです。" -#: includes/class-freemius.php:18067 +#: includes/class-freemius.php:18957 msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." msgstr "%sの所有権を%sへ譲りたい場合は、所有権の変更ボタンをクリックしてください。" -#: includes/class-freemius.php:18074 +#: includes/class-freemius.php:18964 msgid "Change Ownership" msgstr "オーナーを変更" -#: includes/class-freemius.php:18082 +#: includes/class-freemius.php:18972 msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." msgstr "メールアドレスのアップデートが完了しました。まもなく確認メールが届きます。" -#: includes/class-freemius.php:18094 +#: includes/class-freemius.php:18984 msgid "Please provide your full name." msgstr "フルネームを入力してください。" -#: includes/class-freemius.php:18099 +#: includes/class-freemius.php:18989 msgid "Your name was successfully updated." msgstr "名前のアップデートが成功しました。" -#: includes/class-freemius.php:18160 +#: includes/class-freemius.php:19050 msgid "You have successfully updated your %s." msgstr "%s のアップデートが成功しました。" -#: includes/class-freemius.php:18300 +#: includes/class-freemius.php:19190 msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "%s のアドオンに関する情報は、外部サーバーから取得されます。" -#: includes/class-freemius.php:18301 +#: includes/class-freemius.php:19191 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "警告" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgctxt "exclamation" msgid "Hey" msgstr "ヘイ" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "%s はどうですか? 私たちの全ての %s のプレミアム機能をお試しください。" -#: includes/class-freemius.php:18719 +#: includes/class-freemius.php:19629 msgid "No commitment for %s days - cancel anytime!" msgstr "%s 日以内であればいつでもキャンセルできます。" -#: includes/class-freemius.php:18720 +#: includes/class-freemius.php:19630 msgid "No credit card required" msgstr "クレジットカードは必要ありません。" -#: includes/class-freemius.php18727, templates/forms/trial-start.php:53 +#: includes/class-freemius.php19637, templates/forms/trial-start.php:53 msgctxt "call to action" msgid "Start free trial" msgstr "フリートライアルを開始" -#: includes/class-freemius.php:18804 +#: includes/class-freemius.php:19714 msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" msgstr "こんにちは。%sにアフィリエイトプログラムがあるのはご存知でしたか? %sがお好きなら、私たちのアンバサダーになって報酬を得ましょう!" -#: includes/class-freemius.php:18813 +#: includes/class-freemius.php:19723 msgid "Learn more" msgstr "詳細はこちら" -#: includes/class-freemius.php18963, templates/account.php394, -#: templates/account.php497, templates/connect.php169, -#: templates/connect.php408, templates/forms/license-activation.php24, -#: templates/account/partials/addon.php:230 +#: includes/class-freemius.php19873, templates/account.php406, +#: templates/account.php509, templates/connect.php171, +#: templates/connect.php421, templates/forms/license-activation.php24, +#: templates/account/partials/addon.php:235 msgid "Activate License" msgstr "ライセンスを有効化" -#: includes/class-freemius.php18964, templates/account.php457, -#: templates/account.php496, templates/account/partials/site.php:256 +#: includes/class-freemius.php19874, templates/account.php469, +#: templates/account.php508, templates/account/partials/site.php:256 msgid "Change License" msgstr "ライセンスを変更" -#: includes/class-freemius.php19046, templates/account/partials/site.php:161 +#: includes/class-freemius.php19956, templates/account/partials/site.php:161 msgid "Opt Out" msgstr "オプトアウト" -#: includes/class-freemius.php19048, includes/class-freemius.php19053, +#: includes/class-freemius.php19958, includes/class-freemius.php19963, #: templates/account/partials/site.php43, #: templates/account/partials/site.php:161 msgid "Opt In" msgstr "オプトイン" -#: includes/class-freemius.php:19245 +#: includes/class-freemius.php:20187 +msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" +msgstr " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" + +#: includes/class-freemius.php:20195 +msgid "Activate %s features" +msgstr "Activate %s features" + +#: includes/class-freemius.php:20208 msgid "Please follow these steps to complete the upgrade" msgstr "アップグレードを完了するには以下の手順を完了させてください。" -#: includes/class-freemius.php:19249 +#: includes/class-freemius.php:20212 msgid "Download the latest %s version" msgstr "最新の %s をダウンロード" -#: includes/class-freemius.php:19253 +#: includes/class-freemius.php:20216 msgid "Upload and activate the downloaded version" msgstr "ダウンロードしたバージョンをアップロードして有効化" -#: includes/class-freemius.php:19255 +#: includes/class-freemius.php:20218 msgid "How to upload and activate?" msgstr "アップロードと有効化の方法" -#: includes/class-freemius.php:19384 +#: includes/class-freemius.php:20352 msgid "%sClick here%s to choose the sites where you'd like to activate the license on." msgstr "%sここをクリックして%s ライセンスを有効化したいサイトを選択してください。" -#: includes/class-freemius.php:19545 +#: includes/class-freemius.php:20513 msgid "Auto installation only works for opted-in users." msgstr "自動インストールはオプトインしたユーザのみで動作します。" -#: includes/class-freemius.php19555, includes/class-freemius.php19588, -#: includes/class-fs-plugin-updater.php713, -#: includes/class-fs-plugin-updater.php:727 +#: includes/class-freemius.php20523, includes/class-freemius.php20556, +#: includes/class-fs-plugin-updater.php1060, +#: includes/class-fs-plugin-updater.php:1074 msgid "Invalid module ID." msgstr "モジュール ID が不正です" -#: includes/class-freemius.php19564, includes/class-fs-plugin-updater.php:747 +#: includes/class-freemius.php20532, includes/class-fs-plugin-updater.php:1096 msgid "Premium version already active." msgstr "プレミアムバージョンはすでに有効になっています。" -#: includes/class-freemius.php:19571 +#: includes/class-freemius.php:20539 msgid "You do not have a valid license to access the premium version." msgstr "プレミアムバージョンにアクセスできる有効なライセンス持っていません。" -#: includes/class-freemius.php:19578 +#: includes/class-freemius.php:20546 msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." msgstr "プラグインはプレミアムコードバージョンのない「サービスウェア」です。" -#: includes/class-freemius.php19596, includes/class-fs-plugin-updater.php:746 +#: includes/class-freemius.php20564, includes/class-fs-plugin-updater.php:1095 msgid "Premium add-on version already installed." msgstr "プレミアムアドオンバージョンはすでにインストール済みです。" -#: includes/class-freemius.php:19941 +#: includes/class-freemius.php:20909 msgid "View paid features" msgstr "有料の機能を表示する" -#: includes/class-freemius.php:20251 +#: includes/class-freemius.php:21229 msgid "Thank you so much for using %s and its add-ons!" msgstr "%sとアドオンのご利用ありがとうございます!" -#: includes/class-freemius.php:20252 +#: includes/class-freemius.php:21230 msgid "Thank you so much for using %s!" msgstr "%sのご利用ありがとうございます!" -#: includes/class-freemius.php:20258 +#: includes/class-freemius.php:21236 msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s." msgstr "%sの改善に役立つ使用状況のトラッキングにすでにオプトインしています。" -#: includes/class-freemius.php:20262 +#: includes/class-freemius.php:21240 msgid "Thank you so much for using our products!" msgstr "プロダクトのご利用ありがとうございます!" -#: includes/class-freemius.php:20263 +#: includes/class-freemius.php:21241 msgid "You've already opted-in to our usage-tracking, which helps us keep improving them." msgstr "プロダクトの改善に役立つ使用状況のトラッキングにすでにオプトインしています。" -#: includes/class-freemius.php:20282 +#: includes/class-freemius.php:21260 msgid "%s and its add-ons" msgstr "%sとそのアドオン" -#: includes/class-freemius.php:20291 +#: includes/class-freemius.php:21269 msgid "Products" msgstr "プロダクト" -#: includes/class-freemius.php20298, templates/connect.php:259 +#: includes/class-freemius.php21276, templates/connect.php:272 msgid "Yes" msgstr "はい" -#: includes/class-freemius.php20299, templates/connect.php:260 +#: includes/class-freemius.php21277, templates/connect.php:273 msgid "send me security & feature updates, educational content and offers." msgstr "セキュリティと機能のアップデート、学習用コンテンツやオファーを送ってください。" -#: includes/class-freemius.php20300, templates/connect.php:265 +#: includes/class-freemius.php21278, templates/connect.php:278 msgid "No" msgstr "いいえ" -#: includes/class-freemius.php20302, templates/connect.php:267 +#: includes/class-freemius.php21280, templates/connect.php:280 msgid "do %sNOT%s send me security & feature updates, educational content and offers." msgstr "セキュリティと機能のアップデート、学習用コンテンツやオファーを%s送らないでください%s。" -#: includes/class-freemius.php:20312 +#: includes/class-freemius.php:21290 msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" msgstr "新しい %sEU General Data Protection Regulation (GDPR)%s コンプライアンスを満たすため、あなたが明示的に同意したことを再度確認し、またあなたがオンボードであることを確認する必要があります 🙂" -#: includes/class-freemius.php20314, templates/connect.php:274 +#: includes/class-freemius.php21292, templates/connect.php:287 msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" msgstr "セキュリティや機能のアップデート、学習用用コンテンツ、およびオファーについてお問い合わせを希望される場合は、お知らせください。" -#: includes/class-freemius.php:20598 +#: includes/class-freemius.php:21574 msgid "License key is empty." msgstr "ライセンスキーが空です。" #: includes/class-fs-plugin-updater.php184, -#: includes/class-fs-plugin-updater.php:219 -msgid "%sRenew your license now%s to access version %s security & feature updates, and support." -msgstr "バージョン%sのセキュリティや機能のアップデートまたサポートを受けられるよう、%s今すぐライセンスキーを更新してください%s。" +#: templates/forms/premium-versions-upgrade-handler.php:57 +msgid "Renew license" +msgstr "ライセンスを更新" + +#: includes/class-fs-plugin-updater.php189, +#: templates/forms/premium-versions-upgrade-handler.php:58 +msgid "Buy license" +msgstr "Buy license" + +#: includes/class-fs-plugin-updater.php:278 +msgid "There is a %s of %s available." +msgstr "There is a %s of %s available." + +#: includes/class-fs-plugin-updater.php:282 +msgid "new version" +msgstr "new version" + +#: includes/class-fs-plugin-updater.php:305 +msgid "Important Upgrade Notice:" +msgstr "Important Upgrade Notice:" -#: includes/class-fs-plugin-updater.php:776 +#: includes/class-fs-plugin-updater.php:1125 msgid "Installing plugin: %s" msgstr "インストール中プラグイン: %s" -#: includes/class-fs-plugin-updater.php:817 +#: includes/class-fs-plugin-updater.php:1166 msgid "Unable to connect to the filesystem. Please confirm your credentials." msgstr "ファイルシステムに接続できません。視覚情報を確認してください。" -#: includes/class-fs-plugin-updater.php:923 +#: includes/class-fs-plugin-updater.php:1348 msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." msgstr "リモートプラグインパッケージには、目的のスラッグを含むフォルダが含まれていないため、リねームが機能しませんでした。" -#: includes/fs-plugin-info-dialog.php336, -#: templates/account/partials/addon.php:287 +#: includes/fs-plugin-info-dialog.php369, +#: templates/account/partials/addon.php:292 msgctxt "verb" msgid "Purchase" msgstr "購入" -#: includes/fs-plugin-info-dialog.php:339 +#: includes/fs-plugin-info-dialog.php:372 msgid "Start my free %s" msgstr "無料の %s を開始" -#: includes/fs-plugin-info-dialog.php:380 +#: includes/fs-plugin-info-dialog.php:413 msgid "Install Free Version Now" msgstr "フリーバージョンを今すぐインストール" -#: includes/fs-plugin-info-dialog.php381, templates/auto-installation.php111, -#: templates/account/partials/addon.php267, -#: templates/account/partials/addon.php:317 +#: includes/fs-plugin-info-dialog.php414, templates/auto-installation.php111, +#: templates/account/partials/addon.php272, +#: templates/account/partials/addon.php:322 msgid "Install Now" msgstr "今すぐインストール" -#: includes/fs-plugin-info-dialog.php:392 +#: includes/fs-plugin-info-dialog.php:425 msgctxt "as download latest version" msgid "Download Latest Free Version" msgstr "最新のフリーバージョンをダウンロード" -#: includes/fs-plugin-info-dialog.php393, templates/account.php80, +#: includes/fs-plugin-info-dialog.php426, templates/account.php80, #: templates/account/partials/addon.php:21 msgctxt "as download latest version" msgid "Download Latest" msgstr "最新版をダウンロード" -#: includes/fs-plugin-info-dialog.php:403 +#: includes/fs-plugin-info-dialog.php:436 msgid "Install Free Version Update Now" msgstr "フリーバージョンの更新を今すぐインストール" -#: includes/fs-plugin-info-dialog.php404, templates/account.php:448 +#: includes/fs-plugin-info-dialog.php437, templates/account.php:460 msgid "Install Update Now" msgstr "今すぐ更新をインストール" -#: includes/fs-plugin-info-dialog.php:415 +#: includes/fs-plugin-info-dialog.php:448 msgid "Newer Free Version (%s) Installed" msgstr "新しいフリーバージョン (%s) がインストールされました" -#: includes/fs-plugin-info-dialog.php:416 +#: includes/fs-plugin-info-dialog.php:449 msgid "Newer Version (%s) Installed" msgstr "新しいバージョン (%s) がインストールされました" -#: includes/fs-plugin-info-dialog.php:424 +#: includes/fs-plugin-info-dialog.php:457 msgid "Latest Free Version Installed" msgstr "最新のフリーバージョンがインストールされました" -#: includes/fs-plugin-info-dialog.php:425 +#: includes/fs-plugin-info-dialog.php:458 msgid "Latest Version Installed" msgstr "最新版がイストールされました" -#: includes/fs-plugin-info-dialog.php:580 +#: includes/fs-plugin-info-dialog.php:613 msgctxt "Plugin installer section title" msgid "Description" msgstr "説明" -#: includes/fs-plugin-info-dialog.php:581 +#: includes/fs-plugin-info-dialog.php:614 msgctxt "Plugin installer section title" msgid "Installation" msgstr "インストール" -#: includes/fs-plugin-info-dialog.php:582 +#: includes/fs-plugin-info-dialog.php:615 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "FAQ" -#: includes/fs-plugin-info-dialog.php583, +#: includes/fs-plugin-info-dialog.php616, #: templates/plugin-info/description.php:55 msgid "Screenshots" msgstr "スクリーンショット" -#: includes/fs-plugin-info-dialog.php:584 +#: includes/fs-plugin-info-dialog.php:617 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "変更履歴" -#: includes/fs-plugin-info-dialog.php:585 +#: includes/fs-plugin-info-dialog.php:618 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "レビュー" -#: includes/fs-plugin-info-dialog.php:586 +#: includes/fs-plugin-info-dialog.php:619 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "その他の記述" -#: includes/fs-plugin-info-dialog.php:601 +#: includes/fs-plugin-info-dialog.php:634 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "機能 & 料金" -#: includes/fs-plugin-info-dialog.php:611 +#: includes/fs-plugin-info-dialog.php:644 msgid "Plugin Install" msgstr "プラグインのインストール" -#: includes/fs-plugin-info-dialog.php:683 +#: includes/fs-plugin-info-dialog.php:716 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "%s プラン" -#: includes/fs-plugin-info-dialog.php:709 +#: includes/fs-plugin-info-dialog.php:742 msgctxt "e.g. the best product" msgid "Best" msgstr "ベスト" -#: includes/fs-plugin-info-dialog.php715, -#: includes/fs-plugin-info-dialog.php:735 +#: includes/fs-plugin-info-dialog.php748, +#: includes/fs-plugin-info-dialog.php:768 msgctxt "as every month" msgid "Monthly" msgstr "月" -#: includes/fs-plugin-info-dialog.php:718 +#: includes/fs-plugin-info-dialog.php:751 msgctxt "as once a year" msgid "Annual" msgstr "年次" -#: includes/fs-plugin-info-dialog.php:721 +#: includes/fs-plugin-info-dialog.php:754 msgid "Lifetime" msgstr "ライフタイム" -#: includes/fs-plugin-info-dialog.php735, -#: includes/fs-plugin-info-dialog.php737, -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php768, +#: includes/fs-plugin-info-dialog.php770, +#: includes/fs-plugin-info-dialog.php:772 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "%s への請求" -#: includes/fs-plugin-info-dialog.php:737 +#: includes/fs-plugin-info-dialog.php:770 msgctxt "as once a year" msgid "Annually" msgstr "毎年" -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php:772 msgctxt "as once a year" msgid "Once" msgstr "一度" -#: includes/fs-plugin-info-dialog.php:745 +#: includes/fs-plugin-info-dialog.php:778 msgid "Single Site License" msgstr "シングルサイトライセンス" -#: includes/fs-plugin-info-dialog.php:747 +#: includes/fs-plugin-info-dialog.php:780 msgid "Unlimited Licenses" msgstr "無制限ライセンス" -#: includes/fs-plugin-info-dialog.php:749 +#: includes/fs-plugin-info-dialog.php:782 msgid "Up to %s Sites" msgstr "%sサイトまで" -#: includes/fs-plugin-info-dialog.php759, +#: includes/fs-plugin-info-dialog.php792, #: templates/plugin-info/features.php:82 msgctxt "as monthly period" msgid "mo" msgstr "月" -#: includes/fs-plugin-info-dialog.php766, +#: includes/fs-plugin-info-dialog.php799, #: templates/plugin-info/features.php:80 msgctxt "as annual period" msgid "year" msgstr "年" -#: includes/fs-plugin-info-dialog.php:820 +#: includes/fs-plugin-info-dialog.php:853 msgctxt "noun" msgid "Price" msgstr "料金" -#: includes/fs-plugin-info-dialog.php:868 +#: includes/fs-plugin-info-dialog.php:901 msgid "Save %s" msgstr "%s を保存" -#: includes/fs-plugin-info-dialog.php:878 +#: includes/fs-plugin-info-dialog.php:911 msgid "No commitment for %s - cancel anytime" msgstr "%s の拘束はありません。いつでもキャンセルできます。" -#: includes/fs-plugin-info-dialog.php:881 +#: includes/fs-plugin-info-dialog.php:914 msgid "After your free %s, pay as little as %s" msgstr "無料の %s の後は、わずか %s だけお支払ください。" -#: includes/fs-plugin-info-dialog.php:892 +#: includes/fs-plugin-info-dialog.php:925 msgid "Details" msgstr "詳細" -#: includes/fs-plugin-info-dialog.php896, templates/account.php87, -#: templates/debug.php191, templates/debug.php228, templates/debug.php442, -#: templates/account/partials/addon.php:28 +#: includes/fs-plugin-info-dialog.php929, templates/account.php91, +#: templates/debug.php201, templates/debug.php238, templates/debug.php452, +#: templates/account/partials/addon.php:32 msgctxt "product version" msgid "Version" msgstr "バージョン" -#: includes/fs-plugin-info-dialog.php:903 +#: includes/fs-plugin-info-dialog.php:936 msgctxt "as the plugin author" msgid "Author" msgstr "作者" -#: includes/fs-plugin-info-dialog.php:910 +#: includes/fs-plugin-info-dialog.php:943 msgid "Last Updated" msgstr "最終更新" -#: includes/fs-plugin-info-dialog.php:915 +#: includes/fs-plugin-info-dialog.php948, templates/account.php:376 msgctxt "x-ago" msgid "%s ago" msgstr "%s 前" -#: includes/fs-plugin-info-dialog.php:924 +#: includes/fs-plugin-info-dialog.php:957 msgid "Requires WordPress Version" msgstr "必要な WordPress のバージョン" -#: includes/fs-plugin-info-dialog.php:925 +#: includes/fs-plugin-info-dialog.php:958 msgid "%s or higher" msgstr "%sまたはそれ以上" -#: includes/fs-plugin-info-dialog.php:932 +#: includes/fs-plugin-info-dialog.php:965 msgid "Compatible up to" msgstr "互換性のある最新バージョン" -#: includes/fs-plugin-info-dialog.php:940 +#: includes/fs-plugin-info-dialog.php:973 msgid "Downloaded" msgstr "ダウンロード済み" -#: includes/fs-plugin-info-dialog.php:944 +#: includes/fs-plugin-info-dialog.php:977 msgid "%s time" msgstr "%s回" -#: includes/fs-plugin-info-dialog.php:946 +#: includes/fs-plugin-info-dialog.php:979 msgid "%s times" msgstr "%s回" -#: includes/fs-plugin-info-dialog.php:956 +#: includes/fs-plugin-info-dialog.php:989 msgid "WordPress.org Plugin Page" msgstr "WordPress.org のプラグインページ" -#: includes/fs-plugin-info-dialog.php:964 +#: includes/fs-plugin-info-dialog.php:997 msgid "Plugin Homepage" msgstr "プラグインのホームページ" -#: includes/fs-plugin-info-dialog.php972, -#: includes/fs-plugin-info-dialog.php:1054 +#: includes/fs-plugin-info-dialog.php1005, +#: includes/fs-plugin-info-dialog.php:1087 msgid "Donate to this plugin" msgstr "このプラグインに寄付する" -#: includes/fs-plugin-info-dialog.php:979 +#: includes/fs-plugin-info-dialog.php:1012 msgid "Average Rating" msgstr "レーティングの平均" -#: includes/fs-plugin-info-dialog.php:986 +#: includes/fs-plugin-info-dialog.php:1019 msgid "based on %s" msgstr "%sを基に" -#: includes/fs-plugin-info-dialog.php:990 +#: includes/fs-plugin-info-dialog.php:1023 msgid "%s rating" msgstr "%s評価" -#: includes/fs-plugin-info-dialog.php:992 +#: includes/fs-plugin-info-dialog.php:1025 msgid "%s ratings" msgstr "%s評価" -#: includes/fs-plugin-info-dialog.php:1007 +#: includes/fs-plugin-info-dialog.php:1040 msgid "%s star" msgstr "%sスター" -#: includes/fs-plugin-info-dialog.php:1009 +#: includes/fs-plugin-info-dialog.php:1042 msgid "%s stars" msgstr "%sスター" -#: includes/fs-plugin-info-dialog.php:1020 +#: includes/fs-plugin-info-dialog.php:1053 msgid "Click to see reviews that provided a rating of %s" msgstr "クリックして%sの評価をしているレビューを観る" -#: includes/fs-plugin-info-dialog.php:1033 +#: includes/fs-plugin-info-dialog.php:1066 msgid "Contributors" msgstr "コントリビューター" -#: includes/fs-plugin-info-dialog.php1062, -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php1095, +#: includes/fs-plugin-info-dialog.php:1097 msgid "Warning" msgstr "警告" -#: includes/fs-plugin-info-dialog.php:1062 +#: includes/fs-plugin-info-dialog.php:1095 msgid "This plugin has not been tested with your current version of WordPress." msgstr "このプラグインはインストールされた WordPress のバージョンでは検証されていません。" -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php:1097 msgid "This plugin has not been marked as compatible with your version of WordPress." msgstr "このプラグインはインストールされた WordPress のバージョンに互換性がありません。" -#: includes/fs-plugin-info-dialog.php:1083 +#: includes/fs-plugin-info-dialog.php:1116 msgid "Paid add-on must be deployed to Freemius." msgstr "有料アドオンは Freemius にデプロイされている必要があります。" -#: includes/fs-plugin-info-dialog.php:1084 +#: includes/fs-plugin-info-dialog.php:1117 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "アドオンが WordPress.org か Freemius にデプロイされている必要があります。" -#: templates/account.php81, templates/account/partials/addon.php22, +#: templates/account.php81, templates/forms/subscription-cancellation.php96, +#: templates/account/partials/addon.php22, #: templates/account/partials/site.php:295 -msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." -msgstr "プランをダウングレードするとすぐに将来の定期の支払いはすべて停止し、%s プランライセンスは %s で期限切れとなります。" +msgid "Downgrading your plan" +msgstr "Downgrading your plan" + +#: templates/account.php82, templates/forms/subscription-cancellation.php97, +#: templates/account/partials/addon.php23, +#: templates/account/partials/site.php:296 +msgid "Cancelling the subscription" +msgstr "Cancelling the subscription" + +#. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the +#. subscription' +#: templates/account.php84, templates/forms/subscription-cancellation.php99, +#: templates/account/partials/addon.php25, +#: templates/account/partials/site.php:298 +msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." +msgstr "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." -#: templates/account.php82, templates/account/partials/addon.php:23 +#: templates/account.php85, templates/forms/subscription-cancellation.php100, +#: templates/account/partials/addon.php26, +#: templates/account/partials/site.php:299 +msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." +msgstr "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." + +#: templates/account.php86, templates/forms/subscription-cancellation.php106, +#: templates/account/partials/addon.php:27 msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "トライアルをキャンセルするとすぐにすべてのプレミアム機能へのアクセスができなくなります。本当に実行しますか?" -#: templates/account.php83, templates/account/partials/addon.php24, -#: templates/account/partials/site.php:296 -msgid "You can still enjoy all %s features but you will not have access to %s updates and support." -msgstr "すべての%s機能を使うことはできますが、%sへのアクセスやアップデート、またサポートを受けることはできません。" +#: templates/account.php87, templates/forms/subscription-cancellation.php101, +#: templates/account/partials/addon.php28, +#: templates/account/partials/site.php:300 +msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." +msgstr "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." -#: templates/account.php84, templates/account/partials/addon.php25, -#: templates/account/partials/site.php:297 +#: templates/account.php88, templates/forms/subscription-cancellation.php102, +#: templates/account/partials/addon.php29, +#: templates/account/partials/site.php:301 msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." msgstr "一度ライセンスの期限が切れると、フリーバージョンの利用は可能ですが、%sの機能を使うことができなくなります。" #. translators: %s: Plan title (e.g. "Professional") -#: templates/account.php86, +#: templates/account.php90, #: templates/account/partials/activate-license-button.php31, -#: templates/account/partials/addon.php:27 +#: templates/account/partials/addon.php:31 msgid "Activate %s Plan" msgstr "%s プランを有効化" #. translators: %s: Time period (e.g. Auto renews in "2 months") -#: templates/account.php89, templates/account/partials/addon.php30, +#: templates/account.php93, templates/account/partials/addon.php34, #: templates/account/partials/site.php:275 msgid "Auto renews in %s" msgstr "%s に自動更新" #. translators: %s: Time period (e.g. Expires in "2 months") -#: templates/account.php91, templates/account/partials/addon.php32, +#: templates/account.php95, templates/account/partials/addon.php36, #: templates/account/partials/site.php:277 msgid "Expires in %s" msgstr "%s で期間終了" -#: templates/account.php92, templates/account/partials/addon.php:33 +#: templates/account.php96, templates/account/partials/addon.php:37 msgctxt "as synchronize license" msgid "Sync License" msgstr "ライセンスを同期" -#: templates/account.php93, templates/account/partials/addon.php:34 +#: templates/account.php97, templates/account/partials/addon.php:38 msgid "Cancel Trial" msgstr "トライアルをキャンセル" -#: templates/account.php94, templates/account/partials/addon.php:35 +#: templates/account.php98, templates/account/partials/addon.php:39 msgid "Change Plan" msgstr "プラン変更" -#: templates/account.php95, templates/account/partials/addon.php:36 +#: templates/account.php99, templates/account/partials/addon.php:40 msgctxt "verb" msgid "Upgrade" msgstr "アップグレード" -#: templates/account.php97, templates/account/partials/addon.php38, -#: templates/account/partials/site.php:298 +#: templates/account.php101, templates/account/partials/addon.php42, +#: templates/account/partials/site.php:302 msgctxt "verb" msgid "Downgrade" msgstr "ダウングレード" -#: templates/account.php99, templates/add-ons.php126, +#: templates/account.php103, templates/add-ons.php130, #: templates/plugin-info/features.php72, -#: templates/account/partials/addon.php40, +#: templates/account/partials/addon.php44, #: templates/account/partials/site.php:31 msgid "Free" msgstr "無料" -#: templates/account.php100, templates/account/partials/addon.php:41 +#: templates/account.php104, templates/account/partials/addon.php:45 msgid "Activate" msgstr "有効化" -#: templates/account.php101, templates/debug.php361, +#: templates/account.php105, templates/debug.php371, #: includes/customizer/class-fs-customizer-upsell-control.php106, -#: templates/account/partials/addon.php:42 +#: templates/account/partials/addon.php:46 msgctxt "as product pricing plan" msgid "Plan" msgstr "プラン" -#: templates/account.php:154 +#: templates/account.php:158 msgid "Free Trial" msgstr "フリートライアル" -#: templates/account.php:165 +#: templates/account.php:169 msgid "Account Details" msgstr "アカウント詳細" -#: templates/account.php:175 +#: templates/account.php:179 msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" msgstr "アカウントを削除すると自動的に %s プランライセンスが無効になり、他のサイトで使うことができます。定期の支払いも終了したい場合は、\"キャンセル\"ボタンをクリックし、まずアカウントを\"ダウングレード\"してください。本当に削除を続行してもいいですか?" -#: templates/account.php:177 +#: templates/account.php:181 msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" msgstr "削除は一時的なものではありません。本当に%sが必要なくなった時に行ってください。" -#: templates/account.php:180 +#: templates/account.php:184 msgid "Delete Account" msgstr "アカウントを削除" -#: templates/account.php192, templates/account/partials/addon.php155, +#: templates/account.php196, templates/account/partials/addon.php159, #: templates/account/partials/deactivate-license-button.php:35 msgid "Deactivate License" msgstr "ライセンスを無効化" -#: templates/account.php:210 +#: templates/account.php219, templates/forms/subscription-cancellation.php:125 msgid "Are you sure you want to proceed?" msgstr "本当に続行していいですか?" -#: templates/account.php210, templates/account/partials/addon.php:177 +#: templates/account.php219, templates/account/partials/addon.php:182 msgid "Cancel Subscription" msgstr "サブスクリプションをキャンセルする" -#: templates/account.php:239 +#: templates/account.php:247 msgctxt "as synchronize" msgid "Sync" msgstr "同期" -#: templates/account.php253, templates/debug.php:477 +#: templates/account.php261, templates/debug.php:487 msgid "Name" msgstr "名前" -#: templates/account.php259, templates/debug.php:478 +#: templates/account.php267, templates/debug.php:488 msgid "Email" msgstr "Email" -#: templates/account.php266, templates/debug.php360, templates/debug.php:516 +#: templates/account.php274, templates/debug.php370, templates/debug.php:526 msgid "User ID" msgstr "ユーザー ID" -#: templates/account.php:274 +#: templates/account.php:282 msgid "Site ID" msgstr "サイト ID" -#: templates/account.php:277 +#: templates/account.php:285 msgid "No ID" msgstr "ID がありません" -#: templates/account.php282, templates/debug.php233, templates/debug.php362, -#: templates/debug.php443, templates/debug.php480, +#: templates/account.php290, templates/debug.php243, templates/debug.php372, +#: templates/debug.php453, templates/debug.php490, #: templates/account/partials/site.php:219 msgid "Public Key" msgstr "公開鍵" -#: templates/account.php288, templates/debug.php363, templates/debug.php444, -#: templates/debug.php481, templates/account/partials/site.php:231 +#: templates/account.php296, templates/debug.php373, templates/debug.php454, +#: templates/debug.php491, templates/account/partials/site.php:231 msgid "Secret Key" msgstr "秘密鍵" -#: templates/account.php:291 +#: templates/account.php:299 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "秘密鍵がありません" -#: templates/account.php310, templates/account/partials/site.php112, +#: templates/account.php318, templates/account/partials/site.php112, #: templates/account/partials/site.php:114 msgid "Trial" msgstr "トライアル" -#: templates/account.php329, templates/debug.php521, +#: templates/account.php337, templates/debug.php531, #: templates/account/partials/site.php:248 msgid "License Key" msgstr "ライセンスキー" -#: templates/account.php:359 +#: templates/account.php:367 msgid "not verified" msgstr "未認証" -#: templates/account.php:416 +#: templates/account.php376, templates/account/partials/addon.php:120 +msgid "Expired" +msgstr "期限切れ" + +#: templates/account.php:428 msgid "Premium version" msgstr "プレミアムバージョン" -#: templates/account.php:418 +#: templates/account.php:430 msgid "Free version" msgstr "フリーバージョン" -#: templates/account.php:430 +#: templates/account.php:442 msgid "Verify Email" msgstr "認証メール" -#: templates/account.php:441 +#: templates/account.php:453 msgid "Download %s Version" msgstr "%s バージョンをダウンロード" -#: templates/account.php455, templates/account.php636, +#: templates/account.php467, templates/account.php649, #: templates/account/partials/site.php237, #: templates/account/partials/site.php:255 msgctxt "verb" msgid "Show" msgstr "表示" -#: templates/account.php:469 +#: templates/account.php:481 msgid "What is your %s?" msgstr "自分の %s はなんですか?" -#: templates/account.php477, templates/account/billing.php:27 +#: templates/account.php489, templates/account/billing.php:27 msgctxt "verb" msgid "Edit" msgstr "編集" -#: templates/account.php:490 +#: templates/account.php:502 msgid "Sites" msgstr "サイト数" -#: templates/account.php:501 +#: templates/account.php:513 msgid "Search by address" msgstr "住所で検索する" -#: templates/account.php510, templates/account.php558, templates/debug.php226, -#: templates/debug.php354, templates/debug.php439, templates/debug.php476, -#: templates/debug.php514, templates/debug.php587, +#: templates/account.php522, templates/account.php570, templates/debug.php236, +#: templates/debug.php364, templates/debug.php449, templates/debug.php486, +#: templates/debug.php524, templates/debug.php597, #: templates/account/payments.php35, templates/debug/logger.php:21 msgid "ID" msgstr "ID" -#: templates/account.php511, templates/debug.php:357 +#: templates/account.php523, templates/debug.php:367 msgid "Address" msgstr "住所" -#: templates/account.php:512 +#: templates/account.php:524 msgid "License" msgstr "ライセンス" -#: templates/account.php:513 +#: templates/account.php:525 msgid "Plan" msgstr "プラン" -#: templates/account.php:561 +#: templates/account.php:573 msgctxt "as software license" msgid "License" msgstr "ライセンス" -#: templates/account.php:630 +#: templates/account.php:643 msgctxt "verb" msgid "Hide" msgstr "非表示" -#: templates/account.php:665 +#: templates/account.php:686 +msgid "Cancelling %s" +msgstr "Cancelling %s" + +#: templates/account.php686, templates/account.php703, +#: templates/forms/subscription-cancellation.php27, +#: templates/forms/deactivation/form.php:117 +msgid "trial" +msgstr "trial" + +#: templates/account.php701, templates/forms/deactivation/form.php:134 +msgid "Cancelling %s..." +msgstr "Cancelling %s..." + +#: templates/account.php704, templates/forms/subscription-cancellation.php28, +#: templates/forms/deactivation/form.php:118 +msgid "subscription" +msgstr "subscription" + +#: templates/account.php:718 msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" msgstr "ライセンスを無効化するとすべてのプレミアム機能が使えなくなりますが、他のサイトでライセンスを有効にすることができるようになります。本当に実行しますか?" @@ -1323,7 +1420,7 @@ msgstr "%s のアドオン" msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." msgstr "アドオンリストを読み込むことができませんでした。おそらく運営側の問題になりますので、しばらくしてからお試しください。" -#: templates/add-ons.php:135 +#: templates/add-ons.php:139 msgid "View details" msgstr "詳細を表示" @@ -1362,163 +1459,167 @@ msgid "PCI compliant" msgstr "PCI コンプライアント" #. translators: %s: name (e.g. Hey John,) -#: templates/connect.php:110 +#: templates/connect.php:112 msgctxt "greeting" msgid "Hey %s," msgstr "おおい %s さん、" -#: templates/connect.php:152 +#: templates/connect.php:154 msgid "Allow & Continue" msgstr "許可して続ける" -#: templates/connect.php:156 +#: templates/connect.php:158 msgid "Re-send activation email" msgstr "有効化メールを再送信" -#: templates/connect.php:160 +#: templates/connect.php:162 msgid "Thanks %s!" msgstr "ありがとう $s さん!" -#: templates/connect.php170, templates/forms/license-activation.php:43 +#: templates/connect.php172, templates/forms/license-activation.php:43 msgid "Agree & Activate License" msgstr "同意してライセンスを有効化" -#: templates/connect.php:179 +#: templates/connect.php:181 msgid "Thanks for purchasing %s! To get started, please enter your license key:" msgstr "%s を購入いただきありがとうございます。はじめにライセンスキーを入力してください:" -#: templates/connect.php:186 +#: templates/connect.php:188 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." msgstr "重要な更新を逃さないように、セキュリティと更新通知、学習用コンテンツ、オファー、そして%4$s とセンシティブではない診断トラッキングをオプトインしてください。" -#: templates/connect.php:187 +#: templates/connect.php:189 msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." msgstr "重要な更新を逃さないように、セキュリティと更新通知、%4$s とセンシティブではない診断トラッキングをオプトインしてください。" -#: templates/connect.php:193 +#: templates/connect.php:195 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "重要な更新を逃さないように、セキュリティと更新通知、学習用コンテンツ、オファー、そして%4$s とセンシティブではない診断トラッキングをオプトインしてください。これをスキップしても%1$sはもちろん動作します。" -#: templates/connect.php:194 +#: templates/connect.php:196 msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "重要な更新を逃さないように、セキュリティと更新通知、学習用コンテンツ、オファー、そして%4$s とセンシティブではない診断トラッキングをオプトインしてください。これをスキップしても%1$sはもちろん動作します。" -#: templates/connect.php:228 +#: templates/connect.php:230 msgid "We're excited to introduce the Freemius network-level integration." msgstr "Freeminus ネットワークレベルのインテグレーションをご紹介できることに興奮しています。" -#: templates/connect.php:231 +#: templates/connect.php:233 msgid "During the update process we detected %d site(s) that are still pending license activation." msgstr "アップデートの処理中に%dサイトがライセンスの有効化が保留中であることを検知しました。" -#: templates/connect.php:233 +#: templates/connect.php:235 msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." msgstr "これらのサイトで%sを使う場合は、ライセンスキーを入力し、アクティベーションボタンをクリックしてください。" -#: templates/connect.php:235 +#: templates/connect.php:237 msgid "%s's paid features" msgstr "%sの有料機能" -#: templates/connect.php:240 +#: templates/connect.php:242 msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." msgstr "または、今すぐスキップして、%sのネットワークレベルのアカウントページでライセンスを有効にすることもできます。" -#: templates/connect.php:242 +#: templates/connect.php:244 msgid "During the update process we detected %s site(s) in the network that are still pending your attention." msgstr "アップデートの処理中に、ネットワーク内の%dサイトが対応待ちになっていることを検知しました。" -#: templates/connect.php251, templates/forms/license-activation.php:46 +#: templates/connect.php253, templates/forms/license-activation.php:46 msgid "License key" msgstr "ライセンスキー" -#: templates/connect.php254, templates/forms/license-activation.php:19 +#: templates/connect.php256, templates/forms/license-activation.php:19 msgid "Can't find your license key?" msgstr "ライセンスキーは見つかりませんか?" -#: templates/connect.php302, templates/connect.php617, +#: templates/connect.php315, templates/connect.php630, #: templates/forms/deactivation/retry-skip.php:20 msgctxt "verb" msgid "Skip" msgstr "スキップ" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "Delegate to Site Admins" msgstr "サイト管理者に委任する" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "If you click it, this decision will be delegated to the sites administrators." msgstr "決定をサイトの管理者に委任するにはクリックしてください。" -#: templates/connect.php:333 +#: templates/connect.php:346 msgid "Your Profile Overview" msgstr "プロフィール概要" -#: templates/connect.php:334 +#: templates/connect.php:347 msgid "Name and email address" msgstr "名前とメールアドレス" -#: templates/connect.php:339 +#: templates/connect.php:352 msgid "Your Site Overview" msgstr "サイト概要" -#: templates/connect.php:340 +#: templates/connect.php:353 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "サイト URL、WP バージョン、PHP info、プラグインとテーマ" -#: templates/connect.php:345 +#: templates/connect.php:358 msgid "Admin Notices" msgstr "管理者通知" -#: templates/connect.php346, templates/connect.php:362 +#: templates/connect.php359, templates/connect.php:375 msgid "Updates, announcements, marketing, no spam" msgstr "更新、発表、マーケティング、スパムなし" -#: templates/connect.php:351 +#: templates/connect.php:364 msgid "Current %s Events" msgstr "現在%sイベント" -#: templates/connect.php:352 +#: templates/connect.php:365 msgid "Activation, deactivation and uninstall" msgstr "有効化、無効化、アンインストール" -#: templates/connect.php:361 +#: templates/connect.php:374 msgid "Newsletter" msgstr "ニュースレター" -#: templates/connect.php378, templates/forms/license-activation.php:38 +#: templates/connect.php391, templates/forms/license-activation.php:38 msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." msgstr "%1$sはセキュリティとアプデート、そしてライセンスの状態を確認するため、定期的に%2$sへデータを送信します。" -#: templates/connect.php:383 +#: templates/connect.php:396 msgid "What permissions are being granted?" msgstr "付与されているパーミッションは何ですか?" -#: templates/connect.php:404 +#: templates/connect.php:417 msgid "Don't have a license key?" msgstr "ライセンスキーをお持ちではありませんか?" -#: templates/connect.php:405 +#: templates/connect.php:418 msgid "Activate Free Version" msgstr "フリーバージョンを有効化" -#: templates/connect.php:407 +#: templates/connect.php:420 msgid "Have a license key?" msgstr "ライセンスキーはお持ちですか?" -#: templates/connect.php:415 +#: templates/connect.php:428 msgid "Privacy Policy" msgstr "プライバシーポリシー" -#: templates/connect.php:417 +#: templates/connect.php:430 +msgid "License Agreement" +msgstr "License Agreement" + +#: templates/connect.php:430 msgid "Terms of Service" msgstr "利用規約" -#: templates/connect.php:750 +#: templates/connect.php:766 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "メール送信中" -#: templates/connect.php:751 +#: templates/connect.php:767 msgctxt "as activating plugin" msgid "Activating" msgstr "有効化中" @@ -1546,8 +1647,8 @@ msgctxt "as code debugging" msgid "Debugging" msgstr "デバッグ" -#: templates/debug.php54, templates/debug.php238, templates/debug.php364, -#: templates/debug.php:482 +#: templates/debug.php54, templates/debug.php248, templates/debug.php374, +#: templates/debug.php:492 msgid "Actions" msgstr "アクション" @@ -1571,199 +1672,203 @@ msgstr "アップデートのトランジエントをクリアーにする" msgid "Sync Data From Server" msgstr "サーバーからのデータを同期" -#: templates/debug.php:90 +#: templates/debug.php:95 +msgid "Migrate Options to Network" +msgstr "Migrate Options to Network" + +#: templates/debug.php:100 msgid "Load DB Option" msgstr "DB オプションを読み込む" -#: templates/debug.php:93 +#: templates/debug.php:103 msgid "Set DB Option" msgstr "DB オプションを設定する" -#: templates/debug.php:170 +#: templates/debug.php:180 msgid "Key" msgstr "キー" -#: templates/debug.php:171 +#: templates/debug.php:181 msgid "Value" msgstr "値" -#: templates/debug.php:187 +#: templates/debug.php:197 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "SDK バージョン" -#: templates/debug.php:192 +#: templates/debug.php:202 msgid "SDK Path" msgstr "SDK のパス" -#: templates/debug.php193, templates/debug.php:232 +#: templates/debug.php203, templates/debug.php:242 msgid "Module Path" msgstr "モジュールのパス" -#: templates/debug.php:194 +#: templates/debug.php:204 msgid "Is Active" msgstr "有効" -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:35 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:35 msgid "Plugins" msgstr "プラグイン" -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:56 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:56 msgid "Themes" msgstr "テーマ" -#: templates/debug.php227, templates/debug.php359, templates/debug.php441, +#: templates/debug.php237, templates/debug.php369, templates/debug.php451, #: templates/debug/scheduled-crons.php:80 msgid "Slug" msgstr "スラッグ" -#: templates/debug.php229, templates/debug.php:440 +#: templates/debug.php239, templates/debug.php:450 msgid "Title" msgstr "タイトル" -#: templates/debug.php:230 +#: templates/debug.php:240 msgctxt "as application program interface" msgid "API" msgstr "API" -#: templates/debug.php:231 +#: templates/debug.php:241 msgid "Freemius State" msgstr "Freemius ステータス" -#: templates/debug.php:235 +#: templates/debug.php:245 msgid "Network Blog" msgstr "ネットワークブログ" -#: templates/debug.php:236 +#: templates/debug.php:246 msgid "Network User" msgstr "ネットワークユーザ" -#: templates/debug.php:273 +#: templates/debug.php:283 msgctxt "as connection was successful" msgid "Connected" msgstr "接続" -#: templates/debug.php:274 +#: templates/debug.php:284 msgctxt "as connection blocked" msgid "Blocked" msgstr "ブロック" -#: templates/debug.php:310 -msgid "Simulate Trial" -msgstr "トライアルをシミュレートする" +#: templates/debug.php:320 +msgid "Simulate Trial Promotion" +msgstr "Simulate Trial Promotion" -#: templates/debug.php:322 +#: templates/debug.php:332 msgid "Simulate Network Upgrade" msgstr "ネットワークアップグレードをシミュレートする" -#: templates/debug.php:348 +#: templates/debug.php:358 msgid "%s Installs" msgstr "%sインストール" -#: templates/debug.php:350 +#: templates/debug.php:360 msgctxt "like websites" msgid "Sites" msgstr "サイト数" -#: templates/debug.php356, templates/account/partials/site.php:148 +#: templates/debug.php366, templates/account/partials/site.php:148 msgid "Blog ID" msgstr "ブログ ID" -#: templates/debug.php421, templates/debug.php499, -#: templates/account/partials/addon.php:334 +#: templates/debug.php431, templates/debug.php509, +#: templates/account/partials/addon.php:339 msgctxt "verb" msgid "Delete" msgstr "削除" -#: templates/debug.php:435 +#: templates/debug.php:445 msgid "Add Ons of module %s" msgstr "モジュールのアドオン%s" -#: templates/debug.php:472 +#: templates/debug.php:482 msgid "Users" msgstr "ユーザー" -#: templates/debug.php:479 +#: templates/debug.php:489 msgid "Verified" msgstr "認証済み" -#: templates/debug.php:510 +#: templates/debug.php:520 msgid "%s Licenses" msgstr "%sラインセス" -#: templates/debug.php:515 +#: templates/debug.php:525 msgid "Plugin ID" msgstr "プラグイン ID" -#: templates/debug.php:517 +#: templates/debug.php:527 msgid "Plan ID" msgstr "プラン ID" -#: templates/debug.php:518 +#: templates/debug.php:528 msgid "Quota" msgstr "クォータ" -#: templates/debug.php:519 +#: templates/debug.php:529 msgid "Activated" msgstr "有効化済み" -#: templates/debug.php:520 +#: templates/debug.php:530 msgid "Blocking" msgstr "ブロッキング" -#: templates/debug.php:522 +#: templates/debug.php:532 msgctxt "as expiration date" msgid "Expiration" msgstr "期限切れ" -#: templates/debug.php:545 +#: templates/debug.php:555 msgid "Debug Log" msgstr "デバッグログ" -#: templates/debug.php:549 +#: templates/debug.php:559 msgid "All Types" msgstr "すべてのタイプ" -#: templates/debug.php:556 +#: templates/debug.php:566 msgid "All Requests" msgstr "すべてのリクエスト" -#: templates/debug.php561, templates/debug.php590, +#: templates/debug.php571, templates/debug.php600, #: templates/debug/logger.php:25 msgid "File" msgstr "ファイル" -#: templates/debug.php562, templates/debug.php588, +#: templates/debug.php572, templates/debug.php598, #: templates/debug/logger.php:23 msgid "Function" msgstr "機能" -#: templates/debug.php:563 +#: templates/debug.php:573 msgid "Process ID" msgstr "プロセス ID" -#: templates/debug.php:564 +#: templates/debug.php:574 msgid "Logger" msgstr "ロガー" -#: templates/debug.php565, templates/debug.php589, +#: templates/debug.php575, templates/debug.php599, #: templates/debug/logger.php:24 msgid "Message" msgstr "メッセージ" -#: templates/debug.php:567 +#: templates/debug.php:577 msgid "Filter" msgstr "フィルター" -#: templates/debug.php:575 +#: templates/debug.php:585 msgid "Download" msgstr "ダウンロード" -#: templates/debug.php586, templates/debug/logger.php:22 +#: templates/debug.php596, templates/debug/logger.php:22 msgid "Type" msgstr "タイプ" -#: templates/debug.php591, templates/debug/logger.php:26 +#: templates/debug.php601, templates/debug/logger.php:26 msgid "Timestamp" msgstr "タイムスタンプ" @@ -2114,23 +2219,19 @@ msgstr "使用の追跡は %s をより良くする名目の下に行われて msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." msgstr "\"オプトアウト\"をクリックすることで、もう %s から %s へのデータの送信は行いません。" -#: templates/forms/premium-versions-upgrade-handler.php:24 +#: templates/forms/premium-versions-upgrade-handler.php:40 msgid "There is a new version of %s available." msgstr "%sの入手可能な新しいバージョンがあります" -#: templates/forms/premium-versions-upgrade-handler.php:25 -msgid " %sRenew your license now%s to access version %s security & feature updates, and support." -msgstr "バージョン%sのセキュリティや機能のアップデートやサポートを受けられるよう、%s今すぐライセンスキーを更新してください%s。" +#: templates/forms/premium-versions-upgrade-handler.php:41 +msgid " %s to access version %s security & feature updates, and support." +msgstr " %s to access version %s security & feature updates, and support." -#: templates/forms/premium-versions-upgrade-handler.php:34 +#: templates/forms/premium-versions-upgrade-handler.php:54 msgid "New Version Available" msgstr "新しいバージョンがあります" -#: templates/forms/premium-versions-upgrade-handler.php:36 -msgid "Renew license" -msgstr "ライセンスを更新" - -#: templates/forms/premium-versions-upgrade-handler.php:53 +#: templates/forms/premium-versions-upgrade-handler.php:75 msgctxt "close a window" msgid "Dismiss" msgstr "却下" @@ -2143,6 +2244,43 @@ msgstr "ライセンスキーを送信" msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." msgstr "アップグレードに使用したメールアドレスを下に入力してください。そうすれば、ライセンスキーをお送りします。" +#: templates/forms/subscription-cancellation.php:37 +msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." +msgstr "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." + +#: templates/forms/subscription-cancellation.php:47 +msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" +msgstr "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" + +#: templates/forms/subscription-cancellation.php:52 +msgid "license" +msgstr "license" + +#: templates/forms/subscription-cancellation.php:57 +msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." +msgstr "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." + +#: templates/forms/subscription-cancellation.php:68 +msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." +msgstr "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." + +#: templates/forms/subscription-cancellation.php:103 +msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." +msgstr "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." + +#: templates/forms/subscription-cancellation.php:136 +msgid "Cancel %s?" +msgstr "Cancel %s?" + +#: templates/forms/subscription-cancellation.php:143 +msgid "Proceed" +msgstr "Proceed" + +#: templates/forms/subscription-cancellation.php191, +#: templates/forms/deactivation/form.php:150 +msgid "Cancel %s & Proceed" +msgstr "Cancel %s & Proceed" + #: templates/forms/trial-start.php:22 msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "%2$s プランの%1$s日間のフリートライアルを開始するまであとワンクリックです。" @@ -2208,20 +2346,16 @@ msgstr "あと %s" msgid "Last license" msgstr "最新のライセンス" -#: templates/account/partials/addon.php:111 +#: templates/account/partials/addon.php:115 msgid "Cancelled" msgstr "キャンセル" -#: templates/account/partials/addon.php:116 -msgid "Expired" -msgstr "期限切れ" - -#: templates/account/partials/addon.php:121 +#: templates/account/partials/addon.php:125 msgid "No expiration" msgstr "有効期限なし" -#: templates/account/partials/addon.php259, -#: templates/account/partials/addon.php:312 +#: templates/account/partials/addon.php264, +#: templates/account/partials/addon.php:317 msgid "Activate this add-on" msgstr "このアドオンを有効化" @@ -2249,47 +2383,47 @@ msgstr "ご迷惑をおかけしてすいません。もし機会をいただけ msgid "Contact Support" msgstr "サポートに連絡" -#: templates/forms/deactivation/form.php:56 +#: templates/forms/deactivation/form.php:59 msgid "Anonymous feedback" msgstr "匿名のフィードバック" -#: templates/forms/deactivation/form.php:63 +#: templates/forms/deactivation/form.php:66 msgid "Deactivate" msgstr "無効化" -#: templates/forms/deactivation/form.php:65 +#: templates/forms/deactivation/form.php:68 msgid "Activate %s" msgstr "%sを有効化する" -#: templates/forms/deactivation/form.php:76 -msgid "Quick feedback" -msgstr "クイックフィードバック" - #: templates/forms/deactivation/form.php:80 +msgid "Quick Feedback" +msgstr "Quick Feedback" + +#: templates/forms/deactivation/form.php:84 msgid "If you have a moment, please let us know why you are %s" msgstr "お時間があれば、なぜ%sするのか理由を教えてください。" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "deactivating" msgstr "無効化中" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "switching" msgstr "変更中" -#: templates/forms/deactivation/form.php:269 +#: templates/forms/deactivation/form.php:332 msgid "Submit & %s" msgstr "送信と%s" -#: templates/forms/deactivation/form.php:290 +#: templates/forms/deactivation/form.php:353 msgid "Kindly tell us the reason so we can improve." msgstr "改善できるよう、どうか理由を教えてください。" -#: templates/forms/deactivation/form.php:411 +#: templates/forms/deactivation/form.php:478 msgid "Yes - %s" msgstr "はい" -#: templates/forms/deactivation/form.php:418 +#: templates/forms/deactivation/form.php:485 msgid "Skip & %s" msgstr "スキップと%s" diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-nl_NL.mo b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-nl_NL.mo index c18f59eec08da3c44b47fe9fa7e8a35ceba6f213..d55b8c23998a1f52b364f5649c9a6d32ec5c14ca 100644 GIT binary patch delta 13274 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 OYEfo>O6ug>M+*S8Mir3& delta 10070 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 diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-nl_NL.po b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-nl_NL.po index bb848094a..9cbd24292 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-nl_NL.po +++ b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-nl_NL.po @@ -1,13 +1,14 @@ -# Copyright (C) 2018 freemius +# Copyright (C) 2019 freemius # This file is distributed under the same license as the freemius package. # Translators: # Benny Vluggen <benny@prodevign.com>, 2017-2018 +# Patrick Buntsma <info@stonehengecreations.nl>, 2018 msgid "" msgstr "" "Project-Id-Version: WordPress SDK\n" "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-05-24 16:14+0000\n" +"PO-Revision-Date: 2018-11-26 14:12+0000\n" "Last-Translator: Benny Vluggen <benny@prodevign.com>\n" "Language: nl_NL\n" "Language-Team: Dutch (Netherlands) (http://www.transifex.com/freemius/wordpress-sdk/language/nl_NL/)\n" @@ -21,1294 +22,1391 @@ msgstr "" "X-Poedit-SearchPathExcluded-0: *.js\n" "X-Poedit-SourceCharset: UTF-8\n" -#: includes/class-freemius.php:1551 +#: includes/class-freemius.php:1688 msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "Freemius SDK kon het hoofdbestand van de plug-in niet vinden. Neem a.j.b. contact op met sdk@freemius.com m.b.t. deze fout." -#: includes/class-freemius.php:1553 +#: includes/class-freemius.php:1690 msgid "Error" msgstr "Fout" -#: includes/class-freemius.php:1871 +#: includes/class-freemius.php:2011 msgid "I found a better %s" msgstr "Ik vond een beter %s" -#: includes/class-freemius.php:1873 +#: includes/class-freemius.php:2013 msgid "What's the %s's name?" msgstr "Wat is de naam van het %s?" -#: includes/class-freemius.php:1879 +#: includes/class-freemius.php:2019 msgid "It's a temporary %s. I'm just debugging an issue." msgstr "Het betreft een tijdelijke %s. Ik ben een probleem aan het debuggen." -#: includes/class-freemius.php:1881 +#: includes/class-freemius.php:2021 msgid "Deactivation" msgstr "Deactivatie" -#: includes/class-freemius.php:1882 +#: includes/class-freemius.php:2022 msgid "Theme Switch" msgstr "Thema Wissel" -#: includes/class-freemius.php1891, templates/forms/resend-key.php:24 +#: includes/class-freemius.php2031, templates/forms/resend-key.php:24 msgid "Other" msgstr "Overige" -#: includes/class-freemius.php:1899 +#: includes/class-freemius.php:2039 msgid "I no longer need the %s" msgstr "Ik heb de %s niet meer nodig " -#: includes/class-freemius.php:1906 +#: includes/class-freemius.php:2046 msgid "I only needed the %s for a short period" msgstr "Ik had de %s alleen nodig voor een korte periode." -#: includes/class-freemius.php:1912 +#: includes/class-freemius.php:2052 msgid "The %s broke my site" msgstr "De %s maakte mijn site onbruikbaar" -#: includes/class-freemius.php:1919 +#: includes/class-freemius.php:2059 msgid "The %s suddenly stopped working" msgstr "De %s werkte opeens niet meer" -#: includes/class-freemius.php:1929 +#: includes/class-freemius.php:2069 msgid "I can't pay for it anymore" msgstr "Ik kan er niet langer meer voor betalen" -#: includes/class-freemius.php:1931 +#: includes/class-freemius.php:2071 msgid "What price would you feel comfortable paying?" msgstr "Welke bedrag zou je ervoor over hebben?" -#: includes/class-freemius.php:1937 +#: includes/class-freemius.php:2077 msgid "I don't like to share my information with you" msgstr "Ik vind het niet prettig om mijn informatie met jullie te delen" -#: includes/class-freemius.php:1958 +#: includes/class-freemius.php:2098 msgid "The %s didn't work" msgstr "De %s werkte niet" -#: includes/class-freemius.php:1968 +#: includes/class-freemius.php:2108 msgid "I couldn't understand how to make it work" msgstr "Ik snapte niet hoe ik het aan het werk kon krijgen." -#: includes/class-freemius.php:1976 +#: includes/class-freemius.php:2116 msgid "The %s is great, but I need specific feature that you don't support" msgstr "De %s is uitstekend, maar ik heb een specifieke feature nodig die jullie niet ondersteunen" -#: includes/class-freemius.php:1978 +#: includes/class-freemius.php:2118 msgid "What feature?" msgstr "Welke feature?" -#: includes/class-freemius.php:1982 +#: includes/class-freemius.php:2122 msgid "The %s is not working" msgstr "De %s werkt niet" -#: includes/class-freemius.php:1984 +#: includes/class-freemius.php:2124 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "Wil je alsjeblieft zo vriendelijk zijn om te delen wat niet werkte, zodat we dat kunnen verbeteren voor toekomstige gebruikers ..." -#: includes/class-freemius.php:1988 +#: includes/class-freemius.php:2128 msgid "It's not what I was looking for" msgstr "Het is niet waarna ik opzoek was" -#: includes/class-freemius.php:1990 +#: includes/class-freemius.php:2130 msgid "What you've been looking for?" msgstr "Waar was je naar op zoek?" -#: includes/class-freemius.php:1994 +#: includes/class-freemius.php:2134 msgid "The %s didn't work as expected" msgstr "De %s werkte niet zoals verwacht" -#: includes/class-freemius.php:1996 +#: includes/class-freemius.php:2136 msgid "What did you expect?" msgstr "Wat had je verwacht?" -#: includes/class-freemius.php2729, templates/debug.php:20 +#: includes/class-freemius.php2942, templates/debug.php:20 msgid "Freemius Debug" msgstr "Freemius Debug" -#: includes/class-freemius.php:3402 +#: includes/class-freemius.php:3670 msgid "I don't know what is cURL or how to install it, help me!" msgstr "Ik weet niet wat cURL is of hoe dat te installeren is, help me!" -#: includes/class-freemius.php:3404 +#: includes/class-freemius.php:3672 msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." msgstr "We doen onze best om contact op te nemen met uw hostingbedrijf om het probleem op te lossen. We sturen een vervolgmail naar %s, zodra we een update hebben. " -#: includes/class-freemius.php:3411 +#: includes/class-freemius.php:3679 msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." msgstr "Mooi, installeer alsjeblieft cURL en activeer het in je php.ini bestand. Tevens, zoek naar de 'disable_functions' directive in je php.ini bestand en verwijder iedere methode die start met 'curl_'. Gebruik 'phpinfo()' om je ervan te vergewissen dat het nu succesvol geactiveerd is. Als actief, deactiveer de %s en heractiveer deze opnieuw." -#: includes/class-freemius.php:3516 +#: includes/class-freemius.php:3784 msgid "Yes - do your thing" msgstr "Ja, ga je gang" -#: includes/class-freemius.php:3521 +#: includes/class-freemius.php:3789 msgid "No - just deactivate" msgstr "Nee - alleen deactiveren" -#: includes/class-freemius.php3566, includes/class-freemius.php4066, -#: includes/class-freemius.php5127, includes/class-freemius.php10941, -#: includes/class-freemius.php14205, includes/class-freemius.php14257, -#: includes/class-freemius.php14319, includes/class-freemius.php16448, -#: includes/class-freemius.php16458, includes/class-freemius.php17014, -#: includes/class-freemius.php17032, includes/class-freemius.php17130, -#: includes/class-freemius.php17866, templates/add-ons.php:43 +#: includes/class-freemius.php3834, includes/class-freemius.php4343, +#: includes/class-freemius.php5442, includes/class-freemius.php11545, +#: includes/class-freemius.php14916, includes/class-freemius.php14968, +#: includes/class-freemius.php15030, includes/class-freemius.php17263, +#: includes/class-freemius.php17273, includes/class-freemius.php17882, +#: includes/class-freemius.php18742, includes/class-freemius.php18857, +#: includes/class-freemius.php19001, templates/add-ons.php:43 msgctxt "exclamation" msgid "Oops" msgstr "Oeps" -#: includes/class-freemius.php:3635 +#: includes/class-freemius.php:3903 msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." msgstr "Bedankt dat je ons in de gelegenheid stelt dit op te lossen. Zojuist is er een bericht verstuurd naar onze technische staf. We laten wat van ons horen, aan %s, als we een update hebben. Bedankt voor je geduld." -#: includes/class-freemius.php:4063 +#: includes/class-freemius.php:4340 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "%s werkt niet zonder %s." -#: includes/class-freemius.php:4064 +#: includes/class-freemius.php:4341 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "%s werkt niet zonder de plug-in." -#: includes/class-freemius.php4176, includes/class-freemius.php4201, -#: includes/class-freemius.php:17103 +#: includes/class-freemius.php4487, includes/class-freemius.php4512, +#: includes/class-freemius.php:17953 msgid "Unexpected API error. Please contact the %s's author with the following error." msgstr "Onverwachte API fout. Neem alsjeblieft contact op met de auteur van de %s met de volgende foutmelding." -#: includes/class-freemius.php:4815 +#: includes/class-freemius.php:5130 msgid "Premium %s version was successfully activated." msgstr "Premium %s versie is succesvol geactiveerd." -#: includes/class-freemius.php4827, includes/class-freemius.php:6660 +#: includes/class-freemius.php5142, includes/class-freemius.php:7004 msgctxt "" msgid "W00t" msgstr "W00t" -#: includes/class-freemius.php:4842 +#: includes/class-freemius.php:5157 msgid "You have a %s license." msgstr "Je hebt een %s licentie" -#: includes/class-freemius.php4846, includes/class-freemius.php13626, -#: includes/class-freemius.php13637, includes/class-freemius.php16376, -#: includes/class-freemius.php16676, includes/class-freemius.php16741, -#: includes/class-freemius.php:16891 +#: includes/class-freemius.php5161, includes/class-freemius.php14337, +#: includes/class-freemius.php14348, includes/class-freemius.php17177, +#: includes/class-freemius.php17491, includes/class-freemius.php17557, +#: includes/class-freemius.php:17707 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "Hoera" -#: includes/class-freemius.php:5110 +#: includes/class-freemius.php:5425 msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." msgstr "%s gratis proefperiode werd succesvol stop gezet. Daar de add-on alleen als premium versie beschikbaar is werd deze automatisch gedeactiveerd. Als u de add-on in de toekomst wilt gebruiken dient u een licentie aan te schaffen." -#: includes/class-freemius.php:5114 +#: includes/class-freemius.php:5429 msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "%s is uitsluitend beschikbaar als een premium add-on. Je moet een licentie kopen voordat je de plug-in activeert." -#: includes/class-freemius.php5123, templates/add-ons.php99, -#: templates/account/partials/addon.php:283 +#: includes/class-freemius.php5438, templates/add-ons.php103, +#: templates/account/partials/addon.php:288 msgid "More information about %s" msgstr "Meer informatie over %s" -#: includes/class-freemius.php:5124 +#: includes/class-freemius.php:5439 msgid "Purchase License" msgstr "Licentie Kopen" -#: includes/class-freemius.php6035, templates/connect.php:161 +#: includes/class-freemius.php6372, templates/connect.php:163 msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." msgstr "Als het goed is ontvang je een activatie e-mail voor %s in je %s mailbox. Zorg er alsjeblieft voor dat je op de activatie knop klikt in die e-mail aan %s." -#: includes/class-freemius.php:6039 +#: includes/class-freemius.php:6376 msgid "start the trial" msgstr "start de proefperiode" -#: includes/class-freemius.php6040, templates/connect.php:165 +#: includes/class-freemius.php6377, templates/connect.php:167 msgid "complete the install" msgstr "voltooi de installatie" -#: includes/class-freemius.php:6147 +#: includes/class-freemius.php:6490 msgid "You are just one step away - %s" msgstr "Je bent slechts een stap verwijderd - %s" -#: includes/class-freemius.php:6150 +#: includes/class-freemius.php:6493 msgctxt "%s - plugin name. As complete \"PluginX\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "Voltooi \"%s\" Activatie Nu" -#: includes/class-freemius.php:6227 +#: includes/class-freemius.php:6571 msgid "We made a few tweaks to the %s, %s" msgstr "We hebben een aantal aanpassingen gedaan op de %s, %s " -#: includes/class-freemius.php:6231 -msgid "Opt in to make \"%s\" Better!" +#: includes/class-freemius.php:6575 +msgid "Opt in to make \"%s\" better!" msgstr "Opt-in om \"%s\" te verbeteren!" -#: includes/class-freemius.php:6659 +#: includes/class-freemius.php:7003 msgid "The upgrade of %s was successfully completed." msgstr "De upgrade van %s is succesvol voltooid." -#: includes/class-freemius.php8384, includes/class-fs-plugin-updater.php581, -#: includes/class-fs-plugin-updater.php733, -#: includes/class-fs-plugin-updater.php739, templates/auto-installation.php:32 +#: includes/class-freemius.php8925, includes/class-fs-plugin-updater.php886, +#: includes/class-fs-plugin-updater.php1081, +#: includes/class-fs-plugin-updater.php1088, +#: templates/auto-installation.php:32 msgid "Add-On" msgstr "Uitbreiding" -#: includes/class-freemius.php8386, templates/debug.php349, -#: templates/debug.php:510 +#: includes/class-freemius.php8927, templates/debug.php359, +#: templates/debug.php:520 msgid "Plugin" msgstr "Plug-in" -#: includes/class-freemius.php8387, templates/debug.php349, -#: templates/debug.php510, templates/forms/deactivation/form.php:64 +#: includes/class-freemius.php8928, templates/debug.php359, +#: templates/debug.php520, templates/forms/deactivation/form.php:67 msgid "Theme" msgstr "Thema" -#: includes/class-freemius.php:10808 -msgid "invalid_site_details_collection" -msgstr "ongeldige_site_details_verzameling" +#: includes/class-freemius.php:11412 +msgid "Invalid site details collection." +msgstr "Ongeldige verzameling van Site Details." -#: includes/class-freemius.php:10928 +#: includes/class-freemius.php:11532 msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "We konden je e-mailadres niet vinden in het systeem, ben je zeker dat dat het juiste adres is?" -#: includes/class-freemius.php:10930 +#: includes/class-freemius.php:11534 msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "Er is geen actieve licentie gekoppeld aan dat e-mailadres, ben je zeker dat dat het juiste adres is?" -#: includes/class-freemius.php:11166 +#: includes/class-freemius.php:11808 msgid "Account is pending activation." msgstr "Account wacht op activatie." -#: includes/class-freemius.php:13608 +#: includes/class-freemius.php11920, +#: templates/forms/premium-versions-upgrade-handler.php:47 +msgid "Buy a license now" +msgstr "Koop nu een licentie" + +#: includes/class-freemius.php11932, +#: templates/forms/premium-versions-upgrade-handler.php:46 +msgid "Renew your license now" +msgstr "Vernieuw je licentie nu" + +#: includes/class-freemius.php:11936 +msgid "%s to access version %s security & feature updates, and support." +msgstr "%svoor toegang tot versie %s beveiliging en feature updates en support." + +#: includes/class-freemius.php:14319 msgid "%s activation was successfully completed." msgstr "%s activatie is succesvol voltooid." -#: includes/class-freemius.php:13622 +#: includes/class-freemius.php:14333 msgid "Your account was successfully activated with the %s plan." msgstr "Je account is succesvol geactiveerd met het %s plan." -#: includes/class-freemius.php13633, includes/class-freemius.php:16737 +#: includes/class-freemius.php14344, includes/class-freemius.php:17553 msgid "Your trial has been successfully started." msgstr "U proefperiode is met succes gestart." -#: includes/class-freemius.php14203, includes/class-freemius.php14255, -#: includes/class-freemius.php:14317 +#: includes/class-freemius.php14914, includes/class-freemius.php14966, +#: includes/class-freemius.php:15028 msgid "Couldn't activate %s." msgstr "Kon %s niet activeren." -#: includes/class-freemius.php14204, includes/class-freemius.php14256, -#: includes/class-freemius.php:14318 +#: includes/class-freemius.php14915, includes/class-freemius.php14967, +#: includes/class-freemius.php:15029 msgid "Please contact us with the following message:" msgstr "Neem a.u.b. contact met ons op met het volgende bericht:" -#: includes/class-freemius.php14666, includes/class-freemius.php:18929 +#: includes/class-freemius.php15378, includes/class-freemius.php:19839 msgid "Upgrade" msgstr "Upgrade" -#: includes/class-freemius.php:14672 +#: includes/class-freemius.php:15384 msgid "Start Trial" msgstr "Start Proefperiode" -#: includes/class-freemius.php:14674 +#: includes/class-freemius.php:15386 msgid "Pricing" msgstr "Prijzen" -#: includes/class-freemius.php14734, includes/class-freemius.php:14736 +#: includes/class-freemius.php15448, includes/class-freemius.php:15450 msgid "Affiliation" msgstr "Affiliatie" -#: includes/class-freemius.php14756, includes/class-freemius.php14758, -#: templates/account.php146, templates/debug.php:314 +#: includes/class-freemius.php15478, includes/class-freemius.php15480, +#: templates/account.php150, templates/debug.php:324 msgid "Account" msgstr "Account" -#: includes/class-freemius.php14769, includes/class-freemius.php14771, +#: includes/class-freemius.php15493, includes/class-freemius.php15495, #: includes/customizer/class-fs-customizer-support-section.php:60 msgid "Contact Us" msgstr "Contacteer Ons" -#: includes/class-freemius.php14781, includes/class-freemius.php14783, -#: includes/class-freemius.php18939, templates/account.php96, -#: templates/account/partials/addon.php:37 +#: includes/class-freemius.php15505, includes/class-freemius.php15507, +#: includes/class-freemius.php19849, templates/account.php100, +#: templates/account/partials/addon.php:41 msgid "Add-Ons" msgstr "Uitbreidingen" -#: includes/class-freemius.php14815, templates/pricing.php:97 +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow left icon" +msgid "←" +msgstr "←" + +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow right icon" +msgid "➤" +msgstr "➤" + +#: includes/class-freemius.php15543, templates/pricing.php:97 msgctxt "noun" msgid "Pricing" msgstr "Prijzen" -#: includes/class-freemius.php15009, +#: includes/class-freemius.php15756, #: includes/customizer/class-fs-customizer-support-section.php:67 msgid "Support Forum" msgstr "Supportforum" -#: includes/class-freemius.php:15794 +#: includes/class-freemius.php:16542 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "Je e-mail werd succesvol geverifieerd - je bent GEWELDIG!" -#: includes/class-freemius.php:15795 +#: includes/class-freemius.php:16543 msgctxt "a positive response" msgid "Right on" msgstr "Toppie" -#: includes/class-freemius.php:16367 +#: includes/class-freemius.php:17168 msgid "Your %s Add-on plan was successfully upgraded." msgstr "Uw %sAdd-on plan werd succesvol geüpgraded. " -#: includes/class-freemius.php:16369 +#: includes/class-freemius.php:17170 msgid "%s Add-on was successfully purchased." msgstr "%s Add-on werd succesvol aangekocht." -#: includes/class-freemius.php:16372 +#: includes/class-freemius.php:17173 msgid "Download the latest version" msgstr "Download de meeste recente versie" -#: includes/class-freemius.php:16444 +#: includes/class-freemius.php:17259 msgctxt "%1s - plugin title, %2s - API domain" msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" msgstr "Je server blokkeert de toegang tot de Freemius API, welke cruciaal is voor %1s synchronisatie. Neem alsjeblieft contact op met je host om %2s te whitelisten." -#: includes/class-freemius.php16447, includes/class-freemius.php16862, -#: includes/class-freemius.php:16927 +#: includes/class-freemius.php17262, includes/class-freemius.php17678, +#: includes/class-freemius.php:17755 msgid "Error received from the server:" msgstr "Foutmelding ontvangen van de server:" -#: includes/class-freemius.php:16457 +#: includes/class-freemius.php:17272 msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "Het lijkt erop dat een van de authenticatie parameters niet klopt. Update je Publieke Sleutel, Geheime Sleutel & Gebruikers ID en probeer het nogmaals. " -#: includes/class-freemius.php16639, includes/class-freemius.php16867, -#: includes/class-freemius.php:16910 +#: includes/class-freemius.php17454, includes/class-freemius.php17683, +#: includes/class-freemius.php17726, includes/class-freemius.php:17829 msgctxt "" msgid "Hmm" msgstr "Hmm" -#: includes/class-freemius.php:16652 +#: includes/class-freemius.php:17467 msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." msgstr "Het lijkt erop dat u nog steeds op het %s plan zit. Als u uw plan geüpgraded of veranderd heeft, dan is het waarschijnlijk een fout aan onze kant - sorry." -#: includes/class-freemius.php16653, templates/account.php98, -#: templates/add-ons.php130, templates/account/partials/addon.php:39 +#: includes/class-freemius.php17468, templates/account.php102, +#: templates/add-ons.php134, templates/account/partials/addon.php:43 msgctxt "trial period" msgid "Trial" msgstr "Proefperiode" -#: includes/class-freemius.php:16658 +#: includes/class-freemius.php:17473 msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "Ik heb mijn account geüpgraded maar als ik probeer te Synchroniseren blijft het plan %s." -#: includes/class-freemius.php16662, includes/class-freemius.php:16719 +#: includes/class-freemius.php17477, includes/class-freemius.php:17535 msgid "Please contact us here" msgstr "Neem hier a.u.b. contact met ons op" -#: includes/class-freemius.php:16672 +#: includes/class-freemius.php:17487 msgid "Your plan was successfully upgraded." msgstr "Je plan is succesvol geüpgraded." -#: includes/class-freemius.php:16689 +#: includes/class-freemius.php:17505 msgid "Your plan was successfully changed to %s." msgstr "Je plan is succesvol veranderd naar %s." -#: includes/class-freemius.php:16705 +#: includes/class-freemius.php:17521 msgid "Your license has expired. You can still continue using the free %s forever." msgstr "Je licentie is verlopen. Je kan echter de gratis %s voor altijd blijven gebruiken." -#: includes/class-freemius.php:16707 +#: includes/class-freemius.php:17523 msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "Je licentie is verlopen. %1$sUpgrade nu%2$s om de %3$s zonder interrupties te blijven gebruiken." -#: includes/class-freemius.php:16715 +#: includes/class-freemius.php:17531 msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "Je licentie is geannuleerd. Als je denkt dat dat een fout is, neem dan alsjeblieft contact op met support." -#: includes/class-freemius.php:16728 +#: includes/class-freemius.php:17544 msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." msgstr "Je licentie is verlopen. Je kan nog steeds alle %s features gebruiken, maar je zal je licentie moeten vernieuwen om weer updates en support te ontvangen." -#: includes/class-freemius.php:16751 +#: includes/class-freemius.php:17567 msgid "Your free trial has expired. You can still continue using all our free features." msgstr "Je gratis proefperiode is verlopen. Je kan nog steeds al onze gratis features blijven gebruiken." -#: includes/class-freemius.php:16753 +#: includes/class-freemius.php:17569 msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "Je gratis proefperiode is verlopen. %1$sUpgrade nu%2$som de %3$s zonder interrupties te blijven gebruiken. " -#: includes/class-freemius.php:16858 +#: includes/class-freemius.php:17674 msgid "It looks like the license could not be activated." msgstr "Het lijkt erop dat de licentie niet geactiveerd kon worden." -#: includes/class-freemius.php:16888 +#: includes/class-freemius.php:17704 msgid "Your license was successfully activated." msgstr "Je licentie is succesvol geactiveerd." -#: includes/class-freemius.php:16914 +#: includes/class-freemius.php:17730 msgid "It looks like your site currently doesn't have an active license." msgstr "Het lijkt erop dat je site momenteel geen actieve licentie heeft." -#: includes/class-freemius.php:16926 +#: includes/class-freemius.php:17754 msgid "It looks like the license deactivation failed." msgstr "Het lijkt erop dat het deactiveren van je licentie mislukt is." -#: includes/class-freemius.php:16954 +#: includes/class-freemius.php:17782 msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "Je licentie is succesvol gedeactiveerd, je bent terug op het %s plan." -#: includes/class-freemius.php:16955 +#: includes/class-freemius.php:17783 msgid "O.K" msgstr "Oké" -#: includes/class-freemius.php:17003 -msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." -msgstr "Je plan werd succesvol gedowngraded. Je %s plan licentie zal verlopen binnen %s." +#: includes/class-freemius.php:17836 +msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." +msgstr "Het lijkt erop, dat we een tijdelijk probleem hebben met het annuleren van je abonnement. Probeer het alsjeblieft over een paar minuten nog eens." -#: includes/class-freemius.php:17013 -msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." -msgstr "Het lijkt er op dat we een tijdelijk probleem hebben om je plan te downgraden. Probeer het alsjeblieft nogmaals over enkele minuten." +#: includes/class-freemius.php:17845 +msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s." +msgstr "Je abonnement is succesvol geannuleerd. De licentie van je %s-plan al over %s aflopen." -#: includes/class-freemius.php:17037 +#: includes/class-freemius.php:17887 msgid "You are already running the %s in a trial mode." -msgstr "Je voert de %s reeds uit in proefmodus" +msgstr "Je draait de %s al in proefmodus." -#: includes/class-freemius.php:17048 +#: includes/class-freemius.php:17898 msgid "You already utilized a trial before." msgstr "U heeft reeds een proefperiode gebruikt." -#: includes/class-freemius.php:17062 +#: includes/class-freemius.php:17912 msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "Plan %s bestaat niet, daarom kan proefperiode niet gestart worden." -#: includes/class-freemius.php:17073 +#: includes/class-freemius.php:17923 msgid "Plan %s does not support a trial period." msgstr "Plan %s ondersteunt geen proefperiode." -#: includes/class-freemius.php:17084 +#: includes/class-freemius.php:17934 msgid "None of the %s's plans supports a trial period." msgstr "Geen van de %s plannen ondersteunt een proefperiode." -#: includes/class-freemius.php:17134 +#: includes/class-freemius.php:17984 msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "Het lijkt er op dat u niet langer meer in de proefperiode zit, dus er valt niets stop te zetten." -#: includes/class-freemius.php:17185 -msgid "Your %s free trial was successfully cancelled." -msgstr "Uw gratis %s proefperiode is succesvol opgezegd. " - -#: includes/class-freemius.php:17190 +#: includes/class-freemius.php:18020 msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "Het lijkt er op dat we een tijdelijk probleem hebben met het opzeggen van uw proefperiode. Probeer het a.u.b. over enkele minuten nog eens." -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18039 +msgid "Your %s free trial was successfully cancelled." +msgstr "Uw gratis %s proefperiode is succesvol opgezegd. " + +#: includes/class-freemius.php:18346 msgid "Version %s was released." msgstr "Versie %s is vrijgegeven." -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18346 msgid "Please download %s." msgstr "A.u.b. %s downloaden." -#: includes/class-freemius.php:17481 +#: includes/class-freemius.php:18353 msgid "the latest %s version here" msgstr "de meest recente %s versie hier" -#: includes/class-freemius.php:17486 +#: includes/class-freemius.php:18358 msgid "New" msgstr "Nieuw" -#: includes/class-freemius.php:17491 +#: includes/class-freemius.php:18363 msgid "Seems like you got the latest release." msgstr "Het lijkt erop dat je de meest recente versie hebt." -#: includes/class-freemius.php:17492 +#: includes/class-freemius.php:18364 msgid "You are all good!" msgstr "Alles is goed!" -#: includes/class-freemius.php:17758 +#: includes/class-freemius.php:18632 msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "Verificatiemail zojuist verstuurd naar %s. Als je deze niet binnen 5 min. hebt ontvangen, kijk dan alsjeblieft in je spambox." -#: includes/class-freemius.php:17893 +#: includes/class-freemius.php:18769 msgid "Site successfully opted in." msgstr "Site opt-in geslaagd. " -#: includes/class-freemius.php17894, includes/class-freemius.php:18671 +#: includes/class-freemius.php18770, includes/class-freemius.php:19581 msgid "Awesome" msgstr "Geweldig" -#: includes/class-freemius.php17910, templates/forms/optout.php:32 +#: includes/class-freemius.php18786, templates/forms/optout.php:32 msgid "We appreciate your help in making the %s better by letting us track some usage data." msgstr "We waarderen je hulp om %s beter te maken door ons gebruiksdata te laten verzamelen. " -#: includes/class-freemius.php:17911 +#: includes/class-freemius.php:18787 msgid "Thank you!" msgstr "Bedankt!" -#: includes/class-freemius.php:17918 +#: includes/class-freemius.php:18794 msgid "We will no longer be sending any usage data of %s on %s to %s." msgstr "We zullen geen gebruiksdata meer verzenden van %s m.b.t. %s naar %s." -#: includes/class-freemius.php:18033 +#: includes/class-freemius.php:18923 msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." msgstr "Hou alsjeblieft je mailbox in de gaten, je zult een e-mail ontvangen via %s om de overdracht te bevestigen. Vanwege veiligheidsredenen moet je de overdracht binnen de volgende 15 min. bevestigen. Kijk eventueel in je spambox, mocht je de e-mail niet aantreffen in je inbox." -#: includes/class-freemius.php:18039 +#: includes/class-freemius.php:18929 msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "Bedankt voor het bevestigen van de eigendomsoverdracht. Zojuist is er een e-mail verstuurd naar %s voor de definitieve goedkeuring. " -#: includes/class-freemius.php:18044 +#: includes/class-freemius.php:18934 msgid "%s is the new owner of the account." msgstr "%s is de nieuwe eigenaar van het account." -#: includes/class-freemius.php:18046 +#: includes/class-freemius.php:18936 msgctxt "as congratulations" msgid "Congrats" msgstr "Gefeliciteerd" -#: includes/class-freemius.php:18066 +#: includes/class-freemius.php:18956 msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "Sorry, we konden de e-mail update niet voltooien. Een andere gebruiker met hetzelfde e-mailadres is reeds geregistreerd." -#: includes/class-freemius.php:18067 +#: includes/class-freemius.php:18957 msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." -msgstr "Als u het eigendom van het %s account wilt overdragen aan %s klik dan op de Eigendom Overdragen knop. " +msgstr "Als je het eigendom van het %s account wilt overdragen aan %s, klik dan op de Eigendom Overdragen knop. " -#: includes/class-freemius.php:18074 +#: includes/class-freemius.php:18964 msgid "Change Ownership" msgstr "Eigendom Overdragen" -#: includes/class-freemius.php:18082 +#: includes/class-freemius.php:18972 msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." msgstr "Je e-mailadres is succesvol verwerkt. Als het goed is ontvang je zometeen een e-mail met bevestigingsinstructies. " -#: includes/class-freemius.php:18094 +#: includes/class-freemius.php:18984 msgid "Please provide your full name." msgstr "Geef alsjeblieft je volledige naam." -#: includes/class-freemius.php:18099 +#: includes/class-freemius.php:18989 msgid "Your name was successfully updated." msgstr "Je naam is succesvol bijgewerkt." -#: includes/class-freemius.php:18160 +#: includes/class-freemius.php:19050 msgid "You have successfully updated your %s." msgstr "Je hebt je %s succesvol geüpdatet." -#: includes/class-freemius.php:18300 +#: includes/class-freemius.php:19190 msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "Voor alle duidelijkheid, de add-ons informatie van %s wordt opgehaald van een externe server." -#: includes/class-freemius.php:18301 +#: includes/class-freemius.php:19191 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "Aankondiging" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgctxt "exclamation" msgid "Hey" msgstr "Hoi" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "Hoe bevalt %s tot dusver? Test al onze %s premium features gedurende een%d-daagse gratis proefperiode." -#: includes/class-freemius.php:18719 +#: includes/class-freemius.php:19629 msgid "No commitment for %s days - cancel anytime!" msgstr "Geen verplichting voor %s dagen - elk moment opzeggen!" -#: includes/class-freemius.php:18720 +#: includes/class-freemius.php:19630 msgid "No credit card required" msgstr "Geen creditcard nodig" -#: includes/class-freemius.php18727, templates/forms/trial-start.php:53 +#: includes/class-freemius.php19637, templates/forms/trial-start.php:53 msgctxt "call to action" msgid "Start free trial" msgstr "Start gratis proefperidoe" -#: includes/class-freemius.php:18804 +#: includes/class-freemius.php:19714 msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" -msgstr "Hey, wist je dat %s een affiliate programma heeft? Als je de %s goed vindt dan kan je onze ambassadeur worden en wat cash verdienen!" +msgstr "Hey, wist je dat %s een samenwerkingsprogramma heeft? Als je de %s goedvindt, kun je onze ambassadeur worden en wat geld verdienen!" -#: includes/class-freemius.php:18813 +#: includes/class-freemius.php:19723 msgid "Learn more" msgstr "Lees meer" -#: includes/class-freemius.php18963, templates/account.php394, -#: templates/account.php497, templates/connect.php169, -#: templates/connect.php408, templates/forms/license-activation.php24, -#: templates/account/partials/addon.php:230 +#: includes/class-freemius.php19873, templates/account.php406, +#: templates/account.php509, templates/connect.php171, +#: templates/connect.php421, templates/forms/license-activation.php24, +#: templates/account/partials/addon.php:235 msgid "Activate License" msgstr "Activeer Licentie" -#: includes/class-freemius.php18964, templates/account.php457, -#: templates/account.php496, templates/account/partials/site.php:256 +#: includes/class-freemius.php19874, templates/account.php469, +#: templates/account.php508, templates/account/partials/site.php:256 msgid "Change License" msgstr "Verander Licentie" -#: includes/class-freemius.php19046, templates/account/partials/site.php:161 +#: includes/class-freemius.php19956, templates/account/partials/site.php:161 msgid "Opt Out" msgstr "Opt Out" -#: includes/class-freemius.php19048, includes/class-freemius.php19053, +#: includes/class-freemius.php19958, includes/class-freemius.php19963, #: templates/account/partials/site.php43, #: templates/account/partials/site.php:161 msgid "Opt In" msgstr "Opt In" -#: includes/class-freemius.php:19245 +#: includes/class-freemius.php:20187 +msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" +msgstr "De betaalde versie van%1s is reeds geïnstalleerd. Activeer deze alsjeblieft om te kunnen profiteren van de %2s features. %3s " + +#: includes/class-freemius.php:20195 +msgid "Activate %s features" +msgstr "Activeer %s features." + +#: includes/class-freemius.php:20208 msgid "Please follow these steps to complete the upgrade" msgstr "Volg alsjeblieft deze stappen om de upgrade te voltooien" -#: includes/class-freemius.php:19249 +#: includes/class-freemius.php:20212 msgid "Download the latest %s version" msgstr "Download de meeste recente %s versie" -#: includes/class-freemius.php:19253 +#: includes/class-freemius.php:20216 msgid "Upload and activate the downloaded version" msgstr "Upload en activeer de gedownloade versie" -#: includes/class-freemius.php:19255 +#: includes/class-freemius.php:20218 msgid "How to upload and activate?" msgstr "Hoe te uploaden en activeren?" -#: includes/class-freemius.php:19384 +#: includes/class-freemius.php:20352 msgid "%sClick here%s to choose the sites where you'd like to activate the license on." -msgstr "%sKlik hier%s om de sites te kiezen waar op je de licentie wil activeren." +msgstr "%sKlik hier%s om de sites te kiezen waar op je de licentie wilt activeren." -#: includes/class-freemius.php:19545 +#: includes/class-freemius.php:20513 msgid "Auto installation only works for opted-in users." msgstr "Automatische installatie werkt alleen voor opted-in gebruikers." -#: includes/class-freemius.php19555, includes/class-freemius.php19588, -#: includes/class-fs-plugin-updater.php713, -#: includes/class-fs-plugin-updater.php:727 +#: includes/class-freemius.php20523, includes/class-freemius.php20556, +#: includes/class-fs-plugin-updater.php1060, +#: includes/class-fs-plugin-updater.php:1074 msgid "Invalid module ID." msgstr "Ongeldige Module-ID" -#: includes/class-freemius.php19564, includes/class-fs-plugin-updater.php:747 +#: includes/class-freemius.php20532, includes/class-fs-plugin-updater.php:1096 msgid "Premium version already active." msgstr "Premium versie reeds actief." -#: includes/class-freemius.php:19571 +#: includes/class-freemius.php:20539 msgid "You do not have a valid license to access the premium version." msgstr "Je hebt geen geldige licentie voor de premium versie." -#: includes/class-freemius.php:19578 +#: includes/class-freemius.php:20546 msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." msgstr "Plug-in is 'Serviceware' wat betekent dat het geen premium code versie bevat. " -#: includes/class-freemius.php19596, includes/class-fs-plugin-updater.php:746 +#: includes/class-freemius.php20564, includes/class-fs-plugin-updater.php:1095 msgid "Premium add-on version already installed." msgstr "Premium add-on versie is reeds geïnstalleerd." -#: includes/class-freemius.php:19941 +#: includes/class-freemius.php:20909 msgid "View paid features" -msgstr "Bekijk betaalde features" +msgstr "Bekijk betaalde kenmerken" -#: includes/class-freemius.php:20251 +#: includes/class-freemius.php:21229 msgid "Thank you so much for using %s and its add-ons!" msgstr "Hartelijk bedankt voor het gebruik van %s en bijbehorende uitbreidingen!" -#: includes/class-freemius.php:20252 +#: includes/class-freemius.php:21230 msgid "Thank you so much for using %s!" msgstr "Hartelijk bedankt voor het gebruik van %s!" -#: includes/class-freemius.php:20258 +#: includes/class-freemius.php:21236 msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s." msgstr "Je hebt reeds ingestemd met onze gebruiks-tracking, wat ons helpt om %s te blijven verbeteren." -#: includes/class-freemius.php:20262 +#: includes/class-freemius.php:21240 msgid "Thank you so much for using our products!" msgstr "Hartelijk bedankt voor het gebruiken van onze producten!" -#: includes/class-freemius.php:20263 +#: includes/class-freemius.php:21241 msgid "You've already opted-in to our usage-tracking, which helps us keep improving them." msgstr "Je hebt reeds ingestemd met onze gebruiks-tracking, wat ons helpt om deze te blijven verbeteren." -#: includes/class-freemius.php:20282 +#: includes/class-freemius.php:21260 msgid "%s and its add-ons" msgstr "%sen bijbehorende uitbreidingen" -#: includes/class-freemius.php:20291 +#: includes/class-freemius.php:21269 msgid "Products" msgstr "Producten" -#: includes/class-freemius.php20298, templates/connect.php:259 +#: includes/class-freemius.php21276, templates/connect.php:272 msgid "Yes" msgstr "Ja" -#: includes/class-freemius.php20299, templates/connect.php:260 +#: includes/class-freemius.php21277, templates/connect.php:273 msgid "send me security & feature updates, educational content and offers." msgstr "stuur mij beveiliging & feature updates, educatieve content en aanbiedingen." -#: includes/class-freemius.php20300, templates/connect.php:265 +#: includes/class-freemius.php21278, templates/connect.php:278 msgid "No" msgstr "Nee" -#: includes/class-freemius.php20302, templates/connect.php:267 +#: includes/class-freemius.php21280, templates/connect.php:280 msgid "do %sNOT%s send me security & feature updates, educational content and offers." msgstr "stuur mij %sGEEN%s beveiliging & feature updates, educatieve content of aanbiedingen." -#: includes/class-freemius.php:20312 +#: includes/class-freemius.php:21290 msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" msgstr "Naar aanleiding van de nieuwe %sEU General Data Protection Regulation (GDPR) / Algemene verordening gegevensbescherming (AVG) %s regelgeving is het verplicht dat je je expliciete toestemming geeft, nogmaals, bevestigend dat je 'aan boord' bent 🙂" -#: includes/class-freemius.php20314, templates/connect.php:274 +#: includes/class-freemius.php21292, templates/connect.php:287 msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" msgstr "Laat ons alsjeblieft weten als je op de hoogte gehouden wilt worden van beveiliging & feature updates, educatieve content en zo nu en dan aanbiedingen:" -#: includes/class-freemius.php:20598 +#: includes/class-freemius.php:21574 msgid "License key is empty." msgstr "Licentiesleutel is leeg." #: includes/class-fs-plugin-updater.php184, -#: includes/class-fs-plugin-updater.php:219 -msgid "%sRenew your license now%s to access version %s security & feature updates, and support." -msgstr "%sVernieuw je licentie nu%s voor toegang tot versie %s beveiliging & feature updates en support." +#: templates/forms/premium-versions-upgrade-handler.php:57 +msgid "Renew license" +msgstr "Vernieuw licentie" + +#: includes/class-fs-plugin-updater.php189, +#: templates/forms/premium-versions-upgrade-handler.php:58 +msgid "Buy license" +msgstr "Koop licentie" + +#: includes/class-fs-plugin-updater.php:278 +msgid "There is a %s of %s available." +msgstr "Er is een %s van %s beschikbaar." + +#: includes/class-fs-plugin-updater.php:282 +msgid "new version" +msgstr "nieuwe versie" + +#: includes/class-fs-plugin-updater.php:305 +msgid "Important Upgrade Notice:" +msgstr "Belangrijke Upgrade Mededeling:" -#: includes/class-fs-plugin-updater.php:776 +#: includes/class-fs-plugin-updater.php:1125 msgid "Installing plugin: %s" msgstr "Installeren van plug-in: %s" -#: includes/class-fs-plugin-updater.php:817 +#: includes/class-fs-plugin-updater.php:1166 msgid "Unable to connect to the filesystem. Please confirm your credentials." msgstr "Toegang tot het bestandssysteem is niet mogelijk. Bevestig alsjeblieft je inloggegevens." -#: includes/class-fs-plugin-updater.php:923 +#: includes/class-fs-plugin-updater.php:1348 msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." msgstr "Het remote plug-in pakket bevat geen folder met de verwachte slug en hernoemen werkte niet. " -#: includes/fs-plugin-info-dialog.php336, -#: templates/account/partials/addon.php:287 +#: includes/fs-plugin-info-dialog.php369, +#: templates/account/partials/addon.php:292 msgctxt "verb" msgid "Purchase" msgstr "Koop" -#: includes/fs-plugin-info-dialog.php:339 +#: includes/fs-plugin-info-dialog.php:372 msgid "Start my free %s" msgstr "Start mijn gratis %s" -#: includes/fs-plugin-info-dialog.php:380 +#: includes/fs-plugin-info-dialog.php:413 msgid "Install Free Version Now" msgstr "Installer Gratis Versie Nu" -#: includes/fs-plugin-info-dialog.php381, templates/auto-installation.php111, -#: templates/account/partials/addon.php267, -#: templates/account/partials/addon.php:317 +#: includes/fs-plugin-info-dialog.php414, templates/auto-installation.php111, +#: templates/account/partials/addon.php272, +#: templates/account/partials/addon.php:322 msgid "Install Now" msgstr "Installeer Nu" -#: includes/fs-plugin-info-dialog.php:392 +#: includes/fs-plugin-info-dialog.php:425 msgctxt "as download latest version" msgid "Download Latest Free Version" msgstr "Download Nieuwste Gratis Versie" -#: includes/fs-plugin-info-dialog.php393, templates/account.php80, +#: includes/fs-plugin-info-dialog.php426, templates/account.php80, #: templates/account/partials/addon.php:21 msgctxt "as download latest version" msgid "Download Latest" msgstr "Download Nieuwste" -#: includes/fs-plugin-info-dialog.php:403 +#: includes/fs-plugin-info-dialog.php:436 msgid "Install Free Version Update Now" msgstr "Installeer Gratis Versie Update Nu" -#: includes/fs-plugin-info-dialog.php404, templates/account.php:448 +#: includes/fs-plugin-info-dialog.php437, templates/account.php:460 msgid "Install Update Now" msgstr "Installeer Update Nu" -#: includes/fs-plugin-info-dialog.php:415 +#: includes/fs-plugin-info-dialog.php:448 msgid "Newer Free Version (%s) Installed" msgstr "Nieuwere Gratis Versie (%s) Geïnstalleerd" -#: includes/fs-plugin-info-dialog.php:416 +#: includes/fs-plugin-info-dialog.php:449 msgid "Newer Version (%s) Installed" msgstr "Nieuwere Versie (%s) Geïnstalleerd" -#: includes/fs-plugin-info-dialog.php:424 +#: includes/fs-plugin-info-dialog.php:457 msgid "Latest Free Version Installed" msgstr "Nieuwste Gratis Versie Geïnstalleerd" -#: includes/fs-plugin-info-dialog.php:425 +#: includes/fs-plugin-info-dialog.php:458 msgid "Latest Version Installed" msgstr "Meest Recente Versie Geïnstalleerd" -#: includes/fs-plugin-info-dialog.php:580 +#: includes/fs-plugin-info-dialog.php:613 msgctxt "Plugin installer section title" msgid "Description" msgstr "Beschrijving" -#: includes/fs-plugin-info-dialog.php:581 +#: includes/fs-plugin-info-dialog.php:614 msgctxt "Plugin installer section title" msgid "Installation" msgstr "Installatie" -#: includes/fs-plugin-info-dialog.php:582 +#: includes/fs-plugin-info-dialog.php:615 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "Veelgestelde Vragen" -#: includes/fs-plugin-info-dialog.php583, +#: includes/fs-plugin-info-dialog.php616, #: templates/plugin-info/description.php:55 msgid "Screenshots" msgstr "Schermafbeeldingen" -#: includes/fs-plugin-info-dialog.php:584 +#: includes/fs-plugin-info-dialog.php:617 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "Wijzigingen Log" -#: includes/fs-plugin-info-dialog.php:585 +#: includes/fs-plugin-info-dialog.php:618 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "Reviews" -#: includes/fs-plugin-info-dialog.php:586 +#: includes/fs-plugin-info-dialog.php:619 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "Andere Notities" -#: includes/fs-plugin-info-dialog.php:601 +#: includes/fs-plugin-info-dialog.php:634 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "Features & Prijzen" -#: includes/fs-plugin-info-dialog.php:611 +#: includes/fs-plugin-info-dialog.php:644 msgid "Plugin Install" msgstr "Plug-in Installatie" -#: includes/fs-plugin-info-dialog.php:683 +#: includes/fs-plugin-info-dialog.php:716 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "%s Plan" -#: includes/fs-plugin-info-dialog.php:709 +#: includes/fs-plugin-info-dialog.php:742 msgctxt "e.g. the best product" msgid "Best" msgstr "Beste" -#: includes/fs-plugin-info-dialog.php715, -#: includes/fs-plugin-info-dialog.php:735 +#: includes/fs-plugin-info-dialog.php748, +#: includes/fs-plugin-info-dialog.php:768 msgctxt "as every month" msgid "Monthly" msgstr "Maandelijks" -#: includes/fs-plugin-info-dialog.php:718 +#: includes/fs-plugin-info-dialog.php:751 msgctxt "as once a year" msgid "Annual" msgstr "Jaarlijks" -#: includes/fs-plugin-info-dialog.php:721 +#: includes/fs-plugin-info-dialog.php:754 msgid "Lifetime" msgstr "Levenslang" -#: includes/fs-plugin-info-dialog.php735, -#: includes/fs-plugin-info-dialog.php737, -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php768, +#: includes/fs-plugin-info-dialog.php770, +#: includes/fs-plugin-info-dialog.php:772 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "%s gefactureerd " -#: includes/fs-plugin-info-dialog.php:737 +#: includes/fs-plugin-info-dialog.php:770 msgctxt "as once a year" msgid "Annually" msgstr "Jaarlijks" -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php:772 msgctxt "as once a year" msgid "Once" msgstr "Eenmalig" -#: includes/fs-plugin-info-dialog.php:745 +#: includes/fs-plugin-info-dialog.php:778 msgid "Single Site License" msgstr "Enkele Site Licentie" -#: includes/fs-plugin-info-dialog.php:747 +#: includes/fs-plugin-info-dialog.php:780 msgid "Unlimited Licenses" msgstr "Onbeperkte Licenties" -#: includes/fs-plugin-info-dialog.php:749 +#: includes/fs-plugin-info-dialog.php:782 msgid "Up to %s Sites" msgstr "Tot %s Sites" -#: includes/fs-plugin-info-dialog.php759, +#: includes/fs-plugin-info-dialog.php792, #: templates/plugin-info/features.php:82 msgctxt "as monthly period" msgid "mo" msgstr "mnd" -#: includes/fs-plugin-info-dialog.php766, +#: includes/fs-plugin-info-dialog.php799, #: templates/plugin-info/features.php:80 msgctxt "as annual period" msgid "year" msgstr "jaar" -#: includes/fs-plugin-info-dialog.php:820 +#: includes/fs-plugin-info-dialog.php:853 msgctxt "noun" msgid "Price" msgstr "Prijs" -#: includes/fs-plugin-info-dialog.php:868 +#: includes/fs-plugin-info-dialog.php:901 msgid "Save %s" msgstr "Bespaar %s" -#: includes/fs-plugin-info-dialog.php:878 +#: includes/fs-plugin-info-dialog.php:911 msgid "No commitment for %s - cancel anytime" msgstr "Geen verplichting voor %s - opzeggen kan altijd" -#: includes/fs-plugin-info-dialog.php:881 +#: includes/fs-plugin-info-dialog.php:914 msgid "After your free %s, pay as little as %s" msgstr "Na uw gratis %s, betaal slechts %s" -#: includes/fs-plugin-info-dialog.php:892 +#: includes/fs-plugin-info-dialog.php:925 msgid "Details" msgstr "Details" -#: includes/fs-plugin-info-dialog.php896, templates/account.php87, -#: templates/debug.php191, templates/debug.php228, templates/debug.php442, -#: templates/account/partials/addon.php:28 +#: includes/fs-plugin-info-dialog.php929, templates/account.php91, +#: templates/debug.php201, templates/debug.php238, templates/debug.php452, +#: templates/account/partials/addon.php:32 msgctxt "product version" msgid "Version" msgstr "Versie" -#: includes/fs-plugin-info-dialog.php:903 +#: includes/fs-plugin-info-dialog.php:936 msgctxt "as the plugin author" msgid "Author" msgstr "Auteur" -#: includes/fs-plugin-info-dialog.php:910 +#: includes/fs-plugin-info-dialog.php:943 msgid "Last Updated" msgstr "Laatst Geüpdatet" -#: includes/fs-plugin-info-dialog.php:915 +#: includes/fs-plugin-info-dialog.php948, templates/account.php:376 msgctxt "x-ago" msgid "%s ago" msgstr "%s geleden" -#: includes/fs-plugin-info-dialog.php:924 +#: includes/fs-plugin-info-dialog.php:957 msgid "Requires WordPress Version" -msgstr "Vereiste WordPress Version" +msgstr "Vereiste WordPress-versie" -#: includes/fs-plugin-info-dialog.php:925 +#: includes/fs-plugin-info-dialog.php:958 msgid "%s or higher" msgstr "%s of hoger" -#: includes/fs-plugin-info-dialog.php:932 +#: includes/fs-plugin-info-dialog.php:965 msgid "Compatible up to" msgstr "Compatible tot" -#: includes/fs-plugin-info-dialog.php:940 +#: includes/fs-plugin-info-dialog.php:973 msgid "Downloaded" msgstr "Gedownload" -#: includes/fs-plugin-info-dialog.php:944 +#: includes/fs-plugin-info-dialog.php:977 msgid "%s time" msgstr "%s tijd" -#: includes/fs-plugin-info-dialog.php:946 +#: includes/fs-plugin-info-dialog.php:979 msgid "%s times" msgstr "%s tijden" -#: includes/fs-plugin-info-dialog.php:956 +#: includes/fs-plugin-info-dialog.php:989 msgid "WordPress.org Plugin Page" msgstr "WordPress.org Plug-in Pagina" -#: includes/fs-plugin-info-dialog.php:964 +#: includes/fs-plugin-info-dialog.php:997 msgid "Plugin Homepage" msgstr "Plug-in Homepage" -#: includes/fs-plugin-info-dialog.php972, -#: includes/fs-plugin-info-dialog.php:1054 +#: includes/fs-plugin-info-dialog.php1005, +#: includes/fs-plugin-info-dialog.php:1087 msgid "Donate to this plugin" msgstr "Doneer aan deze plug-in" -#: includes/fs-plugin-info-dialog.php:979 +#: includes/fs-plugin-info-dialog.php:1012 msgid "Average Rating" msgstr "Gemiddelde Beoordeling" -#: includes/fs-plugin-info-dialog.php:986 +#: includes/fs-plugin-info-dialog.php:1019 msgid "based on %s" msgstr "gebaseerd op %s" -#: includes/fs-plugin-info-dialog.php:990 +#: includes/fs-plugin-info-dialog.php:1023 msgid "%s rating" msgstr "%s beoordeling" -#: includes/fs-plugin-info-dialog.php:992 +#: includes/fs-plugin-info-dialog.php:1025 msgid "%s ratings" msgstr "%s beoordelingen" -#: includes/fs-plugin-info-dialog.php:1007 +#: includes/fs-plugin-info-dialog.php:1040 msgid "%s star" msgstr "%s ster" -#: includes/fs-plugin-info-dialog.php:1009 +#: includes/fs-plugin-info-dialog.php:1042 msgid "%s stars" msgstr "%s sterren" -#: includes/fs-plugin-info-dialog.php:1020 +#: includes/fs-plugin-info-dialog.php:1053 msgid "Click to see reviews that provided a rating of %s" msgstr "Klik om reviews te bekijken met een beoordeling van%s" -#: includes/fs-plugin-info-dialog.php:1033 +#: includes/fs-plugin-info-dialog.php:1066 msgid "Contributors" msgstr "Medewerkers" -#: includes/fs-plugin-info-dialog.php1062, -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php1095, +#: includes/fs-plugin-info-dialog.php:1097 msgid "Warning" msgstr "Waarschuwing" -#: includes/fs-plugin-info-dialog.php:1062 +#: includes/fs-plugin-info-dialog.php:1095 msgid "This plugin has not been tested with your current version of WordPress." msgstr "Deze plug-in is nog niet getest met je huidige WordPress versie. " -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php:1097 msgid "This plugin has not been marked as compatible with your version of WordPress." msgstr "Deze plug-in is niet als compatibel aangemerkt voor je huidige WordPress versie." -#: includes/fs-plugin-info-dialog.php:1083 +#: includes/fs-plugin-info-dialog.php:1116 msgid "Paid add-on must be deployed to Freemius." msgstr "Betaalde add-on moet op Freemius geplaatst worden." -#: includes/fs-plugin-info-dialog.php:1084 +#: includes/fs-plugin-info-dialog.php:1117 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "Add-on moet op WordPress.org of Freemius geplaatst worden." -#: templates/account.php81, templates/account/partials/addon.php22, +#: templates/account.php81, templates/forms/subscription-cancellation.php96, +#: templates/account/partials/addon.php22, #: templates/account/partials/site.php:295 -msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." -msgstr "Het downgraden van je plan zal direct leiden tot het stopzetten van alle toekomstige terugkerende betalingen en je %splan zal binnen %s verlopen. " +msgid "Downgrading your plan" +msgstr "Je plan naar beneden bijstellen" + +#: templates/account.php82, templates/forms/subscription-cancellation.php97, +#: templates/account/partials/addon.php23, +#: templates/account/partials/site.php:296 +msgid "Cancelling the subscription" +msgstr "Het abonnement annuleren" + +#. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the +#. subscription' +#: templates/account.php84, templates/forms/subscription-cancellation.php99, +#: templates/account/partials/addon.php25, +#: templates/account/partials/site.php:298 +msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." +msgstr "%1s zal onmiddellijk alle toekomstige, automatische betalingen stopzetten en je %s-plan licentie loopt over %s af." -#: templates/account.php82, templates/account/partials/addon.php:23 +#: templates/account.php85, templates/forms/subscription-cancellation.php100, +#: templates/account/partials/addon.php26, +#: templates/account/partials/site.php:299 +msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." +msgstr "Onthou alsjeblieft dat we geen oude prijzen voor verlengingen/nieuwe abonnementen na een annulering kunnen aanhouden. Als je in de toekomst besluit om een abonnement handmatig te vernieuwen, zal de nieuwe prijs (na een prijsverhoging die meestal jaarlijks plaatsvindt) worden berekend." + +#: templates/account.php86, templates/forms/subscription-cancellation.php106, +#: templates/account/partials/addon.php:27 msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "Het stopzetten van de proefperiode zal de toegang tot de premium features onmiddellijk blokkeren. Weet je dat zeker?" -#: templates/account.php83, templates/account/partials/addon.php24, -#: templates/account/partials/site.php:296 -msgid "You can still enjoy all %s features but you will not have access to %s updates and support." -msgstr "Je kunt nog steeds genieten van alle %s features maar je zal geen toegang meer hebben tot %s updates en support." +#: templates/account.php87, templates/forms/subscription-cancellation.php101, +#: templates/account/partials/addon.php28, +#: templates/account/partials/site.php:300 +msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." +msgstr "Je kunt nog steeds van alle %s-mogelijkheden genieten, maar je zult geen toegang hebben tot %s veiligheids- en uitbreidingsupdates, noch ondersteuning." -#: templates/account.php84, templates/account/partials/addon.php25, -#: templates/account/partials/site.php:297 +#: templates/account.php88, templates/forms/subscription-cancellation.php102, +#: templates/account/partials/addon.php29, +#: templates/account/partials/site.php:301 msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." msgstr "Als je licentie verloopt kan je nog steeds gebruik maken van de Gratis versie, maar je zal GEEN toegang meer hebben tot de %sfeatures." #. translators: %s: Plan title (e.g. "Professional") -#: templates/account.php86, +#: templates/account.php90, #: templates/account/partials/activate-license-button.php31, -#: templates/account/partials/addon.php:27 +#: templates/account/partials/addon.php:31 msgid "Activate %s Plan" msgstr "Activeer %s Plan" #. translators: %s: Time period (e.g. Auto renews in "2 months") -#: templates/account.php89, templates/account/partials/addon.php30, +#: templates/account.php93, templates/account/partials/addon.php34, #: templates/account/partials/site.php:275 msgid "Auto renews in %s" msgstr "Auto hernieuwd over %s" #. translators: %s: Time period (e.g. Expires in "2 months") -#: templates/account.php91, templates/account/partials/addon.php32, +#: templates/account.php95, templates/account/partials/addon.php36, #: templates/account/partials/site.php:277 msgid "Expires in %s" msgstr "Verloopt over %s" -#: templates/account.php92, templates/account/partials/addon.php:33 +#: templates/account.php96, templates/account/partials/addon.php:37 msgctxt "as synchronize license" msgid "Sync License" msgstr "Sync Licentie" -#: templates/account.php93, templates/account/partials/addon.php:34 +#: templates/account.php97, templates/account/partials/addon.php:38 msgid "Cancel Trial" msgstr "Proefperiode Opzeggen" -#: templates/account.php94, templates/account/partials/addon.php:35 +#: templates/account.php98, templates/account/partials/addon.php:39 msgid "Change Plan" msgstr "Wijzig Plan" -#: templates/account.php95, templates/account/partials/addon.php:36 +#: templates/account.php99, templates/account/partials/addon.php:40 msgctxt "verb" msgid "Upgrade" msgstr "Upgrade" -#: templates/account.php97, templates/account/partials/addon.php38, -#: templates/account/partials/site.php:298 +#: templates/account.php101, templates/account/partials/addon.php42, +#: templates/account/partials/site.php:302 msgctxt "verb" msgid "Downgrade" msgstr "Downgrade" -#: templates/account.php99, templates/add-ons.php126, +#: templates/account.php103, templates/add-ons.php130, #: templates/plugin-info/features.php72, -#: templates/account/partials/addon.php40, +#: templates/account/partials/addon.php44, #: templates/account/partials/site.php:31 msgid "Free" msgstr "Gratis" -#: templates/account.php100, templates/account/partials/addon.php:41 +#: templates/account.php104, templates/account/partials/addon.php:45 msgid "Activate" msgstr "Activeer" -#: templates/account.php101, templates/debug.php361, +#: templates/account.php105, templates/debug.php371, #: includes/customizer/class-fs-customizer-upsell-control.php106, -#: templates/account/partials/addon.php:42 +#: templates/account/partials/addon.php:46 msgctxt "as product pricing plan" msgid "Plan" msgstr "Plan" -#: templates/account.php:154 +#: templates/account.php:158 msgid "Free Trial" msgstr "Gratis Proefperiode" -#: templates/account.php:165 +#: templates/account.php:169 msgid "Account Details" msgstr "Accountgegevens" -#: templates/account.php:175 +#: templates/account.php:179 msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" msgstr "Verwijdering van het account zal automatisch je %s licentie deactiveren zodat je die op andere sites kan gebruiken. Als je tevens je terugkerende betalingen wilt stopzetten, klik dan op de 'Annuleer' knop en 'Downgrade' je account eerst. Weet je zeker dat je wilt doorgaan met de verwijdering?" -#: templates/account.php:177 +#: templates/account.php:181 msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" -msgstr "Verwijdering is niet tijdelijk. Verwijder alleen als je deze %s niet langer wilt gebruiken. Weet je zeker dat u wilt doorgaan met de verwijdering?" +msgstr "Verwijdering is niet tijdelijk. Verwijder alleen als je deze %s niet langer wilt gebruiken. Weet je zeker dat je wilt doorgaan met de verwijdering?" -#: templates/account.php:180 +#: templates/account.php:184 msgid "Delete Account" msgstr "Verwijder Account" -#: templates/account.php192, templates/account/partials/addon.php155, +#: templates/account.php196, templates/account/partials/addon.php159, #: templates/account/partials/deactivate-license-button.php:35 msgid "Deactivate License" msgstr "Deactiveer Licentie" -#: templates/account.php:210 +#: templates/account.php219, templates/forms/subscription-cancellation.php:125 msgid "Are you sure you want to proceed?" msgstr "Weet je zeker dat je wilt doorgaan?" -#: templates/account.php210, templates/account/partials/addon.php:177 +#: templates/account.php219, templates/account/partials/addon.php:182 msgid "Cancel Subscription" msgstr "Abonnement Opzeggen" -#: templates/account.php:239 +#: templates/account.php:247 msgctxt "as synchronize" msgid "Sync" msgstr "Sync" -#: templates/account.php253, templates/debug.php:477 +#: templates/account.php261, templates/debug.php:487 msgid "Name" msgstr "Naam" -#: templates/account.php259, templates/debug.php:478 +#: templates/account.php267, templates/debug.php:488 msgid "Email" msgstr "E-mail" -#: templates/account.php266, templates/debug.php360, templates/debug.php:516 +#: templates/account.php274, templates/debug.php370, templates/debug.php:526 msgid "User ID" msgstr "Gebruikers ID" -#: templates/account.php:274 +#: templates/account.php:282 msgid "Site ID" msgstr "Site ID" -#: templates/account.php:277 +#: templates/account.php:285 msgid "No ID" msgstr "Geen ID" -#: templates/account.php282, templates/debug.php233, templates/debug.php362, -#: templates/debug.php443, templates/debug.php480, +#: templates/account.php290, templates/debug.php243, templates/debug.php372, +#: templates/debug.php453, templates/debug.php490, #: templates/account/partials/site.php:219 msgid "Public Key" msgstr "Publieke Sleutel" -#: templates/account.php288, templates/debug.php363, templates/debug.php444, -#: templates/debug.php481, templates/account/partials/site.php:231 +#: templates/account.php296, templates/debug.php373, templates/debug.php454, +#: templates/debug.php491, templates/account/partials/site.php:231 msgid "Secret Key" msgstr "Geheime Sleutel" -#: templates/account.php:291 +#: templates/account.php:299 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "Geen Geheim" -#: templates/account.php310, templates/account/partials/site.php112, +#: templates/account.php318, templates/account/partials/site.php112, #: templates/account/partials/site.php:114 msgid "Trial" msgstr "Proefperiode" -#: templates/account.php329, templates/debug.php521, +#: templates/account.php337, templates/debug.php531, #: templates/account/partials/site.php:248 msgid "License Key" msgstr "Licentiesleutel" -#: templates/account.php:359 +#: templates/account.php:367 msgid "not verified" msgstr "niet geverifieerd" -#: templates/account.php:416 +#: templates/account.php376, templates/account/partials/addon.php:120 +msgid "Expired" +msgstr "Verlopen" + +#: templates/account.php:428 msgid "Premium version" msgstr "Premium versie" -#: templates/account.php:418 +#: templates/account.php:430 msgid "Free version" msgstr "Gratis versie" -#: templates/account.php:430 +#: templates/account.php:442 msgid "Verify Email" msgstr "Verifieer E-mail" -#: templates/account.php:441 +#: templates/account.php:453 msgid "Download %s Version" msgstr "Download %s Versie" -#: templates/account.php455, templates/account.php636, +#: templates/account.php467, templates/account.php649, #: templates/account/partials/site.php237, #: templates/account/partials/site.php:255 msgctxt "verb" msgid "Show" msgstr "Toon" -#: templates/account.php:469 +#: templates/account.php:481 msgid "What is your %s?" msgstr "Wat is je %s?" -#: templates/account.php477, templates/account/billing.php:27 +#: templates/account.php489, templates/account/billing.php:27 msgctxt "verb" msgid "Edit" msgstr "Bewerk" -#: templates/account.php:490 +#: templates/account.php:502 msgid "Sites" msgstr "Sites" -#: templates/account.php:501 +#: templates/account.php:513 msgid "Search by address" msgstr "Zoek op adres" -#: templates/account.php510, templates/account.php558, templates/debug.php226, -#: templates/debug.php354, templates/debug.php439, templates/debug.php476, -#: templates/debug.php514, templates/debug.php587, +#: templates/account.php522, templates/account.php570, templates/debug.php236, +#: templates/debug.php364, templates/debug.php449, templates/debug.php486, +#: templates/debug.php524, templates/debug.php597, #: templates/account/payments.php35, templates/debug/logger.php:21 msgid "ID" msgstr "ID" -#: templates/account.php511, templates/debug.php:357 +#: templates/account.php523, templates/debug.php:367 msgid "Address" msgstr "Adres" -#: templates/account.php:512 +#: templates/account.php:524 msgid "License" msgstr "Licentie" -#: templates/account.php:513 +#: templates/account.php:525 msgid "Plan" msgstr "Plan" -#: templates/account.php:561 +#: templates/account.php:573 msgctxt "as software license" msgid "License" msgstr "Licentie" -#: templates/account.php:630 +#: templates/account.php:643 msgctxt "verb" msgid "Hide" msgstr "Verberg" -#: templates/account.php:665 +#: templates/account.php:686 +msgid "Cancelling %s" +msgstr "Annuleren %s" + +#: templates/account.php686, templates/account.php703, +#: templates/forms/subscription-cancellation.php27, +#: templates/forms/deactivation/form.php:117 +msgid "trial" +msgstr "proefperiode" + +#: templates/account.php701, templates/forms/deactivation/form.php:134 +msgid "Cancelling %s..." +msgstr "%s wordt geannuleerd..." + +#: templates/account.php704, templates/forms/subscription-cancellation.php28, +#: templates/forms/deactivation/form.php:118 +msgid "subscription" +msgstr "abonnement" + +#: templates/account.php:718 msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" msgstr "Deactiveren van je licentie zal alle premium features blokkeren, maar geeft je de mogelijkheid de licentie op een andere site te activeren. Weet je zeker dat je wilt doorgaan?" @@ -1320,7 +1418,7 @@ msgstr "Add-ons voor %s" msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." msgstr "We konden de add-ons lijst niet laden. Dat is waarschijnlijk een probleem aan onze kant, kom alsjeblieft over enkele minuten terug." -#: templates/add-ons.php:135 +#: templates/add-ons.php:139 msgid "View details" msgstr "Bekijk details" @@ -1356,166 +1454,170 @@ msgstr "Afrekenen" #: templates/checkout.php:172 msgid "PCI compliant" -msgstr "PCI-compliant" +msgstr "PCI-comform" #. translators: %s: name (e.g. Hey John,) -#: templates/connect.php:110 +#: templates/connect.php:112 msgctxt "greeting" msgid "Hey %s," msgstr "Hoi %s," -#: templates/connect.php:152 +#: templates/connect.php:154 msgid "Allow & Continue" msgstr "Toestaan & Ga Verder" -#: templates/connect.php:156 +#: templates/connect.php:158 msgid "Re-send activation email" msgstr "Activatiemail opnieuw versturen" -#: templates/connect.php:160 +#: templates/connect.php:162 msgid "Thanks %s!" msgstr "Bedankt %s!" -#: templates/connect.php170, templates/forms/license-activation.php:43 +#: templates/connect.php172, templates/forms/license-activation.php:43 msgid "Agree & Activate License" msgstr "Akkoord & Activeer Licentie" -#: templates/connect.php:179 +#: templates/connect.php:181 msgid "Thanks for purchasing %s! To get started, please enter your license key:" msgstr "Bedankt voor het aanschaffen van %s! Om te beginnen, voer alsjeblieft je licentiesleutel in:" -#: templates/connect.php:186 +#: templates/connect.php:188 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." msgstr "Mis nooit een belangrijke update - opt-in voor onze beveiliging en feature update notificaties, educatieve content, aanbiedingen, en niet-gevoelige diagnostische tracking met %4$s." -#: templates/connect.php:187 +#: templates/connect.php:189 msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." msgstr "Mis nooit een belangrijke update - opt-in voor onze beveiliging en feature update notificaties, en niet-gevoelige diagnostische tracking met %4$s." -#: templates/connect.php:193 +#: templates/connect.php:195 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "Mis nooit een belangrijke update - opt-in voor onze beveiliging & feature update notificaties, educatieve content, aanbiedingen, en niet-gevoelige diagnostische tracking met %4$s. Als je deze stap overslaat, geen probleem! %1$szal ook dan gewoon 100% werken. " -#: templates/connect.php:194 +#: templates/connect.php:196 msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "Mis nooit een belangrijke update - opt-in voor onze beveiliging & feature updates notificaties, en niet-gevoelige diagnostische tracking met %4$s. Als je deze stap overslaat, geen probleem! %1$szal ook dan gewoon 100% werken. " -#: templates/connect.php:228 +#: templates/connect.php:230 msgid "We're excited to introduce the Freemius network-level integration." msgstr "We zijn verheugd om Freemius network-level integratie te introduceren." -#: templates/connect.php:231 +#: templates/connect.php:233 msgid "During the update process we detected %d site(s) that are still pending license activation." -msgstr "Tijdens het update proces detecteerde we %dsite(s) waarvoor de licentie nog niet geactiveerd is." +msgstr "Tijdens het update proces detecteerden we %dsite(s) waarvoor de licentie nog niet geactiveerd is." -#: templates/connect.php:233 +#: templates/connect.php:235 msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." -msgstr "Als je de %s op deze sites wil gebruiken, voer dan alsjeblieft de licentiesleutel hieronder in en klik op de activatie knop." +msgstr "Als je de %s op deze sites wil gebruiken, voer dan alsjeblieft de licentiesleutel hieronder in en klik op de activatie-knop." -#: templates/connect.php:235 +#: templates/connect.php:237 msgid "%s's paid features" -msgstr "%s betaalde features" +msgstr "%s betaalde mogelijkheden" -#: templates/connect.php:240 +#: templates/connect.php:242 msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." -msgstr "Alternatief, voor nu kan je dat overslaan en de licentie later activeren in je %s netwerk-niveau Account pagina. " +msgstr "Je kunt dat eventueel ook nu overslaan en de licentie later in je %s netwerk-niveau Account pagina activeren. " -#: templates/connect.php:242 +#: templates/connect.php:244 msgid "During the update process we detected %s site(s) in the network that are still pending your attention." -msgstr "Tijdens het update proces detecteerde we %dsite(s) in het netwerk die jouw aandacht vereisen." +msgstr "Tijdens het update proces detecteerden we %dsite(s) in het netwerk die jouw aandacht vereisen." -#: templates/connect.php251, templates/forms/license-activation.php:46 +#: templates/connect.php253, templates/forms/license-activation.php:46 msgid "License key" msgstr "Licentiesleutel" -#: templates/connect.php254, templates/forms/license-activation.php:19 +#: templates/connect.php256, templates/forms/license-activation.php:19 msgid "Can't find your license key?" msgstr "Kan je je licentiesleutel niet vinden?" -#: templates/connect.php302, templates/connect.php617, +#: templates/connect.php315, templates/connect.php630, #: templates/forms/deactivation/retry-skip.php:20 msgctxt "verb" msgid "Skip" msgstr "Sla Over" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "Delegate to Site Admins" msgstr "Delegeren aan Site Beheerders" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "If you click it, this decision will be delegated to the sites administrators." -msgstr "Al je er op klikt zal deze beslissing gedelegeerd worden aan de beheerders van de sites. " +msgstr "Al je er op klikt, zal deze beslissing gedelegeerd worden aan de beheerders van de sites. " -#: templates/connect.php:333 +#: templates/connect.php:346 msgid "Your Profile Overview" msgstr "Je Profiel Overzicht" -#: templates/connect.php:334 +#: templates/connect.php:347 msgid "Name and email address" msgstr "Naam en e-mailadres" -#: templates/connect.php:339 +#: templates/connect.php:352 msgid "Your Site Overview" msgstr "Je Site Overzicht" -#: templates/connect.php:340 +#: templates/connect.php:353 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "Site URL, WP versie, PHP info, plug-ins & thema's" -#: templates/connect.php:345 +#: templates/connect.php:358 msgid "Admin Notices" msgstr "Admin Mededelingen" -#: templates/connect.php346, templates/connect.php:362 +#: templates/connect.php359, templates/connect.php:375 msgid "Updates, announcements, marketing, no spam" msgstr "Updates, aankondigingen, marketing, geen spam" -#: templates/connect.php:351 +#: templates/connect.php:364 msgid "Current %s Events" msgstr "Huidige %s Gebeurtenissen" -#: templates/connect.php:352 +#: templates/connect.php:365 msgid "Activation, deactivation and uninstall" msgstr "Activatie, deactivatie en deïnstallatie" -#: templates/connect.php:361 +#: templates/connect.php:374 msgid "Newsletter" msgstr "Nieuwsbrief" -#: templates/connect.php378, templates/forms/license-activation.php:38 +#: templates/connect.php391, templates/forms/license-activation.php:38 msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." msgstr "De %1$s zal periodiek data verzenden naar %2$s om te controleren op beveiliging en feature updates en om te verifiëren of je licentie geldig is." -#: templates/connect.php:383 +#: templates/connect.php:396 msgid "What permissions are being granted?" msgstr "Welke toestemmingen worden er verleend?" -#: templates/connect.php:404 +#: templates/connect.php:417 msgid "Don't have a license key?" msgstr "Heb je geen licentiesleutel?" -#: templates/connect.php:405 +#: templates/connect.php:418 msgid "Activate Free Version" msgstr "Activeer Gratis Versie" -#: templates/connect.php:407 +#: templates/connect.php:420 msgid "Have a license key?" msgstr "Heb je een licentiesleutel?" -#: templates/connect.php:415 +#: templates/connect.php:428 msgid "Privacy Policy" msgstr "Privacybeleid" -#: templates/connect.php:417 +#: templates/connect.php:430 +msgid "License Agreement" +msgstr "Licentieovereenkomst" + +#: templates/connect.php:430 msgid "Terms of Service" msgstr "Servicevoorwaarden" -#: templates/connect.php:750 +#: templates/connect.php:766 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "E-mail versturen" -#: templates/connect.php:751 +#: templates/connect.php:767 msgctxt "as activating plugin" msgid "Activating" msgstr "Activeren" @@ -1543,8 +1645,8 @@ msgctxt "as code debugging" msgid "Debugging" msgstr "Debugging" -#: templates/debug.php54, templates/debug.php238, templates/debug.php364, -#: templates/debug.php:482 +#: templates/debug.php54, templates/debug.php248, templates/debug.php374, +#: templates/debug.php:492 msgid "Actions" msgstr "Acties" @@ -1568,205 +1670,209 @@ msgstr "Updates Transients Opschonen" msgid "Sync Data From Server" msgstr "Synchroniseer Data Vanaf Server" -#: templates/debug.php:90 +#: templates/debug.php:95 +msgid "Migrate Options to Network" +msgstr "Zet Opties over naar Netwerk" + +#: templates/debug.php:100 msgid "Load DB Option" -msgstr "Laad DB optie" +msgstr "Laad DB-optie" -#: templates/debug.php:93 +#: templates/debug.php:103 msgid "Set DB Option" -msgstr "Activeer DB Optie" +msgstr "Activeer DB-Optie" -#: templates/debug.php:170 +#: templates/debug.php:180 msgid "Key" msgstr "Sleutel" -#: templates/debug.php:171 +#: templates/debug.php:181 msgid "Value" msgstr "Waarde" -#: templates/debug.php:187 +#: templates/debug.php:197 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "SDK Versies" -#: templates/debug.php:192 +#: templates/debug.php:202 msgid "SDK Path" msgstr "SDK Pad" -#: templates/debug.php193, templates/debug.php:232 +#: templates/debug.php203, templates/debug.php:242 msgid "Module Path" msgstr "Module Pad" -#: templates/debug.php:194 +#: templates/debug.php:204 msgid "Is Active" msgstr "Is Actief" -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:35 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:35 msgid "Plugins" msgstr "Plug-ins" -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:56 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:56 msgid "Themes" msgstr "Thema's" -#: templates/debug.php227, templates/debug.php359, templates/debug.php441, +#: templates/debug.php237, templates/debug.php369, templates/debug.php451, #: templates/debug/scheduled-crons.php:80 msgid "Slug" msgstr "Slug" -#: templates/debug.php229, templates/debug.php:440 +#: templates/debug.php239, templates/debug.php:450 msgid "Title" msgstr "Titel" -#: templates/debug.php:230 +#: templates/debug.php:240 msgctxt "as application program interface" msgid "API" msgstr "API" -#: templates/debug.php:231 +#: templates/debug.php:241 msgid "Freemius State" msgstr "Freemius Status" -#: templates/debug.php:235 +#: templates/debug.php:245 msgid "Network Blog" msgstr "Netwerk Blog" -#: templates/debug.php:236 +#: templates/debug.php:246 msgid "Network User" msgstr "Netwerk Gebruiker" -#: templates/debug.php:273 +#: templates/debug.php:283 msgctxt "as connection was successful" msgid "Connected" msgstr "Verbonden" -#: templates/debug.php:274 +#: templates/debug.php:284 msgctxt "as connection blocked" msgid "Blocked" msgstr "Geblokkeerd" -#: templates/debug.php:310 -msgid "Simulate Trial" -msgstr "Simuleer Proefversie" +#: templates/debug.php:320 +msgid "Simulate Trial Promotion" +msgstr "Simuleer Trial Actie" -#: templates/debug.php:322 +#: templates/debug.php:332 msgid "Simulate Network Upgrade" msgstr "Simuleer Netwerk Upgrade" -#: templates/debug.php:348 +#: templates/debug.php:358 msgid "%s Installs" msgstr "%s Installaties" -#: templates/debug.php:350 +#: templates/debug.php:360 msgctxt "like websites" msgid "Sites" msgstr "Sites" -#: templates/debug.php356, templates/account/partials/site.php:148 +#: templates/debug.php366, templates/account/partials/site.php:148 msgid "Blog ID" msgstr "Blog ID" -#: templates/debug.php421, templates/debug.php499, -#: templates/account/partials/addon.php:334 +#: templates/debug.php431, templates/debug.php509, +#: templates/account/partials/addon.php:339 msgctxt "verb" msgid "Delete" msgstr "Verwijder" -#: templates/debug.php:435 +#: templates/debug.php:445 msgid "Add Ons of module %s" msgstr "Uitbreidingen van module %s" -#: templates/debug.php:472 +#: templates/debug.php:482 msgid "Users" msgstr "Gebruikers" -#: templates/debug.php:479 +#: templates/debug.php:489 msgid "Verified" msgstr "Geverifieerd" -#: templates/debug.php:510 +#: templates/debug.php:520 msgid "%s Licenses" msgstr "%s Licenties" -#: templates/debug.php:515 +#: templates/debug.php:525 msgid "Plugin ID" msgstr "Plug-in ID" -#: templates/debug.php:517 +#: templates/debug.php:527 msgid "Plan ID" msgstr "Plan ID" -#: templates/debug.php:518 +#: templates/debug.php:528 msgid "Quota" msgstr "Quota" -#: templates/debug.php:519 +#: templates/debug.php:529 msgid "Activated" msgstr "Geactiveerd" -#: templates/debug.php:520 +#: templates/debug.php:530 msgid "Blocking" msgstr "Geblokkeerd" -#: templates/debug.php:522 +#: templates/debug.php:532 msgctxt "as expiration date" msgid "Expiration" msgstr "Verloopdatum" -#: templates/debug.php:545 +#: templates/debug.php:555 msgid "Debug Log" msgstr "Debug Log" -#: templates/debug.php:549 +#: templates/debug.php:559 msgid "All Types" msgstr "Alle Types" -#: templates/debug.php:556 +#: templates/debug.php:566 msgid "All Requests" msgstr "Alle Requests" -#: templates/debug.php561, templates/debug.php590, +#: templates/debug.php571, templates/debug.php600, #: templates/debug/logger.php:25 msgid "File" msgstr "Bestand" -#: templates/debug.php562, templates/debug.php588, +#: templates/debug.php572, templates/debug.php598, #: templates/debug/logger.php:23 msgid "Function" msgstr "Functie" -#: templates/debug.php:563 +#: templates/debug.php:573 msgid "Process ID" msgstr "Proces-ID" -#: templates/debug.php:564 +#: templates/debug.php:574 msgid "Logger" msgstr "Logger" -#: templates/debug.php565, templates/debug.php589, +#: templates/debug.php575, templates/debug.php599, #: templates/debug/logger.php:24 msgid "Message" msgstr "Bericht" -#: templates/debug.php:567 +#: templates/debug.php:577 msgid "Filter" msgstr "Filter" -#: templates/debug.php:575 +#: templates/debug.php:585 msgid "Download" msgstr "Download" -#: templates/debug.php586, templates/debug/logger.php:22 +#: templates/debug.php596, templates/debug/logger.php:22 msgid "Type" msgstr "Type" -#: templates/debug.php591, templates/debug/logger.php:26 +#: templates/debug.php601, templates/debug/logger.php:26 msgid "Timestamp" msgstr "Tijdstempel" #: templates/secure-https-header.php:28 msgid "Secure HTTPS %s page, running from an external domain" -msgstr "Beveiligde HTTPS %s pagina, loopt via een extern domain" +msgstr "Beveiligde HTTPS %s pagina, loopt via een extern domein" #: includes/customizer/class-fs-customizer-support-section.php55, #: templates/plugin-info/features.php:43 @@ -1785,7 +1891,7 @@ msgstr "Freemius API" #: includes/debug/debug-bar-start.php:42 msgid "Requests" -msgstr "Requests" +msgstr "Aanvragen" #: templates/account/billing.php:28 msgctxt "verb" @@ -1859,7 +1965,7 @@ msgstr "API" #: templates/debug/api-calls.php:68 msgid "Method" -msgstr "Methoden" +msgstr "Methodes" #: templates/debug/api-calls.php:69 msgid "Code" @@ -1955,11 +2061,11 @@ msgstr "Meld je aan om een affiliate partner te worden" #: templates/forms/affiliation.php:104 msgid "Your affiliate application for %s has been accepted! Log in to your affiliate area at: %s." -msgstr "Je affiliate aanvraag voor %s is geaccepteerd! Log in op je affiliate omgeving op: %s." +msgstr "Je samenwerkingsaanvraag voor %s is geaccepteerd! Log in op je samenwerkingsomgeving op: %s." #: templates/forms/affiliation.php:119 msgid "Thank you for applying for our affiliate program, we'll review your details during the next 14 days and will get back to you with further information." -msgstr "Bedankt voor je aanvraag voor deelname aan ons affiliate programma, we zullen binnen 14 dagen je gegevens doornemen waarna we je aanvullende informatie zullen sturen." +msgstr "Bedankt voor je aanvraag voor deelname aan ons samenwerkingsprogramma. We zullen binnen 14 dagen je gegevens doornemen, waarna we je aanvullende informatie zullen sturen." #: templates/forms/affiliation.php:122 msgid "Your affiliation account was temporarily suspended." @@ -1975,11 +2081,11 @@ msgstr "Als gevolg van het overtreden van onze affiliate voorwaarden, hebben we #: templates/forms/affiliation.php:141 msgid "Like the %s? Become our ambassador and earn cash ;-)" -msgstr "Vind je de %s goed? Wordt dan onze ambassadeur en verdien cash ;-)" +msgstr "Vind je de %s goed? Word dan onze ambassadeur en verdien cash ;-)" #: templates/forms/affiliation.php:142 msgid "Refer new customers to our %s and earn %s commission on each successful sale you refer!" -msgstr "Verwijs nieuwe klant naar onze %s en verdien %s commissie op iedere door jou doorverwezen geslaagde verkoop!" +msgstr "Verwijs nieuwe klanten naar onze %s en krijg %s commissie op iedere door jou doorverwezen, geslaagde verkoop!" #: templates/forms/affiliation.php:145 msgid "Program Summary" @@ -1991,7 +2097,7 @@ msgstr "%s commissie als een klant een nieuwe licentie koopt. " #: templates/forms/affiliation.php:149 msgid "Get commission for automated subscription renewals." -msgstr "Krijg een commissie voor automatische abonnements verlengingen." +msgstr "Krijg een commissie voor automatische abonnementsverlengingen." #: templates/forms/affiliation.php:152 msgid "%s tracking cookie after the first visit to maximize earnings potential." @@ -2007,11 +2113,11 @@ msgstr "%s minimum uitbetalingsbedrag." #: templates/forms/affiliation.php:158 msgid "Payouts are in USD and processed monthly via PayPal." -msgstr "Uitbetalingen zijn in USD en maandelijks uitgevoerd via PayPal" +msgstr "Uitbetalingen zijn in USD en worden maandelijks uitgevoerd via PayPal" #: templates/forms/affiliation.php:159 msgid "As we reserve 30 days for potential refunds, we only pay commissions that are older than 30 days." -msgstr "Daar wij 30 dagen reserveren voor mogelijk terugbetalingen, betalen we alleen commissies die ouder zijn dan 30 dagen." +msgstr "Omdat wij 30 dagen reserveren voor eventuele terugstortingen, betalen we alleen commissies uit die ouder dan 30 dagen zijn." #: templates/forms/affiliation.php:162 msgid "Affiliate" @@ -2035,7 +2141,7 @@ msgstr "Waar ga je de %s promoten?" #: templates/forms/affiliation.php:179 msgid "Enter the domain of your website or other websites from where you plan to promote the %s." -msgstr "Voer de domeinnaam in van je website of ander websites vanaf waar je van plan bent de %ste gaan promoten." +msgstr "Voer de domeinnaam in van je website of andere websites waar vanaf je van plan bent de %ste gaan promoten." #: templates/forms/affiliation.php:181 msgid "Add another domain" @@ -2111,23 +2217,19 @@ msgstr "Het bijhouden van het gebruik wordt gedaan om %s te verbeteren. De gebru msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." msgstr "Door op \"Opt Out\" te klikken, zullen wij niet langer gegevens van %s verzenden naar %s." -#: templates/forms/premium-versions-upgrade-handler.php:24 +#: templates/forms/premium-versions-upgrade-handler.php:40 msgid "There is a new version of %s available." msgstr "Er is een nieuwe versie van %s beschikbaar." -#: templates/forms/premium-versions-upgrade-handler.php:25 -msgid " %sRenew your license now%s to access version %s security & feature updates, and support." -msgstr "%sVernieuw je licentie nu%s voor toegang tot versie %s beveiliging & feature updates en support." +#: templates/forms/premium-versions-upgrade-handler.php:41 +msgid " %s to access version %s security & feature updates, and support." +msgstr "%svoor toegang to versie %s beveiliging & features updates en support." -#: templates/forms/premium-versions-upgrade-handler.php:34 +#: templates/forms/premium-versions-upgrade-handler.php:54 msgid "New Version Available" msgstr "Nieuwe Versie Beschikbaar" -#: templates/forms/premium-versions-upgrade-handler.php:36 -msgid "Renew license" -msgstr "Vernieuw licentie" - -#: templates/forms/premium-versions-upgrade-handler.php:53 +#: templates/forms/premium-versions-upgrade-handler.php:75 msgctxt "close a window" msgid "Dismiss" msgstr "Afsluiten" @@ -2140,13 +2242,50 @@ msgstr "Verzend Licentiesleutel" msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." msgstr "Voer hieronder het e-mailadres in dat je gebruikt hebt voor de upgrade en we zullen je jouw licentiesleutel opnieuw toesturen." +#: templates/forms/subscription-cancellation.php:37 +msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." +msgstr "Het deactiveren en deïnstalleren van de %s zal de licentie automatisch uitschakelen, die je dan kan gebruiken op een andere site." + +#: templates/forms/subscription-cancellation.php:47 +msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" +msgstr "Mocht je NIET van plan zijn om deze %s te gebruiken op deze site (of op een andere site) - wil je dan het %s ook opzeggen?" + +#: templates/forms/subscription-cancellation.php:52 +msgid "license" +msgstr "licentie" + +#: templates/forms/subscription-cancellation.php:57 +msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." +msgstr "Annuleer %s - Ik heb niet meer enige beveiligings- en uitbreidingsupdates of ondersteuning voor %s nodig, omdat ik niet van plan ben de %sop deze of enige andere site te gebruiken." + +#: templates/forms/subscription-cancellation.php:68 +msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." +msgstr "Annuleer %s niet - Ik wil nog steeds zowel beveiligings- en uitbreidingsupdates ontvangen als contact kunnen opnemen met Support." + +#: templates/forms/subscription-cancellation.php:103 +msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." +msgstr "Als je licentie afloopt, zul je %s niet meer kunnen gebruiken, tenzij je het opnieuw activeert met een geldige Premium-licentie." + +#: templates/forms/subscription-cancellation.php:136 +msgid "Cancel %s?" +msgstr "%s annuleren?" + +#: templates/forms/subscription-cancellation.php:143 +msgid "Proceed" +msgstr "Doorgaan" + +#: templates/forms/subscription-cancellation.php191, +#: templates/forms/deactivation/form.php:150 +msgid "Cancel %s & Proceed" +msgstr "Annuleer %s & Ga Door" + #: templates/forms/trial-start.php:22 msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "U bent 1-klik verwijderd van het starten van uw %1$s-daagse gratis proefperiode van het %2$s plan." #: templates/forms/trial-start.php:28 msgid "For compliance with the WordPress.org guidelines, before we start the trial we ask that you opt in with your user and non-sensitive site information, allowing the %s to periodically send data to %s to check for version updates and to validate your trial." -msgstr "In overeenstemming met de Wordpress.org richtlijnen, alvorens we de proefperiode kunnen starten vragen we je in te stemmen je gebruiker en niet-sensitieve site informatie door de %s periodiek te laten verzenden naar %s om te controleren op nieuwe versies en je proefversie te valideren." +msgstr "Voordat we de proefperiode kunnen starten, vragen we je, in overeenstemming met de Wordpress.org-richtlijnen, in te stemmen je gebruikers- en niet-sensitieve site informatie door de %s periodiek te laten verzenden naar %s om te controleren op nieuwe versies en je proefversie te valideren." #: templates/js/style-premium-theme.php:37 msgid "Premium" @@ -2205,20 +2344,16 @@ msgstr "%s beschikbaar" msgid "Last license" msgstr "Laatste licentie" -#: templates/account/partials/addon.php:111 +#: templates/account/partials/addon.php:115 msgid "Cancelled" msgstr "Geannuleerd" -#: templates/account/partials/addon.php:116 -msgid "Expired" -msgstr "Verlopen" - -#: templates/account/partials/addon.php:121 +#: templates/account/partials/addon.php:125 msgid "No expiration" msgstr "Geen verloopdatum" -#: templates/account/partials/addon.php259, -#: templates/account/partials/addon.php:312 +#: templates/account/partials/addon.php264, +#: templates/account/partials/addon.php:317 msgid "Activate this add-on" msgstr "Activeer deze add-on" @@ -2246,47 +2381,47 @@ msgstr "Sorry voor het ongemak en we zijn er om je te helpen als je daartoe de k msgid "Contact Support" msgstr "Contacteer Support" -#: templates/forms/deactivation/form.php:56 +#: templates/forms/deactivation/form.php:59 msgid "Anonymous feedback" msgstr "Anonieme terugkoppeling" -#: templates/forms/deactivation/form.php:63 +#: templates/forms/deactivation/form.php:66 msgid "Deactivate" msgstr "Deactiveer" -#: templates/forms/deactivation/form.php:65 +#: templates/forms/deactivation/form.php:68 msgid "Activate %s" msgstr "Activeer %s" -#: templates/forms/deactivation/form.php:76 -msgid "Quick feedback" +#: templates/forms/deactivation/form.php:80 +msgid "Quick Feedback" msgstr "Snelle terugkoppeling" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "If you have a moment, please let us know why you are %s" msgstr "We zouden het zeer op prijs stellen, als je even hebt, om ons alsjeblieft te laten weten waarom je gaat %s" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "deactivating" msgstr "deactiveren" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "switching" msgstr "overschakelen" -#: templates/forms/deactivation/form.php:269 +#: templates/forms/deactivation/form.php:332 msgid "Submit & %s" msgstr "Verstuur & %s" -#: templates/forms/deactivation/form.php:290 +#: templates/forms/deactivation/form.php:353 msgid "Kindly tell us the reason so we can improve." msgstr "Wilt je alsjeblieft zo vriendelijk zijn om de reden te vermelden, zodat wij verbeteringen kunnen doorvoeren." -#: templates/forms/deactivation/form.php:411 +#: templates/forms/deactivation/form.php:478 msgid "Yes - %s" msgstr "Ja - %s" -#: templates/forms/deactivation/form.php:418 +#: templates/forms/deactivation/form.php:485 msgid "Skip & %s" msgstr "Sla over & %s" diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-ru_RU.mo b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-ru_RU.mo index 82a7a249210bb09a8ccaaea953d54fe755130ec4..aff346cecf73f9ab161acaf6e2e45dea5dd50143 100644 GIT binary patch delta 12210 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 delta 9666 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 I#i+~(0N2DDxc~qF diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-ru_RU.po b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-ru_RU.po index b2db1b4d1..cc34dec04 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-ru_RU.po +++ b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius-ru_RU.po @@ -1,12 +1,13 @@ -# Copyright (C) 2018 freemius +# Copyright (C) 2019 freemius # This file is distributed under the same license as the freemius package. # Translators: +# Robert Premmerce <info@premmerce.com>, 2018 msgid "" msgstr "" "Project-Id-Version: WordPress SDK\n" "Report-Msgid-Bugs-To: https://github.com/Freemius/wordpress-sdk/issues\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2018-05-24 11:59+0000\n" +"PO-Revision-Date: 2018-11-25 07:22+0000\n" "Last-Translator: Vova Feldman <vova@freemius.com>\n" "Language: ru_RU\n" "Language-Team: Russian (Russia) (http://www.transifex.com/freemius/wordpress-sdk/language/ru_RU/)\n" @@ -20,1294 +21,1391 @@ msgstr "" "X-Poedit-SearchPathExcluded-0: *.js\n" "X-Poedit-SourceCharset: UTF-8\n" -#: includes/class-freemius.php:1551 +#: includes/class-freemius.php:1688 msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "Freemius SDK не удалось найти основной файл плагина. Пожалуйста, свяжитесь с sdk@freemius.com с текущей ошибкой." -#: includes/class-freemius.php:1553 +#: includes/class-freemius.php:1690 msgid "Error" msgstr "Ошибка" -#: includes/class-freemius.php:1871 +#: includes/class-freemius.php:2011 msgid "I found a better %s" msgstr "Я нашел лучший %s" -#: includes/class-freemius.php:1873 +#: includes/class-freemius.php:2013 msgid "What's the %s's name?" msgstr "Какое название %s?" -#: includes/class-freemius.php:1879 +#: includes/class-freemius.php:2019 msgid "It's a temporary %s. I'm just debugging an issue." msgstr "Это временная %s. Сейчас проходит проверка на наличие ошибок. " -#: includes/class-freemius.php:1881 +#: includes/class-freemius.php:2021 msgid "Deactivation" msgstr "Деактивация" -#: includes/class-freemius.php:1882 +#: includes/class-freemius.php:2022 msgid "Theme Switch" msgstr "Переключатель шаблона " -#: includes/class-freemius.php1891, templates/forms/resend-key.php:24 +#: includes/class-freemius.php2031, templates/forms/resend-key.php:24 msgid "Other" msgstr "Другие" -#: includes/class-freemius.php:1899 +#: includes/class-freemius.php:2039 msgid "I no longer need the %s" msgstr "%s больше не понадобится." -#: includes/class-freemius.php:1906 +#: includes/class-freemius.php:2046 msgid "I only needed the %s for a short period" msgstr "%s требовалась на короткое время" -#: includes/class-freemius.php:1912 +#: includes/class-freemius.php:2052 msgid "The %s broke my site" msgstr "%s повредила мой сайт" -#: includes/class-freemius.php:1919 +#: includes/class-freemius.php:2059 msgid "The %s suddenly stopped working" msgstr "%s внезапно перестала работать " -#: includes/class-freemius.php:1929 +#: includes/class-freemius.php:2069 msgid "I can't pay for it anymore" msgstr "Я больше не могу оплачивать это. " -#: includes/class-freemius.php:1931 +#: includes/class-freemius.php:2071 msgid "What price would you feel comfortable paying?" msgstr "Какая стоимость была бы для Вас приемлемой? " -#: includes/class-freemius.php:1937 +#: includes/class-freemius.php:2077 msgid "I don't like to share my information with you" msgstr "Я не хочу делиться личной информацией с Вами" -#: includes/class-freemius.php:1958 +#: includes/class-freemius.php:2098 msgid "The %s didn't work" msgstr "%s не сработала" -#: includes/class-freemius.php:1968 +#: includes/class-freemius.php:2108 msgid "I couldn't understand how to make it work" msgstr "Я не могу понять как сделать так, чтобы оно работало" -#: includes/class-freemius.php:1976 +#: includes/class-freemius.php:2116 msgid "The %s is great, but I need specific feature that you don't support" msgstr "%s отличная возможность, но мне нужен определенный функционал, который вы не поддерживаете. " -#: includes/class-freemius.php:1978 +#: includes/class-freemius.php:2118 msgid "What feature?" msgstr "Какой функционал?" -#: includes/class-freemius.php:1982 +#: includes/class-freemius.php:2122 msgid "The %s is not working" msgstr "%s не работает" -#: includes/class-freemius.php:1984 +#: includes/class-freemius.php:2124 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "Пожалуйста, сообщите о функционале, который не работает, чтобы мы смогли исправить его для дальнейшего использования. " -#: includes/class-freemius.php:1988 +#: includes/class-freemius.php:2128 msgid "It's not what I was looking for" msgstr "Это не то, что я искал. " -#: includes/class-freemius.php:1990 +#: includes/class-freemius.php:2130 msgid "What you've been looking for?" msgstr "Что именно Вы ищите? " -#: includes/class-freemius.php:1994 +#: includes/class-freemius.php:2134 msgid "The %s didn't work as expected" msgstr "%s не сработала как ожидалось" -#: includes/class-freemius.php:1996 +#: includes/class-freemius.php:2136 msgid "What did you expect?" msgstr "Каковы были Ваши ожидания? " -#: includes/class-freemius.php2729, templates/debug.php:20 +#: includes/class-freemius.php2942, templates/debug.php:20 msgid "Freemius Debug" msgstr "Исправление ошибок Freemius" -#: includes/class-freemius.php:3402 +#: includes/class-freemius.php:3670 msgid "I don't know what is cURL or how to install it, help me!" msgstr "Я не знаю, что такое сURL и как его установить. Пожалуйста, помогите мне." -#: includes/class-freemius.php:3404 +#: includes/class-freemius.php:3672 msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." msgstr "Мы обязательно свяжемся с Вашим хостинг провайдером и найдем решение. Как только у нас появится информация, Вам будет отправлено письмо на почту. " -#: includes/class-freemius.php:3411 +#: includes/class-freemius.php:3679 msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." msgstr "Отлично! Пожалуйста, установите сURL и активируйте его в Вашем файле php.ini .Также, найдите директиву 'disable_functions' в файле php.ini и удалите все неактивные методы которые начинаются на 'curl_'. Чтобы убедится, что активация прошла успешно, используйте 'phpinfo()'. После активации, деактивируйте %s и снова активируйте ее. " -#: includes/class-freemius.php:3516 +#: includes/class-freemius.php:3784 msgid "Yes - do your thing" msgstr "Да, делайте то, что Вам нужно. " -#: includes/class-freemius.php:3521 +#: includes/class-freemius.php:3789 msgid "No - just deactivate" msgstr "Нет. Нужно деактивировать. " -#: includes/class-freemius.php3566, includes/class-freemius.php4066, -#: includes/class-freemius.php5127, includes/class-freemius.php10941, -#: includes/class-freemius.php14205, includes/class-freemius.php14257, -#: includes/class-freemius.php14319, includes/class-freemius.php16448, -#: includes/class-freemius.php16458, includes/class-freemius.php17014, -#: includes/class-freemius.php17032, includes/class-freemius.php17130, -#: includes/class-freemius.php17866, templates/add-ons.php:43 +#: includes/class-freemius.php3834, includes/class-freemius.php4343, +#: includes/class-freemius.php5442, includes/class-freemius.php11545, +#: includes/class-freemius.php14916, includes/class-freemius.php14968, +#: includes/class-freemius.php15030, includes/class-freemius.php17263, +#: includes/class-freemius.php17273, includes/class-freemius.php17882, +#: includes/class-freemius.php18742, includes/class-freemius.php18857, +#: includes/class-freemius.php19001, templates/add-ons.php:43 msgctxt "exclamation" msgid "Oops" msgstr "Упс!" -#: includes/class-freemius.php:3635 +#: includes/class-freemius.php:3903 msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." msgstr "Спасибо, что предоставили нам возможность исправить ошибку. Сообщение уже отправлено нашим техническим специалистам. Мы с Вами свяжемся, как только будет новая информация о %s. Благодарны за понимание. " -#: includes/class-freemius.php:4063 +#: includes/class-freemius.php:4340 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "%s не работает без %s." -#: includes/class-freemius.php:4064 +#: includes/class-freemius.php:4341 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "%s не может работать без плагина. " -#: includes/class-freemius.php4176, includes/class-freemius.php4201, -#: includes/class-freemius.php:17103 +#: includes/class-freemius.php4487, includes/class-freemius.php4512, +#: includes/class-freemius.php:17953 msgid "Unexpected API error. Please contact the %s's author with the following error." msgstr "Неожиданная ошибка API. Пожалуйста, свяжитесь с автором %s в котором была обнаружена ошибка. " -#: includes/class-freemius.php:4815 +#: includes/class-freemius.php:5130 msgid "Premium %s version was successfully activated." msgstr "Премиум версия %s была успешно активирована. " -#: includes/class-freemius.php4827, includes/class-freemius.php:6660 +#: includes/class-freemius.php5142, includes/class-freemius.php:7004 msgctxt "" msgid "W00t" msgstr "Вау!" -#: includes/class-freemius.php:4842 +#: includes/class-freemius.php:5157 msgid "You have a %s license." msgstr "У Вас есть лицензия %s." -#: includes/class-freemius.php4846, includes/class-freemius.php13626, -#: includes/class-freemius.php13637, includes/class-freemius.php16376, -#: includes/class-freemius.php16676, includes/class-freemius.php16741, -#: includes/class-freemius.php:16891 +#: includes/class-freemius.php5161, includes/class-freemius.php14337, +#: includes/class-freemius.php14348, includes/class-freemius.php17177, +#: includes/class-freemius.php17491, includes/class-freemius.php17557, +#: includes/class-freemius.php:17707 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "Ура!" -#: includes/class-freemius.php:5110 +#: includes/class-freemius.php:5425 msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." msgstr "Бесплатный период пользования %s закончился. Этот плагин является премиум продуктом и он был деактивирован автоматически. Если Вы планируете дальнейшее его использование, пожалуйста купите лицензию. " -#: includes/class-freemius.php:5114 +#: includes/class-freemius.php:5429 msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "%s является премиум продуктом. Необходимо купить лицензию перед активацией плагина. " -#: includes/class-freemius.php5123, templates/add-ons.php99, -#: templates/account/partials/addon.php:283 +#: includes/class-freemius.php5438, templates/add-ons.php103, +#: templates/account/partials/addon.php:288 msgid "More information about %s" msgstr "Больше информации о %s" -#: includes/class-freemius.php:5124 +#: includes/class-freemius.php:5439 msgid "Purchase License" msgstr "Купите лицензию " -#: includes/class-freemius.php6035, templates/connect.php:161 +#: includes/class-freemius.php6372, templates/connect.php:163 msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." msgstr "Мы отправили Вам письмо для активации %s на Ваш электронный адрес %s. Пожалуйста, нажмите на кнопку активации в этом письме %s. " -#: includes/class-freemius.php:6039 +#: includes/class-freemius.php:6376 msgid "start the trial" msgstr "Начать тестовый период" -#: includes/class-freemius.php6040, templates/connect.php:165 +#: includes/class-freemius.php6377, templates/connect.php:167 msgid "complete the install" msgstr "Закончить установку" -#: includes/class-freemius.php:6147 +#: includes/class-freemius.php:6490 msgid "You are just one step away - %s" msgstr "Вам осталось совсем немножко %s" -#: includes/class-freemius.php:6150 +#: includes/class-freemius.php:6493 msgctxt "%s - plugin name. As complete \"PluginX\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "Закончить активацию %s сейчас " -#: includes/class-freemius.php:6227 +#: includes/class-freemius.php:6571 msgid "We made a few tweaks to the %s, %s" msgstr "Мы усовершенствовали в %s, %s для лучшей работы " -#: includes/class-freemius.php:6231 -msgid "Opt in to make \"%s\" Better!" -msgstr "Присоединяйтесь к нашему сообществу, чтобы сделать % еще лучше!" +#: includes/class-freemius.php:6575 +msgid "Opt in to make \"%s\" better!" +msgstr "Opt in to make \"%s\" better!" -#: includes/class-freemius.php:6659 +#: includes/class-freemius.php:7003 msgid "The upgrade of %s was successfully completed." msgstr "Обновление %s было успешно завершено" -#: includes/class-freemius.php8384, includes/class-fs-plugin-updater.php581, -#: includes/class-fs-plugin-updater.php733, -#: includes/class-fs-plugin-updater.php739, templates/auto-installation.php:32 +#: includes/class-freemius.php8925, includes/class-fs-plugin-updater.php886, +#: includes/class-fs-plugin-updater.php1081, +#: includes/class-fs-plugin-updater.php1088, +#: templates/auto-installation.php:32 msgid "Add-On" msgstr "Функционал плагина " -#: includes/class-freemius.php8386, templates/debug.php349, -#: templates/debug.php:510 +#: includes/class-freemius.php8927, templates/debug.php359, +#: templates/debug.php:520 msgid "Plugin" msgstr "Плагин " -#: includes/class-freemius.php8387, templates/debug.php349, -#: templates/debug.php510, templates/forms/deactivation/form.php:64 +#: includes/class-freemius.php8928, templates/debug.php359, +#: templates/debug.php520, templates/forms/deactivation/form.php:67 msgid "Theme" msgstr "Шаблон " -#: includes/class-freemius.php:10808 -msgid "invalid_site_details_collection" -msgstr "invalid_site_details_collection" +#: includes/class-freemius.php:11412 +msgid "Invalid site details collection." +msgstr "Invalid site details collection." -#: includes/class-freemius.php:10928 +#: includes/class-freemius.php:11532 msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "К сожалению, Ваш почтовый адрес не найден в системе. Вы уверены, что предоставили правильный адрес? " -#: includes/class-freemius.php:10930 +#: includes/class-freemius.php:11534 msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "Активная лицензия выданная на этот электронный адрес не была найдена. Вы уверены, что предоставили правильный электронный адрес?" -#: includes/class-freemius.php:11166 +#: includes/class-freemius.php:11808 msgid "Account is pending activation." msgstr "Учетная запись в процессе активации" -#: includes/class-freemius.php:13608 +#: includes/class-freemius.php11920, +#: templates/forms/premium-versions-upgrade-handler.php:47 +msgid "Buy a license now" +msgstr "Buy a license now" + +#: includes/class-freemius.php11932, +#: templates/forms/premium-versions-upgrade-handler.php:46 +msgid "Renew your license now" +msgstr "Renew your license now" + +#: includes/class-freemius.php:11936 +msgid "%s to access version %s security & feature updates, and support." +msgstr "%s to access version %s security & feature updates, and support." + +#: includes/class-freemius.php:14319 msgid "%s activation was successfully completed." msgstr "Активация %s была успешно завершена" -#: includes/class-freemius.php:13622 +#: includes/class-freemius.php:14333 msgid "Your account was successfully activated with the %s plan." msgstr "Ваша учетная запись была успешно активирована согласно плану %s" -#: includes/class-freemius.php13633, includes/class-freemius.php:16737 +#: includes/class-freemius.php14344, includes/class-freemius.php:17553 msgid "Your trial has been successfully started." msgstr "Ваш тестовый период успешно начат" -#: includes/class-freemius.php14203, includes/class-freemius.php14255, -#: includes/class-freemius.php:14317 +#: includes/class-freemius.php14914, includes/class-freemius.php14966, +#: includes/class-freemius.php:15028 msgid "Couldn't activate %s." msgstr "Невозможно активировать %s" -#: includes/class-freemius.php14204, includes/class-freemius.php14256, -#: includes/class-freemius.php:14318 +#: includes/class-freemius.php14915, includes/class-freemius.php14967, +#: includes/class-freemius.php:15029 msgid "Please contact us with the following message:" msgstr "Пожалуйста, напишите нам сообщение следующего содержания:" -#: includes/class-freemius.php14666, includes/class-freemius.php:18929 +#: includes/class-freemius.php15378, includes/class-freemius.php:19839 msgid "Upgrade" msgstr "Сделать апгрейд " -#: includes/class-freemius.php:14672 +#: includes/class-freemius.php:15384 msgid "Start Trial" msgstr "Начать тестовый период" -#: includes/class-freemius.php:14674 +#: includes/class-freemius.php:15386 msgid "Pricing" msgstr "Цены " -#: includes/class-freemius.php14734, includes/class-freemius.php:14736 +#: includes/class-freemius.php15448, includes/class-freemius.php:15450 msgid "Affiliation" msgstr "Партнерство " -#: includes/class-freemius.php14756, includes/class-freemius.php14758, -#: templates/account.php146, templates/debug.php:314 +#: includes/class-freemius.php15478, includes/class-freemius.php15480, +#: templates/account.php150, templates/debug.php:324 msgid "Account" msgstr "Личный кабинет" -#: includes/class-freemius.php14769, includes/class-freemius.php14771, +#: includes/class-freemius.php15493, includes/class-freemius.php15495, #: includes/customizer/class-fs-customizer-support-section.php:60 msgid "Contact Us" msgstr "Контакты " -#: includes/class-freemius.php14781, includes/class-freemius.php14783, -#: includes/class-freemius.php18939, templates/account.php96, -#: templates/account/partials/addon.php:37 +#: includes/class-freemius.php15505, includes/class-freemius.php15507, +#: includes/class-freemius.php19849, templates/account.php100, +#: templates/account/partials/addon.php:41 msgid "Add-Ons" msgstr "Настройки плагина " -#: includes/class-freemius.php14815, templates/pricing.php:97 +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow left icon" +msgid "←" +msgstr "←" + +#: includes/class-freemius.php:15541 +msgctxt "ASCII arrow right icon" +msgid "➤" +msgstr "➤" + +#: includes/class-freemius.php15543, templates/pricing.php:97 msgctxt "noun" msgid "Pricing" msgstr "Цены" -#: includes/class-freemius.php15009, +#: includes/class-freemius.php15756, #: includes/customizer/class-fs-customizer-support-section.php:67 msgid "Support Forum" msgstr "Форум поддержки " -#: includes/class-freemius.php:15794 +#: includes/class-freemius.php:16542 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "Ваш электронный адрес был успешно подтвержден и Вы просто молодец!" -#: includes/class-freemius.php:15795 +#: includes/class-freemius.php:16543 msgctxt "a positive response" msgid "Right on" msgstr "Все верно!" -#: includes/class-freemius.php:16367 +#: includes/class-freemius.php:17168 msgid "Your %s Add-on plan was successfully upgraded." msgstr "Ваш %s план был успешно обновлен" -#: includes/class-freemius.php:16369 +#: includes/class-freemius.php:17170 msgid "%s Add-on was successfully purchased." msgstr "Покупка %s плагина успешно состоялась" -#: includes/class-freemius.php:16372 +#: includes/class-freemius.php:17173 msgid "Download the latest version" msgstr "Скачай последнюю версию" -#: includes/class-freemius.php:16444 +#: includes/class-freemius.php:17259 msgctxt "%1s - plugin title, %2s - API domain" msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" msgstr "Ваш сервер блокирует доступ к Freemius' API, что является очень важным для синхронизации с %1s. Пожалуйста, свяжитесь с Вашим хостинг провайдером для разрешения доступа к %2s " -#: includes/class-freemius.php16447, includes/class-freemius.php16862, -#: includes/class-freemius.php:16927 +#: includes/class-freemius.php17262, includes/class-freemius.php17678, +#: includes/class-freemius.php:17755 msgid "Error received from the server:" msgstr "Ошибка сервера" -#: includes/class-freemius.php:16457 +#: includes/class-freemius.php:17272 msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "Вероятно один из параметров является неверным. Обновите свой Public Key, Secret Key&User ID и повторите попытку." -#: includes/class-freemius.php16639, includes/class-freemius.php16867, -#: includes/class-freemius.php:16910 +#: includes/class-freemius.php17454, includes/class-freemius.php17683, +#: includes/class-freemius.php17726, includes/class-freemius.php:17829 msgctxt "" msgid "Hmm" msgstr "Хм..." -#: includes/class-freemius.php:16652 +#: includes/class-freemius.php:17467 msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." msgstr "Вероятно Вы все еще пользуетесь сервисом согласно плану %s. Если Вы обновляли или меняли свой тарифный план, то вероятно существуют какие-то трудности связанные с Вашим программным обеспечением. Извините. " -#: includes/class-freemius.php16653, templates/account.php98, -#: templates/add-ons.php130, templates/account/partials/addon.php:39 +#: includes/class-freemius.php17468, templates/account.php102, +#: templates/add-ons.php134, templates/account/partials/addon.php:43 msgctxt "trial period" msgid "Trial" msgstr "Тестовый период" -#: includes/class-freemius.php:16658 +#: includes/class-freemius.php:17473 msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "Я провел апгрейд аккаунта, но при попытке синхронизировать лицензию, мой тарифный план не меняется. " -#: includes/class-freemius.php16662, includes/class-freemius.php:16719 +#: includes/class-freemius.php17477, includes/class-freemius.php:17535 msgid "Please contact us here" msgstr "Пожалуйста, напишите нам сообщение здесь. " -#: includes/class-freemius.php:16672 +#: includes/class-freemius.php:17487 msgid "Your plan was successfully upgraded." msgstr "Ваш тарифный план был успешно изменен. " -#: includes/class-freemius.php:16689 +#: includes/class-freemius.php:17505 msgid "Your plan was successfully changed to %s." msgstr "Ваш тарифный план был успешно изменен на %s." -#: includes/class-freemius.php:16705 +#: includes/class-freemius.php:17521 msgid "Your license has expired. You can still continue using the free %s forever." msgstr "Срок действия Вашей лицензии закончился. Вы можете продолжать пользоваться бесплатной версией %s на бессрочной основе." -#: includes/class-freemius.php:16707 +#: includes/class-freemius.php:17523 msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." -#: includes/class-freemius.php:16715 +#: includes/class-freemius.php:17531 msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "Ваша лицензия была аннулирована. Если Вы считаете, что это ошибка, пожалуйста свяжитесь с нашей службой поддержки. " -#: includes/class-freemius.php:16728 +#: includes/class-freemius.php:17544 msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." msgstr "Срок действия Вашей лицензии закончен. Вы можете продолжать пользоваться всеми возможностями %s продлив Вашу лицензию. Вы также будете получать доступ к обновлениям и поддержке. " -#: includes/class-freemius.php:16751 +#: includes/class-freemius.php:17567 msgid "Your free trial has expired. You can still continue using all our free features." msgstr "Your free trial has expired. You can still continue using all our free features." -#: includes/class-freemius.php:16753 +#: includes/class-freemius.php:17569 msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." -#: includes/class-freemius.php:16858 +#: includes/class-freemius.php:17674 msgid "It looks like the license could not be activated." msgstr "Вероятно возникли трудности с активацией лицензии. " -#: includes/class-freemius.php:16888 +#: includes/class-freemius.php:17704 msgid "Your license was successfully activated." msgstr "Ваша лицензия была успешно активирована. " -#: includes/class-freemius.php:16914 +#: includes/class-freemius.php:17730 msgid "It looks like your site currently doesn't have an active license." msgstr "Вероятно Ваш сайт не использует активную лицензию сейчас. " -#: includes/class-freemius.php:16926 +#: includes/class-freemius.php:17754 msgid "It looks like the license deactivation failed." msgstr "Вероятно деактивация лицензии не состоялась. " -#: includes/class-freemius.php:16954 +#: includes/class-freemius.php:17782 msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "Ваша лицензия была успешно деактивирована и Вы снова пользуетесь планом %s." -#: includes/class-freemius.php:16955 +#: includes/class-freemius.php:17783 msgid "O.K" msgstr "O.K." -#: includes/class-freemius.php:17003 -msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." -msgstr "Ваш тарифный план был изменен. Срок действия Вашей лицензии закончится через %s." +#: includes/class-freemius.php:17836 +msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." +msgstr "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." -#: includes/class-freemius.php:17013 -msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." -msgstr "По некоторым причинам мы не можем изменить Ваш тарифный план. Пожалуйста, повторите попытку через несколько минут. " +#: includes/class-freemius.php:17845 +msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s." +msgstr "Your subscription was successfully cancelled. Your %s plan license will expire in %s." -#: includes/class-freemius.php:17037 +#: includes/class-freemius.php:17887 msgid "You are already running the %s in a trial mode." msgstr "Вы уже пользуетесь тестовой версией %s " -#: includes/class-freemius.php:17048 +#: includes/class-freemius.php:17898 msgid "You already utilized a trial before." msgstr "Вы уже использовали Ваш тестовый период" -#: includes/class-freemius.php:17062 +#: includes/class-freemius.php:17912 msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "Тарифного плана % не существует, поэтому Вы не можете начать тестовый период. " -#: includes/class-freemius.php:17073 +#: includes/class-freemius.php:17923 msgid "Plan %s does not support a trial period." msgstr "Тарифный план % не предусматривает тестового периода. " -#: includes/class-freemius.php:17084 +#: includes/class-freemius.php:17934 msgid "None of the %s's plans supports a trial period." msgstr "Тарифные планы %s не предусматривают тестовый период. " -#: includes/class-freemius.php:17134 +#: includes/class-freemius.php:17984 msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "Возможно, Ваш тестовый период уже закончился. " -#: includes/class-freemius.php:17185 -msgid "Your %s free trial was successfully cancelled." -msgstr "Ваш бесплатный тестовый период был успешно отменен. " - -#: includes/class-freemius.php:17190 +#: includes/class-freemius.php:18020 msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "К сожалению у нас возникли трудности с отменой Вашего тестового периода. Пожалуйста, повторите попытку через несколько минут." -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18039 +msgid "Your %s free trial was successfully cancelled." +msgstr "Ваш бесплатный тестовый период был успешно отменен. " + +#: includes/class-freemius.php:18346 msgid "Version %s was released." msgstr "Релиз версии %s состоялся. " -#: includes/class-freemius.php:17474 +#: includes/class-freemius.php:18346 msgid "Please download %s." msgstr "Пожалуйста, скачайте %s" -#: includes/class-freemius.php:17481 +#: includes/class-freemius.php:18353 msgid "the latest %s version here" msgstr "Последняя версия %s здесь" -#: includes/class-freemius.php:17486 +#: includes/class-freemius.php:18358 msgid "New" msgstr "Новое " -#: includes/class-freemius.php:17491 +#: includes/class-freemius.php:18363 msgid "Seems like you got the latest release." msgstr "Вероятно, Вы пользуетесь последней версией" -#: includes/class-freemius.php:17492 +#: includes/class-freemius.php:18364 msgid "You are all good!" msgstr "Все прошло хорошо!" -#: includes/class-freemius.php:17758 +#: includes/class-freemius.php:18632 msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "Письмо подтверждение было только что отправлено на %s. Если Вы не получите его через 5 минут, пожалуйста, проверьте папку спам." -#: includes/class-freemius.php:17893 +#: includes/class-freemius.php:18769 msgid "Site successfully opted in." msgstr "Site successfully opted in." -#: includes/class-freemius.php17894, includes/class-freemius.php:18671 +#: includes/class-freemius.php18770, includes/class-freemius.php:19581 msgid "Awesome" msgstr "Отлично!" -#: includes/class-freemius.php17910, templates/forms/optout.php:32 +#: includes/class-freemius.php18786, templates/forms/optout.php:32 msgid "We appreciate your help in making the %s better by letting us track some usage data." msgstr "Вы очень помогаете нам совершенствовать %s разрешая следить за некоторыми данными о пользовании. " -#: includes/class-freemius.php:17911 +#: includes/class-freemius.php:18787 msgid "Thank you!" msgstr "Thank you!" -#: includes/class-freemius.php:17918 +#: includes/class-freemius.php:18794 msgid "We will no longer be sending any usage data of %s on %s to %s." msgstr "We will no longer be sending any usage data of %s on %s to %s." -#: includes/class-freemius.php:18033 +#: includes/class-freemius.php:18923 msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." msgstr "Пожалуйста, проверьте свою электронную почту. Вы должны были получить письмо от %s для подтверждения смены прав использования. По причинам безопасности, Вы должны подтвердить изменения на протяжении 15 минут. Если письмо не пришло, пожалуйста проверьте папку спам. " -#: includes/class-freemius.php:18039 +#: includes/class-freemius.php:18929 msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "Спасибо, что подтвердили изменение прав использования. Вам отправлено письмо на %s для окончательного подтверждения. " -#: includes/class-freemius.php:18044 +#: includes/class-freemius.php:18934 msgid "%s is the new owner of the account." msgstr "%я является новым владельцем аккаунта" -#: includes/class-freemius.php:18046 +#: includes/class-freemius.php:18936 msgctxt "as congratulations" msgid "Congrats" msgstr "Поздравления! " -#: includes/class-freemius.php:18066 +#: includes/class-freemius.php:18956 msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "Извините, нам не удалось обновить электронный адрес. Другой пользователь с таким же адресом уже был зарегистрирован. " -#: includes/class-freemius.php:18067 +#: includes/class-freemius.php:18957 msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." msgstr "Если Вы передаете права пользования аккаунтом %s %s нажмите кнопку \" Сменить права использования\"" -#: includes/class-freemius.php:18074 +#: includes/class-freemius.php:18964 msgid "Change Ownership" msgstr "Сменить владельца лицензии " -#: includes/class-freemius.php:18082 +#: includes/class-freemius.php:18972 msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." msgstr "Ваш электронный адрес был успешно обновлен. Через несколько минут Вы получите письмо с инструкциями для подтверждения" -#: includes/class-freemius.php:18094 +#: includes/class-freemius.php:18984 msgid "Please provide your full name." msgstr "Пожалуйста, введите Ваше полное имя" -#: includes/class-freemius.php:18099 +#: includes/class-freemius.php:18989 msgid "Your name was successfully updated." msgstr "Ваше имя было успешно обновлено" -#: includes/class-freemius.php:18160 +#: includes/class-freemius.php:19050 msgid "You have successfully updated your %s." msgstr "Вы успешно обновили Ваш %s" -#: includes/class-freemius.php:18300 +#: includes/class-freemius.php:19190 msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "Сообщаем, что информация о дополнительных настройках %s предоставляется со стороннего сервера. " -#: includes/class-freemius.php:18301 +#: includes/class-freemius.php:19191 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "Внимание!" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgctxt "exclamation" msgid "Hey" -msgstr "Ау!" +msgstr "Привет!" -#: includes/class-freemius.php:18711 +#: includes/class-freemius.php:19621 msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "Тебе нравится пользоваться %s? Воспользуйся всеми нашими премиум возможностями на протяжении %d - дневного тестового периода. " -#: includes/class-freemius.php:18719 +#: includes/class-freemius.php:19629 msgid "No commitment for %s days - cancel anytime!" msgstr "Бесплатное пользование на протяжении %s дней. Отмена в любое время. " -#: includes/class-freemius.php:18720 +#: includes/class-freemius.php:19630 msgid "No credit card required" msgstr "Не требуются данные платежной карты" -#: includes/class-freemius.php18727, templates/forms/trial-start.php:53 +#: includes/class-freemius.php19637, templates/forms/trial-start.php:53 msgctxt "call to action" msgid "Start free trial" msgstr "Начни тестовый период!" -#: includes/class-freemius.php:18804 +#: includes/class-freemius.php:19714 msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" msgstr "Привет! Знали ли Вы, что %s предоставляет реферальную программу? Если Вам нравится %s, Вы можете стать нашим представителем и зарабатывать!" -#: includes/class-freemius.php:18813 +#: includes/class-freemius.php:19723 msgid "Learn more" msgstr "Узнать больше" -#: includes/class-freemius.php18963, templates/account.php394, -#: templates/account.php497, templates/connect.php169, -#: templates/connect.php408, templates/forms/license-activation.php24, -#: templates/account/partials/addon.php:230 +#: includes/class-freemius.php19873, templates/account.php406, +#: templates/account.php509, templates/connect.php171, +#: templates/connect.php421, templates/forms/license-activation.php24, +#: templates/account/partials/addon.php:235 msgid "Activate License" msgstr "Активировать лицензию" -#: includes/class-freemius.php18964, templates/account.php457, -#: templates/account.php496, templates/account/partials/site.php:256 +#: includes/class-freemius.php19874, templates/account.php469, +#: templates/account.php508, templates/account/partials/site.php:256 msgid "Change License" msgstr "Изменить лицензию " -#: includes/class-freemius.php19046, templates/account/partials/site.php:161 +#: includes/class-freemius.php19956, templates/account/partials/site.php:161 msgid "Opt Out" msgstr "Отказаться от использования" -#: includes/class-freemius.php19048, includes/class-freemius.php19053, +#: includes/class-freemius.php19958, includes/class-freemius.php19963, #: templates/account/partials/site.php43, #: templates/account/partials/site.php:161 msgid "Opt In" msgstr "Присоединиться" -#: includes/class-freemius.php:19245 +#: includes/class-freemius.php:20187 +msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" +msgstr " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" + +#: includes/class-freemius.php:20195 +msgid "Activate %s features" +msgstr "Activate %s features" + +#: includes/class-freemius.php:20208 msgid "Please follow these steps to complete the upgrade" msgstr "Пожалуйста, пройдите эти шаги для того, чтобы произвести апгрейд" -#: includes/class-freemius.php:19249 +#: includes/class-freemius.php:20212 msgid "Download the latest %s version" msgstr "Скачайте последнюю версию %s" -#: includes/class-freemius.php:19253 +#: includes/class-freemius.php:20216 msgid "Upload and activate the downloaded version" msgstr "Загрузите и активируйте скачанную версию" -#: includes/class-freemius.php:19255 +#: includes/class-freemius.php:20218 msgid "How to upload and activate?" msgstr "Как загрузить и активировать?" -#: includes/class-freemius.php:19384 +#: includes/class-freemius.php:20352 msgid "%sClick here%s to choose the sites where you'd like to activate the license on." msgstr "%sClick here%s to choose the sites where you'd like to activate the license on." -#: includes/class-freemius.php:19545 +#: includes/class-freemius.php:20513 msgid "Auto installation only works for opted-in users." msgstr "Авто установка работает только для зарегистрированных пользователей." -#: includes/class-freemius.php19555, includes/class-freemius.php19588, -#: includes/class-fs-plugin-updater.php713, -#: includes/class-fs-plugin-updater.php:727 +#: includes/class-freemius.php20523, includes/class-freemius.php20556, +#: includes/class-fs-plugin-updater.php1060, +#: includes/class-fs-plugin-updater.php:1074 msgid "Invalid module ID." msgstr "Неверный ID модуля" -#: includes/class-freemius.php19564, includes/class-fs-plugin-updater.php:747 +#: includes/class-freemius.php20532, includes/class-fs-plugin-updater.php:1096 msgid "Premium version already active." msgstr "Премиум версия уже активирована" -#: includes/class-freemius.php:19571 +#: includes/class-freemius.php:20539 msgid "You do not have a valid license to access the premium version." msgstr "У Вас нет необходимых лицензионных прав для пользования премиум версией" -#: includes/class-freemius.php:19578 +#: includes/class-freemius.php:20546 msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." msgstr "Плагин является 'Serviсeware'. Это означает, что он не имеет премиум версию кода. " -#: includes/class-freemius.php19596, includes/class-fs-plugin-updater.php:746 +#: includes/class-freemius.php20564, includes/class-fs-plugin-updater.php:1095 msgid "Premium add-on version already installed." msgstr "Премиум версия плагина была установлена" -#: includes/class-freemius.php:19941 +#: includes/class-freemius.php:20909 msgid "View paid features" msgstr "Просмотр платных возможностей" -#: includes/class-freemius.php:20251 +#: includes/class-freemius.php:21229 msgid "Thank you so much for using %s and its add-ons!" msgstr "Thank you so much for using %s and its add-ons!" -#: includes/class-freemius.php:20252 +#: includes/class-freemius.php:21230 msgid "Thank you so much for using %s!" msgstr "Thank you so much for using %s!" -#: includes/class-freemius.php:20258 +#: includes/class-freemius.php:21236 msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s." msgstr "You've already opted-in to our usage-tracking, which helps us keep improving the %s." -#: includes/class-freemius.php:20262 +#: includes/class-freemius.php:21240 msgid "Thank you so much for using our products!" msgstr "Thank you so much for using our products!" -#: includes/class-freemius.php:20263 +#: includes/class-freemius.php:21241 msgid "You've already opted-in to our usage-tracking, which helps us keep improving them." msgstr "You've already opted-in to our usage-tracking, which helps us keep improving them." -#: includes/class-freemius.php:20282 +#: includes/class-freemius.php:21260 msgid "%s and its add-ons" msgstr "%s and its add-ons" -#: includes/class-freemius.php:20291 +#: includes/class-freemius.php:21269 msgid "Products" msgstr "Products" -#: includes/class-freemius.php20298, templates/connect.php:259 +#: includes/class-freemius.php21276, templates/connect.php:272 msgid "Yes" msgstr "Yes" -#: includes/class-freemius.php20299, templates/connect.php:260 +#: includes/class-freemius.php21277, templates/connect.php:273 msgid "send me security & feature updates, educational content and offers." msgstr "send me security & feature updates, educational content and offers." -#: includes/class-freemius.php20300, templates/connect.php:265 +#: includes/class-freemius.php21278, templates/connect.php:278 msgid "No" msgstr "No" -#: includes/class-freemius.php20302, templates/connect.php:267 +#: includes/class-freemius.php21280, templates/connect.php:280 msgid "do %sNOT%s send me security & feature updates, educational content and offers." msgstr "do %sNOT%s send me security & feature updates, educational content and offers." -#: includes/class-freemius.php:20312 +#: includes/class-freemius.php:21290 msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" msgstr "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" -#: includes/class-freemius.php20314, templates/connect.php:274 +#: includes/class-freemius.php21292, templates/connect.php:287 msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" msgstr "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" -#: includes/class-freemius.php:20598 +#: includes/class-freemius.php:21574 msgid "License key is empty." msgstr "License key is empty." #: includes/class-fs-plugin-updater.php184, -#: includes/class-fs-plugin-updater.php:219 -msgid "%sRenew your license now%s to access version %s security & feature updates, and support." -msgstr "%sRenew your license now%s to access version %s security & feature updates, and support." +#: templates/forms/premium-versions-upgrade-handler.php:57 +msgid "Renew license" +msgstr "Renew license" + +#: includes/class-fs-plugin-updater.php189, +#: templates/forms/premium-versions-upgrade-handler.php:58 +msgid "Buy license" +msgstr "Buy license" + +#: includes/class-fs-plugin-updater.php:278 +msgid "There is a %s of %s available." +msgstr "There is a %s of %s available." + +#: includes/class-fs-plugin-updater.php:282 +msgid "new version" +msgstr "new version" + +#: includes/class-fs-plugin-updater.php:305 +msgid "Important Upgrade Notice:" +msgstr "Important Upgrade Notice:" -#: includes/class-fs-plugin-updater.php:776 +#: includes/class-fs-plugin-updater.php:1125 msgid "Installing plugin: %s" msgstr "Установка плагина: %s" -#: includes/class-fs-plugin-updater.php:817 +#: includes/class-fs-plugin-updater.php:1166 msgid "Unable to connect to the filesystem. Please confirm your credentials." msgstr "Невозможно присоединиться к системе файлов. Пожалуйста, подтвердите свои данные. " -#: includes/class-fs-plugin-updater.php:923 +#: includes/class-fs-plugin-updater.php:1348 msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." msgstr "Удаленный пакет плагинов не содержит папку с нужным описанием URL и смена имени не срабатывает. " -#: includes/fs-plugin-info-dialog.php336, -#: templates/account/partials/addon.php:287 +#: includes/fs-plugin-info-dialog.php369, +#: templates/account/partials/addon.php:292 msgctxt "verb" msgid "Purchase" msgstr "Купить" -#: includes/fs-plugin-info-dialog.php:339 +#: includes/fs-plugin-info-dialog.php:372 msgid "Start my free %s" msgstr "Начать мой бесплатный %s" -#: includes/fs-plugin-info-dialog.php:380 +#: includes/fs-plugin-info-dialog.php:413 msgid "Install Free Version Now" msgstr "Install Free Version Now" -#: includes/fs-plugin-info-dialog.php381, templates/auto-installation.php111, -#: templates/account/partials/addon.php267, -#: templates/account/partials/addon.php:317 +#: includes/fs-plugin-info-dialog.php414, templates/auto-installation.php111, +#: templates/account/partials/addon.php272, +#: templates/account/partials/addon.php:322 msgid "Install Now" msgstr "Установить сейчас " -#: includes/fs-plugin-info-dialog.php:392 +#: includes/fs-plugin-info-dialog.php:425 msgctxt "as download latest version" msgid "Download Latest Free Version" msgstr "Download Latest Free Version" -#: includes/fs-plugin-info-dialog.php393, templates/account.php80, +#: includes/fs-plugin-info-dialog.php426, templates/account.php80, #: templates/account/partials/addon.php:21 msgctxt "as download latest version" msgid "Download Latest" msgstr "Скачать последнюю версию" -#: includes/fs-plugin-info-dialog.php:403 +#: includes/fs-plugin-info-dialog.php:436 msgid "Install Free Version Update Now" msgstr "Install Free Version Update Now" -#: includes/fs-plugin-info-dialog.php404, templates/account.php:448 +#: includes/fs-plugin-info-dialog.php437, templates/account.php:460 msgid "Install Update Now" msgstr "Провести обновления сейчас " -#: includes/fs-plugin-info-dialog.php:415 +#: includes/fs-plugin-info-dialog.php:448 msgid "Newer Free Version (%s) Installed" msgstr "Newer Free Version (%s) Installed" -#: includes/fs-plugin-info-dialog.php:416 +#: includes/fs-plugin-info-dialog.php:449 msgid "Newer Version (%s) Installed" msgstr "Более новая версия %s установлена " -#: includes/fs-plugin-info-dialog.php:424 +#: includes/fs-plugin-info-dialog.php:457 msgid "Latest Free Version Installed" msgstr "Latest Free Version Installed" -#: includes/fs-plugin-info-dialog.php:425 +#: includes/fs-plugin-info-dialog.php:458 msgid "Latest Version Installed" msgstr "Последняя версия установлена" -#: includes/fs-plugin-info-dialog.php:580 +#: includes/fs-plugin-info-dialog.php:613 msgctxt "Plugin installer section title" msgid "Description" msgstr "Описание " -#: includes/fs-plugin-info-dialog.php:581 +#: includes/fs-plugin-info-dialog.php:614 msgctxt "Plugin installer section title" msgid "Installation" msgstr "Установка " -#: includes/fs-plugin-info-dialog.php:582 +#: includes/fs-plugin-info-dialog.php:615 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "Часто задаваемые вопросы " -#: includes/fs-plugin-info-dialog.php583, +#: includes/fs-plugin-info-dialog.php616, #: templates/plugin-info/description.php:55 msgid "Screenshots" msgstr "Снимки экрана " -#: includes/fs-plugin-info-dialog.php:584 +#: includes/fs-plugin-info-dialog.php:617 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "Журнал изменений " -#: includes/fs-plugin-info-dialog.php:585 +#: includes/fs-plugin-info-dialog.php:618 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "Отзывы " -#: includes/fs-plugin-info-dialog.php:586 +#: includes/fs-plugin-info-dialog.php:619 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "Другие заметки " -#: includes/fs-plugin-info-dialog.php:601 +#: includes/fs-plugin-info-dialog.php:634 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "Функционал&тарифные планы " -#: includes/fs-plugin-info-dialog.php:611 +#: includes/fs-plugin-info-dialog.php:644 msgid "Plugin Install" msgstr "Установка плагина " -#: includes/fs-plugin-info-dialog.php:683 +#: includes/fs-plugin-info-dialog.php:716 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "%s план " -#: includes/fs-plugin-info-dialog.php:709 +#: includes/fs-plugin-info-dialog.php:742 msgctxt "e.g. the best product" msgid "Best" msgstr "Лучший " -#: includes/fs-plugin-info-dialog.php715, -#: includes/fs-plugin-info-dialog.php:735 +#: includes/fs-plugin-info-dialog.php748, +#: includes/fs-plugin-info-dialog.php:768 msgctxt "as every month" msgid "Monthly" msgstr "Помесячно " -#: includes/fs-plugin-info-dialog.php:718 +#: includes/fs-plugin-info-dialog.php:751 msgctxt "as once a year" msgid "Annual" msgstr "Ежегодно " -#: includes/fs-plugin-info-dialog.php:721 +#: includes/fs-plugin-info-dialog.php:754 msgid "Lifetime" msgstr "На бессрочный период " -#: includes/fs-plugin-info-dialog.php735, -#: includes/fs-plugin-info-dialog.php737, -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php768, +#: includes/fs-plugin-info-dialog.php770, +#: includes/fs-plugin-info-dialog.php:772 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "Оплачивать %s" -#: includes/fs-plugin-info-dialog.php:737 +#: includes/fs-plugin-info-dialog.php:770 msgctxt "as once a year" msgid "Annually" msgstr "Один раз в год " -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php:772 msgctxt "as once a year" msgid "Once" msgstr "Один раз " -#: includes/fs-plugin-info-dialog.php:745 +#: includes/fs-plugin-info-dialog.php:778 msgid "Single Site License" msgstr "Лицензия на один сайт " -#: includes/fs-plugin-info-dialog.php:747 +#: includes/fs-plugin-info-dialog.php:780 msgid "Unlimited Licenses" msgstr "Неограниченная лицензия " -#: includes/fs-plugin-info-dialog.php:749 +#: includes/fs-plugin-info-dialog.php:782 msgid "Up to %s Sites" msgstr "до % сайтов " -#: includes/fs-plugin-info-dialog.php759, +#: includes/fs-plugin-info-dialog.php792, #: templates/plugin-info/features.php:82 msgctxt "as monthly period" msgid "mo" msgstr "на один месяц" -#: includes/fs-plugin-info-dialog.php766, +#: includes/fs-plugin-info-dialog.php799, #: templates/plugin-info/features.php:80 msgctxt "as annual period" msgid "year" msgstr "на один год " -#: includes/fs-plugin-info-dialog.php:820 +#: includes/fs-plugin-info-dialog.php:853 msgctxt "noun" msgid "Price" msgstr "Стоимость " -#: includes/fs-plugin-info-dialog.php:868 +#: includes/fs-plugin-info-dialog.php:901 msgid "Save %s" msgstr "Экономия %s" -#: includes/fs-plugin-info-dialog.php:878 +#: includes/fs-plugin-info-dialog.php:911 msgid "No commitment for %s - cancel anytime" msgstr "Без обязательств платить %s - аннулируй пользование в любое время " -#: includes/fs-plugin-info-dialog.php:881 +#: includes/fs-plugin-info-dialog.php:914 msgid "After your free %s, pay as little as %s" msgstr "После окончания Вашего бесплатного %s, платите всего лиш %s" -#: includes/fs-plugin-info-dialog.php:892 +#: includes/fs-plugin-info-dialog.php:925 msgid "Details" msgstr "Детальней" -#: includes/fs-plugin-info-dialog.php896, templates/account.php87, -#: templates/debug.php191, templates/debug.php228, templates/debug.php442, -#: templates/account/partials/addon.php:28 +#: includes/fs-plugin-info-dialog.php929, templates/account.php91, +#: templates/debug.php201, templates/debug.php238, templates/debug.php452, +#: templates/account/partials/addon.php:32 msgctxt "product version" msgid "Version" msgstr "Версия " -#: includes/fs-plugin-info-dialog.php:903 +#: includes/fs-plugin-info-dialog.php:936 msgctxt "as the plugin author" msgid "Author" msgstr "Автор" -#: includes/fs-plugin-info-dialog.php:910 +#: includes/fs-plugin-info-dialog.php:943 msgid "Last Updated" msgstr "Последнее обновление " -#: includes/fs-plugin-info-dialog.php:915 +#: includes/fs-plugin-info-dialog.php948, templates/account.php:376 msgctxt "x-ago" msgid "%s ago" msgstr "% тому назад " -#: includes/fs-plugin-info-dialog.php:924 +#: includes/fs-plugin-info-dialog.php:957 msgid "Requires WordPress Version" msgstr "Необходима версия WordPress " -#: includes/fs-plugin-info-dialog.php:925 +#: includes/fs-plugin-info-dialog.php:958 msgid "%s or higher" msgstr "%s или выше" -#: includes/fs-plugin-info-dialog.php:932 +#: includes/fs-plugin-info-dialog.php:965 msgid "Compatible up to" msgstr "Совместима с " -#: includes/fs-plugin-info-dialog.php:940 +#: includes/fs-plugin-info-dialog.php:973 msgid "Downloaded" msgstr "Загружен " -#: includes/fs-plugin-info-dialog.php:944 +#: includes/fs-plugin-info-dialog.php:977 msgid "%s time" msgstr "%s время " -#: includes/fs-plugin-info-dialog.php:946 +#: includes/fs-plugin-info-dialog.php:979 msgid "%s times" msgstr "%s раз " -#: includes/fs-plugin-info-dialog.php:956 +#: includes/fs-plugin-info-dialog.php:989 msgid "WordPress.org Plugin Page" msgstr "Страница плагинов WordPress.org" -#: includes/fs-plugin-info-dialog.php:964 +#: includes/fs-plugin-info-dialog.php:997 msgid "Plugin Homepage" msgstr "Главная страница плагина " -#: includes/fs-plugin-info-dialog.php972, -#: includes/fs-plugin-info-dialog.php:1054 +#: includes/fs-plugin-info-dialog.php1005, +#: includes/fs-plugin-info-dialog.php:1087 msgid "Donate to this plugin" msgstr "Инвестировать в разработку плагина " -#: includes/fs-plugin-info-dialog.php:979 +#: includes/fs-plugin-info-dialog.php:1012 msgid "Average Rating" msgstr "Средний рейтинг " -#: includes/fs-plugin-info-dialog.php:986 +#: includes/fs-plugin-info-dialog.php:1019 msgid "based on %s" msgstr "Основан на %s" -#: includes/fs-plugin-info-dialog.php:990 +#: includes/fs-plugin-info-dialog.php:1023 msgid "%s rating" msgstr "% оценка " -#: includes/fs-plugin-info-dialog.php:992 +#: includes/fs-plugin-info-dialog.php:1025 msgid "%s ratings" msgstr "% оценки " -#: includes/fs-plugin-info-dialog.php:1007 +#: includes/fs-plugin-info-dialog.php:1040 msgid "%s star" msgstr "%звездочка " -#: includes/fs-plugin-info-dialog.php:1009 +#: includes/fs-plugin-info-dialog.php:1042 msgid "%s stars" msgstr "% звездочки " -#: includes/fs-plugin-info-dialog.php:1020 +#: includes/fs-plugin-info-dialog.php:1053 msgid "Click to see reviews that provided a rating of %s" msgstr "Нажмите, чтобы посмотреть отзывы, которые сформировали рейтинг %s" -#: includes/fs-plugin-info-dialog.php:1033 +#: includes/fs-plugin-info-dialog.php:1066 msgid "Contributors" msgstr "Контрибьюторы " -#: includes/fs-plugin-info-dialog.php1062, -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php1095, +#: includes/fs-plugin-info-dialog.php:1097 msgid "Warning" msgstr "Предупреждение " -#: includes/fs-plugin-info-dialog.php:1062 +#: includes/fs-plugin-info-dialog.php:1095 msgid "This plugin has not been tested with your current version of WordPress." msgstr "Этот плагин не был тестирован с Вашей текущей версией WordPress. " -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php:1097 msgid "This plugin has not been marked as compatible with your version of WordPress." msgstr "Этот плагин не отмечен как совместимый з Вашей версией WordPress " -#: includes/fs-plugin-info-dialog.php:1083 +#: includes/fs-plugin-info-dialog.php:1116 msgid "Paid add-on must be deployed to Freemius." msgstr "Платный функционал должен быть заявлен в Freemius" -#: includes/fs-plugin-info-dialog.php:1084 +#: includes/fs-plugin-info-dialog.php:1117 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "Функционал должен быть заявлен на WordPress.org или Freemius " -#: templates/account.php81, templates/account/partials/addon.php22, +#: templates/account.php81, templates/forms/subscription-cancellation.php96, +#: templates/account/partials/addon.php22, #: templates/account/partials/site.php:295 -msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." -msgstr "Прекращение пользования платной версией продукта автоматически приостанавливает регулярные платежи и cрок действия Вашей лицензии %s будет закончен %s " +msgid "Downgrading your plan" +msgstr "Downgrading your plan" + +#: templates/account.php82, templates/forms/subscription-cancellation.php97, +#: templates/account/partials/addon.php23, +#: templates/account/partials/site.php:296 +msgid "Cancelling the subscription" +msgstr "Cancelling the subscription" + +#. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the +#. subscription' +#: templates/account.php84, templates/forms/subscription-cancellation.php99, +#: templates/account/partials/addon.php25, +#: templates/account/partials/site.php:298 +msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." +msgstr "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." -#: templates/account.php82, templates/account/partials/addon.php:23 +#: templates/account.php85, templates/forms/subscription-cancellation.php100, +#: templates/account/partials/addon.php26, +#: templates/account/partials/site.php:299 +msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." +msgstr "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." + +#: templates/account.php86, templates/forms/subscription-cancellation.php106, +#: templates/account/partials/addon.php:27 msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "Отказ от пользования тестовым периодом автоматически блокирует доступ ко всем премиум возможностям. Вы уверены, что хотите отказаться?" -#: templates/account.php83, templates/account/partials/addon.php24, -#: templates/account/partials/site.php:296 -msgid "You can still enjoy all %s features but you will not have access to %s updates and support." -msgstr "Вы все еще можете пользоваться всеми возможностями %, но у Вас не будет доступа к обновлениям и поддержке %s" +#: templates/account.php87, templates/forms/subscription-cancellation.php101, +#: templates/account/partials/addon.php28, +#: templates/account/partials/site.php:300 +msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." +msgstr "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." -#: templates/account.php84, templates/account/partials/addon.php25, -#: templates/account/partials/site.php:297 +#: templates/account.php88, templates/forms/subscription-cancellation.php102, +#: templates/account/partials/addon.php29, +#: templates/account/partials/site.php:301 msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." msgstr "По окончанию срока действия Вашей лицензии, Вы сможете пользоваться бесплатной версией, но у Вас не будет доступа к возможностям %s. " #. translators: %s: Plan title (e.g. "Professional") -#: templates/account.php86, +#: templates/account.php90, #: templates/account/partials/activate-license-button.php31, -#: templates/account/partials/addon.php:27 +#: templates/account/partials/addon.php:31 msgid "Activate %s Plan" msgstr "Активируйте план %s" #. translators: %s: Time period (e.g. Auto renews in "2 months") -#: templates/account.php89, templates/account/partials/addon.php30, +#: templates/account.php93, templates/account/partials/addon.php34, #: templates/account/partials/site.php:275 msgid "Auto renews in %s" msgstr "Автоматическое продление в %s" #. translators: %s: Time period (e.g. Expires in "2 months") -#: templates/account.php91, templates/account/partials/addon.php32, +#: templates/account.php95, templates/account/partials/addon.php36, #: templates/account/partials/site.php:277 msgid "Expires in %s" msgstr "Окончание срока пользования через %s" -#: templates/account.php92, templates/account/partials/addon.php:33 +#: templates/account.php96, templates/account/partials/addon.php:37 msgctxt "as synchronize license" msgid "Sync License" msgstr "Синхронизация лицензии " -#: templates/account.php93, templates/account/partials/addon.php:34 +#: templates/account.php97, templates/account/partials/addon.php:38 msgid "Cancel Trial" msgstr "Отменить тестовый период " -#: templates/account.php94, templates/account/partials/addon.php:35 +#: templates/account.php98, templates/account/partials/addon.php:39 msgid "Change Plan" msgstr "Изменить план " -#: templates/account.php95, templates/account/partials/addon.php:36 +#: templates/account.php99, templates/account/partials/addon.php:40 msgctxt "verb" msgid "Upgrade" msgstr "Сделать апгрейд" -#: templates/account.php97, templates/account/partials/addon.php38, -#: templates/account/partials/site.php:298 +#: templates/account.php101, templates/account/partials/addon.php42, +#: templates/account/partials/site.php:302 msgctxt "verb" msgid "Downgrade" msgstr "Понизить план " -#: templates/account.php99, templates/add-ons.php126, +#: templates/account.php103, templates/add-ons.php130, #: templates/plugin-info/features.php72, -#: templates/account/partials/addon.php40, +#: templates/account/partials/addon.php44, #: templates/account/partials/site.php:31 msgid "Free" msgstr "Бесплатная " -#: templates/account.php100, templates/account/partials/addon.php:41 +#: templates/account.php104, templates/account/partials/addon.php:45 msgid "Activate" msgstr "Активировать " -#: templates/account.php101, templates/debug.php361, +#: templates/account.php105, templates/debug.php371, #: includes/customizer/class-fs-customizer-upsell-control.php106, -#: templates/account/partials/addon.php:42 +#: templates/account/partials/addon.php:46 msgctxt "as product pricing plan" msgid "Plan" msgstr "Тарифный план " -#: templates/account.php:154 +#: templates/account.php:158 msgid "Free Trial" msgstr "Бесплатный период пользования " -#: templates/account.php:165 +#: templates/account.php:169 msgid "Account Details" msgstr " Детали" -#: templates/account.php:175 +#: templates/account.php:179 msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" msgstr "Удалив личный кабинет, Вы автоматически деактивируете лицензию на Ваш тарифный план %s, которую Вы можете использовать на других сайтах. Если Вы хотите также приостановить регулярные платежи, нажмите на кнопку \"Отмена\" и сначала измените свой тарифный план на бесплатный. Вы уверены, что хотите продолжить удаление?" -#: templates/account.php:177 +#: templates/account.php:181 msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" msgstr "Удаление личного кабинете не может быть произведено временно. Удалите только в случае если Вы больше не хотите пользоваться %s. Вы уверены, что хотите продолжить удаление? " -#: templates/account.php:180 +#: templates/account.php:184 msgid "Delete Account" msgstr "Удалить личный кабинет" -#: templates/account.php192, templates/account/partials/addon.php155, +#: templates/account.php196, templates/account/partials/addon.php159, #: templates/account/partials/deactivate-license-button.php:35 msgid "Deactivate License" msgstr "Деактивировать лицензию " -#: templates/account.php:210 +#: templates/account.php219, templates/forms/subscription-cancellation.php:125 msgid "Are you sure you want to proceed?" msgstr "Вы уверены, что хотите продолжить?" -#: templates/account.php210, templates/account/partials/addon.php:177 +#: templates/account.php219, templates/account/partials/addon.php:182 msgid "Cancel Subscription" msgstr "Отменить подписку " -#: templates/account.php:239 +#: templates/account.php:247 msgctxt "as synchronize" msgid "Sync" msgstr "Синхронизировать " -#: templates/account.php253, templates/debug.php:477 +#: templates/account.php261, templates/debug.php:487 msgid "Name" msgstr "Имя" -#: templates/account.php259, templates/debug.php:478 +#: templates/account.php267, templates/debug.php:488 msgid "Email" msgstr "Электронный адрес " -#: templates/account.php266, templates/debug.php360, templates/debug.php:516 +#: templates/account.php274, templates/debug.php370, templates/debug.php:526 msgid "User ID" msgstr "User ID " -#: templates/account.php:274 +#: templates/account.php:282 msgid "Site ID" msgstr "Site ID" -#: templates/account.php:277 +#: templates/account.php:285 msgid "No ID" msgstr "No ID" -#: templates/account.php282, templates/debug.php233, templates/debug.php362, -#: templates/debug.php443, templates/debug.php480, +#: templates/account.php290, templates/debug.php243, templates/debug.php372, +#: templates/debug.php453, templates/debug.php490, #: templates/account/partials/site.php:219 msgid "Public Key" msgstr "Public Key " -#: templates/account.php288, templates/debug.php363, templates/debug.php444, -#: templates/debug.php481, templates/account/partials/site.php:231 +#: templates/account.php296, templates/debug.php373, templates/debug.php454, +#: templates/debug.php491, templates/account/partials/site.php:231 msgid "Secret Key" msgstr "Secret Key " -#: templates/account.php:291 +#: templates/account.php:299 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "Нет секрета " -#: templates/account.php310, templates/account/partials/site.php112, +#: templates/account.php318, templates/account/partials/site.php112, #: templates/account/partials/site.php:114 msgid "Trial" msgstr "Тестовый период " -#: templates/account.php329, templates/debug.php521, +#: templates/account.php337, templates/debug.php531, #: templates/account/partials/site.php:248 msgid "License Key" msgstr "Лицензионный ключ " -#: templates/account.php:359 +#: templates/account.php:367 msgid "not verified" msgstr "не подтвержден " -#: templates/account.php:416 +#: templates/account.php376, templates/account/partials/addon.php:120 +msgid "Expired" +msgstr "Срок действия закончился " + +#: templates/account.php:428 msgid "Premium version" msgstr "Премиум версия " -#: templates/account.php:418 +#: templates/account.php:430 msgid "Free version" msgstr "Бесплатная версия " -#: templates/account.php:430 +#: templates/account.php:442 msgid "Verify Email" msgstr "Подтвердите электронный адрес " -#: templates/account.php:441 +#: templates/account.php:453 msgid "Download %s Version" msgstr "Скачайте версию %s" -#: templates/account.php455, templates/account.php636, +#: templates/account.php467, templates/account.php649, #: templates/account/partials/site.php237, #: templates/account/partials/site.php:255 msgctxt "verb" msgid "Show" msgstr "Показать " -#: templates/account.php:469 +#: templates/account.php:481 msgid "What is your %s?" msgstr "Какой Ваш %s?" -#: templates/account.php477, templates/account/billing.php:27 +#: templates/account.php489, templates/account/billing.php:27 msgctxt "verb" msgid "Edit" msgstr "Редактировать " -#: templates/account.php:490 +#: templates/account.php:502 msgid "Sites" msgstr "Сайтов " -#: templates/account.php:501 +#: templates/account.php:513 msgid "Search by address" msgstr "Search by address" -#: templates/account.php510, templates/account.php558, templates/debug.php226, -#: templates/debug.php354, templates/debug.php439, templates/debug.php476, -#: templates/debug.php514, templates/debug.php587, +#: templates/account.php522, templates/account.php570, templates/debug.php236, +#: templates/debug.php364, templates/debug.php449, templates/debug.php486, +#: templates/debug.php524, templates/debug.php597, #: templates/account/payments.php35, templates/debug/logger.php:21 msgid "ID" msgstr "ID" -#: templates/account.php511, templates/debug.php:357 +#: templates/account.php523, templates/debug.php:367 msgid "Address" msgstr "Address" -#: templates/account.php:512 +#: templates/account.php:524 msgid "License" msgstr "Лицензия " -#: templates/account.php:513 +#: templates/account.php:525 msgid "Plan" msgstr "Тарифный план " -#: templates/account.php:561 +#: templates/account.php:573 msgctxt "as software license" msgid "License" msgstr "Лицензия " -#: templates/account.php:630 +#: templates/account.php:643 msgctxt "verb" msgid "Hide" msgstr "Спрятать " -#: templates/account.php:665 +#: templates/account.php:686 +msgid "Cancelling %s" +msgstr "Cancelling %s" + +#: templates/account.php686, templates/account.php703, +#: templates/forms/subscription-cancellation.php27, +#: templates/forms/deactivation/form.php:117 +msgid "trial" +msgstr "trial" + +#: templates/account.php701, templates/forms/deactivation/form.php:134 +msgid "Cancelling %s..." +msgstr "Cancelling %s..." + +#: templates/account.php704, templates/forms/subscription-cancellation.php28, +#: templates/forms/deactivation/form.php:118 +msgid "subscription" +msgstr "subscription" + +#: templates/account.php:718 msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" msgstr "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" @@ -1319,7 +1417,7 @@ msgstr "Функционал для %s" msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." msgstr "Мы не можем загрузить список плагинов. Вероятно, произошла какая-то ошибка с нашей стороны. Пожалуйста, вернитесь на страницу через несколько минут. " -#: templates/add-ons.php:135 +#: templates/add-ons.php:139 msgid "View details" msgstr "Смотреть детальней " @@ -1358,163 +1456,167 @@ msgid "PCI compliant" msgstr "Жалоба PCI" #. translators: %s: name (e.g. Hey John,) -#: templates/connect.php:110 +#: templates/connect.php:112 msgctxt "greeting" msgid "Hey %s," msgstr "Здравствуйте %s" -#: templates/connect.php:152 +#: templates/connect.php:154 msgid "Allow & Continue" msgstr "Разрешить и продолжить" -#: templates/connect.php:156 +#: templates/connect.php:158 msgid "Re-send activation email" msgstr "Отправить письмо активации еще раз " -#: templates/connect.php:160 +#: templates/connect.php:162 msgid "Thanks %s!" msgstr "Спасибо %s" -#: templates/connect.php170, templates/forms/license-activation.php:43 +#: templates/connect.php172, templates/forms/license-activation.php:43 msgid "Agree & Activate License" msgstr "Согласиться и активировать лицензию " -#: templates/connect.php:179 +#: templates/connect.php:181 msgid "Thanks for purchasing %s! To get started, please enter your license key:" msgstr "Спасибо за покупку %s! Для того, чтобы начать введите свой лицензионный ключ:" -#: templates/connect.php:186 +#: templates/connect.php:188 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." -#: templates/connect.php:187 +#: templates/connect.php:189 msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." msgstr "Никогда не пропускайте важных оповещений - подпишитесь на наши уведомления о безопасности и новом функционале." -#: templates/connect.php:193 +#: templates/connect.php:195 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." -#: templates/connect.php:194 +#: templates/connect.php:196 msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." -#: templates/connect.php:228 +#: templates/connect.php:230 msgid "We're excited to introduce the Freemius network-level integration." msgstr "We're excited to introduce the Freemius network-level integration." -#: templates/connect.php:231 +#: templates/connect.php:233 msgid "During the update process we detected %d site(s) that are still pending license activation." msgstr "During the update process we detected %d site(s) that are still pending license activation." -#: templates/connect.php:233 +#: templates/connect.php:235 msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." msgstr "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." -#: templates/connect.php:235 +#: templates/connect.php:237 msgid "%s's paid features" msgstr "%s's paid features" -#: templates/connect.php:240 +#: templates/connect.php:242 msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." msgstr "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." -#: templates/connect.php:242 +#: templates/connect.php:244 msgid "During the update process we detected %s site(s) in the network that are still pending your attention." msgstr "During the update process we detected %s site(s) in the network that are still pending your attention." -#: templates/connect.php251, templates/forms/license-activation.php:46 +#: templates/connect.php253, templates/forms/license-activation.php:46 msgid "License key" msgstr "Лицензионный ключ" -#: templates/connect.php254, templates/forms/license-activation.php:19 +#: templates/connect.php256, templates/forms/license-activation.php:19 msgid "Can't find your license key?" msgstr "Не можете найти лицензионный ключ? " -#: templates/connect.php302, templates/connect.php617, +#: templates/connect.php315, templates/connect.php630, #: templates/forms/deactivation/retry-skip.php:20 msgctxt "verb" msgid "Skip" msgstr "Пропустить" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "Delegate to Site Admins" msgstr "Delegate to Site Admins" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "If you click it, this decision will be delegated to the sites administrators." msgstr "If you click it, this decision will be delegated to the sites administrators." -#: templates/connect.php:333 +#: templates/connect.php:346 msgid "Your Profile Overview" msgstr "Просмотр Вашего профиля " -#: templates/connect.php:334 +#: templates/connect.php:347 msgid "Name and email address" msgstr "Имя и электронный адрес " -#: templates/connect.php:339 +#: templates/connect.php:352 msgid "Your Site Overview" msgstr "Просмотр Вашего сайта " -#: templates/connect.php:340 +#: templates/connect.php:353 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "URL сайта, версия WP, информация о PHP, плагинах и шаблонах " -#: templates/connect.php:345 +#: templates/connect.php:358 msgid "Admin Notices" msgstr "Админ заметки" -#: templates/connect.php346, templates/connect.php:362 +#: templates/connect.php359, templates/connect.php:375 msgid "Updates, announcements, marketing, no spam" msgstr "Новости, объявления, маркетинг, без спама" -#: templates/connect.php:351 +#: templates/connect.php:364 msgid "Current %s Events" msgstr "Текущие события %s" -#: templates/connect.php:352 +#: templates/connect.php:365 msgid "Activation, deactivation and uninstall" msgstr "Активация, деактивация и деинсталляция " -#: templates/connect.php:361 +#: templates/connect.php:374 msgid "Newsletter" msgstr "Рассылка " -#: templates/connect.php378, templates/forms/license-activation.php:38 +#: templates/connect.php391, templates/forms/license-activation.php:38 msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." msgstr "%1$s будет периодически присылать информацию %2$s с целью проверки безопасности, сообщения об обновлении функционала и подтверждения действия Вашей лицензии. " -#: templates/connect.php:383 +#: templates/connect.php:396 msgid "What permissions are being granted?" msgstr "Какие предоставляются разрешения?" -#: templates/connect.php:404 +#: templates/connect.php:417 msgid "Don't have a license key?" msgstr "У Вас нет лицензионного ключа?" -#: templates/connect.php:405 +#: templates/connect.php:418 msgid "Activate Free Version" msgstr "Активировать бесплатную версию?" -#: templates/connect.php:407 +#: templates/connect.php:420 msgid "Have a license key?" msgstr "У Вас есть лицензионный ключ?" -#: templates/connect.php:415 +#: templates/connect.php:428 msgid "Privacy Policy" msgstr "Политика Конфиденциальности" -#: templates/connect.php:417 +#: templates/connect.php:430 +msgid "License Agreement" +msgstr "License Agreement" + +#: templates/connect.php:430 msgid "Terms of Service" msgstr "Пользовательское соглашение" -#: templates/connect.php:750 +#: templates/connect.php:766 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "Электронное письмо отправляется Вам на почту " -#: templates/connect.php:751 +#: templates/connect.php:767 msgctxt "as activating plugin" msgid "Activating" msgstr "Активация " @@ -1542,8 +1644,8 @@ msgctxt "as code debugging" msgid "Debugging" msgstr "Устранение ошибок" -#: templates/debug.php54, templates/debug.php238, templates/debug.php364, -#: templates/debug.php:482 +#: templates/debug.php54, templates/debug.php248, templates/debug.php374, +#: templates/debug.php:492 msgid "Actions" msgstr "Действия " @@ -1567,199 +1669,203 @@ msgstr "Clear Updates Transients" msgid "Sync Data From Server" msgstr "Синхронизация данных с сервера " -#: templates/debug.php:90 +#: templates/debug.php:95 +msgid "Migrate Options to Network" +msgstr "Migrate Options to Network" + +#: templates/debug.php:100 msgid "Load DB Option" msgstr "Загрузить опцию базы данных " -#: templates/debug.php:93 +#: templates/debug.php:103 msgid "Set DB Option" msgstr "Установить опцию базы данных " -#: templates/debug.php:170 +#: templates/debug.php:180 msgid "Key" msgstr "Ключ " -#: templates/debug.php:171 +#: templates/debug.php:181 msgid "Value" msgstr "Значение " -#: templates/debug.php:187 +#: templates/debug.php:197 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "Версии SDK" -#: templates/debug.php:192 +#: templates/debug.php:202 msgid "SDK Path" msgstr "путь SDK" -#: templates/debug.php193, templates/debug.php:232 +#: templates/debug.php203, templates/debug.php:242 msgid "Module Path" msgstr "Путь модуля " -#: templates/debug.php:194 +#: templates/debug.php:204 msgid "Is Active" msgstr "активный " -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:35 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:35 msgid "Plugins" msgstr "Плагины " -#: templates/debug.php222, templates/debug/plugins-themes-sync.php:56 +#: templates/debug.php232, templates/debug/plugins-themes-sync.php:56 msgid "Themes" msgstr "Шаблоны " -#: templates/debug.php227, templates/debug.php359, templates/debug.php441, +#: templates/debug.php237, templates/debug.php369, templates/debug.php451, #: templates/debug/scheduled-crons.php:80 msgid "Slug" msgstr "Описательная часть URL " -#: templates/debug.php229, templates/debug.php:440 +#: templates/debug.php239, templates/debug.php:450 msgid "Title" msgstr "Название " -#: templates/debug.php:230 +#: templates/debug.php:240 msgctxt "as application program interface" msgid "API" msgstr "API" -#: templates/debug.php:231 +#: templates/debug.php:241 msgid "Freemius State" msgstr "Cостояние Freemius " -#: templates/debug.php:235 +#: templates/debug.php:245 msgid "Network Blog" msgstr "Network Blog" -#: templates/debug.php:236 +#: templates/debug.php:246 msgid "Network User" msgstr "Network User" -#: templates/debug.php:273 +#: templates/debug.php:283 msgctxt "as connection was successful" msgid "Connected" msgstr "Соединено " -#: templates/debug.php:274 +#: templates/debug.php:284 msgctxt "as connection blocked" msgid "Blocked" msgstr "Заблокировано " -#: templates/debug.php:310 -msgid "Simulate Trial" -msgstr "Симулировать тестовый период " +#: templates/debug.php:320 +msgid "Simulate Trial Promotion" +msgstr "Simulate Trial Promotion" -#: templates/debug.php:322 +#: templates/debug.php:332 msgid "Simulate Network Upgrade" msgstr "Simulate Network Upgrade" -#: templates/debug.php:348 +#: templates/debug.php:358 msgid "%s Installs" msgstr "%s установок " -#: templates/debug.php:350 +#: templates/debug.php:360 msgctxt "like websites" msgid "Sites" msgstr "Сайтов " -#: templates/debug.php356, templates/account/partials/site.php:148 +#: templates/debug.php366, templates/account/partials/site.php:148 msgid "Blog ID" msgstr "Blog ID" -#: templates/debug.php421, templates/debug.php499, -#: templates/account/partials/addon.php:334 +#: templates/debug.php431, templates/debug.php509, +#: templates/account/partials/addon.php:339 msgctxt "verb" msgid "Delete" msgstr "Удалить" -#: templates/debug.php:435 +#: templates/debug.php:445 msgid "Add Ons of module %s" msgstr "Функционал модуля %s" -#: templates/debug.php:472 +#: templates/debug.php:482 msgid "Users" msgstr "Пользователи " -#: templates/debug.php:479 +#: templates/debug.php:489 msgid "Verified" msgstr "Подтвержден " -#: templates/debug.php:510 +#: templates/debug.php:520 msgid "%s Licenses" msgstr "%s лицензий " -#: templates/debug.php:515 +#: templates/debug.php:525 msgid "Plugin ID" msgstr "ID плагина " -#: templates/debug.php:517 +#: templates/debug.php:527 msgid "Plan ID" msgstr "ID тарифного плана " -#: templates/debug.php:518 +#: templates/debug.php:528 msgid "Quota" msgstr "Выделенный объем памяти" -#: templates/debug.php:519 +#: templates/debug.php:529 msgid "Activated" msgstr "Активирован " -#: templates/debug.php:520 +#: templates/debug.php:530 msgid "Blocking" msgstr "Блокирование " -#: templates/debug.php:522 +#: templates/debug.php:532 msgctxt "as expiration date" msgid "Expiration" msgstr "Срок пользования " -#: templates/debug.php:545 +#: templates/debug.php:555 msgid "Debug Log" msgstr "Журнал устранения ошибок " -#: templates/debug.php:549 +#: templates/debug.php:559 msgid "All Types" msgstr "Все типы" -#: templates/debug.php:556 +#: templates/debug.php:566 msgid "All Requests" msgstr "Все запросы " -#: templates/debug.php561, templates/debug.php590, +#: templates/debug.php571, templates/debug.php600, #: templates/debug/logger.php:25 msgid "File" msgstr "Файл" -#: templates/debug.php562, templates/debug.php588, +#: templates/debug.php572, templates/debug.php598, #: templates/debug/logger.php:23 msgid "Function" msgstr "Функция " -#: templates/debug.php:563 +#: templates/debug.php:573 msgid "Process ID" msgstr "ID процесса " -#: templates/debug.php:564 +#: templates/debug.php:574 msgid "Logger" msgstr "Программа сохранения изменений " -#: templates/debug.php565, templates/debug.php589, +#: templates/debug.php575, templates/debug.php599, #: templates/debug/logger.php:24 msgid "Message" msgstr "Сообщение " -#: templates/debug.php:567 +#: templates/debug.php:577 msgid "Filter" msgstr "Фильтр " -#: templates/debug.php:575 +#: templates/debug.php:585 msgid "Download" msgstr "Скачать " -#: templates/debug.php586, templates/debug/logger.php:22 +#: templates/debug.php596, templates/debug/logger.php:22 msgid "Type" msgstr "Тип" -#: templates/debug.php591, templates/debug/logger.php:26 +#: templates/debug.php601, templates/debug/logger.php:26 msgid "Timestamp" msgstr "Маркер времени " @@ -2110,23 +2216,19 @@ msgstr "Данные о пользовании исследуются с цел msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." msgstr "Если Вы нажмете \"Отписаться\", Вы больше не будете получать информацию от %s на %s." -#: templates/forms/premium-versions-upgrade-handler.php:24 +#: templates/forms/premium-versions-upgrade-handler.php:40 msgid "There is a new version of %s available." msgstr "There is a new version of %s available." -#: templates/forms/premium-versions-upgrade-handler.php:25 -msgid " %sRenew your license now%s to access version %s security & feature updates, and support." -msgstr " %sRenew your license now%s to access version %s security & feature updates, and support." +#: templates/forms/premium-versions-upgrade-handler.php:41 +msgid " %s to access version %s security & feature updates, and support." +msgstr " %s to access version %s security & feature updates, and support." -#: templates/forms/premium-versions-upgrade-handler.php:34 +#: templates/forms/premium-versions-upgrade-handler.php:54 msgid "New Version Available" msgstr "New Version Available" -#: templates/forms/premium-versions-upgrade-handler.php:36 -msgid "Renew license" -msgstr "Renew license" - -#: templates/forms/premium-versions-upgrade-handler.php:53 +#: templates/forms/premium-versions-upgrade-handler.php:75 msgctxt "close a window" msgid "Dismiss" msgstr "Закрыть " @@ -2139,6 +2241,43 @@ msgstr "Отправить лицензионный ключ" msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." msgstr "Введите ниже адрес своей электронной почты, которую Вы использовали для обновлений и мы Вам отправим повторно Ваш лицензионный ключ. " +#: templates/forms/subscription-cancellation.php:37 +msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." +msgstr "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." + +#: templates/forms/subscription-cancellation.php:47 +msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" +msgstr "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" + +#: templates/forms/subscription-cancellation.php:52 +msgid "license" +msgstr "license" + +#: templates/forms/subscription-cancellation.php:57 +msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." +msgstr "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." + +#: templates/forms/subscription-cancellation.php:68 +msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." +msgstr "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." + +#: templates/forms/subscription-cancellation.php:103 +msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." +msgstr "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." + +#: templates/forms/subscription-cancellation.php:136 +msgid "Cancel %s?" +msgstr "Cancel %s?" + +#: templates/forms/subscription-cancellation.php:143 +msgid "Proceed" +msgstr "Proceed" + +#: templates/forms/subscription-cancellation.php191, +#: templates/forms/deactivation/form.php:150 +msgid "Cancel %s & Proceed" +msgstr "Cancel %s & Proceed" + #: templates/forms/trial-start.php:22 msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "Вы уже на расстоянии одного клика от начала Вашего бесплатного %1$s - дневного тестового периода по тарифному плану %2$s. " @@ -2204,20 +2343,16 @@ msgstr "Осталось %s " msgid "Last license" msgstr "Последняя лицензия " -#: templates/account/partials/addon.php:111 +#: templates/account/partials/addon.php:115 msgid "Cancelled" msgstr "Аннулирована " -#: templates/account/partials/addon.php:116 -msgid "Expired" -msgstr "Срок действия закончился " - -#: templates/account/partials/addon.php:121 +#: templates/account/partials/addon.php:125 msgid "No expiration" msgstr "Бессрочный период пользования " -#: templates/account/partials/addon.php259, -#: templates/account/partials/addon.php:312 +#: templates/account/partials/addon.php264, +#: templates/account/partials/addon.php:317 msgid "Activate this add-on" msgstr "Активируйте этот функционал " @@ -2245,47 +2380,47 @@ msgstr "Извините за неудобство. Мы будем рады п msgid "Contact Support" msgstr "Связаться со службой поддержки" -#: templates/forms/deactivation/form.php:56 +#: templates/forms/deactivation/form.php:59 msgid "Anonymous feedback" msgstr "Анонимный отзыв " -#: templates/forms/deactivation/form.php:63 +#: templates/forms/deactivation/form.php:66 msgid "Deactivate" msgstr "Деактивировать " -#: templates/forms/deactivation/form.php:65 +#: templates/forms/deactivation/form.php:68 msgid "Activate %s" msgstr "Активировать %s" -#: templates/forms/deactivation/form.php:76 -msgid "Quick feedback" -msgstr "Быстрый отзыв" - #: templates/forms/deactivation/form.php:80 +msgid "Quick Feedback" +msgstr "Quick Feedback" + +#: templates/forms/deactivation/form.php:84 msgid "If you have a moment, please let us know why you are %s" msgstr "Если у Вас есть время, пожалуйста, сообщите причину почему Вы %s" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "deactivating" msgstr "Деактивация " -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "switching" msgstr "Переключение " -#: templates/forms/deactivation/form.php:269 +#: templates/forms/deactivation/form.php:332 msgid "Submit & %s" msgstr "Отправить&%s" -#: templates/forms/deactivation/form.php:290 +#: templates/forms/deactivation/form.php:353 msgid "Kindly tell us the reason so we can improve." msgstr "Пожалуйста, укажите причину, чтобы мы могли исправиться. " -#: templates/forms/deactivation/form.php:411 +#: templates/forms/deactivation/form.php:478 msgid "Yes - %s" msgstr "Да - %s" -#: templates/forms/deactivation/form.php:418 +#: templates/forms/deactivation/form.php:485 msgid "Skip & %s" msgstr "Пропустить & %s" diff --git a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius.pot b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius.pot index 70f2a6121..e6cc1d7db 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/languages/freemius.pot +++ b/wp-content/plugins/nextgen-gallery/freemius/languages/freemius.pot @@ -1,4 +1,4 @@ -# Copyright (C) 2018 freemius +# Copyright (C) 2019 freemius # This file is distributed under the same license as the freemius package. msgid "" msgstr "" @@ -16,1226 +16,1301 @@ msgstr "" "X-Poedit-SourceCharset: UTF-8\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: includes/class-freemius.php:1551 +#: includes/class-freemius.php:1688 msgid "Freemius SDK couldn't find the plugin's main file. Please contact sdk@freemius.com with the current error." msgstr "" -#: includes/class-freemius.php:1553 +#: includes/class-freemius.php:1690 msgid "Error" msgstr "" -#: includes/class-freemius.php:1871 +#: includes/class-freemius.php:2011 msgid "I found a better %s" msgstr "" -#: includes/class-freemius.php:1873 +#: includes/class-freemius.php:2013 msgid "What's the %s's name?" msgstr "" -#: includes/class-freemius.php:1879 +#: includes/class-freemius.php:2019 msgid "It's a temporary %s. I'm just debugging an issue." msgstr "" -#: includes/class-freemius.php:1881 +#: includes/class-freemius.php:2021 msgid "Deactivation" msgstr "" -#: includes/class-freemius.php:1882 +#: includes/class-freemius.php:2022 msgid "Theme Switch" msgstr "" -#: includes/class-freemius.php:1891, templates/forms/resend-key.php:24 +#: includes/class-freemius.php:2031, templates/forms/resend-key.php:24 msgid "Other" msgstr "" -#: includes/class-freemius.php:1899 +#: includes/class-freemius.php:2039 msgid "I no longer need the %s" msgstr "" -#: includes/class-freemius.php:1906 +#: includes/class-freemius.php:2046 msgid "I only needed the %s for a short period" msgstr "" -#: includes/class-freemius.php:1912 +#: includes/class-freemius.php:2052 msgid "The %s broke my site" msgstr "" -#: includes/class-freemius.php:1919 +#: includes/class-freemius.php:2059 msgid "The %s suddenly stopped working" msgstr "" -#: includes/class-freemius.php:1929 +#: includes/class-freemius.php:2069 msgid "I can't pay for it anymore" msgstr "" -#: includes/class-freemius.php:1931 +#: includes/class-freemius.php:2071 msgid "What price would you feel comfortable paying?" msgstr "" -#: includes/class-freemius.php:1937 +#: includes/class-freemius.php:2077 msgid "I don't like to share my information with you" msgstr "" -#: includes/class-freemius.php:1958 +#: includes/class-freemius.php:2098 msgid "The %s didn't work" msgstr "" -#: includes/class-freemius.php:1968 +#: includes/class-freemius.php:2108 msgid "I couldn't understand how to make it work" msgstr "" -#: includes/class-freemius.php:1976 +#: includes/class-freemius.php:2116 msgid "The %s is great, but I need specific feature that you don't support" msgstr "" -#: includes/class-freemius.php:1978 +#: includes/class-freemius.php:2118 msgid "What feature?" msgstr "" -#: includes/class-freemius.php:1982 +#: includes/class-freemius.php:2122 msgid "The %s is not working" msgstr "" -#: includes/class-freemius.php:1984 +#: includes/class-freemius.php:2124 msgid "Kindly share what didn't work so we can fix it for future users..." msgstr "" -#: includes/class-freemius.php:1988 +#: includes/class-freemius.php:2128 msgid "It's not what I was looking for" msgstr "" -#: includes/class-freemius.php:1990 +#: includes/class-freemius.php:2130 msgid "What you've been looking for?" msgstr "" -#: includes/class-freemius.php:1994 +#: includes/class-freemius.php:2134 msgid "The %s didn't work as expected" msgstr "" -#: includes/class-freemius.php:1996 +#: includes/class-freemius.php:2136 msgid "What did you expect?" msgstr "" -#: includes/class-freemius.php:2729, templates/debug.php:20 +#: includes/class-freemius.php:2947, templates/debug.php:20 msgid "Freemius Debug" msgstr "" -#: includes/class-freemius.php:3453 +#: includes/class-freemius.php:3675 msgid "I don't know what is cURL or how to install it, help me!" msgstr "" -#: includes/class-freemius.php:3455 +#: includes/class-freemius.php:3677 msgid "We'll make sure to contact your hosting company and resolve the issue. You will get a follow-up email to %s once we have an update." msgstr "" -#: includes/class-freemius.php:3462 +#: includes/class-freemius.php:3684 msgid "Great, please install cURL and enable it in your php.ini file. In addition, search for the 'disable_functions' directive in your php.ini file and remove any disabled methods starting with 'curl_'. To make sure it was successfully activated, use 'phpinfo()'. Once activated, deactivate the %s and reactivate it back again." msgstr "" -#: includes/class-freemius.php:3567 +#: includes/class-freemius.php:3789 msgid "Yes - do your thing" msgstr "" -#: includes/class-freemius.php:3572 +#: includes/class-freemius.php:3794 msgid "No - just deactivate" msgstr "" -#: includes/class-freemius.php:3617, includes/class-freemius.php:4117, includes/class-freemius.php:5178, includes/class-freemius.php:10992, includes/class-freemius.php:14256, includes/class-freemius.php:14308, includes/class-freemius.php:14370, includes/class-freemius.php:16500, includes/class-freemius.php:16510, includes/class-freemius.php:17066, includes/class-freemius.php:17084, includes/class-freemius.php:17182, includes/class-freemius.php:17925, templates/add-ons.php:43 +#: includes/class-freemius.php:3839, includes/class-freemius.php:4348, includes/class-freemius.php:5447, includes/class-freemius.php:11555, includes/class-freemius.php:14926, includes/class-freemius.php:14978, includes/class-freemius.php:15040, includes/class-freemius.php:17273, includes/class-freemius.php:17283, includes/class-freemius.php:17892, includes/class-freemius.php:18752, includes/class-freemius.php:18867, includes/class-freemius.php:19011, templates/add-ons.php:43 msgctxt "exclamation" msgid "Oops" msgstr "" -#: includes/class-freemius.php:3686 +#: includes/class-freemius.php:3908 msgid "Thank for giving us the chance to fix it! A message was just sent to our technical staff. We will get back to you as soon as we have an update to %s. Appreciate your patience." msgstr "" -#: includes/class-freemius.php:4114 +#: includes/class-freemius.php:4345 msgctxt "addonX cannot run without pluginY" msgid "%s cannot run without %s." msgstr "" -#: includes/class-freemius.php:4115 +#: includes/class-freemius.php:4346 msgctxt "addonX cannot run..." msgid "%s cannot run without the plugin." msgstr "" -#: includes/class-freemius.php:4227, includes/class-freemius.php:4252, includes/class-freemius.php:17155 +#: includes/class-freemius.php:4492, includes/class-freemius.php:4517, includes/class-freemius.php:17963 msgid "Unexpected API error. Please contact the %s's author with the following error." msgstr "" -#: includes/class-freemius.php:4866 +#: includes/class-freemius.php:5135 msgid "Premium %s version was successfully activated." msgstr "" -#: includes/class-freemius.php:4878, includes/class-freemius.php:6711 +#: includes/class-freemius.php:5147, includes/class-freemius.php:7009 msgctxt "Used to express elation, enthusiasm, or triumph (especially in electronic communication)." msgid "W00t" msgstr "" -#: includes/class-freemius.php:4893 +#: includes/class-freemius.php:5162 msgid "You have a %s license." msgstr "" -#: includes/class-freemius.php:4897, includes/class-freemius.php:13677, includes/class-freemius.php:13688, includes/class-freemius.php:16428, includes/class-freemius.php:16728, includes/class-freemius.php:16793, includes/class-freemius.php:16943 +#: includes/class-freemius.php:5166, includes/class-freemius.php:14347, includes/class-freemius.php:14358, includes/class-freemius.php:17187, includes/class-freemius.php:17501, includes/class-freemius.php:17567, includes/class-freemius.php:17717 msgctxt "interjection expressing joy or exuberance" msgid "Yee-haw" msgstr "" -#: includes/class-freemius.php:5161 +#: includes/class-freemius.php:5430 msgid "%s free trial was successfully cancelled. Since the add-on is premium only it was automatically deactivated. If you like to use it in the future, you'll have to purchase a license." msgstr "" -#: includes/class-freemius.php:5165 +#: includes/class-freemius.php:5434 msgid "%s is a premium only add-on. You have to purchase a license first before activating the plugin." msgstr "" -#: includes/class-freemius.php:5174, templates/add-ons.php:99, templates/account/partials/addon.php:283 +#: includes/class-freemius.php:5443, templates/add-ons.php:103, templates/account/partials/addon.php:288 msgid "More information about %s" msgstr "" -#: includes/class-freemius.php:5175 +#: includes/class-freemius.php:5444 msgid "Purchase License" msgstr "" -#: includes/class-freemius.php:6086, templates/connect.php:161 +#: includes/class-freemius.php:6377, templates/connect.php:163 msgid "You should receive an activation email for %s to your mailbox at %s. Please make sure you click the activation button in that email to %s." msgstr "" -#: includes/class-freemius.php:6090 +#: includes/class-freemius.php:6381 msgid "start the trial" msgstr "" -#: includes/class-freemius.php:6091, templates/connect.php:165 +#: includes/class-freemius.php:6382, templates/connect.php:167 msgid "complete the install" msgstr "" -#: includes/class-freemius.php:6198 +#: includes/class-freemius.php:6495 msgid "You are just one step away - %s" msgstr "" -#: includes/class-freemius.php:6201 +#: includes/class-freemius.php:6498 msgctxt "%s - plugin name. As complete \"PluginX\" activation now" msgid "Complete \"%s\" Activation Now" msgstr "" -#: includes/class-freemius.php:6278 +#: includes/class-freemius.php:6576 msgid "We made a few tweaks to the %s, %s" msgstr "" -#: includes/class-freemius.php:6282 -msgid "Opt in to make \"%s\" Better!" +#: includes/class-freemius.php:6580 +msgid "Opt in to make \"%s\" better!" msgstr "" -#: includes/class-freemius.php:6710 +#: includes/class-freemius.php:7008 msgid "The upgrade of %s was successfully completed." msgstr "" -#: includes/class-freemius.php:8435, includes/class-fs-plugin-updater.php:581, includes/class-fs-plugin-updater.php:733, includes/class-fs-plugin-updater.php:739, templates/auto-installation.php:32 +#: includes/class-freemius.php:8935, includes/class-fs-plugin-updater.php:886, includes/class-fs-plugin-updater.php:1081, includes/class-fs-plugin-updater.php:1088, templates/auto-installation.php:32 msgid "Add-On" msgstr "" -#: includes/class-freemius.php:8437, templates/debug.php:349, templates/debug.php:510 +#: includes/class-freemius.php:8937, templates/debug.php:359, templates/debug.php:520 msgid "Plugin" msgstr "" -#: includes/class-freemius.php:8438, templates/debug.php:349, templates/debug.php:510, templates/forms/deactivation/form.php:64 +#: includes/class-freemius.php:8938, templates/debug.php:359, templates/debug.php:520, templates/forms/deactivation/form.php:67 msgid "Theme" msgstr "" -#: includes/class-freemius.php:10859 +#: includes/class-freemius.php:11422 msgid "Invalid site details collection." msgstr "" -#: includes/class-freemius.php:10979 +#: includes/class-freemius.php:11542 msgid "We couldn't find your email address in the system, are you sure it's the right address?" msgstr "" -#: includes/class-freemius.php:10981 +#: includes/class-freemius.php:11544 msgid "We can't see any active licenses associated with that email address, are you sure it's the right address?" msgstr "" -#: includes/class-freemius.php:11217 +#: includes/class-freemius.php:11818 msgid "Account is pending activation." msgstr "" -#: includes/class-freemius.php:13659 +#: includes/class-freemius.php:11930, templates/forms/premium-versions-upgrade-handler.php:47 +msgid "Buy a license now" +msgstr "" + +#: includes/class-freemius.php:11942, templates/forms/premium-versions-upgrade-handler.php:46 +msgid "Renew your license now" +msgstr "" + +#: includes/class-freemius.php:11946 +msgid "%s to access version %s security & feature updates, and support." +msgstr "" + +#: includes/class-freemius.php:14329 msgid "%s activation was successfully completed." msgstr "" -#: includes/class-freemius.php:13673 +#: includes/class-freemius.php:14343 msgid "Your account was successfully activated with the %s plan." msgstr "" -#: includes/class-freemius.php:13684, includes/class-freemius.php:16789 +#: includes/class-freemius.php:14354, includes/class-freemius.php:17563 msgid "Your trial has been successfully started." msgstr "" -#: includes/class-freemius.php:14254, includes/class-freemius.php:14306, includes/class-freemius.php:14368 +#: includes/class-freemius.php:14924, includes/class-freemius.php:14976, includes/class-freemius.php:15038 msgid "Couldn't activate %s." msgstr "" -#: includes/class-freemius.php:14255, includes/class-freemius.php:14307, includes/class-freemius.php:14369 +#: includes/class-freemius.php:14925, includes/class-freemius.php:14977, includes/class-freemius.php:15039 msgid "Please contact us with the following message:" msgstr "" -#: includes/class-freemius.php:14718, includes/class-freemius.php:18988 +#: includes/class-freemius.php:15388, includes/class-freemius.php:19849 msgid "Upgrade" msgstr "" -#: includes/class-freemius.php:14724 +#: includes/class-freemius.php:15394 msgid "Start Trial" msgstr "" -#: includes/class-freemius.php:14726 +#: includes/class-freemius.php:15396 msgid "Pricing" msgstr "" -#: includes/class-freemius.php:14786, includes/class-freemius.php:14788 +#: includes/class-freemius.php:15458, includes/class-freemius.php:15460 msgid "Affiliation" msgstr "" -#: includes/class-freemius.php:14808, includes/class-freemius.php:14810, templates/account.php:146, templates/debug.php:314 +#: includes/class-freemius.php:15488, includes/class-freemius.php:15490, templates/account.php:150, templates/debug.php:324 msgid "Account" msgstr "" -#: includes/class-freemius.php:14821, includes/class-freemius.php:14823, includes/customizer/class-fs-customizer-support-section.php:60 +#: includes/class-freemius.php:15503, includes/class-freemius.php:15505, includes/customizer/class-fs-customizer-support-section.php:60 msgid "Contact Us" msgstr "" -#: includes/class-freemius.php:14833, includes/class-freemius.php:14835, includes/class-freemius.php:18998, templates/account.php:96, templates/account/partials/addon.php:37 +#: includes/class-freemius.php:15515, includes/class-freemius.php:15517, includes/class-freemius.php:19859, templates/account.php:100, templates/account/partials/addon.php:41 msgid "Add-Ons" msgstr "" -#: includes/class-freemius.php:14867, templates/pricing.php:97 +#: includes/class-freemius.php:15551 +msgctxt "ASCII arrow left icon" +msgid "←" +msgstr "" + +#: includes/class-freemius.php:15551 +msgctxt "ASCII arrow right icon" +msgid "➤" +msgstr "" + +#: includes/class-freemius.php:15553, templates/pricing.php:97 msgctxt "noun" msgid "Pricing" msgstr "" -#: includes/class-freemius.php:15061, includes/customizer/class-fs-customizer-support-section.php:67 +#: includes/class-freemius.php:15766, includes/customizer/class-fs-customizer-support-section.php:67 msgid "Support Forum" msgstr "" -#: includes/class-freemius.php:15846 +#: includes/class-freemius.php:16552 msgid "Your email has been successfully verified - you are AWESOME!" msgstr "" -#: includes/class-freemius.php:15847 +#: includes/class-freemius.php:16553 msgctxt "a positive response" msgid "Right on" msgstr "" -#: includes/class-freemius.php:16419 +#: includes/class-freemius.php:17178 msgid "Your %s Add-on plan was successfully upgraded." msgstr "" -#: includes/class-freemius.php:16421 +#: includes/class-freemius.php:17180 msgid "%s Add-on was successfully purchased." msgstr "" -#: includes/class-freemius.php:16424 +#: includes/class-freemius.php:17183 msgid "Download the latest version" msgstr "" -#: includes/class-freemius.php:16496 +#: includes/class-freemius.php:17269 msgctxt "%1s - plugin title, %2s - API domain" msgid "Your server is blocking the access to Freemius' API, which is crucial for %1s synchronization. Please contact your host to whitelist %2s" msgstr "" -#: includes/class-freemius.php:16499, includes/class-freemius.php:16914, includes/class-freemius.php:16979 +#: includes/class-freemius.php:17272, includes/class-freemius.php:17688, includes/class-freemius.php:17765 msgid "Error received from the server:" msgstr "" -#: includes/class-freemius.php:16509 +#: includes/class-freemius.php:17282 msgid "It seems like one of the authentication parameters is wrong. Update your Public Key, Secret Key & User ID, and try again." msgstr "" -#: includes/class-freemius.php:16691, includes/class-freemius.php:16919, includes/class-freemius.php:16962 +#: includes/class-freemius.php:17464, includes/class-freemius.php:17693, includes/class-freemius.php:17736, includes/class-freemius.php:17839 msgctxt "something somebody says when they are thinking about what you have just said." msgid "Hmm" msgstr "" -#: includes/class-freemius.php:16704 +#: includes/class-freemius.php:17477 msgid "It looks like you are still on the %s plan. If you did upgrade or change your plan, it's probably an issue on our side - sorry." msgstr "" -#: includes/class-freemius.php:16705, templates/account.php:98, templates/add-ons.php:130, templates/account/partials/addon.php:39 +#: includes/class-freemius.php:17478, templates/account.php:102, templates/add-ons.php:134, templates/account/partials/addon.php:43 msgctxt "trial period" msgid "Trial" msgstr "" -#: includes/class-freemius.php:16710 +#: includes/class-freemius.php:17483 msgid "I have upgraded my account but when I try to Sync the License, the plan remains %s." msgstr "" -#: includes/class-freemius.php:16714, includes/class-freemius.php:16771 +#: includes/class-freemius.php:17487, includes/class-freemius.php:17545 msgid "Please contact us here" msgstr "" -#: includes/class-freemius.php:16724 +#: includes/class-freemius.php:17497 msgid "Your plan was successfully upgraded." msgstr "" -#: includes/class-freemius.php:16741 +#: includes/class-freemius.php:17515 msgid "Your plan was successfully changed to %s." msgstr "" -#: includes/class-freemius.php:16757 +#: includes/class-freemius.php:17531 msgid "Your license has expired. You can still continue using the free %s forever." msgstr "" -#: includes/class-freemius.php:16759 +#: includes/class-freemius.php:17533 msgid "Your license has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "" -#: includes/class-freemius.php:16767 +#: includes/class-freemius.php:17541 msgid "Your license has been cancelled. If you think it's a mistake, please contact support." msgstr "" -#: includes/class-freemius.php:16780 +#: includes/class-freemius.php:17554 msgid "Your license has expired. You can still continue using all the %s features, but you'll need to renew your license to continue getting updates and support." msgstr "" -#: includes/class-freemius.php:16803 +#: includes/class-freemius.php:17577 msgid "Your free trial has expired. You can still continue using all our free features." msgstr "" -#: includes/class-freemius.php:16805 +#: includes/class-freemius.php:17579 msgid "Your free trial has expired. %1$sUpgrade now%2$s to continue using the %3$s without interruptions." msgstr "" -#: includes/class-freemius.php:16910 +#: includes/class-freemius.php:17684 msgid "It looks like the license could not be activated." msgstr "" -#: includes/class-freemius.php:16940 +#: includes/class-freemius.php:17714 msgid "Your license was successfully activated." msgstr "" -#: includes/class-freemius.php:16966 +#: includes/class-freemius.php:17740 msgid "It looks like your site currently doesn't have an active license." msgstr "" -#: includes/class-freemius.php:16978 +#: includes/class-freemius.php:17764 msgid "It looks like the license deactivation failed." msgstr "" -#: includes/class-freemius.php:17006 +#: includes/class-freemius.php:17792 msgid "Your license was successfully deactivated, you are back to the %s plan." msgstr "" -#: includes/class-freemius.php:17007 +#: includes/class-freemius.php:17793 msgid "O.K" msgstr "" -#: includes/class-freemius.php:17055 -msgid "Your plan was successfully downgraded. Your %s plan license will expire in %s." +#: includes/class-freemius.php:17846 +msgid "Seems like we are having some temporary issue with your subscription cancellation. Please try again in few minutes." msgstr "" -#: includes/class-freemius.php:17065 -msgid "Seems like we are having some temporary issue with your plan downgrade. Please try again in few minutes." +#: includes/class-freemius.php:17855 +msgid "Your subscription was successfully cancelled. Your %s plan license will expire in %s." msgstr "" -#: includes/class-freemius.php:17089 +#: includes/class-freemius.php:17897 msgid "You are already running the %s in a trial mode." msgstr "" -#: includes/class-freemius.php:17100 +#: includes/class-freemius.php:17908 msgid "You already utilized a trial before." msgstr "" -#: includes/class-freemius.php:17114 +#: includes/class-freemius.php:17922 msgid "Plan %s do not exist, therefore, can't start a trial." msgstr "" -#: includes/class-freemius.php:17125 +#: includes/class-freemius.php:17933 msgid "Plan %s does not support a trial period." msgstr "" -#: includes/class-freemius.php:17136 +#: includes/class-freemius.php:17944 msgid "None of the %s's plans supports a trial period." msgstr "" -#: includes/class-freemius.php:17186 +#: includes/class-freemius.php:17994 msgid "It looks like you are not in trial mode anymore so there's nothing to cancel :)" msgstr "" -#: includes/class-freemius.php:17237 -msgid "Your %s free trial was successfully cancelled." +#: includes/class-freemius.php:18030 +msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." msgstr "" -#: includes/class-freemius.php:17242 -msgid "Seems like we are having some temporary issue with your trial cancellation. Please try again in few minutes." +#: includes/class-freemius.php:18049 +msgid "Your %s free trial was successfully cancelled." msgstr "" -#: includes/class-freemius.php:17533 +#: includes/class-freemius.php:18356 msgid "Version %s was released." msgstr "" -#: includes/class-freemius.php:17533 +#: includes/class-freemius.php:18356 msgid "Please download %s." msgstr "" -#: includes/class-freemius.php:17540 +#: includes/class-freemius.php:18363 msgid "the latest %s version here" msgstr "" -#: includes/class-freemius.php:17545 +#: includes/class-freemius.php:18368 msgid "New" msgstr "" -#: includes/class-freemius.php:17550 +#: includes/class-freemius.php:18373 msgid "Seems like you got the latest release." msgstr "" -#: includes/class-freemius.php:17551 +#: includes/class-freemius.php:18374 msgid "You are all good!" msgstr "" -#: includes/class-freemius.php:17817 +#: includes/class-freemius.php:18642 msgid "Verification mail was just sent to %s. If you can't find it after 5 min, please check your spam box." msgstr "" -#: includes/class-freemius.php:17952 +#: includes/class-freemius.php:18779 msgid "Site successfully opted in." msgstr "" -#: includes/class-freemius.php:17953, includes/class-freemius.php:18730 +#: includes/class-freemius.php:18780, includes/class-freemius.php:19591 msgid "Awesome" msgstr "" -#: includes/class-freemius.php:17969, templates/forms/optout.php:32 +#: includes/class-freemius.php:18796, templates/forms/optout.php:32 msgid "We appreciate your help in making the %s better by letting us track some usage data." msgstr "" -#: includes/class-freemius.php:17970 +#: includes/class-freemius.php:18797 msgid "Thank you!" msgstr "" -#: includes/class-freemius.php:17977 +#: includes/class-freemius.php:18804 msgid "We will no longer be sending any usage data of %s on %s to %s." msgstr "" -#: includes/class-freemius.php:18092 +#: includes/class-freemius.php:18933 msgid "Please check your mailbox, you should receive an email via %s to confirm the ownership change. From security reasons, you must confirm the change within the next 15 min. If you cannot find the email, please check your spam folder." msgstr "" -#: includes/class-freemius.php:18098 +#: includes/class-freemius.php:18939 msgid "Thanks for confirming the ownership change. An email was just sent to %s for final approval." msgstr "" -#: includes/class-freemius.php:18103 +#: includes/class-freemius.php:18944 msgid "%s is the new owner of the account." msgstr "" -#: includes/class-freemius.php:18105 +#: includes/class-freemius.php:18946 msgctxt "as congratulations" msgid "Congrats" msgstr "" -#: includes/class-freemius.php:18125 +#: includes/class-freemius.php:18966 msgid "Sorry, we could not complete the email update. Another user with the same email is already registered." msgstr "" -#: includes/class-freemius.php:18126 +#: includes/class-freemius.php:18967 msgid "If you would like to give up the ownership of the %s's account to %s click the Change Ownership button." msgstr "" -#: includes/class-freemius.php:18133 +#: includes/class-freemius.php:18974 msgid "Change Ownership" msgstr "" -#: includes/class-freemius.php:18141 +#: includes/class-freemius.php:18982 msgid "Your email was successfully updated. You should receive an email with confirmation instructions in few moments." msgstr "" -#: includes/class-freemius.php:18153 +#: includes/class-freemius.php:18994 msgid "Please provide your full name." msgstr "" -#: includes/class-freemius.php:18158 +#: includes/class-freemius.php:18999 msgid "Your name was successfully updated." msgstr "" -#: includes/class-freemius.php:18219 +#: includes/class-freemius.php:19060 msgid "You have successfully updated your %s." msgstr "" -#: includes/class-freemius.php:18359 +#: includes/class-freemius.php:19200 msgid "Just letting you know that the add-ons information of %s is being pulled from an external server." msgstr "" -#: includes/class-freemius.php:18360 +#: includes/class-freemius.php:19201 msgctxt "advance notice of something that will need attention." msgid "Heads up" msgstr "" -#: includes/class-freemius.php:18770 +#: includes/class-freemius.php:19631 msgctxt "exclamation" msgid "Hey" msgstr "" -#: includes/class-freemius.php:18770 +#: includes/class-freemius.php:19631 msgid "How do you like %s so far? Test all our %s premium features with a %d-day free trial." msgstr "" -#: includes/class-freemius.php:18778 +#: includes/class-freemius.php:19639 msgid "No commitment for %s days - cancel anytime!" msgstr "" -#: includes/class-freemius.php:18779 +#: includes/class-freemius.php:19640 msgid "No credit card required" msgstr "" -#: includes/class-freemius.php:18786, templates/forms/trial-start.php:53 +#: includes/class-freemius.php:19647, templates/forms/trial-start.php:53 msgctxt "call to action" msgid "Start free trial" msgstr "" -#: includes/class-freemius.php:18863 +#: includes/class-freemius.php:19724 msgid "Hey there, did you know that %s has an affiliate program? If you like the %s you can become our ambassador and earn some cash!" msgstr "" -#: includes/class-freemius.php:18872 +#: includes/class-freemius.php:19733 msgid "Learn more" msgstr "" -#: includes/class-freemius.php:19022, templates/account.php:398, templates/account.php:501, templates/connect.php:169, templates/connect.php:408, templates/forms/license-activation.php:24, templates/account/partials/addon.php:230 +#: includes/class-freemius.php:19883, templates/account.php:406, templates/account.php:509, templates/connect.php:171, templates/connect.php:421, templates/forms/license-activation.php:24, templates/account/partials/addon.php:235 msgid "Activate License" msgstr "" -#: includes/class-freemius.php:19023, templates/account.php:461, templates/account.php:500, templates/account/partials/site.php:256 +#: includes/class-freemius.php:19884, templates/account.php:469, templates/account.php:508, templates/account/partials/site.php:256 msgid "Change License" msgstr "" -#: includes/class-freemius.php:19105, templates/account/partials/site.php:161 +#: includes/class-freemius.php:19966, templates/account/partials/site.php:161 msgid "Opt Out" msgstr "" -#: includes/class-freemius.php:19107, includes/class-freemius.php:19112, templates/account/partials/site.php:43, templates/account/partials/site.php:161 +#: includes/class-freemius.php:19968, includes/class-freemius.php:19973, templates/account/partials/site.php:43, templates/account/partials/site.php:161 msgid "Opt In" msgstr "" -#: includes/class-freemius.php:19304 +#: includes/class-freemius.php:20197 +msgid " The paid version of %1s is already installed. Please activate it to start benefiting the %2s features. %3s" +msgstr "" + +#: includes/class-freemius.php:20205 +msgid "Activate %s features" +msgstr "" + +#: includes/class-freemius.php:20218 msgid "Please follow these steps to complete the upgrade" msgstr "" -#: includes/class-freemius.php:19308 +#: includes/class-freemius.php:20222 msgid "Download the latest %s version" msgstr "" -#: includes/class-freemius.php:19312 +#: includes/class-freemius.php:20226 msgid "Upload and activate the downloaded version" msgstr "" -#: includes/class-freemius.php:19314 +#: includes/class-freemius.php:20228 msgid "How to upload and activate?" msgstr "" -#: includes/class-freemius.php:19443 +#: includes/class-freemius.php:20362 msgid "%sClick here%s to choose the sites where you'd like to activate the license on." msgstr "" -#: includes/class-freemius.php:19604 +#: includes/class-freemius.php:20523 msgid "Auto installation only works for opted-in users." msgstr "" -#: includes/class-freemius.php:19614, includes/class-freemius.php:19647, includes/class-fs-plugin-updater.php:713, includes/class-fs-plugin-updater.php:727 +#: includes/class-freemius.php:20533, includes/class-freemius.php:20566, includes/class-fs-plugin-updater.php:1060, includes/class-fs-plugin-updater.php:1074 msgid "Invalid module ID." msgstr "" -#: includes/class-freemius.php:19623, includes/class-fs-plugin-updater.php:747 +#: includes/class-freemius.php:20542, includes/class-fs-plugin-updater.php:1096 msgid "Premium version already active." msgstr "" -#: includes/class-freemius.php:19630 +#: includes/class-freemius.php:20549 msgid "You do not have a valid license to access the premium version." msgstr "" -#: includes/class-freemius.php:19637 +#: includes/class-freemius.php:20556 msgid "Plugin is a \"Serviceware\" which means it does not have a premium code version." msgstr "" -#: includes/class-freemius.php:19655, includes/class-fs-plugin-updater.php:746 +#: includes/class-freemius.php:20574, includes/class-fs-plugin-updater.php:1095 msgid "Premium add-on version already installed." msgstr "" -#: includes/class-freemius.php:20000 +#: includes/class-freemius.php:20919 msgid "View paid features" msgstr "" -#: includes/class-freemius.php:20310 +#: includes/class-freemius.php:21239 msgid "Thank you so much for using %s and its add-ons!" msgstr "" -#: includes/class-freemius.php:20311 +#: includes/class-freemius.php:21240 msgid "Thank you so much for using %s!" msgstr "" -#: includes/class-freemius.php:20317 +#: includes/class-freemius.php:21246 msgid "You've already opted-in to our usage-tracking, which helps us keep improving the %s." msgstr "" -#: includes/class-freemius.php:20321 +#: includes/class-freemius.php:21250 msgid "Thank you so much for using our products!" msgstr "" -#: includes/class-freemius.php:20322 +#: includes/class-freemius.php:21251 msgid "You've already opted-in to our usage-tracking, which helps us keep improving them." msgstr "" -#: includes/class-freemius.php:20341 +#: includes/class-freemius.php:21270 msgid "%s and its add-ons" msgstr "" -#: includes/class-freemius.php:20350 +#: includes/class-freemius.php:21279 msgid "Products" msgstr "" -#: includes/class-freemius.php:20357, templates/connect.php:259 +#: includes/class-freemius.php:21286, templates/connect.php:272 msgid "Yes" msgstr "" -#: includes/class-freemius.php:20358, templates/connect.php:260 +#: includes/class-freemius.php:21287, templates/connect.php:273 msgid "send me security & feature updates, educational content and offers." msgstr "" -#: includes/class-freemius.php:20359, templates/connect.php:265 +#: includes/class-freemius.php:21288, templates/connect.php:278 msgid "No" msgstr "" -#: includes/class-freemius.php:20361, templates/connect.php:267 +#: includes/class-freemius.php:21290, templates/connect.php:280 msgid "do %sNOT%s send me security & feature updates, educational content and offers." msgstr "" -#: includes/class-freemius.php:20371 +#: includes/class-freemius.php:21300 msgid "Due to the new %sEU General Data Protection Regulation (GDPR)%s compliance requirements it is required that you provide your explicit consent, again, confirming that you are onboard 🙂" msgstr "" -#: includes/class-freemius.php:20373, templates/connect.php:274 +#: includes/class-freemius.php:21302, templates/connect.php:287 msgid "Please let us know if you'd like us to contact you for security & feature updates, educational content, and occasional offers:" msgstr "" -#: includes/class-freemius.php:20657 +#: includes/class-freemius.php:21584 msgid "License key is empty." msgstr "" -#: includes/class-fs-plugin-updater.php:184, includes/class-fs-plugin-updater.php:219 -msgid "%sRenew your license now%s to access version %s security & feature updates, and support." +#: includes/class-fs-plugin-updater.php:184, templates/forms/premium-versions-upgrade-handler.php:57 +msgid "Renew license" msgstr "" -#: includes/class-fs-plugin-updater.php:776 +#: includes/class-fs-plugin-updater.php:189, templates/forms/premium-versions-upgrade-handler.php:58 +msgid "Buy license" +msgstr "" + +#: includes/class-fs-plugin-updater.php:278 +msgid "There is a %s of %s available." +msgstr "" + +#: includes/class-fs-plugin-updater.php:282 +msgid "new version" +msgstr "" + +#: includes/class-fs-plugin-updater.php:305 +msgid "Important Upgrade Notice:" +msgstr "" + +#: includes/class-fs-plugin-updater.php:1125 msgid "Installing plugin: %s" msgstr "" -#: includes/class-fs-plugin-updater.php:817 +#: includes/class-fs-plugin-updater.php:1166 msgid "Unable to connect to the filesystem. Please confirm your credentials." msgstr "" -#: includes/class-fs-plugin-updater.php:923 +#: includes/class-fs-plugin-updater.php:1348 msgid "The remote plugin package does not contain a folder with the desired slug and renaming did not work." msgstr "" -#: includes/fs-plugin-info-dialog.php:336, templates/account/partials/addon.php:287 +#: includes/fs-plugin-info-dialog.php:369, templates/account/partials/addon.php:292 msgctxt "verb" msgid "Purchase" msgstr "" -#: includes/fs-plugin-info-dialog.php:339 +#: includes/fs-plugin-info-dialog.php:372 msgid "Start my free %s" msgstr "" -#: includes/fs-plugin-info-dialog.php:380 +#: includes/fs-plugin-info-dialog.php:413 msgid "Install Free Version Now" msgstr "" -#: includes/fs-plugin-info-dialog.php:381, templates/auto-installation.php:111, templates/account/partials/addon.php:267, templates/account/partials/addon.php:317 +#: includes/fs-plugin-info-dialog.php:414, templates/auto-installation.php:111, templates/account/partials/addon.php:272, templates/account/partials/addon.php:322 msgid "Install Now" msgstr "" -#: includes/fs-plugin-info-dialog.php:392 +#: includes/fs-plugin-info-dialog.php:425 msgctxt "as download latest version" msgid "Download Latest Free Version" msgstr "" -#: includes/fs-plugin-info-dialog.php:393, templates/account.php:80, templates/account/partials/addon.php:21 +#: includes/fs-plugin-info-dialog.php:426, templates/account.php:80, templates/account/partials/addon.php:21 msgctxt "as download latest version" msgid "Download Latest" msgstr "" -#: includes/fs-plugin-info-dialog.php:403 +#: includes/fs-plugin-info-dialog.php:436 msgid "Install Free Version Update Now" msgstr "" -#: includes/fs-plugin-info-dialog.php:404, templates/account.php:452 +#: includes/fs-plugin-info-dialog.php:437, templates/account.php:460 msgid "Install Update Now" msgstr "" -#: includes/fs-plugin-info-dialog.php:415 +#: includes/fs-plugin-info-dialog.php:448 msgid "Newer Free Version (%s) Installed" msgstr "" -#: includes/fs-plugin-info-dialog.php:416 +#: includes/fs-plugin-info-dialog.php:449 msgid "Newer Version (%s) Installed" msgstr "" -#: includes/fs-plugin-info-dialog.php:424 +#: includes/fs-plugin-info-dialog.php:457 msgid "Latest Free Version Installed" msgstr "" -#: includes/fs-plugin-info-dialog.php:425 +#: includes/fs-plugin-info-dialog.php:458 msgid "Latest Version Installed" msgstr "" -#: includes/fs-plugin-info-dialog.php:580 +#: includes/fs-plugin-info-dialog.php:613 msgctxt "Plugin installer section title" msgid "Description" msgstr "" -#: includes/fs-plugin-info-dialog.php:581 +#: includes/fs-plugin-info-dialog.php:614 msgctxt "Plugin installer section title" msgid "Installation" msgstr "" -#: includes/fs-plugin-info-dialog.php:582 +#: includes/fs-plugin-info-dialog.php:615 msgctxt "Plugin installer section title" msgid "FAQ" msgstr "" -#: includes/fs-plugin-info-dialog.php:583, templates/plugin-info/description.php:55 +#: includes/fs-plugin-info-dialog.php:616, templates/plugin-info/description.php:55 msgid "Screenshots" msgstr "" -#: includes/fs-plugin-info-dialog.php:584 +#: includes/fs-plugin-info-dialog.php:617 msgctxt "Plugin installer section title" msgid "Changelog" msgstr "" -#: includes/fs-plugin-info-dialog.php:585 +#: includes/fs-plugin-info-dialog.php:618 msgctxt "Plugin installer section title" msgid "Reviews" msgstr "" -#: includes/fs-plugin-info-dialog.php:586 +#: includes/fs-plugin-info-dialog.php:619 msgctxt "Plugin installer section title" msgid "Other Notes" msgstr "" -#: includes/fs-plugin-info-dialog.php:601 +#: includes/fs-plugin-info-dialog.php:634 msgctxt "Plugin installer section title" msgid "Features & Pricing" msgstr "" -#: includes/fs-plugin-info-dialog.php:611 +#: includes/fs-plugin-info-dialog.php:644 msgid "Plugin Install" msgstr "" -#: includes/fs-plugin-info-dialog.php:683 +#: includes/fs-plugin-info-dialog.php:716 msgctxt "e.g. Professional Plan" msgid "%s Plan" msgstr "" -#: includes/fs-plugin-info-dialog.php:709 +#: includes/fs-plugin-info-dialog.php:742 msgctxt "e.g. the best product" msgid "Best" msgstr "" -#: includes/fs-plugin-info-dialog.php:715, includes/fs-plugin-info-dialog.php:735 +#: includes/fs-plugin-info-dialog.php:748, includes/fs-plugin-info-dialog.php:768 msgctxt "as every month" msgid "Monthly" msgstr "" -#: includes/fs-plugin-info-dialog.php:718 +#: includes/fs-plugin-info-dialog.php:751 msgctxt "as once a year" msgid "Annual" msgstr "" -#: includes/fs-plugin-info-dialog.php:721 +#: includes/fs-plugin-info-dialog.php:754 msgid "Lifetime" msgstr "" -#: includes/fs-plugin-info-dialog.php:735, includes/fs-plugin-info-dialog.php:737, includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php:768, includes/fs-plugin-info-dialog.php:770, includes/fs-plugin-info-dialog.php:772 msgctxt "e.g. billed monthly" msgid "Billed %s" msgstr "" -#: includes/fs-plugin-info-dialog.php:737 +#: includes/fs-plugin-info-dialog.php:770 msgctxt "as once a year" msgid "Annually" msgstr "" -#: includes/fs-plugin-info-dialog.php:739 +#: includes/fs-plugin-info-dialog.php:772 msgctxt "as once a year" msgid "Once" msgstr "" -#: includes/fs-plugin-info-dialog.php:745 +#: includes/fs-plugin-info-dialog.php:778 msgid "Single Site License" msgstr "" -#: includes/fs-plugin-info-dialog.php:747 +#: includes/fs-plugin-info-dialog.php:780 msgid "Unlimited Licenses" msgstr "" -#: includes/fs-plugin-info-dialog.php:749 +#: includes/fs-plugin-info-dialog.php:782 msgid "Up to %s Sites" msgstr "" -#: includes/fs-plugin-info-dialog.php:759, templates/plugin-info/features.php:82 +#: includes/fs-plugin-info-dialog.php:792, templates/plugin-info/features.php:82 msgctxt "as monthly period" msgid "mo" msgstr "" -#: includes/fs-plugin-info-dialog.php:766, templates/plugin-info/features.php:80 +#: includes/fs-plugin-info-dialog.php:799, templates/plugin-info/features.php:80 msgctxt "as annual period" msgid "year" msgstr "" -#: includes/fs-plugin-info-dialog.php:820 +#: includes/fs-plugin-info-dialog.php:853 msgctxt "noun" msgid "Price" msgstr "" -#: includes/fs-plugin-info-dialog.php:868 +#: includes/fs-plugin-info-dialog.php:901 msgid "Save %s" msgstr "" -#: includes/fs-plugin-info-dialog.php:878 +#: includes/fs-plugin-info-dialog.php:911 msgid "No commitment for %s - cancel anytime" msgstr "" -#: includes/fs-plugin-info-dialog.php:881 +#: includes/fs-plugin-info-dialog.php:914 msgid "After your free %s, pay as little as %s" msgstr "" -#: includes/fs-plugin-info-dialog.php:892 +#: includes/fs-plugin-info-dialog.php:925 msgid "Details" msgstr "" -#: includes/fs-plugin-info-dialog.php:896, templates/account.php:87, templates/debug.php:191, templates/debug.php:228, templates/debug.php:442, templates/account/partials/addon.php:28 +#: includes/fs-plugin-info-dialog.php:929, templates/account.php:91, templates/debug.php:201, templates/debug.php:238, templates/debug.php:452, templates/account/partials/addon.php:32 msgctxt "product version" msgid "Version" msgstr "" -#: includes/fs-plugin-info-dialog.php:903 +#: includes/fs-plugin-info-dialog.php:936 msgctxt "as the plugin author" msgid "Author" msgstr "" -#: includes/fs-plugin-info-dialog.php:910 +#: includes/fs-plugin-info-dialog.php:943 msgid "Last Updated" msgstr "" -#: includes/fs-plugin-info-dialog.php:915, templates/account.php:368 +#: includes/fs-plugin-info-dialog.php:948, templates/account.php:376 msgctxt "x-ago" msgid "%s ago" msgstr "" -#: includes/fs-plugin-info-dialog.php:924 +#: includes/fs-plugin-info-dialog.php:957 msgid "Requires WordPress Version" msgstr "" -#: includes/fs-plugin-info-dialog.php:925 +#: includes/fs-plugin-info-dialog.php:958 msgid "%s or higher" msgstr "" -#: includes/fs-plugin-info-dialog.php:932 +#: includes/fs-plugin-info-dialog.php:965 msgid "Compatible up to" msgstr "" -#: includes/fs-plugin-info-dialog.php:940 +#: includes/fs-plugin-info-dialog.php:973 msgid "Downloaded" msgstr "" -#: includes/fs-plugin-info-dialog.php:944 +#: includes/fs-plugin-info-dialog.php:977 msgid "%s time" msgstr "" -#: includes/fs-plugin-info-dialog.php:946 +#: includes/fs-plugin-info-dialog.php:979 msgid "%s times" msgstr "" -#: includes/fs-plugin-info-dialog.php:956 +#: includes/fs-plugin-info-dialog.php:989 msgid "WordPress.org Plugin Page" msgstr "" -#: includes/fs-plugin-info-dialog.php:964 +#: includes/fs-plugin-info-dialog.php:997 msgid "Plugin Homepage" msgstr "" -#: includes/fs-plugin-info-dialog.php:972, includes/fs-plugin-info-dialog.php:1054 +#: includes/fs-plugin-info-dialog.php:1005, includes/fs-plugin-info-dialog.php:1087 msgid "Donate to this plugin" msgstr "" -#: includes/fs-plugin-info-dialog.php:979 +#: includes/fs-plugin-info-dialog.php:1012 msgid "Average Rating" msgstr "" -#: includes/fs-plugin-info-dialog.php:986 +#: includes/fs-plugin-info-dialog.php:1019 msgid "based on %s" msgstr "" -#: includes/fs-plugin-info-dialog.php:990 +#: includes/fs-plugin-info-dialog.php:1023 msgid "%s rating" msgstr "" -#: includes/fs-plugin-info-dialog.php:992 +#: includes/fs-plugin-info-dialog.php:1025 msgid "%s ratings" msgstr "" -#: includes/fs-plugin-info-dialog.php:1007 +#: includes/fs-plugin-info-dialog.php:1040 msgid "%s star" msgstr "" -#: includes/fs-plugin-info-dialog.php:1009 +#: includes/fs-plugin-info-dialog.php:1042 msgid "%s stars" msgstr "" -#: includes/fs-plugin-info-dialog.php:1020 +#: includes/fs-plugin-info-dialog.php:1053 msgid "Click to see reviews that provided a rating of %s" msgstr "" -#: includes/fs-plugin-info-dialog.php:1033 +#: includes/fs-plugin-info-dialog.php:1066 msgid "Contributors" msgstr "" -#: includes/fs-plugin-info-dialog.php:1062, includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php:1095, includes/fs-plugin-info-dialog.php:1097 msgid "Warning" msgstr "" -#: includes/fs-plugin-info-dialog.php:1062 +#: includes/fs-plugin-info-dialog.php:1095 msgid "This plugin has not been tested with your current version of WordPress." msgstr "" -#: includes/fs-plugin-info-dialog.php:1064 +#: includes/fs-plugin-info-dialog.php:1097 msgid "This plugin has not been marked as compatible with your version of WordPress." msgstr "" -#: includes/fs-plugin-info-dialog.php:1083 +#: includes/fs-plugin-info-dialog.php:1116 msgid "Paid add-on must be deployed to Freemius." msgstr "" -#: includes/fs-plugin-info-dialog.php:1084 +#: includes/fs-plugin-info-dialog.php:1117 msgid "Add-on must be deployed to WordPress.org or Freemius." msgstr "" -#: templates/account.php:81, templates/account/partials/addon.php:22, templates/account/partials/site.php:295 -msgid "Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s." +#: templates/account.php:81, templates/forms/subscription-cancellation.php:96, templates/account/partials/addon.php:22, templates/account/partials/site.php:295 +msgid "Downgrading your plan" +msgstr "" + +#: templates/account.php:82, templates/forms/subscription-cancellation.php:97, templates/account/partials/addon.php:23, templates/account/partials/site.php:296 +msgid "Cancelling the subscription" +msgstr "" + +#. translators: %1s: Either 'Downgrading your plan' or 'Cancelling the subscription' +#: templates/account.php:84, templates/forms/subscription-cancellation.php:99, templates/account/partials/addon.php:25, templates/account/partials/site.php:298 +msgid "%1s will immediately stop all future recurring payments and your %s plan license will expire in %s." msgstr "" -#: templates/account.php:82, templates/account/partials/addon.php:23 +#: templates/account.php:85, templates/forms/subscription-cancellation.php:100, templates/account/partials/addon.php:26, templates/account/partials/site.php:299 +msgid "Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price." +msgstr "" + +#: templates/account.php:86, templates/forms/subscription-cancellation.php:106, templates/account/partials/addon.php:27 msgid "Cancelling the trial will immediately block access to all premium features. Are you sure?" msgstr "" -#: templates/account.php:83, templates/account/partials/addon.php:24, templates/account/partials/site.php:296 -msgid "You can still enjoy all %s features but you will not have access to %s updates and support." +#: templates/account.php:87, templates/forms/subscription-cancellation.php:101, templates/account/partials/addon.php:28, templates/account/partials/site.php:300 +msgid "You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support." msgstr "" -#: templates/account.php:84, templates/account/partials/addon.php:25, templates/account/partials/site.php:297 +#: templates/account.php:88, templates/forms/subscription-cancellation.php:102, templates/account/partials/addon.php:29, templates/account/partials/site.php:301 msgid "Once your license expires you can still use the Free version but you will NOT have access to the %s features." msgstr "" #. translators: %s: Plan title (e.g. "Professional") -#: templates/account.php:86, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:27 +#: templates/account.php:90, templates/account/partials/activate-license-button.php:31, templates/account/partials/addon.php:31 msgid "Activate %s Plan" msgstr "" #. translators: %s: Time period (e.g. Auto renews in "2 months") -#: templates/account.php:89, templates/account/partials/addon.php:30, templates/account/partials/site.php:275 +#: templates/account.php:93, templates/account/partials/addon.php:34, templates/account/partials/site.php:275 msgid "Auto renews in %s" msgstr "" #. translators: %s: Time period (e.g. Expires in "2 months") -#: templates/account.php:91, templates/account/partials/addon.php:32, templates/account/partials/site.php:277 +#: templates/account.php:95, templates/account/partials/addon.php:36, templates/account/partials/site.php:277 msgid "Expires in %s" msgstr "" -#: templates/account.php:92, templates/account/partials/addon.php:33 +#: templates/account.php:96, templates/account/partials/addon.php:37 msgctxt "as synchronize license" msgid "Sync License" msgstr "" -#: templates/account.php:93, templates/account/partials/addon.php:34 +#: templates/account.php:97, templates/account/partials/addon.php:38 msgid "Cancel Trial" msgstr "" -#: templates/account.php:94, templates/account/partials/addon.php:35 +#: templates/account.php:98, templates/account/partials/addon.php:39 msgid "Change Plan" msgstr "" -#: templates/account.php:95, templates/account/partials/addon.php:36 +#: templates/account.php:99, templates/account/partials/addon.php:40 msgctxt "verb" msgid "Upgrade" msgstr "" -#: templates/account.php:97, templates/account/partials/addon.php:38, templates/account/partials/site.php:298 +#: templates/account.php:101, templates/account/partials/addon.php:42, templates/account/partials/site.php:302 msgctxt "verb" msgid "Downgrade" msgstr "" -#: templates/account.php:99, templates/add-ons.php:126, templates/plugin-info/features.php:72, templates/account/partials/addon.php:40, templates/account/partials/site.php:31 +#: templates/account.php:103, templates/add-ons.php:130, templates/plugin-info/features.php:72, templates/account/partials/addon.php:44, templates/account/partials/site.php:31 msgid "Free" msgstr "" -#: templates/account.php:100, templates/account/partials/addon.php:41 +#: templates/account.php:104, templates/account/partials/addon.php:45 msgid "Activate" msgstr "" -#: templates/account.php:101, templates/debug.php:361, includes/customizer/class-fs-customizer-upsell-control.php:106, templates/account/partials/addon.php:42 +#: templates/account.php:105, templates/debug.php:371, includes/customizer/class-fs-customizer-upsell-control.php:106, templates/account/partials/addon.php:46 msgctxt "as product pricing plan" msgid "Plan" msgstr "" -#: templates/account.php:154 +#: templates/account.php:158 msgid "Free Trial" msgstr "" -#: templates/account.php:165 +#: templates/account.php:169 msgid "Account Details" msgstr "" -#: templates/account.php:175 +#: templates/account.php:179 msgid "Deleting the account will automatically deactivate your %s plan license so you can use it on other sites. If you want to terminate the recurring payments as well, click the \"Cancel\" button, and first \"Downgrade\" your account. Are you sure you would like to continue with the deletion?" msgstr "" -#: templates/account.php:177 +#: templates/account.php:181 msgid "Deletion is not temporary. Only delete if you no longer want to use this %s anymore. Are you sure you would like to continue with the deletion?" msgstr "" -#: templates/account.php:180 +#: templates/account.php:184 msgid "Delete Account" msgstr "" -#: templates/account.php:192, templates/account/partials/addon.php:155, templates/account/partials/deactivate-license-button.php:35 +#: templates/account.php:196, templates/account/partials/addon.php:159, templates/account/partials/deactivate-license-button.php:35 msgid "Deactivate License" msgstr "" -#: templates/account.php:210 +#: templates/account.php:219, templates/forms/subscription-cancellation.php:125 msgid "Are you sure you want to proceed?" msgstr "" -#: templates/account.php:210, templates/account/partials/addon.php:177 +#: templates/account.php:219, templates/account/partials/addon.php:182 msgid "Cancel Subscription" msgstr "" -#: templates/account.php:239 +#: templates/account.php:247 msgctxt "as synchronize" msgid "Sync" msgstr "" -#: templates/account.php:253, templates/debug.php:477 +#: templates/account.php:261, templates/debug.php:487 msgid "Name" msgstr "" -#: templates/account.php:259, templates/debug.php:478 +#: templates/account.php:267, templates/debug.php:488 msgid "Email" msgstr "" -#: templates/account.php:266, templates/debug.php:360, templates/debug.php:516 +#: templates/account.php:274, templates/debug.php:370, templates/debug.php:526 msgid "User ID" msgstr "" -#: templates/account.php:274 +#: templates/account.php:282 msgid "Site ID" msgstr "" -#: templates/account.php:277 +#: templates/account.php:285 msgid "No ID" msgstr "" -#: templates/account.php:282, templates/debug.php:233, templates/debug.php:362, templates/debug.php:443, templates/debug.php:480, templates/account/partials/site.php:219 +#: templates/account.php:290, templates/debug.php:243, templates/debug.php:372, templates/debug.php:453, templates/debug.php:490, templates/account/partials/site.php:219 msgid "Public Key" msgstr "" -#: templates/account.php:288, templates/debug.php:363, templates/debug.php:444, templates/debug.php:481, templates/account/partials/site.php:231 +#: templates/account.php:296, templates/debug.php:373, templates/debug.php:454, templates/debug.php:491, templates/account/partials/site.php:231 msgid "Secret Key" msgstr "" -#: templates/account.php:291 +#: templates/account.php:299 msgctxt "as secret encryption key missing" msgid "No Secret" msgstr "" -#: templates/account.php:310, templates/account/partials/site.php:112, templates/account/partials/site.php:114 +#: templates/account.php:318, templates/account/partials/site.php:112, templates/account/partials/site.php:114 msgid "Trial" msgstr "" -#: templates/account.php:329, templates/debug.php:521, templates/account/partials/site.php:248 +#: templates/account.php:337, templates/debug.php:531, templates/account/partials/site.php:248 msgid "License Key" msgstr "" -#: templates/account.php:359 +#: templates/account.php:367 msgid "not verified" msgstr "" -#: templates/account.php:368, templates/account/partials/addon.php:116 +#: templates/account.php:376, templates/account/partials/addon.php:120 msgid "Expired" msgstr "" -#: templates/account.php:420 +#: templates/account.php:428 msgid "Premium version" msgstr "" -#: templates/account.php:422 +#: templates/account.php:430 msgid "Free version" msgstr "" -#: templates/account.php:434 +#: templates/account.php:442 msgid "Verify Email" msgstr "" -#: templates/account.php:445 +#: templates/account.php:453 msgid "Download %s Version" msgstr "" -#: templates/account.php:459, templates/account.php:640, templates/account/partials/site.php:237, templates/account/partials/site.php:255 +#: templates/account.php:467, templates/account.php:649, templates/account/partials/site.php:237, templates/account/partials/site.php:255 msgctxt "verb" msgid "Show" msgstr "" -#: templates/account.php:473 +#: templates/account.php:481 msgid "What is your %s?" msgstr "" -#: templates/account.php:481, templates/account/billing.php:27 +#: templates/account.php:489, templates/account/billing.php:27 msgctxt "verb" msgid "Edit" msgstr "" -#: templates/account.php:494 +#: templates/account.php:502 msgid "Sites" msgstr "" -#: templates/account.php:505 +#: templates/account.php:513 msgid "Search by address" msgstr "" -#: templates/account.php:514, templates/account.php:562, templates/debug.php:226, templates/debug.php:354, templates/debug.php:439, templates/debug.php:476, templates/debug.php:514, templates/debug.php:587, templates/account/payments.php:35, templates/debug/logger.php:21 +#: templates/account.php:522, templates/account.php:570, templates/debug.php:236, templates/debug.php:364, templates/debug.php:449, templates/debug.php:486, templates/debug.php:524, templates/debug.php:597, templates/account/payments.php:35, templates/debug/logger.php:21 msgid "ID" msgstr "" -#: templates/account.php:515, templates/debug.php:357 +#: templates/account.php:523, templates/debug.php:367 msgid "Address" msgstr "" -#: templates/account.php:516 +#: templates/account.php:524 msgid "License" msgstr "" -#: templates/account.php:517 +#: templates/account.php:525 msgid "Plan" msgstr "" -#: templates/account.php:565 +#: templates/account.php:573 msgctxt "as software license" msgid "License" msgstr "" -#: templates/account.php:634 +#: templates/account.php:643 msgctxt "verb" msgid "Hide" msgstr "" -#: templates/account.php:669 +#: templates/account.php:686 +msgid "Cancelling %s" +msgstr "" + +#: templates/account.php:686, templates/account.php:703, templates/forms/subscription-cancellation.php:27, templates/forms/deactivation/form.php:117 +msgid "trial" +msgstr "" + +#: templates/account.php:701, templates/forms/deactivation/form.php:134 +msgid "Cancelling %s..." +msgstr "" + +#: templates/account.php:704, templates/forms/subscription-cancellation.php:28, templates/forms/deactivation/form.php:118 +msgid "subscription" +msgstr "" + +#: templates/account.php:718 msgid "Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?" msgstr "" @@ -1247,7 +1322,7 @@ msgstr "" msgid "We could'nt load the add-ons list. It's probably an issue on our side, please try to come back in few minutes." msgstr "" -#: templates/add-ons.php:135 +#: templates/add-ons.php:139 msgid "View details" msgstr "" @@ -1285,162 +1360,166 @@ msgid "PCI compliant" msgstr "" #. translators: %s: name (e.g. Hey John,) -#: templates/connect.php:110 +#: templates/connect.php:112 msgctxt "greeting" msgid "Hey %s," msgstr "" -#: templates/connect.php:152 +#: templates/connect.php:154 msgid "Allow & Continue" msgstr "" -#: templates/connect.php:156 +#: templates/connect.php:158 msgid "Re-send activation email" msgstr "" -#: templates/connect.php:160 +#: templates/connect.php:162 msgid "Thanks %s!" msgstr "" -#: templates/connect.php:170, templates/forms/license-activation.php:43 +#: templates/connect.php:172, templates/forms/license-activation.php:43 msgid "Agree & Activate License" msgstr "" -#: templates/connect.php:179 +#: templates/connect.php:181 msgid "Thanks for purchasing %s! To get started, please enter your license key:" msgstr "" -#: templates/connect.php:186 +#: templates/connect.php:188 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s." msgstr "" -#: templates/connect.php:187 +#: templates/connect.php:189 msgid "Never miss an important update - opt in to our security and feature updates notifications, and non-sensitive diagnostic tracking with %4$s." msgstr "" -#: templates/connect.php:193 +#: templates/connect.php:195 msgid "Never miss an important update - opt in to our security & feature updates notifications, educational content, offers, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "" -#: templates/connect.php:194 +#: templates/connect.php:196 msgid "Never miss an important update - opt in to our security & feature updates notifications, and non-sensitive diagnostic tracking with %4$s. If you skip this, that's okay! %1$s will still work just fine." msgstr "" -#: templates/connect.php:228 +#: templates/connect.php:230 msgid "We're excited to introduce the Freemius network-level integration." msgstr "" -#: templates/connect.php:231 +#: templates/connect.php:233 msgid "During the update process we detected %d site(s) that are still pending license activation." msgstr "" -#: templates/connect.php:233 +#: templates/connect.php:235 msgid "If you'd like to use the %s on those sites, please enter your license key below and click the activation button." msgstr "" -#: templates/connect.php:235 +#: templates/connect.php:237 msgid "%s's paid features" msgstr "" -#: templates/connect.php:240 +#: templates/connect.php:242 msgid "Alternatively, you can skip it for now and activate the license later, in your %s's network-level Account page." msgstr "" -#: templates/connect.php:242 +#: templates/connect.php:244 msgid "During the update process we detected %s site(s) in the network that are still pending your attention." msgstr "" -#: templates/connect.php:251, templates/forms/license-activation.php:46 +#: templates/connect.php:253, templates/forms/license-activation.php:46 msgid "License key" msgstr "" -#: templates/connect.php:254, templates/forms/license-activation.php:19 +#: templates/connect.php:256, templates/forms/license-activation.php:19 msgid "Can't find your license key?" msgstr "" -#: templates/connect.php:302, templates/connect.php:617, templates/forms/deactivation/retry-skip.php:20 +#: templates/connect.php:315, templates/connect.php:630, templates/forms/deactivation/retry-skip.php:20 msgctxt "verb" msgid "Skip" msgstr "" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "Delegate to Site Admins" msgstr "" -#: templates/connect.php:305 +#: templates/connect.php:318 msgid "If you click it, this decision will be delegated to the sites administrators." msgstr "" -#: templates/connect.php:333 +#: templates/connect.php:346 msgid "Your Profile Overview" msgstr "" -#: templates/connect.php:334 +#: templates/connect.php:347 msgid "Name and email address" msgstr "" -#: templates/connect.php:339 +#: templates/connect.php:352 msgid "Your Site Overview" msgstr "" -#: templates/connect.php:340 +#: templates/connect.php:353 msgid "Site URL, WP version, PHP info, plugins & themes" msgstr "" -#: templates/connect.php:345 +#: templates/connect.php:358 msgid "Admin Notices" msgstr "" -#: templates/connect.php:346, templates/connect.php:362 +#: templates/connect.php:359, templates/connect.php:375 msgid "Updates, announcements, marketing, no spam" msgstr "" -#: templates/connect.php:351 +#: templates/connect.php:364 msgid "Current %s Events" msgstr "" -#: templates/connect.php:352 +#: templates/connect.php:365 msgid "Activation, deactivation and uninstall" msgstr "" -#: templates/connect.php:361 +#: templates/connect.php:374 msgid "Newsletter" msgstr "" -#: templates/connect.php:378, templates/forms/license-activation.php:38 +#: templates/connect.php:391, templates/forms/license-activation.php:38 msgid "The %1$s will be periodically sending data to %2$s to check for security and feature updates, and verify the validity of your license." msgstr "" -#: templates/connect.php:383 +#: templates/connect.php:396 msgid "What permissions are being granted?" msgstr "" -#: templates/connect.php:404 +#: templates/connect.php:417 msgid "Don't have a license key?" msgstr "" -#: templates/connect.php:405 +#: templates/connect.php:418 msgid "Activate Free Version" msgstr "" -#: templates/connect.php:407 +#: templates/connect.php:420 msgid "Have a license key?" msgstr "" -#: templates/connect.php:415 +#: templates/connect.php:428 msgid "Privacy Policy" msgstr "" -#: templates/connect.php:417 +#: templates/connect.php:430 +msgid "License Agreement" +msgstr "" + +#: templates/connect.php:430 msgid "Terms of Service" msgstr "" -#: templates/connect.php:750 +#: templates/connect.php:766 msgctxt "as in the process of sending an email" msgid "Sending email" msgstr "" -#: templates/connect.php:751 +#: templates/connect.php:767 msgctxt "as activating plugin" msgid "Activating" msgstr "" @@ -1468,7 +1547,7 @@ msgctxt "as code debugging" msgid "Debugging" msgstr "" -#: templates/debug.php:54, templates/debug.php:238, templates/debug.php:364, templates/debug.php:482 +#: templates/debug.php:54, templates/debug.php:248, templates/debug.php:374, templates/debug.php:492 msgid "Actions" msgstr "" @@ -1492,194 +1571,198 @@ msgstr "" msgid "Sync Data From Server" msgstr "" -#: templates/debug.php:90 +#: templates/debug.php:95 +msgid "Migrate Options to Network" +msgstr "" + +#: templates/debug.php:100 msgid "Load DB Option" msgstr "" -#: templates/debug.php:93 +#: templates/debug.php:103 msgid "Set DB Option" msgstr "" -#: templates/debug.php:170 +#: templates/debug.php:180 msgid "Key" msgstr "" -#: templates/debug.php:171 +#: templates/debug.php:181 msgid "Value" msgstr "" -#: templates/debug.php:187 +#: templates/debug.php:197 msgctxt "as software development kit versions" msgid "SDK Versions" msgstr "" -#: templates/debug.php:192 +#: templates/debug.php:202 msgid "SDK Path" msgstr "" -#: templates/debug.php:193, templates/debug.php:232 +#: templates/debug.php:203, templates/debug.php:242 msgid "Module Path" msgstr "" -#: templates/debug.php:194 +#: templates/debug.php:204 msgid "Is Active" msgstr "" -#: templates/debug.php:222, templates/debug/plugins-themes-sync.php:35 +#: templates/debug.php:232, templates/debug/plugins-themes-sync.php:35 msgid "Plugins" msgstr "" -#: templates/debug.php:222, templates/debug/plugins-themes-sync.php:56 +#: templates/debug.php:232, templates/debug/plugins-themes-sync.php:56 msgid "Themes" msgstr "" -#: templates/debug.php:227, templates/debug.php:359, templates/debug.php:441, templates/debug/scheduled-crons.php:80 +#: templates/debug.php:237, templates/debug.php:369, templates/debug.php:451, templates/debug/scheduled-crons.php:80 msgid "Slug" msgstr "" -#: templates/debug.php:229, templates/debug.php:440 +#: templates/debug.php:239, templates/debug.php:450 msgid "Title" msgstr "" -#: templates/debug.php:230 +#: templates/debug.php:240 msgctxt "as application program interface" msgid "API" msgstr "" -#: templates/debug.php:231 +#: templates/debug.php:241 msgid "Freemius State" msgstr "" -#: templates/debug.php:235 +#: templates/debug.php:245 msgid "Network Blog" msgstr "" -#: templates/debug.php:236 +#: templates/debug.php:246 msgid "Network User" msgstr "" -#: templates/debug.php:273 +#: templates/debug.php:283 msgctxt "as connection was successful" msgid "Connected" msgstr "" -#: templates/debug.php:274 +#: templates/debug.php:284 msgctxt "as connection blocked" msgid "Blocked" msgstr "" -#: templates/debug.php:310 -msgid "Simulate Trial" +#: templates/debug.php:320 +msgid "Simulate Trial Promotion" msgstr "" -#: templates/debug.php:322 +#: templates/debug.php:332 msgid "Simulate Network Upgrade" msgstr "" -#: templates/debug.php:348 +#: templates/debug.php:358 msgid "%s Installs" msgstr "" -#: templates/debug.php:350 +#: templates/debug.php:360 msgctxt "like websites" msgid "Sites" msgstr "" -#: templates/debug.php:356, templates/account/partials/site.php:148 +#: templates/debug.php:366, templates/account/partials/site.php:148 msgid "Blog ID" msgstr "" -#: templates/debug.php:421, templates/debug.php:499, templates/account/partials/addon.php:334 +#: templates/debug.php:431, templates/debug.php:509, templates/account/partials/addon.php:339 msgctxt "verb" msgid "Delete" msgstr "" -#: templates/debug.php:435 +#: templates/debug.php:445 msgid "Add Ons of module %s" msgstr "" -#: templates/debug.php:472 +#: templates/debug.php:482 msgid "Users" msgstr "" -#: templates/debug.php:479 +#: templates/debug.php:489 msgid "Verified" msgstr "" -#: templates/debug.php:510 +#: templates/debug.php:520 msgid "%s Licenses" msgstr "" -#: templates/debug.php:515 +#: templates/debug.php:525 msgid "Plugin ID" msgstr "" -#: templates/debug.php:517 +#: templates/debug.php:527 msgid "Plan ID" msgstr "" -#: templates/debug.php:518 +#: templates/debug.php:528 msgid "Quota" msgstr "" -#: templates/debug.php:519 +#: templates/debug.php:529 msgid "Activated" msgstr "" -#: templates/debug.php:520 +#: templates/debug.php:530 msgid "Blocking" msgstr "" -#: templates/debug.php:522 +#: templates/debug.php:532 msgctxt "as expiration date" msgid "Expiration" msgstr "" -#: templates/debug.php:545 +#: templates/debug.php:555 msgid "Debug Log" msgstr "" -#: templates/debug.php:549 +#: templates/debug.php:559 msgid "All Types" msgstr "" -#: templates/debug.php:556 +#: templates/debug.php:566 msgid "All Requests" msgstr "" -#: templates/debug.php:561, templates/debug.php:590, templates/debug/logger.php:25 +#: templates/debug.php:571, templates/debug.php:600, templates/debug/logger.php:25 msgid "File" msgstr "" -#: templates/debug.php:562, templates/debug.php:588, templates/debug/logger.php:23 +#: templates/debug.php:572, templates/debug.php:598, templates/debug/logger.php:23 msgid "Function" msgstr "" -#: templates/debug.php:563 +#: templates/debug.php:573 msgid "Process ID" msgstr "" -#: templates/debug.php:564 +#: templates/debug.php:574 msgid "Logger" msgstr "" -#: templates/debug.php:565, templates/debug.php:589, templates/debug/logger.php:24 +#: templates/debug.php:575, templates/debug.php:599, templates/debug/logger.php:24 msgid "Message" msgstr "" -#: templates/debug.php:567 +#: templates/debug.php:577 msgid "Filter" msgstr "" -#: templates/debug.php:575 +#: templates/debug.php:585 msgid "Download" msgstr "" -#: templates/debug.php:586, templates/debug/logger.php:22 +#: templates/debug.php:596, templates/debug/logger.php:22 msgid "Type" msgstr "" -#: templates/debug.php:591, templates/debug/logger.php:26 +#: templates/debug.php:601, templates/debug/logger.php:26 msgid "Timestamp" msgstr "" @@ -2023,23 +2106,19 @@ msgstr "" msgid "By clicking \"Opt Out\", we will no longer be sending any data from %s to %s." msgstr "" -#: templates/forms/premium-versions-upgrade-handler.php:24 +#: templates/forms/premium-versions-upgrade-handler.php:40 msgid "There is a new version of %s available." msgstr "" -#: templates/forms/premium-versions-upgrade-handler.php:25 -msgid " %sRenew your license now%s to access version %s security & feature updates, and support." +#: templates/forms/premium-versions-upgrade-handler.php:41 +msgid " %s to access version %s security & feature updates, and support." msgstr "" -#: templates/forms/premium-versions-upgrade-handler.php:34 +#: templates/forms/premium-versions-upgrade-handler.php:54 msgid "New Version Available" msgstr "" -#: templates/forms/premium-versions-upgrade-handler.php:36 -msgid "Renew license" -msgstr "" - -#: templates/forms/premium-versions-upgrade-handler.php:53 +#: templates/forms/premium-versions-upgrade-handler.php:75 msgctxt "close a window" msgid "Dismiss" msgstr "" @@ -2052,6 +2131,42 @@ msgstr "" msgid "Enter the email address you've used for the upgrade below and we will resend you the license key." msgstr "" +#: templates/forms/subscription-cancellation.php:37 +msgid "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site." +msgstr "" + +#: templates/forms/subscription-cancellation.php:47 +msgid "In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?" +msgstr "" + +#: templates/forms/subscription-cancellation.php:52 +msgid "license" +msgstr "" + +#: templates/forms/subscription-cancellation.php:57 +msgid "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site." +msgstr "" + +#: templates/forms/subscription-cancellation.php:68 +msgid "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support." +msgstr "" + +#: templates/forms/subscription-cancellation.php:103 +msgid "Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license." +msgstr "" + +#: templates/forms/subscription-cancellation.php:136 +msgid "Cancel %s?" +msgstr "" + +#: templates/forms/subscription-cancellation.php:143 +msgid "Proceed" +msgstr "" + +#: templates/forms/subscription-cancellation.php:191, templates/forms/deactivation/form.php:150 +msgid "Cancel %s & Proceed" +msgstr "" + #: templates/forms/trial-start.php:22 msgid "You are 1-click away from starting your %1$s-day free trial of the %2$s plan." msgstr "" @@ -2113,15 +2228,15 @@ msgstr "" msgid "Last license" msgstr "" -#: templates/account/partials/addon.php:111 +#: templates/account/partials/addon.php:115 msgid "Cancelled" msgstr "" -#: templates/account/partials/addon.php:121 +#: templates/account/partials/addon.php:125 msgid "No expiration" msgstr "" -#: templates/account/partials/addon.php:259, templates/account/partials/addon.php:312 +#: templates/account/partials/addon.php:264, templates/account/partials/addon.php:317 msgid "Activate this add-on" msgstr "" @@ -2149,47 +2264,47 @@ msgstr "" msgid "Contact Support" msgstr "" -#: templates/forms/deactivation/form.php:56 +#: templates/forms/deactivation/form.php:59 msgid "Anonymous feedback" msgstr "" -#: templates/forms/deactivation/form.php:63 +#: templates/forms/deactivation/form.php:66 msgid "Deactivate" msgstr "" -#: templates/forms/deactivation/form.php:65 +#: templates/forms/deactivation/form.php:68 msgid "Activate %s" msgstr "" -#: templates/forms/deactivation/form.php:76 -msgid "Quick feedback" +#: templates/forms/deactivation/form.php:80 +msgid "Quick Feedback" msgstr "" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "If you have a moment, please let us know why you are %s" msgstr "" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "deactivating" msgstr "" -#: templates/forms/deactivation/form.php:80 +#: templates/forms/deactivation/form.php:84 msgid "switching" msgstr "" -#: templates/forms/deactivation/form.php:269 +#: templates/forms/deactivation/form.php:332 msgid "Submit & %s" msgstr "" -#: templates/forms/deactivation/form.php:290 +#: templates/forms/deactivation/form.php:353 msgid "Kindly tell us the reason so we can improve." msgstr "" -#: templates/forms/deactivation/form.php:411 +#: templates/forms/deactivation/form.php:478 msgid "Yes - %s" msgstr "" -#: templates/forms/deactivation/form.php:418 +#: templates/forms/deactivation/form.php:485 msgid "Skip & %s" msgstr "" diff --git a/wp-content/plugins/nextgen-gallery/freemius/start.php b/wp-content/plugins/nextgen-gallery/freemius/start.php index dc7a50266..0d2a48c0e 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/start.php +++ b/wp-content/plugins/nextgen-gallery/freemius/start.php @@ -15,7 +15,7 @@ * * @var string */ - $this_sdk_version = '2.1.3'; + $this_sdk_version = '2.2.4'; #region SDK Selection Logic -------------------------------------------------------------------- @@ -44,9 +44,16 @@ * @author Vova Feldman (@svovaf) * @since 1.2.2.6 */ - $file_path = fs_normalize_path( __FILE__ ); - $fs_root_path = dirname( $file_path ); - $themes_directory = get_theme_root(); + $file_path = fs_normalize_path( __FILE__ ); + $fs_root_path = dirname( $file_path ); + /** + * Get the themes directory where the active theme is located (not passing the stylesheet will make WordPress + * assume that the themes directory is inside `wp-content`. + * + * @author Leo Fajardo (@leorw) + * @since 2.2.3 + */ + $themes_directory = get_theme_root( get_stylesheet() ); $themes_directory_name = basename( $themes_directory ); $theme_candidate_basename = basename( dirname( $fs_root_path ) ) . '/' . basename( $fs_root_path ); @@ -99,8 +106,8 @@ * @since 1.2.1.7 */ $has_changes = false; - foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) { - if ( ! file_exists( WP_PLUGIN_DIR . '/' . $sdk_path ) ) { + foreach ( $fs_active_plugins->plugins as $sdk_path => $data ) { + if ( ! file_exists( ( isset( $data->type ) && 'theme' === $data->type ? $themes_directory : WP_PLUGIN_DIR ) . '/' . $sdk_path ) ) { unset( $fs_active_plugins->plugins[ $sdk_path ] ); $has_changes = true; } @@ -120,6 +127,10 @@ require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-1.1.7.1.php'; } + if ( ! function_exists( 'fs_get_plugins' ) ) { + require_once dirname( __FILE__ ) . '/includes/supplements/fs-essential-functions-2.2.1.php'; + } + // Update current SDK info based on the SDK path. if ( ! isset( $fs_active_plugins->plugins[ $this_sdk_relative_path ] ) || $this_sdk_version != $fs_active_plugins->plugins[ $this_sdk_relative_path ]->version @@ -205,7 +216,7 @@ $sdk_starter_path = fs_normalize_path( WP_PLUGIN_DIR . '/' . $this_sdk_relative_path . '/start.php' ); } else { $sdk_starter_path = fs_normalize_path( - get_theme_root() + $themes_directory . '/' . str_replace( "../{$themes_directory_name}/", '', $this_sdk_relative_path ) . '/start.php' ); @@ -267,7 +278,7 @@ $plugins_or_theme_dir_path = ( ! isset( $newest_sdk->type ) || 'theme' !== $newest_sdk->type ) ? WP_PLUGIN_DIR : - get_theme_root(); + $themes_directory; $newest_sdk_starter = fs_normalize_path( $plugins_or_theme_dir_path @@ -375,7 +386,7 @@ } $plugins_or_theme_dir_path = fs_normalize_path( trailingslashit( $is_theme ? - get_theme_root() : + $themes_directory : WP_PLUGIN_DIR ) ); if ( 0 === strpos( $file_path, $plugins_or_theme_dir_path ) ) { diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/account.php b/wp-content/plugins/nextgen-gallery/freemius/templates/account.php index 1a5324a9b..2ca85d7d8 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/account.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/account.php @@ -76,29 +76,33 @@ $query_params['tabs'] = 'true'; } - // Aliases. - $download_latest_text = fs_text_x_inline( 'Download Latest', 'as download latest version', 'download-latest', $slug ); - $downgrade_x_confirm_text = fs_text_inline( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.', 'downgrade-x-confirm', $slug ); - $cancel_trial_confirm_text = fs_text_inline( 'Cancelling the trial will immediately block access to all premium features. Are you sure?', 'cancel-trial-confirm', $slug ); - $after_downgrade_non_blocking_text = fs_text_inline( 'You can still enjoy all %s features but you will not have access to %s updates and support.', 'after-downgrade-non-blocking', $slug ); - $after_downgrade_blocking_text = fs_text_inline( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.', 'after-downgrade-blocking', $slug ); - /* translators: %s: Plan title (e.g. "Professional") */ - $activate_plan_text = fs_text_inline( 'Activate %s Plan', 'activate-x-plan', $slug ); - $version_text = fs_text_x_inline( 'Version', 'product version', 'version', $slug ); - /* translators: %s: Time period (e.g. Auto renews in "2 months") */ - $renews_in_text = fs_text_inline( 'Auto renews in %s', 'renews-in', $slug ); - /* translators: %s: Time period (e.g. Expires in "2 months") */ - $expires_in_text = fs_text_inline( 'Expires in %s', 'expires-in', $slug ); - $sync_license_text = fs_text_x_inline( 'Sync License', 'as synchronize license', 'sync-license', $slug ); - $cancel_trial_text = fs_text_inline( 'Cancel Trial', 'cancel-trial', $slug ); - $change_plan_text = fs_text_inline( 'Change Plan', 'change-plan', $slug ); - $upgrade_text = fs_text_x_inline( 'Upgrade', 'verb', 'upgrade', $slug ); - $addons_text = fs_text_inline( 'Add-Ons', 'add-ons', $slug ); - $downgrade_text = fs_text_x_inline( 'Downgrade', 'verb', 'downgrade', $slug ); - $trial_text = fs_text_x_inline( 'Trial', 'trial period', 'trial', $slug ); - $free_text = fs_text_inline( 'Free', 'free', $slug ); - $activate_text = fs_text_inline( 'Activate', 'activate', $slug ); - $plan_text = fs_text_x_inline( 'Plan', 'as product pricing plan', 'plan', $slug ); + // Aliases. + $download_latest_text = fs_text_x_inline( 'Download Latest', 'as download latest version', 'download-latest', $slug ); + $downgrading_plan_text = fs_text_inline( 'Downgrading your plan', 'downgrading-plan', $slug ); + $cancelling_subscription_text = fs_text_inline( 'Cancelling the subscription', 'cancelling-subscription', $slug ); + /* translators: %1s: Either 'Downgrading your plan' or 'Cancelling the subscription' */ + $downgrade_x_confirm_text = fs_text_inline( '%1s will immediately stop all future recurring payments and your %s plan license will expire in %s.', 'downgrade-x-confirm', $slug ); + $prices_increase_text = fs_text_inline( 'Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price.', 'pricing-increase-warning', $slug ); + $cancel_trial_confirm_text = fs_text_inline( 'Cancelling the trial will immediately block access to all premium features. Are you sure?', 'cancel-trial-confirm', $slug ); + $after_downgrade_non_blocking_text = fs_text_inline( 'You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support.', 'after-downgrade-non-blocking', $slug ); + $after_downgrade_blocking_text = fs_text_inline( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.', 'after-downgrade-blocking', $slug ); + /* translators: %s: Plan title (e.g. "Professional") */ + $activate_plan_text = fs_text_inline( 'Activate %s Plan', 'activate-x-plan', $slug ); + $version_text = fs_text_x_inline( 'Version', 'product version', 'version', $slug ); + /* translators: %s: Time period (e.g. Auto renews in "2 months") */ + $renews_in_text = fs_text_inline( 'Auto renews in %s', 'renews-in', $slug ); + /* translators: %s: Time period (e.g. Expires in "2 months") */ + $expires_in_text = fs_text_inline( 'Expires in %s', 'expires-in', $slug ); + $sync_license_text = fs_text_x_inline( 'Sync License', 'as synchronize license', 'sync-license', $slug ); + $cancel_trial_text = fs_text_inline( 'Cancel Trial', 'cancel-trial', $slug ); + $change_plan_text = fs_text_inline( 'Change Plan', 'change-plan', $slug ); + $upgrade_text = fs_text_x_inline( 'Upgrade', 'verb', 'upgrade', $slug ); + $addons_text = fs_text_inline( 'Add-Ons', 'add-ons', $slug ); + $downgrade_text = fs_text_x_inline( 'Downgrade', 'verb', 'downgrade', $slug ); + $trial_text = fs_text_x_inline( 'Trial', 'trial period', 'trial', $slug ); + $free_text = fs_text_inline( 'Free', 'free', $slug ); + $activate_text = fs_text_inline( 'Activate', 'activate', $slug ); + $plan_text = fs_text_x_inline( 'Plan', 'as product pricing plan', 'plan', $slug ); $show_plan_row = true; $show_license_row = is_object( $license ); @@ -203,11 +207,16 @@ <input type="hidden" name="fs_action" value="downgrade_account"> <?php wp_nonce_field( 'downgrade_account' ) ?> <a href="#" - onclick="if ( confirm('<?php echo esc_attr( sprintf( $downgrade_x_confirm_text, $plan->title, human_time_diff( time(), strtotime( $license->expiration ) ) ) ) ?> <?php if ( ! $license->is_block_features ) { + onclick="if ( confirm('<?php echo esc_attr( sprintf( + $downgrade_x_confirm_text, + ( $fs->is_only_premium() ? $cancelling_subscription_text : $downgrading_plan_text ), + $plan->title, + human_time_diff( time(), strtotime( $license->expiration ) ) + ) ) ?> <?php if ( ! $license->is_block_features ) { echo esc_attr( sprintf( $after_downgrade_non_blocking_text, $plan->title, $fs->get_module_label( true ) ) ); } else { echo esc_attr( sprintf( $after_downgrade_blocking_text, $plan->title ) ); - }?> <?php fs_esc_attr_echo_inline( 'Are you sure you want to proceed?', 'proceed-confirmation', $slug ) ?>') ) this.parentNode.submit(); return false;"><i class="dashicons dashicons-download"></i> <?php echo esc_html( $fs->is_only_premium() ? fs_text_inline( 'Cancel Subscription', 'cancel-subscription', $slug ) : $downgrade_text ) ?></a> + }?> <?php echo esc_attr( $prices_increase_text ) ?> <?php fs_esc_attr_echo_inline( 'Are you sure you want to proceed?', 'proceed-confirmation', $slug ) ?>') ) this.parentNode.submit(); return false;"><i class="dashicons dashicons-download"></i> <?php echo esc_html( $fs->is_only_premium() ? fs_text_inline( 'Cancel Subscription', 'cancel-subscription', $slug ) : $downgrade_text ) ?></a> </form> </li> <li> • </li> @@ -224,8 +233,7 @@ <form action="<?php echo $fs->_get_admin_page_url( 'account' ) ?>" method="POST"> <input type="hidden" name="fs_action" value="cancel_trial"> <?php wp_nonce_field( 'cancel_trial' ) ?> - <a href="#" - onclick="if (confirm('<?php echo esc_attr( $cancel_trial_confirm_text ) ?>')) this.parentNode.submit(); return false;"><i + <a href="#" class="fs-cancel-trial"><i class="dashicons dashicons-download"></i> <?php echo esc_html( $cancel_trial_text ) ?></a> </form> </li> @@ -603,6 +611,7 @@ </div> </div> </div> + <?php $fs->_maybe_add_subscription_cancellation_dialog_box( true ) ?> <script type="text/javascript"> (function ($) { var setLoading = function ($this, label) { @@ -665,12 +674,56 @@ setLoading($(this), '<?php fs_esc_js_echo_inline('Activating', 'activating' ) ?>...'); }); - $('.fs-deactivate-license').click(function () { - if (confirm('<?php fs_esc_attr_echo_inline( 'Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?', 'deactivate-license-confirm', $slug ) ?>')) { + var $deactivateLicenseOrCancelTrial = $( '.fs-deactivate-license, .fs-cancel-trial' ), + $subscriptionCancellationModal = $( '.fs-modal-subscription-cancellation-<?php echo $fs->get_id() ?>' ); + + if ( 0 !== $subscriptionCancellationModal.length ) { + $subscriptionCancellationModal.on( '<?php echo $fs->get_action_tag( 'subscription_cancellation_action' ) ?>', function( evt, cancelSubscription ) { + setLoading( + $deactivateLicenseOrCancelTrial, + ( ! $deactivateLicenseOrCancelTrial.hasClass( 'fs-cancel-trial' ) ? + '<?php fs_esc_js_echo_inline( 'Deactivating', 'deactivating', $slug ) ?>' : + '<?php echo esc_html( sprintf( fs_text_inline( 'Cancelling %s', 'cancelling-x', $slug ), fs_text_inline( 'trial', 'trial', $slug ) ) ) ?>' ) + '...' + ); + + $subscriptionCancellationModal.find( '.fs-modal-footer .button' ).addClass( 'disabled' ); + $deactivateLicenseOrCancelTrial.unbind( 'click' ); + + if ( false === cancelSubscription || $deactivateLicenseOrCancelTrial.hasClass( 'fs-cancel-trial' ) ) { + $subscriptionCancellationModal.find( '.fs-modal-footer .button-primary' ).text( $deactivateLicenseOrCancelTrial.text() ); + + $deactivateLicenseOrCancelTrial[0].parentNode.submit(); + } else { + var $form = $( 'input[value="downgrade_account"],input[value="cancel_trial"]' ).parent(); + $form.prepend( '<input type="hidden" name="deactivate_license" value="true" />' ); + + $subscriptionCancellationModal.find( '.fs-modal-footer .button-primary' ).text( '<?php echo esc_js( sprintf( + fs_text_inline( 'Cancelling %s...', 'cancelling-x' , $slug ), + $is_paid_trial ? + fs_text_inline( 'trial', 'trial', $slug ) : + fs_text_inline( 'subscription', 'subscription', $slug ) + ) ) ?>' ); + + $form.submit(); + } + }); + } + + $deactivateLicenseOrCancelTrial.click(function() { + var $this = $( this ); + if ( $this.hasClass( 'fs-cancel-trial' ) ) { + $subscriptionCancellationModal.find( '.fs-modal-panel' ).find( 'ul.subscription-actions, .fs-price-increase-warning' ).remove(); + $subscriptionCancellationModal.find( '.fs-modal-panel > p' ).text( <?php echo json_encode( $cancel_trial_confirm_text ) ?> ); + $subscriptionCancellationModal.trigger( 'showModal' ); + } else if (confirm('<?php fs_esc_attr_echo_inline( 'Deactivating your license will block all premium features, but will enable activating the license on another site. Are you sure you want to proceed?', 'deactivate-license-confirm', $slug ) ?>')) { var $this = $(this); - setLoading($this, '<?php fs_esc_js_echo_inline('Deactivating', 'deactivating' ) ?>...'); - $this[0].parentNode.submit(); + if ( 0 !== $subscriptionCancellationModal.length ) { + $subscriptionCancellationModal.trigger( 'showModal' ); + } else { + setLoading( $this, '<?php fs_esc_js_echo_inline( 'Deactivating', 'deactivating', $slug ) ?>...' ); + $this[0].parentNode.submit(); + } } return false; diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/account/partials/addon.php b/wp-content/plugins/nextgen-gallery/freemius/templates/account/partials/addon.php index bb878552c..4e719355e 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/account/partials/addon.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/account/partials/addon.php @@ -1,345 +1,350 @@ -<?php - /** - * @var array $VARS - * @var Freemius $fs - */ - $fs = $VARS['parent_fs']; - $addon_id = $VARS['addon_id']; - $odd = $VARS['odd']; - $slug = $fs->get_slug(); - - - $addon = $fs->get_addon( $addon_id ); - $is_addon_activated = $fs->is_addon_activated( $addon_id ); - $is_addon_connected = $fs->is_addon_connected( $addon_id ); - - $fs_addon = $is_addon_connected ? - freemius( $addon_id ) : - false; - - // Aliases. - $download_latest_text = fs_text_x_inline( 'Download Latest', 'as download latest version', 'download-latest', $slug ); - $downgrade_x_confirm_text = fs_text_inline( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.', 'downgrade-x-confirm', $slug ); - $cancel_trial_confirm_text = fs_text_inline( 'Cancelling the trial will immediately block access to all premium features. Are you sure?', 'cancel-trial-confirm', $slug ); - $after_downgrade_non_blocking_text = fs_text_inline( 'You can still enjoy all %s features but you will not have access to %s updates and support.', 'after-downgrade-non-blocking', $slug ); - $after_downgrade_blocking_text = fs_text_inline( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.', 'after-downgrade-blocking', $slug ); - /* translators: %s: Plan title (e.g. "Professional") */ - $activate_plan_text = fs_text_inline( 'Activate %s Plan', 'activate-x-plan', $slug ); - $version_text = fs_text_x_inline( 'Version', 'product version', 'version', $slug ); - /* translators: %s: Time period (e.g. Auto renews in "2 months") */ - $renews_in_text = fs_text_inline( 'Auto renews in %s', 'renews-in', $slug ); - /* translators: %s: Time period (e.g. Expires in "2 months") */ - $expires_in_text = fs_text_inline( 'Expires in %s', 'expires-in', $slug ); - $sync_license_text = fs_text_x_inline( 'Sync License', 'as synchronize license', 'sync-license', $slug ); - $cancel_trial_text = fs_text_inline( 'Cancel Trial', 'cancel-trial', $slug ); - $change_plan_text = fs_text_inline( 'Change Plan', 'change-plan', $slug ); - $upgrade_text = fs_text_x_inline( 'Upgrade', 'verb', 'upgrade', $slug ); - $addons_text = fs_text_inline( 'Add-Ons', 'add-ons', $slug ); - $downgrade_text = fs_text_x_inline( 'Downgrade', 'verb', 'downgrade', $slug ); - $trial_text = fs_text_x_inline( 'Trial', 'trial period', 'trial', $slug ); - $free_text = fs_text_inline( 'Free', 'free', $slug ); - $activate_text = fs_text_inline( 'Activate', 'activate', $slug ); - $plan_text = fs_text_x_inline( 'Plan', 'as product pricing plan', 'plan', $slug ); - - // Defaults. - $plan = null; - $is_paid_trial = false; - $license = null; - $site = null; - $is_active_subscription = false; - $subscription = null; - $is_paying = false; - - if ( is_object( $fs_addon ) ) { - $is_paying = $fs_addon->is_paying(); - $user = $fs_addon->get_user(); - $site = $fs_addon->get_site(); - $license = $fs_addon->_get_license(); - $subscription = ( is_object( $license ) ? - $fs_addon->_get_subscription( $license->id ) : - null ); - $plan = $fs_addon->get_plan(); - $is_active_subscription = ( is_object( $subscription ) && $subscription->is_active() ); - $is_paid_trial = $fs_addon->is_paid_trial(); - $show_upgrade = ( $fs_addon->has_paid_plan() && ! $is_paying && ! $is_paid_trial && ! $fs_addon->_has_premium_license() ); - $is_current_license_expired = is_object( $license ) && $license->is_expired(); - } -?> -<tr<?php if ( $odd ) { - echo ' class="alternate"'; -} ?>> - <td> - <!-- Title --> - <?php echo $addon->title ?> - </td> - <?php if ( $is_addon_connected ) : ?> - <!-- ID --> - <td><?php echo $site->id ?></td> - <!--/ ID --> - - <!-- Version --> - <td><?php echo $fs_addon->get_plugin_version() ?></td> - <!--/ Version --> - - <!-- Plan Title --> - <td><?php echo strtoupper( is_string( $plan->name ) ? $plan->title : $free_text ) ?></td> - <!--/ Plan Title --> - - <?php if ( $fs_addon->is_trial() || is_object( $license ) ) : ?> - - <!-- Expiration --> - <td> - <?php - $tags = array(); - - if ( $fs_addon->is_trial() ) { - $tags[] = array( 'label' => $trial_text, 'type' => 'success' ); - - $tags[] = array( - 'label' => sprintf( - ( $is_paid_trial ? - $renews_in_text : - $expires_in_text ), - human_time_diff( time(), strtotime( $site->trial_ends ) ) - ), - 'type' => ( $is_paid_trial ? 'success' : 'warn' ) - ); - } else { - if ( is_object( $license ) ) { - if ( $license->is_cancelled ) { - $tags[] = array( - 'label' => fs_text_inline( 'Cancelled', 'cancelled', $slug ), - 'type' => 'error' - ); - } else if ( $license->is_expired() ) { - $tags[] = array( - 'label' => fs_text_inline( 'Expired', 'expired', $slug ), - 'type' => 'error' - ); - } else if ( $license->is_lifetime() ) { - $tags[] = array( - 'label' => fs_text_inline( 'No expiration', 'no-expiration', $slug ), - 'type' => 'success' - ); - } else if ( ! $is_active_subscription && ! $license->is_first_payment_pending() ) { - $tags[] = array( - 'label' => sprintf( $expires_in_text, human_time_diff( time(), strtotime( $license->expiration ) ) ), - 'type' => 'warn' - ); - } else if ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) { - $tags[] = array( - 'label' => sprintf( $renews_in_text, human_time_diff( time(), strtotime( $subscription->next_payment ) ) ), - 'type' => 'success' - ); - } - } - } - - foreach ( $tags as $t ) { - printf( '<label class="fs-tag fs-%s">%s</label>' . "\n", $t['type'], $t['label'] ); - } - ?> - </td> - <!--/ Expiration --> - - <?php endif ?> - - <?php - $buttons = array(); - if ( $is_addon_activated ) { - if ( $is_paying ) { - $buttons[] = fs_ui_get_action_button( - $fs->get_id(), - 'account', - 'deactivate_license', - fs_text_inline( 'Deactivate License', 'deactivate-license', $slug ), - '', - array( 'plugin_id' => $addon_id ), - false - ); - - $human_readable_license_expiration = human_time_diff( time(), strtotime( $license->expiration ) ); - $downgrade_confirmation_message = sprintf( - $downgrade_x_confirm_text, - $plan->title, - $human_readable_license_expiration - ); - - $after_downgrade_message = ! $license->is_block_features ? - sprintf( $after_downgrade_non_blocking_text, $plan->title, $fs_addon->get_module_label( true ) ) : - sprintf( $after_downgrade_blocking_text, $plan->title ); - - if ( ! $license->is_lifetime() && $is_active_subscription ) { - $buttons[] = fs_ui_get_action_button( - $fs->get_id(), - 'account', - 'downgrade_account', - esc_html( $fs_addon->is_only_premium() ? fs_text_inline( 'Cancel Subscription', 'cancel-subscription', $slug ) : $downgrade_text ), - '', - array( 'plugin_id' => $addon_id ), - false, - false, - false, - ( $downgrade_confirmation_message . ' ' . $after_downgrade_message ), - 'POST' - ); - } - } else if ( $is_paid_trial ) { - $buttons[] = fs_ui_get_action_button( - $fs->get_id(), - 'account', - 'cancel_trial', - esc_html( $cancel_trial_text ), - '', - array( 'plugin_id' => $addon_id ), - false, - false, - 'dashicons dashicons-download', - $cancel_trial_confirm_text, - 'POST' - ); - } else { - $premium_license = $fs_addon->_get_available_premium_license(); - - if ( is_object( $premium_license ) ) { - $premium_plan = $fs_addon->_get_plan_by_id( $premium_license->plan_id ); - $site = $fs_addon->get_site(); - - $buttons[] = fs_ui_get_action_button( - $fs->get_id(), - 'account', - 'activate_license', - esc_html( sprintf( $activate_plan_text, $premium_plan->title, ( $site->is_localhost() && $premium_license->is_free_localhost ) ? '[localhost]' : ( 1 < $premium_license->left() ? $premium_license->left() . ' left' : '' ) ) ), - '', - array( - 'plugin_id' => $addon_id, - 'license_id' => $premium_license->id, - ) - ); - } - } - - if ( 0 == count( $buttons ) ) { - if ( $show_upgrade && $fs_addon->is_premium() ) { - $fs_addon->_add_license_activation_dialog_box(); - - $buttons[] = fs_ui_get_action_button( - $fs->get_id(), - 'account', - 'activate_license', - fs_esc_html_inline( 'Activate License', 'activate-license', $slug ), - 'activate-license-trigger ' . $fs_addon->get_unique_affix(), - array( - 'plugin_id' => $addon_id, - ), - false, - true - ); - } - - // Add sync license only if non of the other CTAs are visible. - $buttons[] = fs_ui_get_action_button( - $fs->get_id(), - 'account', - $fs->get_unique_affix() . '_sync_license', - esc_html( $sync_license_text ), - '', - array( 'plugin_id' => $addon_id ), - false, - true - ); - - } - } else if ( ! $show_upgrade ) { - if ( $fs->is_addon_installed( $addon_id ) ) { - $addon_file = $fs->get_addon_basename( $addon_id ); - $buttons[] = sprintf( - '<a class="button button-primary edit" href="%s" title="%s">%s</a>', - wp_nonce_url( 'plugins.php?action=activate&plugin=' . $addon_file, 'activate-plugin_' . $addon_file ), - fs_esc_attr_inline( 'Activate this add-on', 'activate-this-addon', $slug ), - $activate_text - ); - } else { - if ( $fs->is_allowed_to_install() ) { - $buttons[] = sprintf( - '<a class="button button-primary edit" href="%s">%s</a>', - wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ), - fs_text_inline( 'Install Now', 'install-now', $slug ) - ); - } else { - $buttons[] = sprintf( - '<a target="_blank" class="button button-primary edit" href="%s">%s</a>', - $fs->_get_latest_download_local_url( $addon_id ), - esc_html( $download_latest_text ) - ); - } - } - } - - if ( $show_upgrade ) { - $buttons[] = sprintf( '<a href="%s" class="thickbox button button-small button-primary" aria-label="%s" data-title="%s"><i class="dashicons dashicons-cart"></i> %s</a>', - esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug . - '&TB_iframe=true&width=600&height=550' ) ), - esc_attr( sprintf( fs_text_inline( 'More information about %s', 'more-information-about-x', $slug ), $addon->title ) ), - esc_attr( $addon->title ), - ( $fs_addon->has_free_plan() ? - $upgrade_text : - fs_text_x_inline( 'Purchase', 'verb', 'purchase', $slug ) ) - ); - } - - $buttons_count = count( $buttons ); - ?> - - <!-- Actions --> - <td><?php if ( $buttons_count > 1 ) : ?> - <div class="button-group"><?php endif ?> - <?php foreach ( $buttons as $button ) { - echo $button; - } ?> - <?php if ( $buttons_count > 1 ) : ?></div><?php endif ?></td> - <!--/ Actions --> - - <?php else : ?> - <?php // Add-on NOT Installed or was never connected. - ?> - <!-- Action --> - <td colspan="4"> - <?php if ( $fs->is_addon_installed( $addon_id ) ) : ?> - <?php $addon_file = $fs->get_addon_basename( $addon_id ) ?> - <a class="button button-primary" - href="<?php echo wp_nonce_url( 'plugins.php?action=activate&plugin=' . $addon_file, 'activate-plugin_' . $addon_file ) ?>" - title="<?php fs_esc_attr_echo_inline( 'Activate this add-on', 'activate-this-addon', $slug ) ?>" - class="edit"><?php echo esc_html( $activate_text ) ?></a> - <?php else : ?> - <?php if ( $fs->is_allowed_to_install() ) : ?> - <a class="button button-primary" - href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ) ?>"><?php fs_esc_html_echo_inline( 'Install Now', 'install-now', $slug ) ?></a> - <?php else : ?> - <a target="_blank" class="button button-primary" - href="<?php echo $fs->_get_latest_download_local_url( $addon_id ) ?>"><?php echo esc_html( $download_latest_text ) ?></a> - <?php endif ?> - <?php endif ?> - </td> - <!--/ Action --> - <?php endif ?> - <?php if ( ! $is_paying && WP_FS__DEV_MODE ) : ?> - <!-- Optional Delete Action --> - <td> - <?php - if ( $is_addon_activated ) { - fs_ui_action_button( - $fs->get_id(), 'account', - 'delete_account', - fs_text_x_inline( 'Delete', 'verb', 'delete', $slug ), - '', - array( 'plugin_id' => $addon_id ), - false, - $show_upgrade - ); - } - ?> - </td> - <!--/ Optional Delete Action --> - <?php endif ?> +<?php + /** + * @var array $VARS + * @var Freemius $fs + */ + $fs = $VARS['parent_fs']; + $addon_id = $VARS['addon_id']; + $odd = $VARS['odd']; + $slug = $fs->get_slug(); + + + $addon = $fs->get_addon( $addon_id ); + $is_addon_activated = $fs->is_addon_activated( $addon_id ); + $is_addon_connected = $fs->is_addon_connected( $addon_id ); + + $fs_addon = $is_addon_connected ? + freemius( $addon_id ) : + false; + + // Aliases. + $download_latest_text = fs_text_x_inline( 'Download Latest', 'as download latest version', 'download-latest', $slug ); + $downgrading_plan_text = fs_text_inline( 'Downgrading your plan', 'downgrading-plan', $slug ); + $cancelling_subscription_text = fs_text_inline( 'Cancelling the subscription', 'cancelling-subscription', $slug ); + /* translators: %1s: Either 'Downgrading your plan' or 'Cancelling the subscription' */ + $downgrade_x_confirm_text = fs_text_inline( '%1s will immediately stop all future recurring payments and your %s plan license will expire in %s.', 'downgrade-x-confirm', $slug ); + $prices_increase_text = fs_text_inline( 'Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price.', 'pricing-increase-warning', $slug ); + $cancel_trial_confirm_text = fs_text_inline( 'Cancelling the trial will immediately block access to all premium features. Are you sure?', 'cancel-trial-confirm', $slug ); + $after_downgrade_non_blocking_text = fs_text_inline( 'You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support.', 'after-downgrade-non-blocking', $slug ); + $after_downgrade_blocking_text = fs_text_inline( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.', 'after-downgrade-blocking', $slug ); + /* translators: %s: Plan title (e.g. "Professional") */ + $activate_plan_text = fs_text_inline( 'Activate %s Plan', 'activate-x-plan', $slug ); + $version_text = fs_text_x_inline( 'Version', 'product version', 'version', $slug ); + /* translators: %s: Time period (e.g. Auto renews in "2 months") */ + $renews_in_text = fs_text_inline( 'Auto renews in %s', 'renews-in', $slug ); + /* translators: %s: Time period (e.g. Expires in "2 months") */ + $expires_in_text = fs_text_inline( 'Expires in %s', 'expires-in', $slug ); + $sync_license_text = fs_text_x_inline( 'Sync License', 'as synchronize license', 'sync-license', $slug ); + $cancel_trial_text = fs_text_inline( 'Cancel Trial', 'cancel-trial', $slug ); + $change_plan_text = fs_text_inline( 'Change Plan', 'change-plan', $slug ); + $upgrade_text = fs_text_x_inline( 'Upgrade', 'verb', 'upgrade', $slug ); + $addons_text = fs_text_inline( 'Add-Ons', 'add-ons', $slug ); + $downgrade_text = fs_text_x_inline( 'Downgrade', 'verb', 'downgrade', $slug ); + $trial_text = fs_text_x_inline( 'Trial', 'trial period', 'trial', $slug ); + $free_text = fs_text_inline( 'Free', 'free', $slug ); + $activate_text = fs_text_inline( 'Activate', 'activate', $slug ); + $plan_text = fs_text_x_inline( 'Plan', 'as product pricing plan', 'plan', $slug ); + + // Defaults. + $plan = null; + $is_paid_trial = false; + $license = null; + $site = null; + $is_active_subscription = false; + $subscription = null; + $is_paying = false; + + if ( is_object( $fs_addon ) ) { + $is_paying = $fs_addon->is_paying(); + $user = $fs_addon->get_user(); + $site = $fs_addon->get_site(); + $license = $fs_addon->_get_license(); + $subscription = ( is_object( $license ) ? + $fs_addon->_get_subscription( $license->id ) : + null ); + $plan = $fs_addon->get_plan(); + $is_active_subscription = ( is_object( $subscription ) && $subscription->is_active() ); + $is_paid_trial = $fs_addon->is_paid_trial(); + $show_upgrade = ( $fs_addon->has_paid_plan() && ! $is_paying && ! $is_paid_trial && ! $fs_addon->_has_premium_license() ); + $is_current_license_expired = is_object( $license ) && $license->is_expired(); + } +?> +<tr<?php if ( $odd ) { + echo ' class="alternate"'; +} ?>> + <td> + <!-- Title --> + <?php echo $addon->title ?> + </td> + <?php if ( $is_addon_connected ) : ?> + <!-- ID --> + <td><?php echo $site->id ?></td> + <!--/ ID --> + + <!-- Version --> + <td><?php echo $fs_addon->get_plugin_version() ?></td> + <!--/ Version --> + + <!-- Plan Title --> + <td><?php echo strtoupper( is_string( $plan->name ) ? $plan->title : $free_text ) ?></td> + <!--/ Plan Title --> + + <?php if ( $fs_addon->is_trial() || is_object( $license ) ) : ?> + + <!-- Expiration --> + <td> + <?php + $tags = array(); + + if ( $fs_addon->is_trial() ) { + $tags[] = array( 'label' => $trial_text, 'type' => 'success' ); + + $tags[] = array( + 'label' => sprintf( + ( $is_paid_trial ? + $renews_in_text : + $expires_in_text ), + human_time_diff( time(), strtotime( $site->trial_ends ) ) + ), + 'type' => ( $is_paid_trial ? 'success' : 'warn' ) + ); + } else { + if ( is_object( $license ) ) { + if ( $license->is_cancelled ) { + $tags[] = array( + 'label' => fs_text_inline( 'Cancelled', 'cancelled', $slug ), + 'type' => 'error' + ); + } else if ( $license->is_expired() ) { + $tags[] = array( + 'label' => fs_text_inline( 'Expired', 'expired', $slug ), + 'type' => 'error' + ); + } else if ( $license->is_lifetime() ) { + $tags[] = array( + 'label' => fs_text_inline( 'No expiration', 'no-expiration', $slug ), + 'type' => 'success' + ); + } else if ( ! $is_active_subscription && ! $license->is_first_payment_pending() ) { + $tags[] = array( + 'label' => sprintf( $expires_in_text, human_time_diff( time(), strtotime( $license->expiration ) ) ), + 'type' => 'warn' + ); + } else if ( $is_active_subscription && ! $subscription->is_first_payment_pending() ) { + $tags[] = array( + 'label' => sprintf( $renews_in_text, human_time_diff( time(), strtotime( $subscription->next_payment ) ) ), + 'type' => 'success' + ); + } + } + } + + foreach ( $tags as $t ) { + printf( '<label class="fs-tag fs-%s">%s</label>' . "\n", $t['type'], $t['label'] ); + } + ?> + </td> + <!--/ Expiration --> + + <?php endif ?> + + <?php + $buttons = array(); + if ( $is_addon_activated ) { + if ( $is_paying ) { + $buttons[] = fs_ui_get_action_button( + $fs->get_id(), + 'account', + 'deactivate_license', + fs_text_inline( 'Deactivate License', 'deactivate-license', $slug ), + '', + array( 'plugin_id' => $addon_id ), + false + ); + + $human_readable_license_expiration = human_time_diff( time(), strtotime( $license->expiration ) ); + $downgrade_confirmation_message = sprintf( + $downgrade_x_confirm_text, + ( $fs_addon->is_only_premium() ? $cancelling_subscription_text : $downgrading_plan_text ), + $plan->title, + $human_readable_license_expiration + ); + + $after_downgrade_message = ! $license->is_block_features ? + sprintf( $after_downgrade_non_blocking_text, $plan->title, $fs_addon->get_module_label( true ) ) : + sprintf( $after_downgrade_blocking_text, $plan->title ); + + if ( ! $license->is_lifetime() && $is_active_subscription ) { + $buttons[] = fs_ui_get_action_button( + $fs->get_id(), + 'account', + 'downgrade_account', + esc_html( $fs_addon->is_only_premium() ? fs_text_inline( 'Cancel Subscription', 'cancel-subscription', $slug ) : $downgrade_text ), + '', + array( 'plugin_id' => $addon_id ), + false, + false, + false, + ( $downgrade_confirmation_message . ' ' . $after_downgrade_message . ' ' . $prices_increase_text ), + 'POST' + ); + } + } else if ( $is_paid_trial ) { + $buttons[] = fs_ui_get_action_button( + $fs->get_id(), + 'account', + 'cancel_trial', + esc_html( $cancel_trial_text ), + '', + array( 'plugin_id' => $addon_id ), + false, + false, + 'dashicons dashicons-download', + $cancel_trial_confirm_text, + 'POST' + ); + } else { + $premium_license = $fs_addon->_get_available_premium_license(); + + if ( is_object( $premium_license ) ) { + $premium_plan = $fs_addon->_get_plan_by_id( $premium_license->plan_id ); + $site = $fs_addon->get_site(); + + $buttons[] = fs_ui_get_action_button( + $fs->get_id(), + 'account', + 'activate_license', + esc_html( sprintf( $activate_plan_text, $premium_plan->title, ( $site->is_localhost() && $premium_license->is_free_localhost ) ? '[localhost]' : ( 1 < $premium_license->left() ? $premium_license->left() . ' left' : '' ) ) ), + '', + array( + 'plugin_id' => $addon_id, + 'license_id' => $premium_license->id, + ) + ); + } + } + + if ( 0 == count( $buttons ) ) { + if ( $show_upgrade && $fs_addon->is_premium() ) { + $fs_addon->_add_license_activation_dialog_box(); + + $buttons[] = fs_ui_get_action_button( + $fs->get_id(), + 'account', + 'activate_license', + fs_esc_html_inline( 'Activate License', 'activate-license', $slug ), + 'activate-license-trigger ' . $fs_addon->get_unique_affix(), + array( + 'plugin_id' => $addon_id, + ), + false, + true + ); + } + + // Add sync license only if non of the other CTAs are visible. + $buttons[] = fs_ui_get_action_button( + $fs->get_id(), + 'account', + $fs->get_unique_affix() . '_sync_license', + esc_html( $sync_license_text ), + '', + array( 'plugin_id' => $addon_id ), + false, + true + ); + + } + } else if ( ! $show_upgrade ) { + if ( $fs->is_addon_installed( $addon_id ) ) { + $addon_file = $fs->get_addon_basename( $addon_id ); + $buttons[] = sprintf( + '<a class="button button-primary edit" href="%s" title="%s">%s</a>', + wp_nonce_url( 'plugins.php?action=activate&plugin=' . $addon_file, 'activate-plugin_' . $addon_file ), + fs_esc_attr_inline( 'Activate this add-on', 'activate-this-addon', $slug ), + $activate_text + ); + } else { + if ( $fs->is_allowed_to_install() ) { + $buttons[] = sprintf( + '<a class="button button-primary edit" href="%s">%s</a>', + wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ), + fs_text_inline( 'Install Now', 'install-now', $slug ) + ); + } else { + $buttons[] = sprintf( + '<a target="_blank" class="button button-primary edit" href="%s">%s</a>', + $fs->_get_latest_download_local_url( $addon_id ), + esc_html( $download_latest_text ) + ); + } + } + } + + if ( $show_upgrade ) { + $buttons[] = sprintf( '<a href="%s" class="thickbox button button-small button-primary" aria-label="%s" data-title="%s"><i class="dashicons dashicons-cart"></i> %s</a>', + esc_url( network_admin_url( 'plugin-install.php?fs_allow_updater_and_dialog=true&tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug . + '&TB_iframe=true&width=600&height=550' ) ), + esc_attr( sprintf( fs_text_inline( 'More information about %s', 'more-information-about-x', $slug ), $addon->title ) ), + esc_attr( $addon->title ), + ( $fs_addon->has_free_plan() ? + $upgrade_text : + fs_text_x_inline( 'Purchase', 'verb', 'purchase', $slug ) ) + ); + } + + $buttons_count = count( $buttons ); + ?> + + <!-- Actions --> + <td><?php if ( $buttons_count > 1 ) : ?> + <div class="button-group"><?php endif ?> + <?php foreach ( $buttons as $button ) { + echo $button; + } ?> + <?php if ( $buttons_count > 1 ) : ?></div><?php endif ?></td> + <!--/ Actions --> + + <?php else : ?> + <?php // Add-on NOT Installed or was never connected. + ?> + <!-- Action --> + <td colspan="4"> + <?php if ( $fs->is_addon_installed( $addon_id ) ) : ?> + <?php $addon_file = $fs->get_addon_basename( $addon_id ) ?> + <a class="button button-primary" + href="<?php echo wp_nonce_url( 'plugins.php?action=activate&plugin=' . $addon_file, 'activate-plugin_' . $addon_file ) ?>" + title="<?php fs_esc_attr_echo_inline( 'Activate this add-on', 'activate-this-addon', $slug ) ?>" + class="edit"><?php echo esc_html( $activate_text ) ?></a> + <?php else : ?> + <?php if ( $fs->is_allowed_to_install() ) : ?> + <a class="button button-primary" + href="<?php echo wp_nonce_url( self_admin_url( 'update.php?action=install-plugin&plugin=' . $addon->slug ), 'install-plugin_' . $addon->slug ) ?>"><?php fs_esc_html_echo_inline( 'Install Now', 'install-now', $slug ) ?></a> + <?php else : ?> + <a target="_blank" class="button button-primary" + href="<?php echo $fs->_get_latest_download_local_url( $addon_id ) ?>"><?php echo esc_html( $download_latest_text ) ?></a> + <?php endif ?> + <?php endif ?> + </td> + <!--/ Action --> + <?php endif ?> + <?php if ( ! $is_paying && WP_FS__DEV_MODE ) : ?> + <!-- Optional Delete Action --> + <td> + <?php + if ( $is_addon_activated ) { + fs_ui_action_button( + $fs->get_id(), 'account', + 'delete_account', + fs_text_x_inline( 'Delete', 'verb', 'delete', $slug ), + '', + array( 'plugin_id' => $addon_id ), + false, + $show_upgrade + ); + } + ?> + </td> + <!--/ Optional Delete Action --> + <?php endif ?> </tr> \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/account/partials/site.php b/wp-content/plugins/nextgen-gallery/freemius/templates/account/partials/site.php index 6629e9b71..976dc35aa 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/account/partials/site.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/account/partials/site.php @@ -292,14 +292,19 @@ </td> <td><?php if ( $is_active_subscription ) : ?> <?php - $downgrade_x_confirm_text = fs_text_inline( 'Downgrading your plan will immediately stop all future recurring payments and your %s plan license will expire in %s.', 'downgrade-x-confirm', $slug ); - $after_downgrade_non_blocking_text = fs_text_inline( 'You can still enjoy all %s features but you will not have access to %s updates and support.', 'after-downgrade-non-blocking', $slug ); - $after_downgrade_blocking_text = fs_text_inline( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.', 'after-downgrade-blocking', $slug ); - $downgrade_text = fs_text_x_inline( 'Downgrade', 'verb', 'downgrade', $slug ); + $downgrading_plan_text = fs_text_inline( 'Downgrading your plan', 'downgrading-plan', $slug ); + $cancelling_subscription_text = fs_text_inline( 'Cancelling the subscription', 'cancelling-subscription', $slug ); + /* translators: %1s: Either 'Downgrading your plan' or 'Cancelling the subscription' */ + $downgrade_x_confirm_text = fs_text_inline( '%1s will immediately stop all future recurring payments and your %s plan license will expire in %s.', 'downgrade-x-confirm', $slug ); + $prices_increase_text = fs_text_inline( 'Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price.', 'pricing-increase-warning', $slug ); + $after_downgrade_non_blocking_text = fs_text_inline( 'You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support.', 'after-downgrade-non-blocking', $slug ); + $after_downgrade_blocking_text = fs_text_inline( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.', 'after-downgrade-blocking', $slug ); + $downgrade_text = fs_text_x_inline( 'Downgrade', 'verb', 'downgrade', $slug ); $human_readable_license_expiration = human_time_diff( time(), strtotime( $license->expiration ) ); $downgrade_confirmation_message = sprintf( $downgrade_x_confirm_text, + ( $fs->is_only_premium() ? $cancelling_subscription_text : $downgrading_plan_text ), $plan->title, $human_readable_license_expiration ); @@ -313,7 +318,7 @@ <input type="hidden" name="fs_action" value="<?php echo $action ?>"> <?php wp_nonce_field( trim( "{$action}:{$blog_id}", ':' ) ) ?> <input type="hidden" name="blog_id" value="<?php echo $blog_id ?>"> - <button class="button button-small" onclick="if (confirm('<?php echo ( $downgrade_confirmation_message . ' ' . $after_downgrade_message ) ?>')) { this.parentNode.submit(); } else { return false; }"><?php echo $downgrade_text ?></button> + <button class="button button-small" onclick="if (confirm('<?php echo esc_attr( $downgrade_confirmation_message . ' ' . $after_downgrade_message . ' ' . $prices_increase_text ) ?>')) { this.parentNode.submit(); } else { return false; }"><?php echo $downgrade_text ?></button> </form> <?php endif ?></td> </tr> diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/add-ons.php b/wp-content/plugins/nextgen-gallery/freemius/templates/add-ons.php index bf8c58fb0..ade0fc491 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/add-ons.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/add-ons.php @@ -98,7 +98,7 @@ <li class="fs-card fs-addon" data-slug="<?php echo $addon->slug ?>"> <?php echo sprintf( '<a href="%s" class="thickbox fs-overlay" aria-label="%s" data-title="%s"></a>', - esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug . + esc_url( network_admin_url( 'plugin-install.php?fs_allow_updater_and_dialog=true&tab=plugin-information&parent_plugin_id=' . $fs->get_id() . '&plugin=' . $addon->slug . '&TB_iframe=true&width=600&height=550' ) ), esc_attr( sprintf( fs_text_inline( 'More information about %s', 'more-information-about-x', $slug ), $addon->title ) ), esc_attr( $addon->title ) diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/admin-notice.php b/wp-content/plugins/nextgen-gallery/freemius/templates/admin-notice.php index 3dd86eda2..6079e7126 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/admin-notice.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/admin-notice.php @@ -11,8 +11,32 @@ } $dismiss_text = fs_text_x_inline( 'Dismiss', 'as close a window', 'dismiss' ); + + $slug = ''; + $type = ''; + + if ( ! empty( $VARS['manager_id'] ) ) { + /** + * @var array $VARS + */ + $slug = $VARS['manager_id']; + + $type = WP_FS__MODULE_TYPE_PLUGIN; + + if ( false !== strpos( $slug, ':' ) ) { + $parts = explode( ':', $slug ); + + $slug = $parts[0]; + + $parts_count = count( $parts ); + + if ( 1 < $parts_count && WP_FS__MODULE_TYPE_THEME == $parts[1] ) { + $type = $parts[1]; + } + } + } ?> -<div<?php if ( ! empty( $VARS['id'] ) ) : ?> data-id="<?php echo $VARS['id'] ?>"<?php endif ?><?php if ( ! empty( $VARS['manager_id'] ) ) : ?> data-manager-id="<?php echo $VARS['manager_id'] ?>"<?php endif ?> +<div<?php if ( ! empty( $VARS['id'] ) ) : ?> data-id="<?php echo $VARS['id'] ?>"<?php endif ?><?php if ( ! empty( $VARS['manager_id'] ) ) : ?> data-manager-id="<?php echo $VARS['manager_id'] ?>"<?php endif ?><?php if ( ! empty( $slug ) ) : ?> data-slug="<?php echo $slug ?>"<?php endif ?><?php if ( ! empty( $type ) ) : ?> data-type="<?php echo $type ?>"<?php endif ?> class="<?php switch ( $VARS['type'] ) { case 'error': @@ -33,6 +57,10 @@ echo ' fs-sticky'; } ?><?php if ( ! empty( $VARS['plugin'] ) ) { echo ' fs-has-title'; + } ?><?php if ( ! empty( $slug ) ) { + echo " fs-slug-{$slug}"; + } ?><?php if ( ! empty( $type ) ) { + echo " fs-type-{$type}"; } ?>"><?php if ( ! empty( $VARS['plugin'] ) ) : ?> <label class="fs-plugin-title"><?php echo $VARS['plugin'] ?></label> <?php endif ?> diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/checkout.php b/wp-content/plugins/nextgen-gallery/freemius/templates/checkout.php index 0e0f13f10..c2aa68c4b 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/checkout.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/checkout.php @@ -174,7 +174,7 @@ fs_require_once_template('secure-https-header.php', $view_params); ?> <div id="fs_checkout" class="wrap fs-section fs-full-size-wrapper"> - <div id="frame"></div> + <div id="fs_frame"></div> <script type="text/javascript"> // http://stackoverflow.com/questions/4583703/jquery-post-request-not-ajax jQuery(function ($) { @@ -234,7 +234,7 @@ src = base_url + '/?<?php echo http_build_query( $query_params ) ?>#' + encodeURIComponent(document.location.href), // Append the i-frame into the DOM. frame = $('<i' + 'frame " src="' + src + '" width="100%" height="' + frame_height + 'px" scrolling="no" frameborder="0" style="background: transparent; width: 1px; min-width: 100%;"><\/i' + 'frame>') - .appendTo('#frame'); + .appendTo('#fs_frame'); FS.PostMessage.init(base_url, [frame[0]]); FS.PostMessage.receiveOnce('height', function (data) { diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/connect.php b/wp-content/plugins/nextgen-gallery/freemius/templates/connect.php index 8320fc9d3..e8378c216 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/connect.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/connect.php @@ -40,10 +40,12 @@ $freemius_site_www = 'https://freemius.com'; - $freemius_site_url = $freemius_site_www . '/' . ( $fs->is_premium() ? - 'wordpress/' : - // Insights platform information. - 'wordpress/usage-tracking/' . $fs->get_id() . "/{$slug}/" ); + $freemius_usage_tracking_url = $freemius_site_www . '/wordpress/usage-tracking/' . $fs->get_id() . "/{$slug}/"; + $freemius_plugin_terms_url = $freemius_site_www . '/terms/' . $fs->get_id() . "/{$slug}/"; + + $freemius_site_url = $fs->is_premium() ? + $freemius_site_www : + $freemius_usage_tracking_url; if ( $fs->is_premium() ) { $freemius_site_url .= '?' . http_build_query( array( @@ -425,7 +427,7 @@ <a href="https://freemius.com/privacy/" target="_blank" tabindex="1"><?php fs_esc_html_echo_inline( 'Privacy Policy', 'privacy-policy', $slug ) ?></a> - - <a href="<?php echo $freemius_site_www ?>/terms/" target="_blank" tabindex="1"><?php fs_echo_inline( 'Terms of Service', 'tos', $slug ) ?></a> + <a href="<?php echo $require_license_key ? $freemius_plugin_terms_url : $freemius_usage_tracking_url ?>" target="_blank" tabindex="1"><?php $require_license_key ? fs_echo_inline( 'License Agreement', 'license-agreement', $slug ) : fs_echo_inline( 'Terms of Service', 'tos', $slug ) ?></a> </div> </div> <?php diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/contact.php b/wp-content/plugins/nextgen-gallery/freemius/templates/contact.php index a066a3f8f..bba101835 100755 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/contact.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/contact.php @@ -86,7 +86,7 @@ } ?> <div id="fs_contact" class="wrap fs-section fs-full-size-wrapper"> - <div id="frame"></div> + <div id="fs_frame"></div> <script type="text/javascript"> (function ($) { $(function () { @@ -99,14 +99,14 @@ // Append the i-frame into the DOM. frame = $('<i' + 'frame " src="' + src + '" width="100%" height="' + frame_height + 'px" scrolling="no" frameborder="0" style="background: transparent; width: 1px; min-width: 100%;"><\/i' + 'frame>') - .appendTo('#frame'); + .appendTo('#fs_frame'); FS.PostMessage.init(base_url); FS.PostMessage.receive('height', function (data) { var h = data.height; if (!isNaN(h) && h > 0 && h != frame_height) { frame_height = h; - $('#frame i' + 'frame').height(frame_height + 'px'); + $('#fs_frame i' + 'frame').height(frame_height + 'px'); } }); }); diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/debug.php b/wp-content/plugins/nextgen-gallery/freemius/templates/debug.php index 0ee3ebf9c..bafff1614 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/debug.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/debug.php @@ -113,6 +113,7 @@ if (optionName) { $.post(ajaxurl, { action : 'fs_get_db_option', + _wpnonce : '<?php echo wp_create_nonce( 'fs_get_db_option' ) ?>', option_name: optionName }, function (response) { if (response.data.value) @@ -132,6 +133,7 @@ if (optionValue) { $.post(ajaxurl, { action : 'fs_set_db_option', + _wpnonce : '<?php echo wp_create_nonce( 'fs_set_db_option' ) ?>', option_name : optionName, option_value: optionValue }, function () { @@ -205,7 +207,7 @@ </tr> </thead> <tbody> - <?php foreach ( $fs_active_plugins->plugins as $sdk_path => &$data ) : ?> + <?php foreach ( $fs_active_plugins->plugins as $sdk_path => $data ) : ?> <?php $is_active = ( WP_FS__SDK_VERSION == $data->version ) ?> <tr<?php if ( $is_active ) { echo ' style="background: #E6FFE6; font-weight: bold"'; @@ -317,7 +319,7 @@ <input type="hidden" name="module_id" value="<?php echo $fs->get_id() ?>"> <?php wp_nonce_field( 'simulate_trial' ) ?> - <button type="submit" class="button button-primary simulate-trial"><?php fs_esc_html_echo_inline( 'Simulate Trial' ) ?></button> + <button type="submit" class="button button-primary simulate-trial"><?php fs_esc_html_echo_inline( 'Simulate Trial Promotion' ) ?></button> </form> <?php endif ?> <?php if ( $fs->is_registered() ) : ?> diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/forms/deactivation/form.php b/wp-content/plugins/nextgen-gallery/freemius/templates/forms/deactivation/form.php index 93f08b32b..755ac9eff 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/forms/deactivation/form.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/forms/deactivation/form.php @@ -10,6 +10,9 @@ exit; } + /** + * @var array $VARS + */ $fs = freemius( $VARS['id'] ); $slug = $fs->get_slug(); @@ -66,14 +69,15 @@ HTML; fs_enqueue_local_style( 'fs_dialog_boxes', '/admin/dialog-boxes.css' ); ?> +<?php $fs->_maybe_add_subscription_cancellation_dialog_box() ?> <script type="text/javascript"> (function ($) { - var reasonsHtml = <?php echo json_encode( $reasons_list_items_html ); ?>, + var reasonsHtml = <?php echo json_encode( $reasons_list_items_html ) ?>, modalHtml = '<div class="fs-modal fs-modal-deactivation-feedback<?php echo empty( $confirmation_message ) ? ' no-confirmation-message' : ''; ?>">' + ' <div class="fs-modal-dialog">' + ' <div class="fs-modal-header">' - + ' <h4><?php fs_esc_attr_echo_inline( 'Quick feedback', 'quick-feedback' , $slug ) ?></h4>' + + ' <h4><?php fs_esc_attr_echo_inline( 'Quick Feedback', 'quick-feedback' , $slug ) ?></h4>' + ' </div>' + ' <div class="fs-modal-body">' + ' <div class="fs-modal-panel" data-panel-id="confirm"><p><?php echo $confirmation_message; ?></p></div>' @@ -82,7 +86,7 @@ HTML; + ' <div class="fs-modal-footer">' + ' <?php echo $anonymous_feedback_checkbox_html ?>' + ' <a href="#" class="button button-secondary button-deactivate"></a>' - + ' <a href="#" class="button button-primary button-close"><?php fs_esc_js_echo_inline( 'Cancel', 'cancel' , $slug ) ?></a>' + + ' <a href="#" class="button button-primary button-close"><?php fs_esc_js_echo_inline( 'Cancel', 'cancel', $slug ) ?></a>' + ' </div>' + ' </div>' + '</div>', @@ -94,23 +98,82 @@ HTML; isAnonymous = <?php echo ( $is_anonymous ? 'true' : 'false' ); ?>, otherReasonID = <?php echo Freemius::REASON_OTHER; ?>, dontShareDataReasonID = <?php echo Freemius::REASON_DONT_LIKE_TO_SHARE_MY_INFORMATION; ?>, - deleteThemeUpdateData = <?php echo $fs->is_theme() && $fs->is_premium() && ! $fs->has_any_active_valid_license() ? 'true' : 'false' ?>; + deleteThemeUpdateData = <?php echo $fs->is_theme() && $fs->is_premium() && ! $fs->has_any_active_valid_license() ? 'true' : 'false' ?>, + $subscriptionCancellationModal = $( '.fs-modal-subscription-cancellation-<?php echo $fs->get_id() ?>' ); $modal.appendTo($('body')); + if ( 0 !== $subscriptionCancellationModal.length ) { + $subscriptionCancellationModal.on( '<?php echo $fs->get_action_tag( 'subscription_cancellation_action' ) ?>', function( evt, cancelSubscription ) { + if ( false === cancelSubscription ) { + showModal(); + + $subscriptionCancellationModal.trigger( 'closeModal' ); + } else { + var $errorMessage = $subscriptionCancellationModal.find( '.notice-error' ); + + <?php + $subscription_cancellation_context = $fs->is_paid_trial() ? + fs_text_inline( 'trial', 'trial', $slug ) : + fs_text_inline( 'subscription', 'subscription', $slug ); + ?> + + $.ajax({ + url : ajaxurl, + method : 'POST', + data : { + action : '<?php echo $fs->get_ajax_action( 'cancel_subscription_or_trial' ) ?>', + security : '<?php echo $fs->get_ajax_security( 'cancel_subscription_or_trial' ) ?>', + module_id: '<?php echo $fs->get_id() ?>' + }, + beforeSend: function() { + $errorMessage.hide(); + + $subscriptionCancellationModal.find( '.fs-modal-footer .button' ).addClass( 'disabled' ); + $subscriptionCancellationModal.find( '.fs-modal-footer .button-primary' ).text( '<?php echo esc_js( + sprintf( fs_text_inline( 'Cancelling %s...', 'cancelling-x' , $slug ), $subscription_cancellation_context ) + ) ?>' ); + }, + success: function( result ) { + if ( result.success ) { + $subscriptionCancellationModal.removeClass( 'has-subscription-actions' ); + $subscriptionCancellationModal.find( '.fs-modal-footer .button-primary' ).removeClass( 'warn' ); + + $subscriptionCancellationModal.remove(); + showModal(); + } else { + $errorMessage.find( '> p' ).html( result.error ); + $errorMessage.show(); + + $subscriptionCancellationModal.find( '.fs-modal-footer .button' ).removeClass( 'disabled' ); + $subscriptionCancellationModal.find( '.fs-modal-footer .button-primary' ).html( <?php echo json_encode( sprintf( + fs_text_inline( 'Cancel %s & Proceed', 'cancel-x-and-proceed', $slug ), + ucfirst( $subscription_cancellation_context ) + ) ) ?> ); + } + } + }); + } + }); + } + registerEventHandlers(); function registerEventHandlers() { - <?php - if ( $fs->is_plugin() ) { ?> $deactivateLink.click(function (evt) { evt.preventDefault(); - redirectLink = $(this).attr('href'); + redirectLink = $(this).attr('href'); - showModal(); + if ( 0 == $subscriptionCancellationModal.length ) { + showModal(); + } else { + $subscriptionCancellationModal.trigger( 'showModal' ); + } }); + <?php + if ( ! $fs->is_plugin() ) { /** * For "theme" module type, the modal is shown when the current user clicks on * the "Activate" button of any other theme. The "Activate" button is actually @@ -122,8 +185,8 @@ HTML; * * @since 1.2.2.7 Don't trigger the deactivation feedback form if activating the premium version of the theme. */ - } else { ?> - $('body').on('click', '.theme-browser .theme:not([data-slug=<?php echo $slug ?>-premium]) .theme-actions .button.activate', function (evt) { + ?> + $('body').on('click', '.theme-browser .theme:not([data-slug=<?php echo $fs->get_premium_slug() ?>]) .theme-actions .button.activate', function (evt) { evt.preventDefault(); redirectLink = $(this).attr('href'); @@ -245,7 +308,7 @@ HTML; }); $modal.on('click', 'input[type="radio"]', function () { - var $selectedReasonOption = $(this); + var $selectedReasonOption = $( this ); // If the selection has not changed, do not proceed. if (selectedReasonID === $selectedReasonOption.val()) @@ -303,11 +366,15 @@ HTML; } // If the user has not clicked the close button and the clicked element is inside the modal dialog, just return. - if (!$target.hasClass('button-close') && ( $target.parents('.fs-modal-body').length > 0 || $target.parents('.fs-modal-footer').length > 0 )) { + if ( + ! $target.hasClass( 'button-close' ) && + ( $target.parents( '.fs-modal-body' ).length > 0 || $target.parents( '.fs-modal-footer' ).length > 0 ) + ) { return; } closeModal(); + return false; }); } @@ -372,14 +439,14 @@ HTML; * If the modal dialog has no confirmation message, that is, it has only one panel, then ensure * that clicking the deactivate button will actually deactivate the plugin. */ - if ($modal.hasClass('no-confirmation-message')) { - $deactivateButton.addClass('allow-deactivate'); + if ( $modal.hasClass( 'no-confirmation-message' ) ) { + $deactivateButton.addClass( 'allow-deactivate' ); - showPanel('reasons'); + showPanel( 'reasons' ); } else { - $deactivateButton.removeClass('allow-deactivate'); + $deactivateButton.removeClass( 'allow-deactivate' ); - showPanel('confirm'); + showPanel( 'confirm' ); } } @@ -396,30 +463,30 @@ HTML; } function showPanel(panelType) { - $modal.find('.fs-modal-panel').removeClass('active '); - $modal.find('[data-panel-id="' + panelType + '"]').addClass('active'); + $modal.find( '.fs-modal-panel' ).removeClass( 'active' ); + $modal.find( '[data-panel-id="' + panelType + '"]' ).addClass( 'active' ); updateButtonLabels(); } function updateButtonLabels() { - var $deactivateButton = $modal.find('.button-deactivate'); - - // Reset the deactivate button's text. - if ('confirm' === getCurrentPanel()) { - $deactivateButton.text('<?php echo esc_js( sprintf( - fs_text_inline( 'Yes - %s', 'deactivation-modal-button-confirm' , $slug ), - $fs->is_plugin() ? - $deactivate_text : - sprintf( $activate_x_text, $theme_text ) - ) ) ?>'); + var $deactivateButton = $modal.find( '.button-deactivate' ); + + // Reset the deactivate button's text. + if ( 'confirm' === getCurrentPanel() ) { + $deactivateButton.text( <?php echo json_encode( sprintf( + fs_text_inline( 'Yes - %s', 'deactivation-modal-button-confirm', $slug ), + $fs->is_plugin() ? + $deactivate_text : + sprintf( $activate_x_text, $theme_text ) + ) ) ?> ); } else { - $deactivateButton.html('<?php echo esc_js( sprintf( + $deactivateButton.html( <?php echo json_encode( sprintf( fs_text_inline('Skip & %s', 'skip-and-x', $slug ), $fs->is_plugin() ? $deactivate_text : sprintf( $activate_x_text, $theme_text ) - ) ) ?>'); + ) ) ?> ); } } diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/forms/premium-versions-upgrade-handler.php b/wp-content/plugins/nextgen-gallery/freemius/templates/forms/premium-versions-upgrade-handler.php index 7802fedcc..f30639bfa 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/forms/premium-versions-upgrade-handler.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/forms/premium-versions-upgrade-handler.php @@ -20,12 +20,32 @@ $plugin_name = $plugin_data['Name']; $plugin_basename = $fs->get_plugin_basename(); + $license = $fs->_get_license(); + + if ( ! is_object( $license ) ) { + $purchase_url = $fs->pricing_url(); + } else { + $subscription = $fs->_get_subscription( $license->id ); + + $purchase_url = $fs->checkout_url( + is_object( $subscription ) ? + ( 1 == $subscription->billing_cycle ? WP_FS__PERIOD_MONTHLY : WP_FS__PERIOD_ANNUALLY ) : + WP_FS__PERIOD_LIFETIME, + false, + array( 'licenses' => $license->quota ) + ); + } + $message = sprintf( fs_text_inline( 'There is a new version of %s available.', 'new-version-available-message', $slug ) . - fs_text_inline( ' %sRenew your license now%s to access version %s security & feature updates, and support.', 'renew-license-now', $slug ), + fs_text_inline( ' %s to access version %s security & feature updates, and support.', 'x-for-updates-and-support', $slug ), '<span id="plugin_name"></span>', - '<a id="pricing_url" href="">', - '</a>', + sprintf( + '<a id="pricing_url" href="">%s</a>', + is_object( $license ) ? + fs_text_inline( 'Renew your license now', 'renew-license-now', $slug ) : + fs_text_inline( 'Buy a license now', 'buy-license-now', $slug ) + ), '<span id="new_version"></span>' ); @@ -33,7 +53,9 @@ $header_title = fs_text_inline( 'New Version Available', 'new-version-available', $slug ); - $renew_license_button_text = fs_text_inline( 'Renew license', 'renew-license', $slug ); + $renew_license_button_text = is_object( $license ) ? + fs_text_inline( 'Renew license', 'renew-license', $slug ) : + fs_text_inline( 'Buy license', 'buy-license', $slug ); fs_enqueue_local_style( 'fs_dialog_boxes', '/admin/dialog-boxes.css' ); ?> @@ -56,7 +78,7 @@ + ' <div class="fs-modal-panel active">' + modalContentHtml + '</div>' + ' </div>' + ' <div class="fs-modal-footer">' - + ' <a class="button button-primary button-renew-license" tabindex="3" href="<?php echo $fs->pricing_url() ?>"><?php echo esc_js( $renew_license_button_text ) ?></a>' + + ' <a class="button button-primary button-renew-license" tabindex="3" href="<?php echo $purchase_url ?>"><?php echo esc_js( $renew_license_button_text ) ?></a>' + ' <button class="button button-secondary button-close" tabindex="4"><?php fs_esc_js_echo_inline( 'Cancel', 'cancel', $slug ) ?></button>' + ' </div>' + ' </div>' diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/forms/premium-versions-upgrade-metadata.php b/wp-content/plugins/nextgen-gallery/freemius/templates/forms/premium-versions-upgrade-metadata.php index e77412fb2..d0dbf0f61 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/forms/premium-versions-upgrade-metadata.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/forms/premium-versions-upgrade-metadata.php @@ -14,6 +14,22 @@ * @var Freemius $fs */ $fs = freemius( $VARS['id'] ); + + $license = $fs->_get_license(); + + if ( ! is_object( $license ) ) { + $purchase_url = $fs->pricing_url(); + } else { + $subscription = $fs->_get_subscription( $license->id ); + + $purchase_url = $fs->checkout_url( + is_object( $subscription ) ? + ( 1 == $subscription->billing_cycle ? WP_FS__PERIOD_MONTHLY : WP_FS__PERIOD_ANNUALLY ) : + WP_FS__PERIOD_LIFETIME, + false, + array( 'licenses' => $license->quota ) + ); + } ?> <script type="text/javascript"> (function( $ ) { @@ -22,7 +38,7 @@ $premiumVersionCheckbox.addClass( 'license-expired' ); $premiumVersionCheckbox.data( 'plugin-name', <?php echo json_encode( $fs->get_plugin_data()['Name'] ) ?> ); - $premiumVersionCheckbox.data( 'pricing-url', <?php echo json_encode( $fs->pricing_url() ) ?> ); + $premiumVersionCheckbox.data( 'pricing-url', <?php echo json_encode( $purchase_url ) ?> ); $premiumVersionCheckbox.data( 'new-version', <?php echo json_encode( $VARS['new_version'] ) ?> ); }); })( jQuery ); diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/forms/subscription-cancellation.php b/wp-content/plugins/nextgen-gallery/freemius/templates/forms/subscription-cancellation.php new file mode 100644 index 000000000..fe15b6b6b --- /dev/null +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/forms/subscription-cancellation.php @@ -0,0 +1,277 @@ +<?php +/** + * @package Freemius + * @copyright Copyright (c) 2015, Freemius, Inc. + * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 + * @since 2.2.1 + */ + +if ( ! defined( 'ABSPATH' ) ) { + exit; +} + +/** + * @var array $VARS + */ +$fs = freemius( $VARS['id'] ); +$slug = $fs->get_slug(); + +/** + * @var FS_Plugin_License $license + */ +$license = $VARS['license']; + +$has_trial = $VARS['has_trial']; + +$subscription_cancellation_context = $has_trial ? + fs_text_inline( 'trial', 'trial', $slug ) : + fs_text_inline( 'subscription', 'subscription', $slug ); + +$plan = $fs->get_plan(); +$module_label = $fs->get_module_label( true ); + +if ( $VARS['is_license_deactivation'] ) { + $subscription_cancellation_text = ''; +} else { + $subscription_cancellation_text = sprintf( + fs_text_inline( + "Deactivating or uninstalling the %s will automatically disable the license, which you'll be able to use on another site.", + 'deactivation-or-uninstall-message', + $slug + ), + $module_label + ) . ' '; +} + + $subscription_cancellation_text .= sprintf( + fs_text_inline( + 'In case you are NOT planning on using this %s on this site (or any other site) - would you like to cancel the %s as well?', + 'cancel-subscription-message', + $slug + ), + ( $VARS['is_license_deactivation'] ? fs_text_inline( 'license', 'license', $slug ) : $module_label ), + $subscription_cancellation_context +); + +$cancel_subscription_action_label = sprintf( + fs_esc_html_inline( + "Cancel %s - I no longer need any security & feature updates, nor support for %s because I'm not planning to use the %s on this, or any other site.", + 'cancel-x', + $slug + ), + esc_html( $subscription_cancellation_context ), + sprintf( '<strong>%s</strong>', esc_html( $fs->get_plugin_title() ) ), + esc_html( $module_label ) +); + +$keep_subscription_active_action_label = esc_html( sprintf( + fs_text_inline( + "Don't cancel %s - I'm still interested in getting security & feature updates, as well as be able to contact support.", + 'dont-cancel-x', + $slug + ), + $subscription_cancellation_context +) ); + +$subscription_cancellation_text = esc_html( $subscription_cancellation_text ); + +$subscription_cancellation_html = <<< HTML + <div class="notice notice-error inline"><p></p></div><p>{$subscription_cancellation_text}</p> + <ul class="subscription-actions"> + <li> + <label> + <input type="radio" name="cancel-subscription" value="false"/> + <span>{$keep_subscription_active_action_label}</span> + </label> + </li> + <li> + <label> + <input type="radio" name="cancel-subscription" value="true"/> + <span>{$cancel_subscription_action_label}</span> + </label> + </li> + </ul> +HTML; + +$downgrading_plan_text = fs_text_inline( 'Downgrading your plan', 'downgrading-plan', $slug ); +$cancelling_subscription_text = fs_text_inline( 'Cancelling the subscription', 'cancelling-subscription', $slug ); +/* translators: %1s: Either 'Downgrading your plan' or 'Cancelling the subscription' */ +$downgrade_x_confirm_text = fs_text_inline( '%1s will immediately stop all future recurring payments and your %s plan license will expire in %s.', 'downgrade-x-confirm', $slug ); +$prices_increase_text = fs_text_inline( 'Please note that we will not be able to grandfather outdated pricing for renewals/new subscriptions after a cancellation. If you choose to renew the subscription manually in the future, after a price increase, which typically occurs once a year, you will be charged the updated price.', 'pricing-increase-warning', $slug ); +$after_downgrade_non_blocking_text = fs_text_inline( 'You can still enjoy all %s features but you will not have access to %s security & feature updates, nor support.', 'after-downgrade-non-blocking', $slug ); +$after_downgrade_blocking_text = fs_text_inline( 'Once your license expires you can still use the Free version but you will NOT have access to the %s features.', 'after-downgrade-blocking', $slug ); +$after_downgrade_blocking_text_premium_only = fs_text_inline( 'Once your license expires you will no longer be able to use the %s, unless you activate it again with a valid premium license.', 'after-downgrade-blocking-premium-only', $slug ); + +$subscription_cancellation_confirmation_message = $has_trial ? + fs_text_inline( 'Cancelling the trial will immediately block access to all premium features. Are you sure?', 'cancel-trial-confirm', $slug ) : + sprintf( + '%s %s %s %s', + sprintf( + $downgrade_x_confirm_text, + ($fs->is_only_premium() ? $cancelling_subscription_text : $downgrading_plan_text ), + $plan->title, + human_time_diff( time(), strtotime( $license->expiration ) ) + ), + ( + $license->is_block_features ? + ( + $fs->is_only_premium() ? + sprintf( $after_downgrade_blocking_text_premium_only, $module_label ) : + sprintf( $after_downgrade_blocking_text, $plan->title ) + ) : + sprintf( $after_downgrade_non_blocking_text, $plan->title, $fs->get_module_label( true ) ) + ), + $prices_increase_text, + fs_esc_attr_inline( 'Are you sure you want to proceed?', 'proceed-confirmation', $slug ) + ); + +fs_enqueue_local_style( 'fs_dialog_boxes', '/admin/dialog-boxes.css' ); +?> +<script type="text/javascript"> + (function( $ ) { + var modalHtml = + '<div class="fs-modal fs-modal-subscription-cancellation fs-modal-subscription-cancellation-<?php echo $fs->get_id() ?>">' + + ' <div class="fs-modal-dialog">' + + ' <div class="fs-modal-header">' + + ' <h4><?php echo esc_attr( sprintf( fs_text_inline( 'Cancel %s?', 'cancel-x', $slug ), ucfirst( $subscription_cancellation_context ) ) ) ?></h4>' + + ' </div>' + + ' <div class="fs-modal-body">' + + ' <div class="fs-modal-panel active">' + <?php echo json_encode( $subscription_cancellation_html ) ?> + '<p class="fs-price-increase-warning" style="display: none;">' + <?php echo json_encode( $prices_increase_text ) ?> + '</p></div>' + + ' </div>' + + ' <div class="fs-modal-footer">' + + ' <a href="#" class="button button-secondary button-close"><?php fs_esc_attr_echo( 'cancel', $slug ) ?></a>' + + ' <a href="#" class="button button-primary button-deactivate disabled"><?php fs_esc_attr_echo_inline( 'Proceed', 'proceed', $slug ) ?></a>' + + ' </div>' + + ' </div>' + + '</div>', + $modal = $(modalHtml); + + $modal.appendTo($('body')); + + registerEventHandlers(); + + function registerEventHandlers() { + $modal.on( 'showModal', function() { + showModal(); + }); + + $modal.on( 'closeModal', function() { + closeModal(); + }); + + $modal.on('click', '.fs-modal-footer .button', function (evt) { + evt.preventDefault(); + + if ($(this).hasClass('disabled')) { + return; + } + + var _this = $(this), + subscriptionCancellationActionEventName = <?php echo json_encode( $fs->get_action_tag( 'subscription_cancellation_action' ) ) ?>; + + if ( _this.hasClass( 'button-primary' ) ) { + if ( 'true' !== $( 'input[name="cancel-subscription"]:checked' ).val() ) { + $modal.trigger( subscriptionCancellationActionEventName, false ); + } else { + if ( confirm( <?php echo json_encode( $subscription_cancellation_confirmation_message ) ?> ) ) { + $modal.trigger( subscriptionCancellationActionEventName, true ); + } + } + } + }); + + $modal.on('click', 'input[type="radio"]', function () { + var + $selectedOption = $( this ), + $primaryButton = $modal.find( '.button-primary' ), + isSelected = ( 'true' === $selectedOption.val() ); + + if ( isSelected ) { + $primaryButton.html( <?php echo json_encode( sprintf( + fs_text_inline( 'Cancel %s & Proceed', 'cancel-x-and-proceed', $slug ), + ucfirst( $subscription_cancellation_context ) + ) ) ?> ); + + $modal.find('.fs-price-increase-warning').show(); + } else { + $primaryButton.html( <?php echo fs_json_encode_echo_inline( 'Proceed', 'proceed', $slug ) ?> ); + $modal.find('.fs-price-increase-warning').hide(); + } + + $primaryButton.toggleClass( 'warn', isSelected ); + $primaryButton.removeClass( 'disabled' ); + }); + + // If the user has clicked outside the window, cancel it. + $modal.on('click', function (evt) { + var $target = $(evt.target); + + // If the user has clicked anywhere in the modal dialog, just return. + if ($target.hasClass('fs-modal-body') || $target.hasClass('fs-modal-footer')) { + return; + } + + // If the user has not clicked the close button and the clicked element is inside the modal dialog, just return. + if ( + ( ! $target.hasClass( 'button-close' ) ) && + ( $target.parents( '.fs-modal-body' ).length > 0 || $target.parents( '.fs-modal-footer' ).length > 0 ) + ) { + return; + } + + closeModal(); + + return false; + }); + } + + function showModal() { + resetModal(); + + // Display the dialog box. + $modal.addClass('active'); + + $('body').addClass('has-fs-modal'); + } + + function closeModal() { + var activeModalsCount = $( '.fs-modal.active' ).length; + + $modal.removeClass('active'); + + // If child modal, do not remove the "has-fs-modal" class of the <body> element to keep its scrollbars hidden. + if ( activeModalsCount > 1 ) { + return; + } + + $('body').removeClass('has-fs-modal'); + } + + function resetModal() { + updateButtonLabels(); + + if ( 0 === $modal.find( '.subscription-actions' ).length ) { + $modal.find('.button-deactivate').removeClass('disabled'); + } else { + $modal.find('.button-deactivate').addClass('disabled'); + } + + $modal.find('.fs-price-increase-warning').hide(); + + // Uncheck all radio buttons. + $modal.find('input[type="radio"]').prop('checked', false); + + $modal.find('.message').hide(); + } + + function showMessage(message) { + $modal.find('.message').text(message).show(); + } + + function updateButtonLabels() { + $modal.find('.button-primary').text( <?php fs_json_encode_echo_inline( 'Proceed', 'proceed', $slug ) ?> ); + + $modal.find('.button-secondary').text( <?php fs_json_encode_echo( 'cancel', $slug ) ?> ); + } + })( jQuery ); +</script> \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/pricing.php b/wp-content/plugins/nextgen-gallery/freemius/templates/pricing.php index b657028a7..90758a04d 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/pricing.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/pricing.php @@ -105,7 +105,7 @@ } ?> <div id="fs_pricing" class="wrap fs-section fs-full-size-wrapper"> - <div id="frame"></div> + <div id="fs_frame"></div> <form action="" method="POST"> <input type="hidden" name="user_id"/> <input type="hidden" name="user_email"/> @@ -128,7 +128,7 @@ // Append the I-frame into the DOM. frame = $('<i' + 'frame " src="' + src + '" width="100%" height="' + frame_height + 'px" scrolling="no" frameborder="0" style="background: transparent; width: 1px; min-width: 100%;"><\/i' + 'frame>') - .appendTo('#frame'); + .appendTo('#fs_frame'); FS.PostMessage.init(base_url, [frame[0]]); diff --git a/wp-content/plugins/nextgen-gallery/freemius/templates/tabs.php b/wp-content/plugins/nextgen-gallery/freemius/templates/tabs.php index 4661ee11d..e57e36df9 100644 --- a/wp-content/plugins/nextgen-gallery/freemius/templates/tabs.php +++ b/wp-content/plugins/nextgen-gallery/freemius/templates/tabs.php @@ -30,6 +30,10 @@ 'support' : $item['menu_slug']; + if ( 'pricing' === $submenu_name && ! $fs->is_pricing_page_visible() ) { + continue; + } + if ( ! $is_free_wp_org_theme || ! $fs->is_submenu_item_visible( $submenu_name, true ) ) { continue; } diff --git a/wp-content/plugins/nextgen-gallery/nggallery.php b/wp-content/plugins/nextgen-gallery/nggallery.php index 5228f93bd..c0d94b4af 100644 --- a/wp-content/plugins/nextgen-gallery/nggallery.php +++ b/wp-content/plugins/nextgen-gallery/nggallery.php @@ -3,8 +3,8 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You /** * Plugin Name: NextGEN Gallery - * Description: The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 24 million downloads. - * Version: 3.1.6 + * Description: The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 25 million downloads. + * Version: 3.2.2 * Author: Imagely * Plugin URI: https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/ * Author URI: https://www.imagely.com @@ -391,8 +391,12 @@ class C_NextGEN_Bootstrap */ function _register_hooks() { - // Register the deactivation routines - add_action('deactivate_'.NGG_PLUGIN_BASENAME, array(get_class(), 'deactivate')); + // Register the (de)activation routines + add_action('deactivate_' . NGG_PLUGIN_BASENAME, array(get_class(), 'deactivate')); + add_action('activate_' . NGG_PLUGIN_BASENAME, array(get_class(), 'activate'), -10); + + // Handle activation redirect to overview page + add_action('init', array($this, 'handle_activation_redirect')); // Register our test suite add_filter('simpletest_suites', array(&$this, 'add_testsuite')); @@ -450,6 +454,14 @@ class C_NextGEN_Bootstrap return $enabled; } + function handle_activation_redirect() + { + if (get_transient('ngg-activated')) { + delete_transient('ngg-activated'); + wp_redirect(admin_url("?page=nextgen-gallery")); + } + } + function fix_autoupdate_api_requests($args, $url) { // Is this an HTTP request to the licensing server? @@ -654,13 +666,50 @@ class C_NextGEN_Bootstrap /** * Run the uninstaller */ - static function deactivate() + public static function deactivate() { include_once('products/photocrati_nextgen/class.nextgen_product_installer.php'); C_Photocrati_Installer::add_handler(NGG_PLUGIN_BASENAME, 'C_NextGen_Product_Installer'); C_Photocrati_Installer::uninstall(NGG_PLUGIN_BASENAME); } + public static function set_role_caps() + { + // Set the capabilities for the administrator + $role = get_role('administrator'); + + // We need this role, no other chance + if (empty($role)) + { + update_option("ngg_init_check", __('Sorry, NextGEN Gallery works only with a role called administrator',"nggallery")); + return; + } + + $capabilities = array( + 'NextGEN Attach Interface', + 'NextGEN Change options', + 'NextGEN Change style', + 'NextGEN Edit album', + 'NextGEN Gallery overview', + 'NextGEN Manage gallery', + 'NextGEN Manage others gallery', + 'NextGEN Manage tags', + 'NextGEN Upload images', + 'NextGEN Use TinyMCE' + ); + + foreach ($capabilities as $capability) { + $role->add_cap($capability); + } + } + + public static function activate() + { + self::set_role_caps(); + + set_transient('ngg-activated', time(), 30); + } + /** * Defines necessary plugins for the plugin to load correctly */ @@ -668,7 +717,7 @@ class C_NextGEN_Bootstrap { define('NGG_PLUGIN', basename($this->directory_path())); define('NGG_PLUGIN_BASENAME', plugin_basename(__FILE__)); - define('NGG_PLUGIN_DIR', $this->directory_path()); + define('NGG_PLUGIN_DIR', plugin_dir_path(__FILE__)); define('NGG_PLUGIN_URL', $this->path_uri()); define('NGG_TESTS_DIR', implode(DIRECTORY_SEPARATOR, array(rtrim(NGG_PLUGIN_DIR, "/\\"), 'tests'))); define('NGG_PRODUCT_DIR', implode(DIRECTORY_SEPARATOR, array(rtrim(NGG_PLUGIN_DIR, "/\\"), 'products'))); @@ -676,12 +725,14 @@ class C_NextGEN_Bootstrap define('NGG_PRODUCT_URL', path_join(str_replace("\\" , '/', NGG_PLUGIN_URL), 'products')); define('NGG_MODULE_URL', path_join(str_replace("\\", '/', NGG_PRODUCT_URL), 'photocrati_nextgen/modules')); define('NGG_PLUGIN_STARTED_AT', microtime()); - define('NGG_PLUGIN_VERSION', '3.1.6'); + define('NGG_PLUGIN_VERSION', '3.2.2'); - if (defined('SCRIPT_DEBUG') && SCRIPT_DEBUG) - define('NGG_SCRIPT_VERSION', (string)mt_rand(0, mt_getrandmax())); - else - define('NGG_SCRIPT_VERSION', NGG_PLUGIN_VERSION); + define( + 'NGG_SCRIPT_VERSION', + defined('SCRIPT_DEBUG') && SCRIPT_DEBUG + ? (string)mt_rand(0, mt_getrandmax()) + : NGG_PLUGIN_VERSION + ); if (!defined('NGG_HIDE_STRICT_ERRORS')) { define('NGG_HIDE_STRICT_ERRORS', TRUE); @@ -739,6 +790,11 @@ class C_NextGEN_Bootstrap if (!defined('NGG_POPE_CACHE')) { define('NGG_POPE_CACHE', FALSE); } + + // Where are galleries restricted to? + if (!defined('NGG_GALLERY_ROOT_TYPE')) { + define('NGG_GALLERY_ROOT_TYPE', 'site'); // "content" is the other possible value + } } /** @@ -802,36 +858,6 @@ class C_NextGEN_Bootstrap */ function get_plugin_location() { - $path = dirname(__FILE__); - $gallery_dir = strtolower($path); - $gallery_dir = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $gallery_dir); - - $theme_dir = strtolower(get_stylesheet_directory()); - $theme_dir = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $theme_dir); - - $plugin_dir = strtolower(WP_PLUGIN_DIR); - $plugin_dir = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $plugin_dir); - - $common_dir_theme = substr($gallery_dir, 0, strlen($theme_dir)); - $common_dir_plugin = substr($gallery_dir, 0, strlen($plugin_dir)); - - if ($common_dir_theme == $theme_dir) - { - return 'theme'; - } - - if ($common_dir_plugin == $plugin_dir) - { - return 'plugin'; - } - - $parent_dir = dirname($path); - - if (file_exists($parent_dir . DIRECTORY_SEPARATOR . 'style.css')) - { - return 'theme'; - } - return 'plugin'; } @@ -989,10 +1015,10 @@ function ngg_fs( $activate_for_all = false ) { $run_freemius = true; } else { // Run Freemius code on 20% of the new installations. - // $random = rand( 1, 10 ); - // $run_freemius = ( 1 <= $random && $random <= 2 ); - // Update 2016-08: run on all new instances - $run_freemius = TRUE; + // $random = rand( 1, 10 ); + // $run_freemius = ( 1 <= $random && $random <= 2 ); + // Update 2016-08: run on all new instances + $run_freemius = true; } update_option( 'ngg_run_freemius', $run_freemius ); @@ -1004,13 +1030,13 @@ function ngg_fs( $activate_for_all = false ) { } else { // Don't run Freemius for plugin updates. $run_freemius = false; - if (is_null($ngg_run_freemius)) - update_option('ngg_run_freemius', FALSE); - } + if (is_null($ngg_run_freemius)) + update_option('ngg_run_freemius', FALSE); + } - if ( ! $run_freemius ) { - return false; - } + if ( ! $run_freemius ) { + return false; + } } if ( ! isset( $ngg_fs ) ) { @@ -1054,9 +1080,10 @@ function ngg_fs( $activate_for_all = false ) { return $ngg_fs; } -// Init Freemius. -ngg_fs(); +// // Init Freemius. +// Update 2019-03-19: don't run on any instances +// ngg_fs(); -#endregion Freemius +// #endregion Freemius new C_NextGEN_Bootstrap(); \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/non_pope/class.photocrati_installer.php b/wp-content/plugins/nextgen-gallery/non_pope/class.photocrati_installer.php index 645e0a517..3b749334d 100644 --- a/wp-content/plugins/nextgen-gallery/non_pope/class.photocrati_installer.php +++ b/wp-content/plugins/nextgen-gallery/non_pope/class.photocrati_installer.php @@ -126,9 +126,9 @@ if (!class_exists('C_Photocrati_Installer')) $global_settings = C_NextGen_Global_Settings::get_instance(); // Somehow some installations are missing several default settings - // Because gallerystorage_driver is essential to know we do a 'soft' reset here + // Because imgWidth is essential to know we do a 'soft' reset here // by filling in any missing options from the default settings - if (is_null($local_settings->gallerystorage_driver)) { + if (!$local_settings->imgWidth) { $settings_installer = new C_NextGen_Settings_Installer(); $local_settings->reset(); @@ -188,10 +188,9 @@ if (!class_exists('C_Photocrati_Installer')) apc_clear_cache(); } - // We flush ALL transients + // Clear all of our transients wp_cache_flush(); - global $wpdb; - $wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient%'"); + C_Photocrati_Transient_Manager::flush(); // Remove all NGG created cron jobs self::refresh_cron(); @@ -225,6 +224,9 @@ if (!class_exists('C_Photocrati_Installer')) // Save any changes settings $global_settings->save(); $local_settings->save(); + + // Set role capabilities + self::set_role_caps(); } // Another workaround to an issue caused by NextGen's lack of multisite compatibility. It's possible @@ -246,6 +248,36 @@ if (!class_exists('C_Photocrati_Installer')) } } + public static function set_role_caps() + { + // Set the capabilities for the administrator + $role = get_role('administrator'); + + // We need this role, no other chance + if (empty($role)) + { + update_option("ngg_init_check", __('Sorry, NextGEN Gallery works only with a role called administrator',"nggallery")); + return; + } + + $capabilities = array( + 'NextGEN Attach Interface', + 'NextGEN Change options', + 'NextGEN Change style', + 'NextGEN Edit album', + 'NextGEN Gallery overview', + 'NextGEN Manage gallery', + 'NextGEN Manage others gallery', + 'NextGEN Manage tags', + 'NextGEN Upload images', + 'NextGEN Use TinyMCE' + ); + + foreach ($capabilities as $capability) { + $role->add_cap($capability); + } + } + static function _get_last_module_list($reset=FALSE) { // Return empty array to reset diff --git a/wp-content/plugins/nextgen-gallery/pope/lib/class.component_registry.php b/wp-content/plugins/nextgen-gallery/pope/lib/class.component_registry.php index b557b1bf3..3810d22bb 100755 --- a/wp-content/plugins/nextgen-gallery/pope/lib/class.component_registry.php +++ b/wp-content/plugins/nextgen-gallery/pope/lib/class.component_registry.php @@ -81,7 +81,7 @@ class C_Component_Registry */ function add_module_path($path, $recurse = false, $load_all = false) { - if (!$recurse || (!$this->has_searched_path_before($path))) { + if (!preg_match("/(lib|libs|include|includes|static|templates)$/", $path) && (!$recurse || (!$this->has_searched_path_before($path)))) { // If no default module path has been set, then set one now if ($this->get_default_module_path() == null) { diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/class.nextgen_product_installer.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/class.nextgen_product_installer.php index 0f251b850..5b0f318a4 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/class.nextgen_product_installer.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/class.nextgen_product_installer.php @@ -79,6 +79,20 @@ class C_NextGen_Product_Installer unset($pope_modules_list[$search]); } + // TODO: remove this also. NextGen Plus should also be updated in a separate release + if (defined('NGG_PLUS_PLUGIN_VERSION')) + $plus_version = 'NGG_PLUS_PLUGIN_VERSION'; + if (FALSE !== $plus_version) + $plus_version = constant($plus_version); + + if (FALSE !== $plus_version) + { + $pope_modules_list = $this->_filter_modules($pope_modules_list, $this->get_modules_to_load_for('photocrati-nextgen-plus')); + $search = array_search('photocrati-nextgen-plus|' . $plus_version, $pope_modules_list); + if (FALSE !== $search) + unset($pope_modules_list[$search]); + } + if (empty($pope_modules_list)) delete_option('pope_module_list'); else diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ajax/module.ajax.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ajax/module.ajax.php index af44ddfb3..a6500592b 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ajax/module.ajax.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ajax/module.ajax.php @@ -17,7 +17,7 @@ class M_Ajax extends C_Base_Module 'photocrati-ajax', 'AJAX', 'Provides AJAX functionality', - '3.0.0', + '3.1.8', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ajax/package.module.ajax.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ajax/package.module.ajax.php index b115eb7f4..240e481bf 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ajax/package.module.ajax.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ajax/package.module.ajax.php @@ -59,19 +59,12 @@ class C_Ajax_Controller extends C_MVC_Controller } return self::$_instances[$context]; } - function validate_ajax_request($action = NULL, $check_token = false) + function validate_ajax_request($action = NULL, $token = false) { - // TODO: remove this. Pro 2.1's proofing calls validate_ajax_request() with a null $action - if (!$action) { - return TRUE; + if ($token === TRUE) { + $token = isset($_REQUEST['nonce']) ? $_REQUEST['nonce'] : FALSE; } - $valid_request = false; - $security = $this->get_registry()->get_utility('I_Security_Manager'); - $sec_actor = $security->get_current_actor(); - $sec_token = $security->get_request_token($action); - if ($sec_actor->is_allowed($action) && (!$check_token || $sec_token->check_current_request())) { - $valid_request = true; - } - return $valid_request; + // TODO: Remove !$action condition. Necessary for Proofing at the moment + return (!$action || M_Security::is_allowed($action)) && (!$token || M_Security::verify_nonce($token, $action)); } } \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/module.attach_to_post.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/module.attach_to_post.php index 5524d4b52..6f774a602 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/module.attach_to_post.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/module.attach_to_post.php @@ -1,7 +1,7 @@ <?php define('NGG_ATTACH_TO_POST_SLUG', 'nextgen-attach_to_post'); -define('NGG_ATTACH_TO_POST_VERSION', '3.1.4.2'); +define('NGG_ATTACH_TO_POST_VERSION', '3.1.19.1'); class M_Attach_To_Post extends C_Base_Module { @@ -249,11 +249,9 @@ class M_Attach_To_Post extends C_Base_Module function add_media_button() { - $security = $this->get_registry()->get_utility('I_Security_Manager'); - $sec_actor = $security->get_current_actor(); if (in_array(FALSE, array( - $sec_actor->is_allowed('NextGEN Attach Interface'), - $sec_actor->is_allowed('NextGEN Use TinyMCE')))) + M_Security::is_allowed('NextGEN Attach Interface'), + M_Security::is_allowed('NextGEN Use TinyMCE')))) return; $router = C_Router::get_instance(); @@ -403,11 +401,9 @@ class M_Attach_To_Post extends C_Base_Module function can_use_tinymce() { - $security = $this->get_registry()->get_utility('I_Security_Manager'); - $sec_actor = $security->get_current_actor(); $checks = array( - $sec_actor->is_allowed('NextGEN Attach Interface'), - $sec_actor->is_allowed('NextGEN Use TinyMCE'), + M_Security::is_allowed('NextGEN Attach Interface'), + M_Security::is_allowed('NextGEN Use TinyMCE'), get_user_option('rich_editing') == 'true' ); return !in_array(FALSE, $checks); diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/package.module.attach_to_post.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/package.module.attach_to_post.php index 58148c139..20868dad6 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/package.module.attach_to_post.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/package.module.attach_to_post.php @@ -445,7 +445,6 @@ class Mixin_Attach_To_Post extends Mixin $image_mapper = $this->get_registry()->get_utility('I_Image_Mapper', $context); $display_type_mapper = $this->get_registry()->get_utility('I_Display_Type_Mapper', $context); $sources = C_Displayed_Gallery_Source_Manager::get_instance(); - $security = $this->get_registry()->get_utility('I_Security_Manager'); $settings = C_NextGen_Settings::get_instance(); // Get the nextgen tags global $wpdb; @@ -456,6 +455,7 @@ class Mixin_Attach_To_Post extends Mixin array_unshift($tags, $all_tags); $display_types = array(); $registry = C_Component_Registry::get_instance(); + $display_type_mapper->flush_query_cache(); foreach ($display_type_mapper->find_all() as $display_type) { if (isset($display_type->hidden_from_igw) && $display_type->hidden_from_igw || isset($display_type->hidden_from_ui) && $display_type->hidden_from_ui) { continue; @@ -464,12 +464,25 @@ class Mixin_Attach_To_Post extends Mixin if (!apply_filters('ngg_atp_show_display_type', $available, $display_type)) { continue; } + // Some display types were saved with values like "nextgen-gallery-pro/modules/nextgen_pro_imagebrowser/static/preview.jpg" + // as the preview_image_relpath property + if (strpos($display_type->preview_image_relpath, '#') === FALSE) { + $static_path = preg_replace("#^.*static/#", "", $display_type->preview_image_relpath); + $module_id = isset($display_type->module_id) ? $display_type->module_id : $display_type->name; + if ($module_id == 'photocrati-nextgen_basic_slideshow') { + $display_type->module_id = $module_id = 'photocrati-nextgen_basic_gallery'; + } + $display_type->preview_image_relpath = "{$module_id}#{$static_path}"; + $display_type_mapper->save($display_type); + $display_type_mapper->flush_query_cache(); + } + $display_type->preview_image_url = M_Static_Assets::get_static_url($display_type->preview_image_relpath); $display_types[] = $display_type; } usort($display_types, array($this->object, '_display_type_list_sort')); wp_enqueue_script('ngg_display_tab', $this->get_static_url('photocrati-attach_to_post#display_tab.js'), array('jquery', 'backbone', 'photocrati_ajax'), NGG_SCRIPT_VERSION); $this->object->mark_script('ngg_display_tab'); - wp_localize_script('ngg_display_tab', 'igw_data', array('displayed_gallery_preview_url' => $settings->gallery_preview_url, 'displayed_gallery' => $this->object->_displayed_gallery->get_entity(), 'sources' => $sources->get_all(), 'gallery_primary_key' => $gallery_mapper->get_primary_key_column(), 'galleries' => $gallery_mapper->find_all(), 'albums' => $album_mapper->find_all(), 'tags' => $tags, 'display_types' => $display_types, 'sec_token' => $security->get_request_token('nextgen_edit_displayed_gallery')->get_json(), 'image_primary_key' => $image_mapper->get_primary_key_column(), 'display_type_priority_base' => NGG_DISPLAY_PRIORITY_BASE, 'display_type_priority_step' => NGG_DISPLAY_PRIORITY_STEP, 'shortcode_ref' => isset($_REQUEST['ref']) ? floatval($_REQUEST['ref']) : null, 'shortcode_defaults' => array('order_by' => $settings->galSort, 'order_direction' => $settings->galSortDir, 'returns' => 'included', 'maximum_entity_count' => $settings->maximum_entity_count), 'shortcode_attr_replacements' => array('source' => 'src', 'container_ids' => 'ids', 'display_type' => 'display'), 'i18n' => array('sources' => __('Are you inserting a Gallery (default), an Album, or images based on Tags?', 'nggallery'), 'optional' => __('(optional)', 'nggallery'), 'slug_tooltip' => __('Sets an SEO-friendly name to this gallery for URLs. Currently only in use by the Pro Lightbox', 'nggallery'), 'slug_label' => __('Slug', 'nggallery'), 'no_entities' => __('No entities to display for this source', 'nggallery'), 'exclude_question' => __('Exclude?', 'nggallery'), 'select_gallery' => __('Select a Gallery', 'nggallery'), 'galleries' => __('Select one or more galleries (click in box to see available galleries).', 'nggallery'), 'albums' => __('Select one album (click in box to see available albums).', 'nggallery')))); + wp_localize_script('ngg_display_tab', 'igw_data', array('displayed_gallery_preview_url' => $settings->gallery_preview_url, 'displayed_gallery' => $this->object->_displayed_gallery->get_entity(), 'sources' => $sources->get_all(), 'gallery_primary_key' => $gallery_mapper->get_primary_key_column(), 'galleries' => $gallery_mapper->find_all(), 'albums' => $album_mapper->find_all(), 'tags' => $tags, 'display_types' => $display_types, 'nonce' => M_Security::create_nonce('nextgen_edit_displayed_gallery'), 'image_primary_key' => $image_mapper->get_primary_key_column(), 'display_type_priority_base' => NGG_DISPLAY_PRIORITY_BASE, 'display_type_priority_step' => NGG_DISPLAY_PRIORITY_STEP, 'shortcode_ref' => isset($_REQUEST['ref']) ? floatval($_REQUEST['ref']) : null, 'shortcode_defaults' => array('order_by' => $settings->galSort, 'order_direction' => $settings->galSortDir, 'returns' => 'included', 'maximum_entity_count' => $settings->maximum_entity_count), 'shortcode_attr_replacements' => array('source' => 'src', 'container_ids' => 'ids', 'display_type' => 'display'), 'i18n' => array('sources' => __('Are you inserting a Gallery (default), an Album, or images based on Tags?', 'nggallery'), 'optional' => __('(optional)', 'nggallery'), 'slug_tooltip' => __('Sets an SEO-friendly name to this gallery for URLs. Currently only in use by the Pro Lightbox', 'nggallery'), 'slug_label' => __('Slug', 'nggallery'), 'no_entities' => __('No entities to display for this source', 'nggallery'), 'exclude_question' => __('Exclude?', 'nggallery'), 'select_gallery' => __('Select a Gallery', 'nggallery'), 'galleries' => __('Select one or more galleries (click in box to see available galleries).', 'nggallery'), 'albums' => __('Select one album (click in box to see available albums).', 'nggallery')))); } function start_resource_monitoring() { @@ -603,18 +616,16 @@ class Mixin_Attach_To_Post extends Mixin function _get_main_tabs() { $retval = array(); - $security = $this->get_registry()->get_utility('I_Security_Manager'); - $sec_actor = $security->get_current_actor(); - if ($sec_actor->is_allowed('NextGEN Manage gallery')) { + if (M_Security::is_allowed('NextGEN Manage gallery')) { $retval['displayed_tab'] = array('content' => $this->object->_render_display_tab(), 'title' => __('Insert Into Page', 'nggallery')); } - if ($sec_actor->is_allowed('NextGEN Upload images')) { + if (M_Security::is_allowed('NextGEN Upload images')) { $retval['create_tab'] = array('content' => $this->object->_render_create_tab(), 'title' => __('Upload Images', 'nggallery')); } - if ($sec_actor->is_allowed('NextGEN Manage others gallery') && $sec_actor->is_allowed('NextGEN Manage gallery')) { + if (M_Security::is_allowed('NextGEN Manage others gallery') && M_Security::is_allowed('NextGEN Manage gallery')) { $retval['galleries_tab'] = array('content' => $this->object->_render_galleries_tab(), 'title' => __('Manage Galleries', 'nggallery')); } - if ($sec_actor->is_allowed('NextGEN Edit album')) { + if (M_Security::is_allowed('NextGEN Edit album')) { $retval['albums_tab'] = array('content' => $this->object->_render_albums_tab(), 'title' => __('Manage Albums', 'nggallery')); } // if ($sec_actor->is_allowed('NextGEN Manage tags')) { diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.css index a1429dc90..fe4ec994c 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.css @@ -74,8 +74,11 @@ body { #attach_to_post_tabs h3 { text-transform: uppercase; - color: #666; + color: black; margin-top: 0; + letter-spacing: 2px; + font-size: 18px; + font-weight: 900; } h3#choose_display { @@ -155,8 +158,6 @@ table { /* 2. IGW Sidebar */ #attach_to_post_tabs .ui-tabs-icon { - background: #133148; - border-right: 1px solid #9cbe1b;; box-sizing: border-box; color: #fff; font-family: Lato, sans-serif; @@ -175,8 +176,8 @@ table { } #attach_to_post_tabs img.attach_to_post_logo { - height: 45px; - padding: 20px 0 10px; + height: 80px; + padding: 50px 0 30px; float: right; margin-right: 26px; } @@ -185,7 +186,7 @@ table { border: none; background: transparent; padding: 0; - margin-top: 90px; + margin-top: 110px; list-style: none; } @@ -199,15 +200,9 @@ table { width: 100%; border-radius: 0; box-sizing: border-box; - border-bottom: 1px solid #344a59; padding: 24px 30px 24px 20px; } -#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active { - background: #2b4d65; - background: #9dbd1b; -} - #attach_to_post_tabs .ui-tabs-nav li.ui-state-focus, #attach_to_post_tabs .ui-tabs-nav li.ui-state-active, #attach_to_post_tabs .ui-tabs-nav li:focus, @@ -219,7 +214,7 @@ table { /* TODO: consolidate when plupload is upgraded */ #attach_to_post_tabs ul.ui-tabs-nav li:nth-of-type(1) { list-style: none; - border-top: 1px solid #344a59; + /*border-top: 1px solid #344a59;*/ } #attach_to_post_tabs:not(.ngg_atp_ios_detected) ul.ui-tabs-nav li:nth-of-type(2) { list-style: none; @@ -232,44 +227,20 @@ table { display: list-item; } -/* Because the upload-images tab is removed on iOS we must position this divider bar differently */ -/*#attach_to_post_tabs.ngg_atp_ios_detected .ui-tabs-nav li:nth-of-type(1)::after { - border-bottom: 1px solid rgba(255,255,255,.2); - content: ""; - display: block; - float: right; - margin: 24px 4px 20px 0; - position: static; - width: 90%; -}*/ - -/* This rule applies for all non-iOS browsers */ -/*#attach_to_post_tabs:not(.ngg_atp_ios_detected) .ui-tabs-nav li:nth-of-type(2)::after { - border-bottom: 1px solid rgba(255,255,255,.2); - content: ""; - display: block; - float: right; - margin: 24px 4px 20px 0; - position: static; - width: 90%; -}*/ - #attach_to_post_tabs .ui-tabs-nav li a { - color: #fff; + color: #555; float: right; - font-size: 16px; - letter-spacing: 0; - line-height: 1; - padding: 10px 5px 5px 0 !important; - text-transform: none; + font-size: 13px; + font-weight: 400; font-family: lato, sans-serif; + letter-spacing: 1.5px; + line-height: 1; text-transform: uppercase; - font-size: 13px; - letter-spacing: 1px; - font-weight: 700; - padding: 0 !important; - font-size: 12px; - letter-spacing: 1.2px; + padding: 0 !important; +} + +#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active { + border-left: 6px solid #9dbd1b; } #attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active a, @@ -278,19 +249,9 @@ table { cursor: pointer; } -#attach_to_post_tabs .ui-tabs-nav li a.active_tab::before { - border-right: solid .75em #fff; - border-top: solid 1.2em transparent; - border-bottom: solid 1.2em transparent; - content: ''; - position: absolute; - top: 16px; - right: -3px; -} - #attach_to_post_tabs .ui-tabs-nav li a.active_tab { - color: #fff; font-weight: 800; + color: black; } /* 3. Display Tab: General CSS */ @@ -312,62 +273,46 @@ table { #displayed_tab #ngg_page_content .ngg_page_content_menu { background: transparent; border: none; - padding: 10px 20px 10px 0; + padding: 0 20px 10px 27px; float: none; height: 25px; margin-top: 0; width: auto; - border-bottom: 1px solid #ddd; - background: #fafafa; + position: relative; + top: 100px; } #displayed_tab #ngg_page_content .ngg_page_content_menu a, #displayed_tab #ngg_page_content .ngg_page_content_menu a:active { border: none; - color: #888; + color: black; display: inline; font-size: 14px; - font-weight: 400; + font-weight: 300; text-decoration: none; line-height: 25px; - padding: 15px 20px; + padding: 4px; font-size: 12px; background: transparent; - /*border: none !important;*/ + margin-right: 10px; } #displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active { - background: transparent; - font-weight: bold; - color: #123248; - border-left: 1px solid #ddd; - border-right: 1px solid #ddd; - border-bottom: 2px solid #fff; - background: #fff; + font-weight: 500; + color: black; + border-bottom: 3px solid #9ebc1b; } #displayed_tab #ngg_page_content .ngg_page_content_menu a:active:after { display:none; } -/*#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after { - border-left: 8px solid transparent; - border-right: 8px solid transparent; - border-top: 6px solid #cad1d6; - border-top: 6px solid #123248; - content: " "; - position: absolute; - left: 45%; - display: inline; - top: 42px; -}*/ - #displayed_tab #ngg_page_content .ngg_page_content_menu a:before { display: none; } #displayed_tab #ngg_page_content .ngg_page_content_main { - padding: 30px; + padding: 20px 30px 30px; width: 100%; box-shadow: none; } @@ -382,7 +327,7 @@ table { position: relative; top: -187px; left: 608px; - background: #123248; + background: black; color: #fff; border-bottom: 5px solid #9ebc1b; font-family: Lato,sans-serif; @@ -408,19 +353,19 @@ table { #attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main > div.ngg_igw_video { display: block !important; - position: absolute; - left: 175px; - top: 69px; + position: absolute; + left: 280px; + top: 71px; } #displayed_tab .ngg_igw_video_open { - background: #9ebc1b; - color: #fff; - cursor: pointer; - font-family: Lato, sans-serif; - font-size: 13px; + background: black; + cursor: pointer; margin: 0; - padding: 8px 10px; + font-weight: 400; + height: 28px !important; + line-height: 28px !important; + font-size: 10px; } #displayed_tab .ngg_igw_video_inner { @@ -430,29 +375,35 @@ table { } #displayed_tab .ngg_igw_video_close { - color: #9ebc1b; width: 100%; height: 50px; display: block; - background: #123248; text-align: center; line-height: 50px; - font-size: 15px; - font-weight: bold; + font-size: 13px; + font-weight: 600; cursor: pointer; font-family: Lato, sans-serif; letter-spacing: .5px; - background: #9ebc1b; + background: black; color: #fff; + text-transform: uppercase; + letter-spacing: 1.5px; } #displayed_tab .ngg_igw_video iframe { - width: 525px; - height: 295px !important; + width: 630px; + height: 350px !important; min-height: auto; margin-bottom: -3px; } +#choose_display_content, +#display_settings_tab_content, +#preview_tab_content { + margin-top: 80px; +} + /* 3a. Display Tab: "Choose Display" Subtab **/ #displayed_tab #displayed_gallery_source { @@ -495,6 +446,12 @@ table { line-height: 20px; } +#displayed_tab #ngg_page_content .ngg_page_content_main .select2-selection--multiple, +#displayed_tab #ngg_page_content .ngg_page_content_main .select2-selection--single { + height: auto; + line-height: 21px; +} + .select2-container--default .select2-results__option--highlighted[aria-selected] { background-color: #9fbb1a; } diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.min.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.min.css index bb63f7250..79e4fab0d 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.min.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post.min.css @@ -1 +1 @@ -body,html,iframe{width:100%;padding:0}.ui-helper-reset,body,html,table{font-size:13px}body,html{height:100%;margin:0;overflow:hidden}body{position:absolute;visibility:hidden;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;height:100%}.entity_errors{color:red}.entity_errors ul{margin-left:30px}.entity_errors ul li{list-style-type:disc}#attach_to_post_tabs{border:0;background:0 0;height:100%;overflow:hidden;padding:0;position:relative;visibility:visible}#attach_to_post_tabs #attach_to_post_tabs.ui-tabs-hide{display:block!important;visibility:hidden;position:absolute;top:-5000px}#attach_to_post_tabs h3{text-transform:uppercase;color:#666;margin-top:0}h3#choose_display{margin-bottom:24px}#attach_to_post_tabs .main_menu_tab{padding:0;position:absolute;left:220px;right:0;top:0;bottom:0}#attach_to_post_tabs.ngg_atp_ios_detected{overflow-y:scroll;-webkit-overflow-scrolling:touch}#attach_to_post_tabs .ui-widget-header{border:0;border-bottom:1px solid #dfdfdf;background:0 0}iframe{min-height:100%;border:none;margin:0;background:0 0}.chrome_70_hack_frames{z-index:100000000!important}.chrome_70_hack_noframes{z-index:0!important}.clear{clear:both;float:none}.select2-search input{width:100%!important}.select2-result-label{white-space:nowrap}.select2-results{font-family:'segoe ui',Arial,sans-serif;font-size:13px}.select2-container a{color:#444!important}#ngg_page_content .ngg_page_content_main .select2-container{width:100%!important;max-width:500px!important}#attach_to_post_tabs .ui-tabs-icon{background:#133148;border-right:1px solid #9cbe1b;box-sizing:border-box;color:#fff;font-family:Lato,sans-serif;float:none;font-size:20px;font-weight:700;height:100%;letter-spacing:1px;line-height:60px;margin-bottom:0;position:fixed;text-transform:uppercase;width:220px;padding:0}#attach_to_post_tabs img.attach_to_post_logo{height:45px;padding:20px 0 10px;float:right;margin-right:26px}#attach_to_post_tabs .ui-tabs-nav{border:none;background:0 0;padding:0;margin-top:90px;list-style:none}#attach_to_post_tabs .ui-tabs-nav li{background:0 0;border:none;display:block;height:auto;margin:0;width:100%;border-radius:0;box-sizing:border-box;border-bottom:1px solid #344a59;padding:24px 30px 24px 20px}#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active{background:#9dbd1b}#attach_to_post_tabs .ui-tabs-nav li.active,#attach_to_post_tabs .ui-tabs-nav li.ui-state-active,#attach_to_post_tabs .ui-tabs-nav li.ui-state-focus,#attach_to_post_tabs .ui-tabs-nav li:focus{outline:0}#attach_to_post_tabs ul.ui-tabs-nav li:nth-of-type(1){list-style:none;border-top:1px solid #344a59}#attach_to_post_tabs:not(.ngg_atp_ios_detected) ul.ui-tabs-nav li:nth-of-type(2){list-style:none}#attach_to_post_tabs ul.ui-tabs-nav li:nth-of-type(2) a,#attach_to_post_tabs:not(.ngg_atp_ios_detected) ul.ui-tabs-nav li:nth-of-type(1) a{display:list-item}#attach_to_post_tabs .ui-tabs-nav li a{color:#fff;float:right;line-height:1;font-family:lato,sans-serif;text-transform:uppercase;font-weight:700;padding:0!important;font-size:12px;letter-spacing:1.2px}#attach_to_post_tabs .ui-tabs-nav li.ui-state-disabled a,#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active a,#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:pointer}#attach_to_post_tabs .ui-tabs-nav li a.active_tab::before{border-right:solid .75em #fff;border-top:solid 1.2em transparent;border-bottom:solid 1.2em transparent;content:'';position:absolute;top:16px;right:-3px}#attach_to_post_tabs .ui-tabs-nav li a.active_tab{color:#fff;font-weight:800}#displayed_tab.main_menu_tab{overflow-y:scroll;overflow-x:hidden}#displayed_tab #ngg_page_content{margin:0;width:100%}#displayed_tab #attach_to_post_tabs .ngg_page_content_header{display:none}#displayed_tab #ngg_page_content .ngg_page_content_menu{border:none;padding:10px 20px 10px 0;float:none;height:25px;margin-top:0;width:auto;border-bottom:1px solid #ddd;background:#fafafa}#displayed_tab #ngg_page_content .ngg_page_content_menu a,#displayed_tab #ngg_page_content .ngg_page_content_menu a:active{border:none;color:#888;display:inline;font-weight:400;text-decoration:none;line-height:25px;padding:15px 20px;font-size:12px;background:0 0}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active{font-weight:700;color:#123248;border-left:1px solid #ddd;border-right:1px solid #ddd;border-bottom:2px solid #fff;background:#fff}#displayed_tab #ngg_page_content .ngg_page_content_menu a:active:after,#displayed_tab #ngg_page_content .ngg_page_content_menu a:before{display:none}#displayed_tab #ngg_page_content .ngg_page_content_main{padding:30px;width:100%;box-shadow:none}#displayed_tab #ngg_page_content.ngg_settings_page{border:none}#displayed_tab .ngg_igw_promo{display:block!important;padding:10px 20px;position:relative;top:-187px;left:608px;background:#123248;color:#fff;border-bottom:5px solid #9ebc1b;font-family:Lato,sans-serif;letter-spacing:.5px;box-sizing:border-box;width:200px;height:172px;margin-bottom:-170px}#displayed_tab .ngg_igw_promo a{text-decoration:none;font-weight:600}#displayed_tab .ngg_igw_coupon{font-size:12px;margin-top:47px;color:#7298b1}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main>div.ngg_igw_video{display:block!important;position:absolute;left:175px;top:69px}#displayed_tab .ngg_igw_video_open{background:#9ebc1b;color:#fff;cursor:pointer;font-family:Lato,sans-serif;font-size:13px;margin:0;padding:8px 10px}#displayed_tab .ngg_igw_video_inner{display:none;box-shadow:0 0 10px 5px rgba(0,0,0,.2);background:#fff}#displayed_tab .ngg_igw_video_close{width:100%;height:50px;display:block;text-align:center;line-height:50px;font-size:15px;font-weight:700;cursor:pointer;font-family:Lato,sans-serif;letter-spacing:.5px;background:#9ebc1b;color:#fff}#displayed_tab .ngg_igw_video iframe{width:525px;height:295px!important;min-height:auto;margin-bottom:-3px}#displayed_tab #displayed_gallery_source{width:400px}#displayed_tab #display_tip{color:rgba(42,52,61,.6);display:block;font-size:14px;width:960px;max-width:100%;padding:10px 0 0}#displayed_tab #slug_configuration{display:none}#displayed_tab #slug_configuration td,#displayed_tab #source_configuration td{vertical-align:top;padding:4px 0!important;min-width:200px}#displayed_tab #source_configuration label{color:#777!important;font-size:13px!important}#attach_to_post_tabs #displayed_tab #ngg_page_content #source_configuration tr td:first-of-type{white-space:normal;line-height:1.2;width:265px}#displayed_tab #ngg_page_content .select2-container{width:250px!important;line-height:20px}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#9fbb1a}#displayed_tab #slug_configuration #slug_label{width:52px}#displayed_tab #slug_configuration #slug_column input[type=text]{width:498px}#displayed_tab #display_type_selector{margin-top:14px}#displayed_tab .display_type_preview{float:left;margin:0 5px 5px 0;border:1px solid #ddd;background:#fff;width:145px;height:170px}#displayed_tab .display_type_preview .image_container{width:100%;vertical-align:middle;text-align:center;font-size:12px;font-weight:500;padding:8px;box-sizing:border-box}#displayed_tab .display_type_preview .image_container img{margin-top:10px;margin-bottom:10px;box-sizing:border-box;max-width:100px}#displayed_tab .display_type_preview .image_container p{display:inline-block}.display_type_preview label>div{font-size:12px}#displayed_tab .select2-chosen{color:#666!important}#ngg_page_content #save_displayed_gallery.button{font-weight:700;height:50px!important;line-height:50px!important;padding:0 30px!important;font-size:13px}#save_displayed_gallery:disabled{background:gray!important}#display_settings_tab #display_settings_form table tr td:first-child{vertical-align:top;text-align:right;padding-right:7px;width:180px}#display_settings_tab #display_settings_form table td{text-align:left}#display_settings_tab #display_settings_form table textarea{height:60px}#display_settings_tab #display_settings_form input[type=number],#display_settings_tab #display_settings_form input[type=text],#display_settings_tab #display_settings_form select,#display_settings_tab #display_settings_form textarea{width:157px}#display_settings_tab #display_settings_form .ngg_slideshow_gallery_height,#display_settings_tab #display_settings_form .ngg_slideshow_gallery_width,#display_settings_tab #display_settings_form .ngg_thumbnail_dimension_height,#display_settings_tab #display_settings_form .ngg_thumbnail_dimension_width{width:65px!important}#display_settings_tab #display_settings_form .nextgen_settings_colorpicker{width:85px!important;text-align:center}h3#preview_tab{margin-bottom:0}#preview_tab_content{padding:10px 0}#preview_tab_content a{text-decoration:none;font-weight:300}#preview_tab_content .previewed_entity{width:100%;border-bottom:solid 1px #E0E0D6;background-color:#FAFAF0}#preview_tab_content .previewed_entity .container{padding-top:15px}#preview_tab_content .previewed_entity.header{background-color:#F0F0E6;padding-bottom:5px;padding-top:5px}#preview_tab_content .header label{font-size:12px;color:#649664;font-weight:600}#preview_tab_content .ui-sortable-helper{background:0 0}#preview_tab_content ul{list-style-type:none;display:block;padding:0;position:relative;margin-top:20px}#preview_tab_content .inclusion_checkbox{margin-right:7px;display:block;float:left}#preview_tab_content .preview_item{background-color:#fff;width:100px;padding:10px 10px 30px;margin:0 5px 5px 0;border:1px solid #eee;display:block;vertical-align:middle;text-align:center;position:relative}#preview_tab_content .image_container{background-repeat:no-repeat;background-position:center;background-size:cover;display:block;width:100%;height:75px}#preview_tab_content .image_container img{border:0}#preview_tab_content #entity_list li{float:left}#preview_tab_content #entity_list .ui-state-default{background:0 0;border:none}#preview_tab_content .placeholder{background-color:#e0ddc1;position:relative}#preview_tab_content #entity_list .exclude_container{background:#fff;display:block;text-align:center;margin:0 auto;color:#000;font-weight:400;height:1.4em;line-height:1.1em;font-size:.8em;position:absolute;bottom:.2em;left:0;width:100%;padding:5px 0}#preview_tab_content #entity_list .exclude_container input{vertical-align:middle;line-height:1.2em;margin:0 .5em}#preview_tab_content .header_row{margin-bottom:5px;font-weight:300}#preview_tab_content .header_row strong{width:70px;display:inline-block}#preview_tab_content .header_row .separator{display:inline-block;margin:0 5px}#preview_tab_content .header_row .selected{font-weight:700}#preview_tab_content #entity_list li.clear{float:none;clear:both}#preview_tab_content .refresh_button{float:right}@media (max-width:1120px){#displayed_tab .ngg_igw_promo{position:static;width:602px;height:125px;max-width:100%;margin-bottom:10px}#displayed_tab .ngg_igw_coupon{margin-top:10px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main>div.ngg_igw_video,#displayed_tab .ngg_igw_video_inner{display:none!important}}@media (max-width:800px){#attach_to_post_tabs .ui-tabs-nav li a.active_tab::before,#attach_to_post_tabs img.attach_to_post_logo,#attach_to_post_tabs:not(.ngg_atp_ios_detected) .ui-tabs-nav li:nth-of-type(2)::after{display:none}#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active,#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active,#displayed_tab #ngg_page_content .ngg_page_content_menu a:active{background:0 0}#attach_to_post_tabs .ui-tabs-icon{width:100%;position:static;border-right:none;border-bottom:3px solid #9fbb1a;text-align:center;height:150px;padding:20px}#attach_to_post_tabs .ui-tabs-nav{margin-top:0}#attach_to_post_tabs .ui-tabs-nav li{padding:5px;list-style:none!important;border-bottom:none;border-top:none!important}#attach_to_post_tabs .ui-tabs-nav li a{float:none;padding:0!important;font-weight:400}#attach_to_post_tabs .ui-tabs-nav li a.active_tab{color:#9ebc1b}#attach_to_post_tabs .main_menu_tab{margin-left:0;min-height:auto;position:absolute;top:150px;right:0;left:0;bottom:0;height:auto}#displayed_tab #ngg_page_content .ngg_page_content_menu{padding:5px 0 0;background:0 0;border:none}#displayed_tab #ngg_page_content .ngg_page_content_menu a{display:block;width:100%;float:left;padding:0;text-align:center;box-sizing:border-box}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after{display:none}#displayed_tab #ngg_page_content .ngg_page_content_menu a:last-of-type{padding-bottom:5px}#displayed_tab #slug_configuration tr,#displayed_tab #source_configuration tr{margin-bottom:24px}#ngg_page_content #save_displayed_gallery.button{position:static;margin-left:0;padding:0}}@media (max-width:781px){#attach_to_post_tabs.ngg_atp_ios_detected .ui-tabs-nav li:nth-of-type(1)::after{display:none}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr td{width:100%!important}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main #source_configuration{display:table!important}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main #source_configuration tbody{display:table-row-group!important}#displayed_tab #ngg_page_content .responsive-menu-icon{padding:10px 0 15px!important}}@media (max-width:400px){#displayed_tab .display_type_preview{float:none;margin:20px auto;width:170px}} \ No newline at end of file +.ui-helper-reset,body,html{font-size:13px}body,html,iframe{width:100%;padding:0}body,html{height:100%;margin:0;overflow:hidden}body{position:absolute;visibility:hidden;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;height:100%}.entity_errors{color:red}.entity_errors ul{margin-left:30px}.entity_errors ul li{list-style-type:disc}#attach_to_post_tabs{border:0;background:0 0;height:100%;overflow:hidden;padding:0;position:relative;visibility:visible}#attach_to_post_tabs #attach_to_post_tabs.ui-tabs-hide{display:block!important;visibility:hidden;position:absolute;top:-5000px}#attach_to_post_tabs h3{text-transform:uppercase;color:#000;margin-top:0;letter-spacing:2px;font-size:18px;font-weight:900}h3#choose_display{margin-bottom:24px}#attach_to_post_tabs .main_menu_tab{padding:0;position:absolute;left:220px;right:0;top:0;bottom:0}#attach_to_post_tabs.ngg_atp_ios_detected{overflow-y:scroll;-webkit-overflow-scrolling:touch}#attach_to_post_tabs .ui-widget-header{border:0;border-bottom:1px solid #dfdfdf;background:0 0}iframe{min-height:100%;border:none;margin:0;background:0 0}.chrome_70_hack_frames{z-index:100000000!important}.chrome_70_hack_noframes{z-index:0!important}.clear{clear:both;float:none}table{font-size:13px}.select2-search input{width:100%!important}.select2-result-label{white-space:nowrap}.select2-results{font-family:'segoe ui',Arial,sans-serif;font-size:13px}.select2-container a{color:#444!important}#ngg_page_content .ngg_page_content_main .select2-container{width:100%!important;max-width:500px!important}#attach_to_post_tabs .ui-tabs-icon{box-sizing:border-box;color:#fff;font-family:Lato,sans-serif;float:none;font-size:20px;font-weight:700;height:100%;letter-spacing:1px;line-height:60px;margin-bottom:0;position:fixed;text-transform:uppercase;width:220px;padding:0}#attach_to_post_tabs img.attach_to_post_logo{height:80px;padding:50px 0 30px;float:right;margin-right:26px}#attach_to_post_tabs .ui-tabs-nav{border:none;background:0 0;padding:0;margin-top:110px;list-style:none}#attach_to_post_tabs .ui-tabs-nav li{background:0 0;border:none;display:block;height:auto;margin:0;width:100%;border-radius:0;box-sizing:border-box;padding:24px 30px 24px 20px}#attach_to_post_tabs .ui-tabs-nav li.active,#attach_to_post_tabs .ui-tabs-nav li.ui-state-active,#attach_to_post_tabs .ui-tabs-nav li.ui-state-focus,#attach_to_post_tabs .ui-tabs-nav li:focus{outline:0}#attach_to_post_tabs ul.ui-tabs-nav li:nth-of-type(1),#attach_to_post_tabs:not(.ngg_atp_ios_detected) ul.ui-tabs-nav li:nth-of-type(2){list-style:none}#attach_to_post_tabs ul.ui-tabs-nav li:nth-of-type(2) a,#attach_to_post_tabs:not(.ngg_atp_ios_detected) ul.ui-tabs-nav li:nth-of-type(1) a{display:list-item}#attach_to_post_tabs .ui-tabs-nav li a{color:#555;float:right;font-size:13px;font-weight:400;font-family:lato,sans-serif;letter-spacing:1.5px;line-height:1;text-transform:uppercase;padding:0!important}#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active{border-left:6px solid #9dbd1b}#attach_to_post_tabs .ui-tabs-nav li.ui-state-disabled a,#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active a,#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-loading a{cursor:pointer}#attach_to_post_tabs .ui-tabs-nav li a.active_tab{font-weight:800;color:#000}#displayed_tab.main_menu_tab{overflow-y:scroll;overflow-x:hidden}#displayed_tab #ngg_page_content{margin:0;width:100%}#displayed_tab #attach_to_post_tabs .ngg_page_content_header{display:none}#displayed_tab #ngg_page_content .ngg_page_content_menu{background:0 0;border:none;padding:0 20px 10px 27px;float:none;height:25px;margin-top:0;width:auto;position:relative;top:100px}#displayed_tab #ngg_page_content .ngg_page_content_menu a,#displayed_tab #ngg_page_content .ngg_page_content_menu a:active{border:none;color:#000;display:inline;font-weight:300;text-decoration:none;line-height:25px;padding:4px;font-size:12px;background:0 0;margin-right:10px}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active{font-weight:500;color:#000;border-bottom:3px solid #9ebc1b}#displayed_tab #ngg_page_content .ngg_page_content_menu a:active:after,#displayed_tab #ngg_page_content .ngg_page_content_menu a:before{display:none}#displayed_tab #ngg_page_content .ngg_page_content_main{padding:20px 30px 30px;width:100%;box-shadow:none}#displayed_tab #ngg_page_content.ngg_settings_page{border:none}#displayed_tab .ngg_igw_promo{display:block!important;padding:10px 20px;position:relative;top:-187px;left:608px;background:#000;color:#fff;border-bottom:5px solid #9ebc1b;font-family:Lato,sans-serif;letter-spacing:.5px;box-sizing:border-box;width:200px;height:172px;margin-bottom:-170px}#displayed_tab .ngg_igw_promo a{text-decoration:none;font-weight:600}#displayed_tab .ngg_igw_coupon{font-size:12px;margin-top:47px;color:#7298b1}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main>div.ngg_igw_video{display:block!important;position:absolute;left:280px;top:71px}#displayed_tab .ngg_igw_video_open{background:#000;cursor:pointer;margin:0;font-weight:400;height:28px!important;line-height:28px!important;font-size:10px}#displayed_tab .ngg_igw_video_inner{display:none;box-shadow:0 0 10px 5px rgba(0,0,0,.2);background:#fff}#displayed_tab .ngg_igw_video_close{width:100%;height:50px;display:block;text-align:center;line-height:50px;font-size:13px;font-weight:600;cursor:pointer;font-family:Lato,sans-serif;background:#000;color:#fff;text-transform:uppercase;letter-spacing:1.5px}#displayed_tab .ngg_igw_video iframe{width:630px;height:350px!important;min-height:auto;margin-bottom:-3px}#choose_display_content,#display_settings_tab_content,#preview_tab_content{margin-top:80px}#displayed_tab #displayed_gallery_source{width:400px}#displayed_tab #display_tip{color:rgba(42,52,61,.6);display:block;font-size:14px;width:960px;max-width:100%;padding:10px 0 0}#displayed_tab #slug_configuration{display:none}#displayed_tab #slug_configuration td,#displayed_tab #source_configuration td{vertical-align:top;padding:4px 0!important;min-width:200px}#displayed_tab #source_configuration label{color:#777!important;font-size:13px!important}#attach_to_post_tabs #displayed_tab #ngg_page_content #source_configuration tr td:first-of-type{white-space:normal;line-height:1.2;width:265px}#displayed_tab #ngg_page_content .select2-container{width:250px!important;line-height:20px}#displayed_tab #ngg_page_content .ngg_page_content_main .select2-selection--multiple,#displayed_tab #ngg_page_content .ngg_page_content_main .select2-selection--single{height:auto;line-height:21px}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#9fbb1a}#displayed_tab #slug_configuration #slug_label{width:52px}#displayed_tab #slug_configuration #slug_column input[type=text]{width:498px}#displayed_tab #display_type_selector{margin-top:14px}#displayed_tab .display_type_preview{float:left;margin:0 5px 5px 0;border:1px solid #ddd;background:#fff;width:145px;height:170px}#displayed_tab .display_type_preview .image_container{width:100%;vertical-align:middle;text-align:center;font-size:12px;font-weight:500;padding:8px;box-sizing:border-box}#displayed_tab .display_type_preview .image_container img{margin-top:10px;margin-bottom:10px;box-sizing:border-box;max-width:100px}#displayed_tab .display_type_preview .image_container p{display:inline-block}.display_type_preview label>div{font-size:12px}#displayed_tab .select2-chosen{color:#666!important}#ngg_page_content #save_displayed_gallery.button{font-weight:700;height:50px!important;line-height:50px!important;padding:0 30px!important;font-size:13px}#save_displayed_gallery:disabled{background:gray!important}#display_settings_tab #display_settings_form table tr td:first-child{vertical-align:top;text-align:right;padding-right:7px;width:180px}#display_settings_tab #display_settings_form table td{text-align:left}#display_settings_tab #display_settings_form table textarea{height:60px}#display_settings_tab #display_settings_form input[type=number],#display_settings_tab #display_settings_form input[type=text],#display_settings_tab #display_settings_form select,#display_settings_tab #display_settings_form textarea{width:157px}#display_settings_tab #display_settings_form .ngg_slideshow_gallery_height,#display_settings_tab #display_settings_form .ngg_slideshow_gallery_width,#display_settings_tab #display_settings_form .ngg_thumbnail_dimension_height,#display_settings_tab #display_settings_form .ngg_thumbnail_dimension_width{width:65px!important}#display_settings_tab #display_settings_form .nextgen_settings_colorpicker{width:85px!important;text-align:center}h3#preview_tab{margin-bottom:0}#preview_tab_content{padding:10px 0}#preview_tab_content a{text-decoration:none;font-weight:300}#preview_tab_content .previewed_entity{width:100%;border-bottom:solid 1px #E0E0D6;background-color:#FAFAF0}#preview_tab_content .previewed_entity .container{padding-top:15px}#preview_tab_content .previewed_entity.header{background-color:#F0F0E6;padding-bottom:5px;padding-top:5px}#preview_tab_content .header label{font-size:12px;color:#649664;font-weight:600}#preview_tab_content .ui-sortable-helper{background:0 0}#preview_tab_content ul{list-style-type:none;display:block;padding:0;position:relative;margin-top:20px}#preview_tab_content .inclusion_checkbox{margin-right:7px;display:block;float:left}#preview_tab_content .preview_item{background-color:#fff;width:100px;padding:10px 10px 30px;margin:0 5px 5px 0;border:1px solid #eee;display:block;vertical-align:middle;text-align:center;position:relative}#preview_tab_content .image_container{background-repeat:no-repeat;background-position:center;background-size:cover;display:block;width:100%;height:75px}#preview_tab_content .image_container img{border:0}#preview_tab_content #entity_list li{float:left}#preview_tab_content #entity_list .ui-state-default{background:0 0;border:none}#preview_tab_content .placeholder{background-color:#e0ddc1;position:relative}#preview_tab_content #entity_list .exclude_container{background:#fff;display:block;text-align:center;margin:0 auto;color:#000;font-weight:400;height:1.4em;line-height:1.1em;font-size:.8em;position:absolute;bottom:.2em;left:0;width:100%;padding:5px 0}#preview_tab_content #entity_list .exclude_container input{vertical-align:middle;line-height:1.2em;margin:0 .5em}#preview_tab_content .header_row{margin-bottom:5px;font-weight:300}#preview_tab_content .header_row strong{width:70px;display:inline-block}#preview_tab_content .header_row .separator{display:inline-block;margin:0 5px}#preview_tab_content .header_row .selected{font-weight:700}#preview_tab_content #entity_list li.clear{float:none;clear:both}#preview_tab_content .refresh_button{float:right}@media (max-width:1120px){#displayed_tab .ngg_igw_promo{position:static;width:602px;height:125px;max-width:100%;margin-bottom:10px}#displayed_tab .ngg_igw_coupon{margin-top:10px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main>div.ngg_igw_video,#displayed_tab .ngg_igw_video_inner{display:none!important}}@media (max-width:800px){#attach_to_post_tabs .ui-tabs-nav li a.active_tab::before,#attach_to_post_tabs img.attach_to_post_logo,#attach_to_post_tabs:not(.ngg_atp_ios_detected) .ui-tabs-nav li:nth-of-type(2)::after{display:none}#attach_to_post_tabs .ui-tabs-nav li.ui-tabs-active,#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active,#displayed_tab #ngg_page_content .ngg_page_content_menu a:active{background:0 0}#attach_to_post_tabs .ui-tabs-icon{width:100%;position:static;border-right:none;border-bottom:3px solid #9fbb1a;text-align:center;height:150px;padding:20px}#attach_to_post_tabs .ui-tabs-nav{margin-top:0}#attach_to_post_tabs .ui-tabs-nav li{padding:5px;list-style:none!important;border-bottom:none;border-top:none!important}#attach_to_post_tabs .ui-tabs-nav li a{float:none;padding:0!important;font-weight:400}#attach_to_post_tabs .ui-tabs-nav li a.active_tab{color:#9ebc1b}#attach_to_post_tabs .main_menu_tab{margin-left:0;min-height:auto;position:absolute;top:150px;right:0;left:0;bottom:0;height:auto}#displayed_tab #ngg_page_content .ngg_page_content_menu{padding:5px 0 0;background:0 0;border:none}#displayed_tab #ngg_page_content .ngg_page_content_menu a{display:block;width:100%;float:left;padding:0;text-align:center;box-sizing:border-box}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after{display:none}#displayed_tab #ngg_page_content .ngg_page_content_menu a:last-of-type{padding-bottom:5px}#displayed_tab #slug_configuration tr,#displayed_tab #source_configuration tr{margin-bottom:24px}#ngg_page_content #save_displayed_gallery.button{position:static;margin-left:0;padding:0}}@media (max-width:781px){#attach_to_post_tabs.ngg_atp_ios_detected .ui-tabs-nav li:nth-of-type(1)::after{display:none}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr td{width:100%!important}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main #source_configuration{display:table!important}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main #source_configuration tbody{display:table-row-group!important}#displayed_tab #ngg_page_content .responsive-menu-icon{padding:10px 0 15px!important}}@media (max-width:400px){#displayed_tab .display_type_preview{float:none;margin:20px auto;width:170px}} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post_dialog.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post_dialog.css index 9302e5625..f5bb2775e 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post_dialog.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post_dialog.css @@ -148,56 +148,57 @@ * placeholder is properly styled for Gutenberg. */ div[aria-label="Block: Classic"] .nggPlaceholder { - padding: 30px 30px 65px 30px; - text-align: center; - background-color: #143650; + background-color: #ffffff; + border-radius: 0; + box-shadow: 0 0 4px 2px rgba(0,0,0,.05); box-sizing: border-box; - border-radius: 2px; + border-top: 5px solid #b8d330; + color: #fff; font-family: sans-serif; font-size: 20px; - color: #fff; - color: #9fbb1a; - border-top: 5px solid #b8d330; + margin: 20px auto !important; outline: none !important; - box-shadow: 0 0 4px 1px rgba(0,0,0,.05); - margin-top: 0; - position: relative; - z-index: 2; + text-align: center; + width: 99%; + min-height: 210px; + padding: 60px 60px 70px; } div[aria-label="Block: Classic"] .nggPlaceholder h3 { - color: #fff !important; - font-family: Lato, sans-serif; - font-size: 16px; - font-size: 1.6rem; - font-weight: 600; - margin: 24px 0 0 0; + color: black !important; + text-transform: uppercase; + font-size: 21px; + font-family: Lato, sans-serif !important; + font-weight: 700 !important; + letter-spacing: 3px !important; + margin-bottom: 0; + margin-top: 0; } div[aria-label="Block: Classic"] .nggPlaceholderButton { - background: #9ebd00 !important; + background: black !important; border-radius: 2px; border: none !important; box-shadow: none !important; color: #fff !important; display: inline-block !important; - font-size: 13px; + font-size: 12px; font-weight: bold; - font-family: Lato, sans-serif !important !important; + font-family: Lato, sans-serif !important; height: 36px !important; line-height: 36px !important; letter-spacing: 1.2px; - margin: 2px; + margin: 0px 4px 2px 0; padding: 0; - width: 110px; - text-align: center; - text-transform: uppercase !important; + width: 121px; + text-align: center; + text-transform: uppercase !important; text-shadow: none !important; cursor: pointer; } div[aria-label="Block: Classic"] .nggPlaceholderButton:hover { - background: #a5c31a !important; + background: #383838 !important; } @media (max-width: 781px) { diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post_dialog.min.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post_dialog.min.css index db85319cc..aaf3bf6f5 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post_dialog.min.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/attach_to_post_dialog.min.css @@ -1 +1 @@ -#TB_window.ngg_tb_window{box-shadow:0 0 20px 10px rgba(0,0,0,.5)}.ngg_tb_window #TB_iframeContent{height:100.1%!important}.ngg_tb_window #TB_title{height:0!important;border:none!important}.ngg_tb_window #TB_closeWindowButton{background:0 0;top:10px;right:20px}.ngg_tb_window #TB_closeWindowButton:focus .tb-close-icon,.ngg_tb_window .tb-close-icon{color:#fff;border:none;box-shadow:none;background:#9fbb1a;border-radius:50%;padding:1px;height:20px;width:20px;font-size:12px}.ngg_tb_window #TB_closeWindowButton:focus .tb-close-icon,.ngg_tb_window #TB_closeWindowButton:hover .tb-close-icon{color:#fff}.ngg_tb_window .tb-close-icon:before{font:400 18px dashicons}#ngg_attach_to_post_dialog{width:95%!important;left:2.5%!important}#ngg_attach_to_post_dialog-head #ngg_attach_to_post_dialog-title{display:none}#ngg_attach_to_post_dialog-body{width:100%!important}#ngg_attach_to_post_dialog-head{min-height:0;height:0;border:none}#ngg_attach_to_post_dialog-head .mce-close{position:absolute;background:0 0;top:10px!important;right:20px!important;z-index:2}#ngg_attach_to_post_dialog-head .mce-close i,#ngg_attach_to_post_dialog-head .mce-close:focus i{color:#fff;border:none;box-shadow:none;background:#9fbb1a;border-radius:50%;padding:1px;height:20px;width:20px;font-size:12px}#ngg_attach_to_post_dialog-head .mce-close:focus i,#ngg_attach_to_post_dialog-head .mce-close:hover i{color:#fff}#ngg_attach_to_post_dialog-head .mce-close i:before{font:400 17px dashicons;color:#fff;margin:1.2px 0 0 -8px}.ngg_attach_to_post_window{position:relative;border:none!important}.ngg_attach_to_post_window .mceBottom,.ngg_attach_to_post_window .mceCenter,.ngg_attach_to_post_window .mceLeft,.ngg_attach_to_post_window .mceResize,.ngg_attach_to_post_window .mceRight,.ngg_attach_to_post_window .mceTop{background:0 0!important;border:none!important}.ngg_attach_to_post_window .mceMiddle span{padding-top:6px!important}.ngg_attach_to_post_window .mceTop{display:block!important;height:0!important;font-size:0!important}.ngg_attach_to_post_window .mceClose{background:url(uploader-icons.png) -100px 0!important;display:block!important;margin:0!important;padding:0!important;width:15px!important;height:15px!important;position:absolute!important;top:44px!important;right:30px!important}#ngg_attach_to_post_dialog-body{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:rgba(255,255,255,.6);border-top:none}div[aria-label="Block: Classic"] .nggPlaceholder{padding:30px 30px 65px;text-align:center;background-color:#143650;box-sizing:border-box;border-radius:2px;font-family:sans-serif;font-size:20px;color:#9fbb1a;border-top:5px solid #b8d330;outline:0!important;box-shadow:0 0 4px 1px rgba(0,0,0,.05);margin-top:0;position:relative;z-index:2}div[aria-label="Block: Classic"] .nggPlaceholder h3{color:#fff!important;font-family:Lato,sans-serif;font-size:16px;font-size:1.6rem;font-weight:600;margin:24px 0 0}div[aria-label="Block: Classic"] .nggPlaceholderButton{background:#9ebd00!important;border-radius:2px;border:none!important;box-shadow:none!important;color:#fff!important;display:inline-block!important;font-size:13px;font-weight:700;font-family:Lato,sans-serif!important!important;height:36px!important;line-height:36px!important;letter-spacing:1.2px;margin:2px;padding:0;width:110px;text-align:center;text-transform:uppercase!important;text-shadow:none!important;cursor:pointer}div[aria-label="Block: Classic"] .nggPlaceholderButton:hover{background:#a5c31a!important}@media (max-width:781px){#TB_window.ngg_tb_window{position:absolute!important}} \ No newline at end of file +#TB_window.ngg_tb_window{box-shadow:0 0 20px 10px rgba(0,0,0,.5)}.ngg_tb_window #TB_iframeContent{height:100.1%!important}.ngg_tb_window #TB_title{height:0!important;border:none!important}.ngg_tb_window #TB_closeWindowButton{background:0 0;top:10px;right:20px}.ngg_tb_window #TB_closeWindowButton:focus .tb-close-icon,.ngg_tb_window .tb-close-icon{color:#fff;border:none;box-shadow:none;background:#9fbb1a;border-radius:50%;padding:1px;height:20px;width:20px;font-size:12px}.ngg_tb_window #TB_closeWindowButton:focus .tb-close-icon,.ngg_tb_window #TB_closeWindowButton:hover .tb-close-icon{color:#fff}.ngg_tb_window .tb-close-icon:before{font:400 18px dashicons}#ngg_attach_to_post_dialog{width:95%!important;left:2.5%!important}#ngg_attach_to_post_dialog-head #ngg_attach_to_post_dialog-title{display:none}#ngg_attach_to_post_dialog-body{width:100%!important}#ngg_attach_to_post_dialog-head{min-height:0;height:0;border:none}#ngg_attach_to_post_dialog-head .mce-close{position:absolute;background:0 0;top:10px!important;right:20px!important;z-index:2}#ngg_attach_to_post_dialog-head .mce-close i,#ngg_attach_to_post_dialog-head .mce-close:focus i{color:#fff;border:none;box-shadow:none;background:#9fbb1a;border-radius:50%;padding:1px;height:20px;width:20px;font-size:12px}#ngg_attach_to_post_dialog-head .mce-close:focus i,#ngg_attach_to_post_dialog-head .mce-close:hover i{color:#fff}#ngg_attach_to_post_dialog-head .mce-close i:before{font:400 17px dashicons;color:#fff;margin:1.2px 0 0 -8px}.ngg_attach_to_post_window{position:relative;border:none!important}.ngg_attach_to_post_window .mceBottom,.ngg_attach_to_post_window .mceCenter,.ngg_attach_to_post_window .mceLeft,.ngg_attach_to_post_window .mceResize,.ngg_attach_to_post_window .mceRight,.ngg_attach_to_post_window .mceTop{background:0 0!important;border:none!important}.ngg_attach_to_post_window .mceMiddle span{padding-top:6px!important}.ngg_attach_to_post_window .mceTop{display:block!important;height:0!important;font-size:0!important}.ngg_attach_to_post_window .mceClose{background:url(uploader-icons.png) -100px 0!important;display:block!important;margin:0!important;padding:0!important;width:15px!important;height:15px!important;position:absolute!important;top:44px!important;right:30px!important}#ngg_attach_to_post_dialog-body{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;background:rgba(255,255,255,.6);border-top:none}div[aria-label="Block: Classic"] .nggPlaceholder{background-color:#fff;border-radius:0;box-shadow:0 0 4px 2px rgba(0,0,0,.05);box-sizing:border-box;border-top:5px solid #b8d330;color:#fff;font-family:sans-serif;font-size:20px;margin:20px auto!important;outline:0!important;text-align:center;width:99%;min-height:210px;padding:60px 60px 70px}div[aria-label="Block: Classic"] .nggPlaceholder h3{color:#000!important;text-transform:uppercase;font-size:21px;font-family:Lato,sans-serif!important;font-weight:700!important;letter-spacing:3px!important;margin-bottom:0;margin-top:0}div[aria-label="Block: Classic"] .nggPlaceholderButton{background:#000!important;border-radius:2px;border:none!important;box-shadow:none!important;color:#fff!important;display:inline-block!important;font-size:12px;font-weight:700;font-family:Lato,sans-serif!important;height:36px!important;line-height:36px!important;letter-spacing:1.2px;margin:0 4px 2px 0;padding:0;width:121px;text-align:center;text-transform:uppercase!important;text-shadow:none!important;cursor:pointer}div[aria-label="Block: Classic"] .nggPlaceholderButton:hover{background:#383838!important}@media (max-width:781px){#TB_window.ngg_tb_window{position:absolute!important}} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/display_tab.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/display_tab.js index 470f2db00..d1cc0fe40 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/display_tab.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/display_tab.js @@ -235,11 +235,12 @@ jQuery(function($){ extra_data: {}, _create_request: function(limit, offset) { - var request = _.extend({}, igw_data.sec_token, { + var request = { action: this.action, limit: limit ? limit : this.fetch_limit, - offset: offset ? offset : 0 - }); + offset: offset ? offset : 0, + nonce: igw_data.nonce, + }; for (var index in this.extra_data) { var value = this.extra_data[index]; if (typeof(request[index]) === 'undefined') { @@ -825,22 +826,8 @@ jQuery(function($){ // Create all elements var image_container = $('<label style="display: block; cursor: pointer;"/>').addClass('image_container'); - // 2.0.66 did not support plugins_url, 2.0.66.3+ does - var installed_at_version = this.model.get('installed_at_version'); - var baseurl = photocrati_ajax.wp_plugins_url; - var preview_image_relpath = this.model.get('preview_image_relpath'); - if (typeof installed_at_version == 'undefined') { - baseurl = photocrati_ajax.wp_site_url; - baseurl = baseurl.replace(/(.*)\/index\.php$/i, "$1"); - // those who installed 2.0.66.3 lack the 'installed_at_version' setting but have a - // plugin-relative path - if (preview_image_relpath.indexOf('/nextgen-gallery') == 0) { - baseurl = photocrati_ajax.wp_plugins_url; - } - } - var img = $('<img/>').attr({ - src: baseurl + '/' + preview_image_relpath, + src: this.model.get('preview_image_url'), title: this.model.get('title'), alt: this.model.get('alt') }); diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/display_tab.min.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/display_tab.min.js index be3d59c2b..bc9fa993e 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/display_tab.min.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/display_tab.min.js @@ -1 +1 @@ -jQuery(function(e){var t={Models:{},Views:{}};t.Models.SelectableItems=Backbone.Collection.extend({selected:function(){return this.filter(function(e){return 1==e.get("selected")})},deselect_all:function(){this.each(function(e){e.set("selected",!1)})},selected_ids:function(){return _.pluck(this.selected(),"id")},select:function(e){_.isArray(e)||(e=[e]),this.each(function(t){_.indexOf(e,t.id)>=0&&t.set("selected",!0)}),this.trigger("selected")}}),t.Views.SelectTag=Backbone.View.extend({tagName:"select",collection:null,multiple:!1,value_field:"id",text_field:"title",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.collection.on("add",this.render_new_option,this),this.collection.on("remove",this.remove_existing_option,this),this.collection.on("reset",this.empty_list,this)},events:{change:"selection_changed"},empty_list:function(){this.$el.empty()},render_new_option:function(e){this.$el.append(new this.Option({model:e,value_field:this.value_field,text_field:this.text_field}).render().el)},remove_existing_option:function(e){this.$el.find("option[value='"+e.id+"']").remove()},selection_changed:function(){var t=_.map(this.$el.find(":selected"),function(t){return e(t).val()});this.collection.each(function(e){_.indexOf(t,e.id)>=0||_.indexOf(t,e.id.toString())>=0?e.set("selected",!0):e.set("selected",!1)}),this.collection.trigger("selected")},render:function(){return this.$el.empty(),this.multiple&&(this.$el.prop("multiple",!0),this.$el.attr("multiple","multiple")),this.collection.each(function(e){var t=new this.Option({model:e,value_field:this.value_field,text_field:this.text_field});this.$el.append(t.render().el)},this),this.width&&this.$el.width(this.width),this},Option:Backbone.View.extend({tagName:"option",model:null,initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.model.on("change",this.render,this)},render:function(){var e=this;return this.$el.html(this.model.get(this.text_field).replace(/\\&/g,"&").replace(/\\'/g,"'")),this.$el.prop({value:"id"==this.value_field?this.model.id:this.model.get(this.value_field)}),1==e.model.get("selected")&&this.$el.prop("selected",!0).attr("selected","selected"),this}})}),t.Views.Chosen=Backbone.View.extend({tagName:"span",initialize:function(e){this.options=e||{},this.collection=this.options.collection,this.select_tag=new t.Views.SelectTag(this.options),this.collection.on("change",this.selection_changed,this)},selection_changed:function(e){_.isUndefined(e.changed.selected)&&this.render()},render:function(){return this.$el.append(this.select_tag.render().$el),this.options.width&&this.select_tag.$el.width(this.options.width),this.select2_opts={placeholder:this.options.placeholder},this.select_tag.$el.select2(this.select2_opts),this}}),t.DisplayTab={Models:{},Views:{},App:{}},t.Models.Remote_Collection=t.Models.SelectableItems.extend({fetch_limit:5e3,in_progress:!1,fetch_url:photocrati_ajax.url,action:"",extra_data:{},_create_request:function(e,t){var i=_.extend({},igw_data.sec_token,{action:this.action,limit:e||this.fetch_limit,offset:t||0});for(var s in this.extra_data){var l=this.extra_data[s];void 0===i[s]&&(i[s]={}),void 0!==l.toJSON&&(l=l.toJSON()),i[s]=_.extend(i[s],l)}return i},_add_item:function(e){this.push(e)},fetch:function(t,i){var s=this;this.in_progress=!0,e.post(this.fetch_url,this._create_request(t,i),function(e){"undefined"!=typeof _&&(_.isObject(e)||(e=JSON.parse(e)),e.items&&(_.each(e.items,function(e){s._add_item(e)}),e.total>=e.limit+e.offset?s.fetch(e.limit,e.offset+e.limit):(s.in_progress=!1,s.trigger("finished_fetching"))))})}}),t.DisplayTab.Models.Displayed_Gallery=Backbone.Model.extend({defaults:{source:null,container_ids:[],entity_ids:[],display_type:null,display_settings:{},exclusions:[],sortorder:[],slug:null},to_shortcode:function(){retval=null;var e=function(e,t){var i=e[t];if(void 0!==igw_data.shortcode_defaults[t]&&igw_data.shortcode_defaults[t]==i&&(i=null),_.isArray(i)&&(i=i.length>0?i.join(","):null),i)return i=i.toString().replace("[","["),i=i.toString().replace("]","]"),void 0!==igw_data.shortcode_attr_replacements[t]&&(t=igw_data.shortcode_attr_replacements[t]),t+'="'+i+'"'},i=t.DisplayTab.instance.display_types.find_by_name_or_alias(this.get("display_type")),s=this.toJSON();s.display_type=i.get_shortcode_value();var l="[ngg",n=null;(n=e(s,"source"))&&(l+=" "+n),(n=e(s,"container_ids"))&&(l+=" "+n),(n=e(s,"entity_ids"))&&(l+=" "+n),(n=e(s,"exclusions"))&&(l+=" "+n),(n=e(s,"sortorder"))&&(l+=" "+n);for(var a in s){if(!(["source","container_ids","entity_ids","exclusions","sortorder","__defaults_set","id_field","post_category","ID"].indexOf(a)>-1))if("display_settings"==a)for(var r in s[a])(n=e(s[a],r))&&(l+=" "+n);else(n=e(s,a))&&(l+=" "+n)}return l+="]"}}),t.DisplayTab.Models.Source=Backbone.Model.extend({idAttribute:"name",defaults:{title:"",name:"",selected:!1}}),t.DisplayTab.Models.Source_Collection=t.Models.SelectableItems.extend({model:t.DisplayTab.Models.Source,selected_value:function(){var e=null,t=this.selected();return t.length>0&&(e=t[0].get("name")),e},find_by_name_or_alias:function(e){return this.find(function(t){return t.get("name")==e||_.isArray(t.get("aliases"))&&t.get("aliases").indexOf(e)>-1})}}),t.DisplayTab.Models.Gallery=Backbone.Model.extend({idAttribute:igw_data.gallery_primary_key,defaults:{title:"",name:""}}),t.DisplayTab.Models.Gallery_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Gallery,action:"get_existing_galleries"}),t.DisplayTab.Models.Album=Backbone.Model.extend({defaults:{title:"",name:""}}),t.DisplayTab.Models.Album_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Album,action:"get_existing_albums"}),t.DisplayTab.Models.Tag=Backbone.Model.extend({defaults:{title:""}}),t.DisplayTab.Models.Tag_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Tag,action:"get_existing_image_tags"}),t.DisplayTab.Models.Display_Type=Backbone.Model.extend({idAttribute:"name",defaults:{title:""},is_compatible_with_source:function(e){var t=!0;for(index in e.get("returns")){var i=e.get("returns")[index];if(_.indexOf(this.get("entity_types"),i)<0){t=!1;break}}return t},get_shortcode_value:function(){var e=this.id,t=this.get("aliases");return _.isArray(t)&&t.length>0&&(e=t[0]),e}}),t.DisplayTab.Models.Display_Type_Collection=t.Models.SelectableItems.extend({model:t.DisplayTab.Models.Display_Type,selected_value:function(){var e=this.selected();return e.length>0?e[0].get("name"):null},find_by_name_or_alias:function(e){return this.find(function(t){return t.get("name")==e||_.isArray(t.get("aliases"))&&t.get("aliases").indexOf(e)>-1})}}),t.DisplayTab.Models.Entity=Backbone.Model.extend({entity_id:function(){return this.get(this.get("id_field"))},is_excluded:function(){return current_value=this.get("exclude"),!_.isUndefined(current_value)&&(_.isBoolean(current_value)?current_value:0!=parseInt(current_value))},is_included:function(){return!this.is_excluded()},is_gallery:function(){return retval=!1,1==this.get("is_gallery")&&(retval=!0),retval},is_album:function(){return retval=!1,1==this.get("is_album")&&(retval=!0),retval},is_image:function(){return!this.is_album()&&!this.is_gallery()},alttext:function(){return this.is_image()?this.get("alttext"):this.is_gallery()?this.get("title"):this.is_album()?this.get("name"):void 0}}),t.DisplayTab.Models.Entity_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Entity,action:"get_displayed_gallery_entities",_add_item:function(e){e.exclude=1==parseInt(e.exclude),e.is_gallery=1==parseInt(e.is_gallery),e.is_album=1==parseInt(e.is_album),this.push(e)},entity_ids:function(){return this.map(function(e){return e.entity_id()})},included_ids:function(){return _.compact(this.map(function(e){if(e.is_included())return e.entity_id()}))},excluded_ids:function(){return _.compact(this.map(function(e){if(!e.is_included())return e.entity_id()}))}}),t.DisplayTab.Models.SortOrder=Backbone.Model.extend({}),t.DisplayTab.Models.SortOrder_Options=t.Models.SelectableItems.extend({model:t.DisplayTab.Models.SortOrder}),t.DisplayTab.Models.SortDirection=Backbone.Model.extend({}),t.DisplayTab.Models.SortDirection_Options=Backbone.Collection.extend({model:t.DisplayTab.Models.SortDirection}),t.DisplayTab.Models.Slug=Backbone.Model.extend({}),t.DisplayTab.Views.Source_Config=Backbone.View.extend({el:"#source_configuration",selected_view:null,initialize:function(){this.sources=t.DisplayTab.instance.sources,this.sources.on("selected",this.render,this),_.bindAll(this,"render"),this.render()},render:function(){var e=new t.Views.Chosen({id:"source_select",collection:this.sources,placeholder:"Select a source",width:500}),i=_.template('<tr><td id="source_column"></td><td><label><%- sources %></label></td></tr>');this.$el.html(i(igw_data.i18n)),this.$el.find("#source_column").append(e.render().el);var s=this.sources.selected();if(s.length){var l=function(e){return e=String(e),e.charAt(0).toUpperCase()+e.slice(1)}(s.pop().id)+"Source";if(void 0!==t.DisplayTab.Views[l]){var n=new t.DisplayTab.Views[l];this.$el.append(n.render().el)}}return this}}),t.DisplayTab.Views.Slug_Config=Backbone.View.extend({el:"#slug_configuration",selected_view:null,initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.slug=t.DisplayTab.instance.displayed_gallery.get("slug"),this.render()},render:function(){var t=this,i=e("<input>").prop({type:"text",name:"slug",value:this.slug,placeholder:igw_data.i18n.optional,id:"field_slug"});i.on("input",function(){e(this).val(e(this).val().replace(/\s|\?|\\|\/|&|=|\[|]|#/gm,"-")),t.displayed_gallery.set("slug",e(this).val())}),i.on("change",function(){e(this).val(e(this).val().replace(/^-*/gm,"").replace(/-*$/gm,"")),t.displayed_gallery.set("slug",e(this).val())});var s=_.template('<tr><td id="slug_label"><label for="field_slug" class="tooltip" title="<%- slug_tooltip %><"><<%- slug_label %></label></td><td id="slug_column"></td></tr>');return this.$el.append(s(igw_data.i18n)),this.$el.find("#slug_column").append(i),this}}),t.DisplayTab.Views.Display_Type_Selector=Backbone.View.extend({el:"#display_type_selector",initialize:function(){this.display_types=t.DisplayTab.instance.display_types,this.display_type_order_base=t.DisplayTab.instance.display_type_order_base,this.display_type_order_step=t.DisplayTab.instance.display_type_order_step,this.sources=t.DisplayTab.instance.sources,this.render()},selection_changed:function(t){var i=null;this.display_types.each(function(e){e.get("name")==t?(i=e,e.set("selected",!0)):e.set("selected",!1)}),e(".display_settings_form").each(function(){$this=e(this),$this.attr("rel")==t?$this.removeClass("hidden"):$this.addClass("hidden")})},render:function(){var t=this.sources.selected(),i=0;t=t.length>0&&t[0],this.$el.empty();var s=this.display_type_order_base,l=this.display_type_order_step;return this.display_types.each(function(n){if(t&&!n.is_compatible_with_source(t)){var a=e("#display_type_tab_content:visible");if(0==a.length)return;if("hidden"==a.css("visibility"))return}var r=new this.DisplayType;r.model=n,r.on("selected",this.selection_changed,this),this.display_types.selected_value()||(n.set("selected",!0),this.selection_changed(n.id));var o=n.get("view_order");o||(o=s);var d=Math.floor(o/l);i=d,this.$el.append(r.render().el)},this),this.$el.append('<li class="clear" style="height: 10px; list-style-type:none" />'),this},DisplayType:Backbone.View.extend({className:"display_type_preview",events:{click:"clicked"},clicked:function(e){this.trigger("selected",this.model.get("name"))},render:function(){var t=e('<label style="display: block; cursor: pointer;"/>').addClass("image_container"),i=this.model.get("installed_at_version"),s=photocrati_ajax.wp_plugins_url,l=this.model.get("preview_image_relpath");void 0===i&&(s=photocrati_ajax.wp_site_url,s=s.replace(/(.*)\/index\.php$/i,"$1"),0==l.indexOf("/nextgen-gallery")&&(s=photocrati_ajax.wp_plugins_url));var n=e("<img/>").attr({src:s+"/"+l,title:this.model.get("title"),alt:this.model.get("alt")}),a=e("<div/>"),r=e("<input/>").prop({type:"radio",value:this.model.get("name"),title:this.model.get("title"),name:"display_type",checked:this.model.get("selected")}),o=e("<br>");return t.append(a),t.append(n),t.append("<br>"),t.append(this.model.get("title").replace(/nextgen /gi,"")),a.append(r),a.append(o),this.$el.append(t),this}})}),t.DisplayTab.Views.Preview_Area=Backbone.View.extend({el:"#preview_area",initialize:function(){this.entities=t.DisplayTab.instance.entities,this.sources=t.DisplayTab.instance.sources,this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.entity_list=e("<ul/>").attr("id","entity_list").append('<li class="clear"/>'),this.entities.on("add",this.render_entity,this),this.entities.on("remove",this.remove_entity,this),this.entities.on("reset",this.entities_reset,this),this.entities.on("change:sortorder",function(e){this.entities.remove(e,{silent:!0}),this.entities.add(e,{at:e.changed.sortorder,silent:!0}),this.displayed_gallery.set("sortorder",this.entities.entity_ids()),"undefined"!=typeof console&&void 0!==console.log&&console.log(this.entities.entity_ids()),this.displayed_gallery.set("order_by","sortorder")},this),this.sources.on("selected",this.render,this),this.render()},events:{opened:"entities_reset"},entities_reset:function(e){this.entities.reset(null,{silent:!0}),this.entity_list.empty().append('<li class="clear"/>'),this.entities.in_progress||this.entities.fetch()},render_entity:function(e){var t=new this.EntityElement({model:e});this.entity_list.find(".clear").before(t.render().$el),t.$el.css("visibility","hidden"),setTimeout(function(){t.$el.css("visibility","visible")},0),1==this.$el.find(".no_entities").length?this.render():this.entities.length>1&&this.entity_list.sortable("refresh")},remove_entity:function(e){var t=this.id=e.get("id_field")+"_"+e.entity_id();this.entity_list.find("#"+t).remove();this.entity_list.sortable("refresh"),0==this.entities.length&&this.render_no_images_notice()},render_no_images_notice:function(){this.$el.empty(),this.$el.append("<p class='no_entities'>"+igw_data.i18n.no_entities+"</p>")},render:function(){return this.$el.empty(),this.entities.length>0&&this.displayed_gallery.get("container_ids").length>0?(this.$el.append(new this.RefreshButton({entities:this.entities}).render().el),this.$el.append(new this.SortButtons({entities:this.entities,displayed_gallery:this.displayed_gallery,sources:this.sources}).render().el),this.$el.append(new this.ExcludeButtons({entities:this.entities}).render().el),this.$el.append(this.entity_list),this.entity_list.sortable({placeholder:"placeholder",forcePlaceholderSize:!0,containment:"parent",opacity:.7,revert:!0,dropOnEmpty:!0,start:function(e,t){return t.placeholder.css({height:t.item.height()}),!0},stop:function(e,t){t.item.trigger("drop",t.item.index())}}),this.entity_list.disableSelection()):this.render_no_images_notice(),this},RefreshButton:Backbone.View.extend({className:"refresh_button button-primary",tagName:"input",label:"Refresh",events:{click:"clicked"},clicked:function(){this.entities.reset()},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},render:function(){return this.$el.attr({value:this.label,type:"button"}),this}}),ExcludeButtons:Backbone.View.extend({className:"header_row",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},render:function(){this.$el.empty(),this.$el.append('<span style="margin-right: 8px;">Exclude:</span>');var e=new this.Button({value:!0,text:"All",entities:this.entities});this.$el.append(e.render().el),this.$el.append('<span class="separator">|</span>');var t=new this.Button({value:!1,text:"None",entities:this.entities});return this.$el.append(t.render().el),this},Button:Backbone.View.extend({tagName:"a",value:1,text:"",events:{click:"clicked"},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},clicked:function(e){e.preventDefault(),this.entities.each(function(e){e.set("exclude",this.value)},this)},render:function(){return this.$el.text(this.text).attr("href","#"),this}})}),SortButtons:Backbone.View.extend({className:"header_row",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.sortorder_options=new t.DisplayTab.Models.SortOrder_Options,this.sortorder_options.on("change:selected",this.sortoption_changed,this),this.sortdirection_options=new t.DisplayTab.Models.SortDirection_Options([{value:"ASC",title:"Ascending",selected:"ASC"==this.displayed_gallery.get("order_direction")},{value:"DESC",title:"Descending",selected:"DESC"==this.displayed_gallery.get("order_direction")}]),this.sortdirection_options.on("change:selected",this.sortdirection_changed,this),this.displayed_gallery.on("change:order_by",this.displayed_gallery_order_changed,this),this.displayed_gallery.on("change.order_direction",this.displayed_gallery_order_dir_changed,this)},populate_sorting_fields:function(){var e=this.sources.selected().pop().get("returns");-1!==_.indexOf(e,"image")?this.fill_image_sortorder_options():this.fill_gallery_sortorder_options()},create_sortorder_option:function(e,i){return new t.DisplayTab.Models.SortOrder({name:e,title:i,value:e,selected:this.displayed_gallery.get("order_by")==e})},fill_image_sortorder_options:function(){this.sortorder_options.reset(),this.sortorder_options.push(this.create_sortorder_option("","None")),this.sortorder_options.push(this.create_sortorder_option("sortorder","Custom")),this.sortorder_options.push(this.create_sortorder_option(t.DisplayTab.instance.image_key,"Image ID")),this.sortorder_options.push(this.create_sortorder_option("filename","Filename")),this.sortorder_options.push(this.create_sortorder_option("alttext","Alt/Title Text")),this.sortorder_options.push(this.create_sortorder_option("imagedate","Date/Time"))},fill_gallery_sortorder_options:function(){this.sortorder_options.reset(),this.sortorder_options.push(this.create_sortorder_option("","None")),this.sortorder_options.push(this.create_sortorder_option("sortorder","Custom")),this.sortorder_options.push(this.create_sortorder_option("name","Name")),this.sortorder_options.push(this.create_sortorder_option("galdesc","Description"))},displayed_gallery_order_changed:function(e){this.sortorder_options.findWhere({value:e.get("order_by")}).set("selected",!0)},displayed_gallery_order_dir_changed:function(e){this.sortdirection_options.findWhere({value:e.get("order_direction")}).set("selected",!0)},sortoption_changed:function(t){this.sortorder_options.each(function(e){e.set("selected",t.get("value")==e.get("value"),{silent:!0})}),this.displayed_gallery.set("sortorder",[]);var i=t.get("value");0==t.get("value").length&&(i="sortorder"),this.displayed_gallery.set("order_by",i),this.entities.reset(),this.$el.find("a.sortorder").each(function(){var i=e(this);i.attr("value")==t.get("value")?i.addClass("selected"):i.removeClass("selected")})},sortdirection_changed:function(t){this.sortdirection_options.each(function(e){e.set("selected",t.get("value")==e.get("value"),{silent:!0})}),this.displayed_gallery.set("order_direction",t.get("value")),this.entities.reset(),this.$el.find("a.sortdirection").each(function(){var i=e(this);i.attr("value")==t.get("value")?i.addClass("selected"):i.removeClass("selected")})},render:function(){return this.$el.empty(),this.populate_sorting_fields(),this.$el.append('<span style="margin-right: 8px;">Sort By:</span>'),this.sortorder_options.each(function(e,t){var i=new this.Button({model:e,className:"sortorder"});this.$el.append(i.render().el),this.sortorder_options.length-1>t&&this.$el.append('<span class="separator">|</span>')},this),this.$el.append('<span style="margin: 0 8px 0 40px;">Order By:</span>'),this.sortdirection_options.each(function(e,t){var i=new this.Button({model:e,className:"sortdirection"});this.$el.append(i.render().el),this.sortdirection_options.length-1>t&&this.$el.append('<span class="separator">|</span>')},this),this},Button:Backbone.View.extend({tagName:"a",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},events:{click:"clicked"},clicked:function(e){e.preventDefault(),this.model.set("selected",!0)},render:function(){return this.$el.prop({value:this.model.get("value"),href:"#"}),this.$el.text(this.model.get("title")),this.model.get("selected")&&this.$el.addClass("selected"),this}})}),EntityElement:Backbone.View.extend({tagName:"li",events:{drop:"item_dropped"},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.initTime=(new Date).getTime(),this.model.on("change",this.render,this),0==this.model.get("sortorder")&&this.model.set("sortorder",-1,{silent:!0}),this.id=this.model.get("id_field")+"_"+this.model.entity_id()},item_dropped:function(e,i){t.DisplayTab.instance.displayed_gallery.set("order_by","sortorder"),this.model.set("sortorder",i)},render:function(){this.$el.empty();var t=e("<div/>").addClass("preview_item"),i=e("<div/>").addClass("image_container"),s=this.model.alttext().replace(/\\&/g,"&").replace(/\\'/g,"'"),l=this.initTime;i.attr({title:s,style:"background-image: url('"+this.model.get("thumb_url")+"?timestamp"+l+"')"}),this.$el.append(t).addClass("ui-state-default"),t.append(i);var n=e("<div/>").addClass("exclude_container"),a=e("<label/>");a.append(igw_data.i18n.exclude_question);var r=new this.ExcludeCheckbox({model:this.model});return a.append(r.render().el),n.append(a),t.append(n),this},ExcludeCheckbox:Backbone.View.extend({tagName:"input",events:{change:"entity_excluded"},type_set:!1,entity_excluded:function(e){this.model.set("exclude",e.target.checked)},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.model.on("change:exclude",this.render,this)},render:function(){return this.type_set||(this.$el.attr("type","checkbox"),this.type_set=!0),this.model.is_excluded()?this.$el.prop("checked",!0):this.$el.prop("checked",!1),this}})})}),t.DisplayTab.Views.GalleriesSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.galleries=t.DisplayTab.instance.galleries},render:function(){var i=new t.Views.Chosen({collection:this.galleries,placeholder:igw_data.i18n.select_gallery,multiple:!0,width:500}),s=e('<tr><td class="galleries_column"></td><td><label>'+igw_data.i18n.galleries+"</label></td></tr>");return this.$el.empty(),this.$el.append(s),this.$el.find(".galleries_column").append(i.render().el),this}}),t.DisplayTab.Views.AlbumsSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.albums=t.DisplayTab.instance.albums},render:function(){var e=new t.Views.Chosen({collection:this.albums,multiple:!0,placeholder:"Select an album",text_field:"name",width:500});return this.$el.empty(),this.$el.append('<tr><td class="albums_column"></td><td><label>'+igw_data.i18n.albums+"</label></td></tr>"),this.$el.find(".albums_column").append(e.render().el),this}}),t.DisplayTab.Views.TagsSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.tags=t.DisplayTab.instance.tags},render:function(){var e=new t.Views.Chosen({collection:this.tags,multiple:!0,placeholder:"Select a tag",text_field:"name",width:500});return this.$el.empty(),this.$el.append('<tr><td class="tags_column"></td><td><label>Tags</label></td></tr>'),this.$el.find(".tags_column").append(e.render().el),this}}),t.DisplayTab.Views.Recent_imagesSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.maximum_entity_count=t.DisplayTab.instance.displayed_gallery.get("maximum_entity_count"),this.displayed_gallery.set("container_ids",[])},render:function(){var t=this,i=e("<input/>").prop({type:"text",value:this.maximum_entity_count,name:"maximum_entity_count"});return i.change(function(){t.displayed_gallery.set("maximum_entity_count",e(this).val())}),this.$el.empty(),this.$el.append('<tr><td class="recent_images_column"></td><td><label># of Images To Display</label></td></tr>'),this.$el.find(".recent_images_column").append(i),this}}),t.DisplayTab.Views.Random_imagesSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.maximum_entity_count=t.DisplayTab.instance.displayed_gallery.get("maximum_entity_count"),this.displayed_gallery.set("container_ids",[])},render:function(){var t=this,i=e("<input/>").prop({type:"text",value:this.maximum_entity_count,name:"maximum_entity_count"});return i.change(function(){t.displayed_gallery.set("maximum_entity_count",e(this).val())}),this.$el.empty(),this.$el.append('<tr><td class="random_images_column"></td><td><label># of Images To Display</label></td></tr>'),this.$el.find(".random_images_column").append(i),this}}),t.DisplayTab.Views.SaveButton=Backbone.View.extend({el:"#save_displayed_gallery",errors_el:"#errors",displayed_gallery:null,events:{click:"clicked"},initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.entities=t.DisplayTab.instance.entities,this.render()},clicked:function(){this.set_display_settings();var e=this.displayed_gallery.to_shortcode();insert_into_editor(e,this.displayed_gallery.id?this.displayed_gallery.id:igw_data.shortcode_ref);var t=null;(t=location.toString().match(/editor=([^\&]+)/))&&t.length>=2&&top.tinyMCE.editors[t[1]].fire("ngg-inserted",{shortcode:e}),close_attach_to_post_window()},set_display_settings:function(){var t=this.displayed_gallery.get("display_type");if(t){var i=e("form[rel='"+t+"']"),s=i.data("defaults"),l=function(t){var i={};return e.each(t.serializeArray(),function(e,t){for(var l=t.name.split("["),n=i,a=0;a<l.length;a++){var r=l[a].replace(/\]$/,"");if(s[r]==t.value)return!0;n[r]||(a==l.length-1?n[r]=t.value:n[r]={}),n=n[r]}}),i}(i);this.displayed_gallery.set("display_settings",l[t])}},render:function(){return this.$el.css("z-index",1e3),this}}),t.DisplayTab.App=Backbone.View.extend({initialize:function(){if(this.displayed_gallery=new t.DisplayTab.Models.Displayed_Gallery(igw_data.displayed_gallery),this.original_displayed_gallery=new t.DisplayTab.Models.Displayed_Gallery(igw_data.displayed_gallery),this.galleries=new t.DisplayTab.Models.Gallery_Collection(igw_data.galleries),this.albums=new t.DisplayTab.Models.Album_Collection(igw_data.albums),this.tags=new t.DisplayTab.Models.Tag_Collection(igw_data.tags),this.sources=new t.DisplayTab.Models.Source_Collection(igw_data.sources),this.display_types=new t.DisplayTab.Models.Display_Type_Collection(igw_data.display_types),this.display_type_order_base=igw_data.display_type_priority_base,this.display_type_order_step=igw_data.display_type_priority_step,this.entities=new t.DisplayTab.Models.Entity_Collection,this.entities.extra_data.displayed_gallery=this.displayed_gallery,this.image_key=igw_data.image_primary_key,this.displayed_gallery.get("source")){if(this.displayed_gallery.get("source")){var i=this.sources.find_by_name_or_alias(this.displayed_gallery.get("source"));i&&i.set("selected",!0)}if(this.displayed_gallery.get("container_ids")&&_.each(this.displayed_gallery.get("container_ids"),function(e){var t=this[this.displayed_gallery.get("source")].find(function(t){return t.id==e},this);t&&t.set("selected",!0)},this),this.displayed_gallery.get("display_type")){var s=this.display_types.find_by_name_or_alias(this.displayed_gallery.get("display_type"));s&&(s.set("selected",!0),this.displayed_gallery.set("display_type",s.get("name")))}}if(collections=["galleries","albums","tags"],_.each(collections,function(e){this[e].on("selected",function(){this.update_selected_containers(e)},this)},this),this.display_types.on("change:selected",function(){this.displayed_gallery.set("display_type",this.display_types.selected_value())},this),this.sources.on("selected",function(){e("#save_displayed_gallery").prop("disabled",!0),setTimeout(function(){e("#save_displayed_gallery").prop("disabled",!1)},1e3),this.displayed_gallery.set("source",this.sources.selected_value()),this.sources.selected_value()!=this.original_displayed_gallery.get("source")?this.displayed_gallery.set("exclusions",this.entities.excluded_ids()):this.displayed_gallery.set("exclusions",this.original_displayed_gallery.get("exclusions")),"random_images"!=this.sources.selected_value()&&"recent_images"!=this.sources.selected_value()||this.displayed_gallery.set("maximum_entity_count",20),this.galleries.deselect_all(),this.albums.deselect_all(),this.tags.deselect_all();var t=this.display_types.selected(),i=this.sources.selected();t.length>0&&i.length>0&&(t=t[0],i=i[0],t.is_compatible_with_source(i)||this.display_types.deselect_all(),this.display_type_selector&&this.display_type_selector.render()),this.preview_area&&this.preview_area.render()},this),this.entities.on("change:exclude finished_fetching",function(){this.displayed_gallery.set("exclusions",this.entities.excluded_ids())},this),!this.displayed_gallery.get("source")){var l=this.sources.find_by_name_or_alias("galleries");l&&(l.set("selected",!0),this.sources.trigger("selected"))}if(window.Frame_Event_Publisher){var n=this;Frame_Event_Publisher.listen_for("attach_to_post:new_gallery",function(){n.galleries.reset(),n.galleries.fetch()}),Frame_Event_Publisher.listen_for("attach_to_post:manage_galleries attach_to_post:manage_images",function(e){n.galleries.reset(),n.galleries.fetch();var t=n.sources.selected().pop();t&&(_.indexOf(t.get("returns"),"image")>=0||_.indexOf(t.get("returns"),"gallery"))&&n.entities.reset()}),Frame_Event_Publisher.listen_for("attach_to_post:manage_album",function(e){n.albums.reset(),n.albums.fetch();var t=n.sources.selected().pop();t&&_.indexOf(t.get("returns"),"album")>=0&&n.entities.reset()}),Frame_Event_Publisher.listen_for("attach_to_post:manage_tags attach_to_post:manage_images",function(e){n.tags.reset(),n.tags.fetch();var t=n.sources.selected().pop();t&&(_.indexOf(t.get("returns"),"image")>=0||_.indexOf(t.get("returns"),"gallery"))&&n.entities.reset()}),Frame_Event_Publisher.listen_for("attach_to_post:thumbnail_modified",function(e){var t=n.sources.selected().pop(),i=e.image[e.image.id_field];if(t)if(_.indexOf(t.get("returns"),"image")>=0){var s=n.entities.find(function(e){return parseInt(e.entity_id())==parseInt(i)},this);s&&s.set("thumb_url",e.image.thumb_url)}else{var l=n.entities.find(function(e){return parseInt(e.get("previewpic"))==i},this);l&&l.trigger("change")}})}},update_selected_containers:function(e){this.displayed_gallery.set("container_ids",this[e].selected_ids())},render:function(){this.display_type_selector=new t.DisplayTab.Views.Display_Type_Selector,new t.DisplayTab.Views.Source_Config,new t.DisplayTab.Views.Slug_Config,this.preview_area=new t.DisplayTab.Views.Preview_Area,new t.DisplayTab.Views.SaveButton}}),t.DisplayTab.instance=new t.DisplayTab.App,t.DisplayTab.instance.render(),window.Ngg=t,e("span.tooltip, label.tooltip").tooltip()}); \ No newline at end of file +jQuery(function(e){var t={Models:{},Views:{}};t.Models.SelectableItems=Backbone.Collection.extend({selected:function(){return this.filter(function(e){return 1==e.get("selected")})},deselect_all:function(){this.each(function(e){e.set("selected",!1)})},selected_ids:function(){return _.pluck(this.selected(),"id")},select:function(e){_.isArray(e)||(e=[e]),this.each(function(t){_.indexOf(e,t.id)>=0&&t.set("selected",!0)}),this.trigger("selected")}}),t.Views.SelectTag=Backbone.View.extend({tagName:"select",collection:null,multiple:!1,value_field:"id",text_field:"title",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.collection.on("add",this.render_new_option,this),this.collection.on("remove",this.remove_existing_option,this),this.collection.on("reset",this.empty_list,this)},events:{change:"selection_changed"},empty_list:function(){this.$el.empty()},render_new_option:function(e){this.$el.append(new this.Option({model:e,value_field:this.value_field,text_field:this.text_field}).render().el)},remove_existing_option:function(e){this.$el.find("option[value='"+e.id+"']").remove()},selection_changed:function(){var t=_.map(this.$el.find(":selected"),function(t){return e(t).val()});this.collection.each(function(e){_.indexOf(t,e.id)>=0||_.indexOf(t,e.id.toString())>=0?e.set("selected",!0):e.set("selected",!1)}),this.collection.trigger("selected")},render:function(){return this.$el.empty(),this.multiple&&(this.$el.prop("multiple",!0),this.$el.attr("multiple","multiple")),this.collection.each(function(e){var t=new this.Option({model:e,value_field:this.value_field,text_field:this.text_field});this.$el.append(t.render().el)},this),this.width&&this.$el.width(this.width),this},Option:Backbone.View.extend({tagName:"option",model:null,initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.model.on("change",this.render,this)},render:function(){var e=this;return this.$el.html(this.model.get(this.text_field).replace(/\\&/g,"&").replace(/\\'/g,"'")),this.$el.prop({value:"id"==this.value_field?this.model.id:this.model.get(this.value_field)}),1==e.model.get("selected")&&this.$el.prop("selected",!0).attr("selected","selected"),this}})}),t.Views.Chosen=Backbone.View.extend({tagName:"span",initialize:function(e){this.options=e||{},this.collection=this.options.collection,this.select_tag=new t.Views.SelectTag(this.options),this.collection.on("change",this.selection_changed,this)},selection_changed:function(e){_.isUndefined(e.changed.selected)&&this.render()},render:function(){return this.$el.append(this.select_tag.render().$el),this.options.width&&this.select_tag.$el.width(this.options.width),this.select2_opts={placeholder:this.options.placeholder},this.select_tag.$el.select2(this.select2_opts),this}}),t.DisplayTab={Models:{},Views:{},App:{}},t.Models.Remote_Collection=t.Models.SelectableItems.extend({fetch_limit:5e3,in_progress:!1,fetch_url:photocrati_ajax.url,action:"",extra_data:{},_create_request:function(e,t){var i={action:this.action,limit:e||this.fetch_limit,offset:t||0,nonce:igw_data.nonce};for(var s in this.extra_data){var l=this.extra_data[s];void 0===i[s]&&(i[s]={}),void 0!==l.toJSON&&(l=l.toJSON()),i[s]=_.extend(i[s],l)}return i},_add_item:function(e){this.push(e)},fetch:function(t,i){var s=this;this.in_progress=!0,e.post(this.fetch_url,this._create_request(t,i),function(e){"undefined"!=typeof _&&(_.isObject(e)||(e=JSON.parse(e)),e.items&&(_.each(e.items,function(e){s._add_item(e)}),e.total>=e.limit+e.offset?s.fetch(e.limit,e.offset+e.limit):(s.in_progress=!1,s.trigger("finished_fetching"))))})}}),t.DisplayTab.Models.Displayed_Gallery=Backbone.Model.extend({defaults:{source:null,container_ids:[],entity_ids:[],display_type:null,display_settings:{},exclusions:[],sortorder:[],slug:null},to_shortcode:function(){retval=null;var e=function(e,t){var i=e[t];if(void 0!==igw_data.shortcode_defaults[t]&&igw_data.shortcode_defaults[t]==i&&(i=null),_.isArray(i)&&(i=i.length>0?i.join(","):null),i)return i=i.toString().replace("[","["),i=i.toString().replace("]","]"),void 0!==igw_data.shortcode_attr_replacements[t]&&(t=igw_data.shortcode_attr_replacements[t]),t+'="'+i+'"'},i=t.DisplayTab.instance.display_types.find_by_name_or_alias(this.get("display_type")),s=this.toJSON();s.display_type=i.get_shortcode_value();var l="[ngg",n=null;(n=e(s,"source"))&&(l+=" "+n),(n=e(s,"container_ids"))&&(l+=" "+n),(n=e(s,"entity_ids"))&&(l+=" "+n),(n=e(s,"exclusions"))&&(l+=" "+n),(n=e(s,"sortorder"))&&(l+=" "+n);for(var a in s){if(!(["source","container_ids","entity_ids","exclusions","sortorder","__defaults_set","id_field","post_category","ID"].indexOf(a)>-1))if("display_settings"==a)for(var r in s[a])(n=e(s[a],r))&&(l+=" "+n);else(n=e(s,a))&&(l+=" "+n)}return l+="]"}}),t.DisplayTab.Models.Source=Backbone.Model.extend({idAttribute:"name",defaults:{title:"",name:"",selected:!1}}),t.DisplayTab.Models.Source_Collection=t.Models.SelectableItems.extend({model:t.DisplayTab.Models.Source,selected_value:function(){var e=null,t=this.selected();return t.length>0&&(e=t[0].get("name")),e},find_by_name_or_alias:function(e){return this.find(function(t){return t.get("name")==e||_.isArray(t.get("aliases"))&&t.get("aliases").indexOf(e)>-1})}}),t.DisplayTab.Models.Gallery=Backbone.Model.extend({idAttribute:igw_data.gallery_primary_key,defaults:{title:"",name:""}}),t.DisplayTab.Models.Gallery_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Gallery,action:"get_existing_galleries"}),t.DisplayTab.Models.Album=Backbone.Model.extend({defaults:{title:"",name:""}}),t.DisplayTab.Models.Album_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Album,action:"get_existing_albums"}),t.DisplayTab.Models.Tag=Backbone.Model.extend({defaults:{title:""}}),t.DisplayTab.Models.Tag_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Tag,action:"get_existing_image_tags"}),t.DisplayTab.Models.Display_Type=Backbone.Model.extend({idAttribute:"name",defaults:{title:""},is_compatible_with_source:function(e){var t=!0;for(index in e.get("returns")){var i=e.get("returns")[index];if(_.indexOf(this.get("entity_types"),i)<0){t=!1;break}}return t},get_shortcode_value:function(){var e=this.id,t=this.get("aliases");return _.isArray(t)&&t.length>0&&(e=t[0]),e}}),t.DisplayTab.Models.Display_Type_Collection=t.Models.SelectableItems.extend({model:t.DisplayTab.Models.Display_Type,selected_value:function(){var e=this.selected();return e.length>0?e[0].get("name"):null},find_by_name_or_alias:function(e){return this.find(function(t){return t.get("name")==e||_.isArray(t.get("aliases"))&&t.get("aliases").indexOf(e)>-1})}}),t.DisplayTab.Models.Entity=Backbone.Model.extend({entity_id:function(){return this.get(this.get("id_field"))},is_excluded:function(){return current_value=this.get("exclude"),!_.isUndefined(current_value)&&(_.isBoolean(current_value)?current_value:0!=parseInt(current_value))},is_included:function(){return!this.is_excluded()},is_gallery:function(){return retval=!1,1==this.get("is_gallery")&&(retval=!0),retval},is_album:function(){return retval=!1,1==this.get("is_album")&&(retval=!0),retval},is_image:function(){return!this.is_album()&&!this.is_gallery()},alttext:function(){return this.is_image()?this.get("alttext"):this.is_gallery()?this.get("title"):this.is_album()?this.get("name"):void 0}}),t.DisplayTab.Models.Entity_Collection=t.Models.Remote_Collection.extend({model:t.DisplayTab.Models.Entity,action:"get_displayed_gallery_entities",_add_item:function(e){e.exclude=1==parseInt(e.exclude),e.is_gallery=1==parseInt(e.is_gallery),e.is_album=1==parseInt(e.is_album),this.push(e)},entity_ids:function(){return this.map(function(e){return e.entity_id()})},included_ids:function(){return _.compact(this.map(function(e){if(e.is_included())return e.entity_id()}))},excluded_ids:function(){return _.compact(this.map(function(e){if(!e.is_included())return e.entity_id()}))}}),t.DisplayTab.Models.SortOrder=Backbone.Model.extend({}),t.DisplayTab.Models.SortOrder_Options=t.Models.SelectableItems.extend({model:t.DisplayTab.Models.SortOrder}),t.DisplayTab.Models.SortDirection=Backbone.Model.extend({}),t.DisplayTab.Models.SortDirection_Options=Backbone.Collection.extend({model:t.DisplayTab.Models.SortDirection}),t.DisplayTab.Models.Slug=Backbone.Model.extend({}),t.DisplayTab.Views.Source_Config=Backbone.View.extend({el:"#source_configuration",selected_view:null,initialize:function(){this.sources=t.DisplayTab.instance.sources,this.sources.on("selected",this.render,this),_.bindAll(this,"render"),this.render()},render:function(){var e=new t.Views.Chosen({id:"source_select",collection:this.sources,placeholder:"Select a source",width:500}),i=_.template('<tr><td id="source_column"></td><td><label><%- sources %></label></td></tr>');this.$el.html(i(igw_data.i18n)),this.$el.find("#source_column").append(e.render().el);var s=this.sources.selected();if(s.length){var l=function(e){return e=String(e),e.charAt(0).toUpperCase()+e.slice(1)}(s.pop().id)+"Source";if(void 0!==t.DisplayTab.Views[l]){var n=new t.DisplayTab.Views[l];this.$el.append(n.render().el)}}return this}}),t.DisplayTab.Views.Slug_Config=Backbone.View.extend({el:"#slug_configuration",selected_view:null,initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.slug=t.DisplayTab.instance.displayed_gallery.get("slug"),this.render()},render:function(){var t=this,i=e("<input>").prop({type:"text",name:"slug",value:this.slug,placeholder:igw_data.i18n.optional,id:"field_slug"});i.on("input",function(){e(this).val(e(this).val().replace(/\s|\?|\\|\/|&|=|\[|]|#/gm,"-")),t.displayed_gallery.set("slug",e(this).val())}),i.on("change",function(){e(this).val(e(this).val().replace(/^-*/gm,"").replace(/-*$/gm,"")),t.displayed_gallery.set("slug",e(this).val())});var s=_.template('<tr><td id="slug_label"><label for="field_slug" class="tooltip" title="<%- slug_tooltip %><"><<%- slug_label %></label></td><td id="slug_column"></td></tr>');return this.$el.append(s(igw_data.i18n)),this.$el.find("#slug_column").append(i),this}}),t.DisplayTab.Views.Display_Type_Selector=Backbone.View.extend({el:"#display_type_selector",initialize:function(){this.display_types=t.DisplayTab.instance.display_types,this.display_type_order_base=t.DisplayTab.instance.display_type_order_base,this.display_type_order_step=t.DisplayTab.instance.display_type_order_step,this.sources=t.DisplayTab.instance.sources,this.render()},selection_changed:function(t){var i=null;this.display_types.each(function(e){e.get("name")==t?(i=e,e.set("selected",!0)):e.set("selected",!1)}),e(".display_settings_form").each(function(){$this=e(this),$this.attr("rel")==t?$this.removeClass("hidden"):$this.addClass("hidden")})},render:function(){var t=this.sources.selected(),i=0;t=t.length>0&&t[0],this.$el.empty();var s=this.display_type_order_base,l=this.display_type_order_step;return this.display_types.each(function(n){if(t&&!n.is_compatible_with_source(t)){var a=e("#display_type_tab_content:visible");if(0==a.length)return;if("hidden"==a.css("visibility"))return}var r=new this.DisplayType;r.model=n,r.on("selected",this.selection_changed,this),this.display_types.selected_value()||(n.set("selected",!0),this.selection_changed(n.id));var o=n.get("view_order");o||(o=s);var d=Math.floor(o/l);i=d,this.$el.append(r.render().el)},this),this.$el.append('<li class="clear" style="height: 10px; list-style-type:none" />'),this},DisplayType:Backbone.View.extend({className:"display_type_preview",events:{click:"clicked"},clicked:function(e){this.trigger("selected",this.model.get("name"))},render:function(){var t=e('<label style="display: block; cursor: pointer;"/>').addClass("image_container"),i=e("<img/>").attr({src:this.model.get("preview_image_url"),title:this.model.get("title"),alt:this.model.get("alt")}),s=e("<div/>"),l=e("<input/>").prop({type:"radio",value:this.model.get("name"),title:this.model.get("title"),name:"display_type",checked:this.model.get("selected")}),n=e("<br>");return t.append(s),t.append(i),t.append("<br>"),t.append(this.model.get("title").replace(/nextgen /gi,"")),s.append(l),s.append(n),this.$el.append(t),this}})}),t.DisplayTab.Views.Preview_Area=Backbone.View.extend({el:"#preview_area",initialize:function(){this.entities=t.DisplayTab.instance.entities,this.sources=t.DisplayTab.instance.sources,this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.entity_list=e("<ul/>").attr("id","entity_list").append('<li class="clear"/>'),this.entities.on("add",this.render_entity,this),this.entities.on("remove",this.remove_entity,this),this.entities.on("reset",this.entities_reset,this),this.entities.on("change:sortorder",function(e){this.entities.remove(e,{silent:!0}),this.entities.add(e,{at:e.changed.sortorder,silent:!0}),this.displayed_gallery.set("sortorder",this.entities.entity_ids()),"undefined"!=typeof console&&void 0!==console.log&&console.log(this.entities.entity_ids()),this.displayed_gallery.set("order_by","sortorder")},this),this.sources.on("selected",this.render,this),this.render()},events:{opened:"entities_reset"},entities_reset:function(e){this.entities.reset(null,{silent:!0}),this.entity_list.empty().append('<li class="clear"/>'),this.entities.in_progress||this.entities.fetch()},render_entity:function(e){var t=new this.EntityElement({model:e});this.entity_list.find(".clear").before(t.render().$el),t.$el.css("visibility","hidden"),setTimeout(function(){t.$el.css("visibility","visible")},0),1==this.$el.find(".no_entities").length?this.render():this.entities.length>1&&this.entity_list.sortable("refresh")},remove_entity:function(e){var t=this.id=e.get("id_field")+"_"+e.entity_id();this.entity_list.find("#"+t).remove();this.entity_list.sortable("refresh"),0==this.entities.length&&this.render_no_images_notice()},render_no_images_notice:function(){this.$el.empty(),this.$el.append("<p class='no_entities'>"+igw_data.i18n.no_entities+"</p>")},render:function(){return this.$el.empty(),this.entities.length>0&&this.displayed_gallery.get("container_ids").length>0?(this.$el.append(new this.RefreshButton({entities:this.entities}).render().el),this.$el.append(new this.SortButtons({entities:this.entities,displayed_gallery:this.displayed_gallery,sources:this.sources}).render().el),this.$el.append(new this.ExcludeButtons({entities:this.entities}).render().el),this.$el.append(this.entity_list),this.entity_list.sortable({placeholder:"placeholder",forcePlaceholderSize:!0,containment:"parent",opacity:.7,revert:!0,dropOnEmpty:!0,start:function(e,t){return t.placeholder.css({height:t.item.height()}),!0},stop:function(e,t){t.item.trigger("drop",t.item.index())}}),this.entity_list.disableSelection()):this.render_no_images_notice(),this},RefreshButton:Backbone.View.extend({className:"refresh_button button-primary",tagName:"input",label:"Refresh",events:{click:"clicked"},clicked:function(){this.entities.reset()},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},render:function(){return this.$el.attr({value:this.label,type:"button"}),this}}),ExcludeButtons:Backbone.View.extend({className:"header_row",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},render:function(){this.$el.empty(),this.$el.append('<span style="margin-right: 8px;">Exclude:</span>');var e=new this.Button({value:!0,text:"All",entities:this.entities});this.$el.append(e.render().el),this.$el.append('<span class="separator">|</span>');var t=new this.Button({value:!1,text:"None",entities:this.entities});return this.$el.append(t.render().el),this},Button:Backbone.View.extend({tagName:"a",value:1,text:"",events:{click:"clicked"},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},clicked:function(e){e.preventDefault(),this.entities.each(function(e){e.set("exclude",this.value)},this)},render:function(){return this.$el.text(this.text).attr("href","#"),this}})}),SortButtons:Backbone.View.extend({className:"header_row",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.sortorder_options=new t.DisplayTab.Models.SortOrder_Options,this.sortorder_options.on("change:selected",this.sortoption_changed,this),this.sortdirection_options=new t.DisplayTab.Models.SortDirection_Options([{value:"ASC",title:"Ascending",selected:"ASC"==this.displayed_gallery.get("order_direction")},{value:"DESC",title:"Descending",selected:"DESC"==this.displayed_gallery.get("order_direction")}]),this.sortdirection_options.on("change:selected",this.sortdirection_changed,this),this.displayed_gallery.on("change:order_by",this.displayed_gallery_order_changed,this),this.displayed_gallery.on("change.order_direction",this.displayed_gallery_order_dir_changed,this)},populate_sorting_fields:function(){var e=this.sources.selected().pop().get("returns");-1!==_.indexOf(e,"image")?this.fill_image_sortorder_options():this.fill_gallery_sortorder_options()},create_sortorder_option:function(e,i){return new t.DisplayTab.Models.SortOrder({name:e,title:i,value:e,selected:this.displayed_gallery.get("order_by")==e})},fill_image_sortorder_options:function(){this.sortorder_options.reset(),this.sortorder_options.push(this.create_sortorder_option("","None")),this.sortorder_options.push(this.create_sortorder_option("sortorder","Custom")),this.sortorder_options.push(this.create_sortorder_option(t.DisplayTab.instance.image_key,"Image ID")),this.sortorder_options.push(this.create_sortorder_option("filename","Filename")),this.sortorder_options.push(this.create_sortorder_option("alttext","Alt/Title Text")),this.sortorder_options.push(this.create_sortorder_option("imagedate","Date/Time"))},fill_gallery_sortorder_options:function(){this.sortorder_options.reset(),this.sortorder_options.push(this.create_sortorder_option("","None")),this.sortorder_options.push(this.create_sortorder_option("sortorder","Custom")),this.sortorder_options.push(this.create_sortorder_option("name","Name")),this.sortorder_options.push(this.create_sortorder_option("galdesc","Description"))},displayed_gallery_order_changed:function(e){this.sortorder_options.findWhere({value:e.get("order_by")}).set("selected",!0)},displayed_gallery_order_dir_changed:function(e){this.sortdirection_options.findWhere({value:e.get("order_direction")}).set("selected",!0)},sortoption_changed:function(t){this.sortorder_options.each(function(e){e.set("selected",t.get("value")==e.get("value"),{silent:!0})}),this.displayed_gallery.set("sortorder",[]);var i=t.get("value");0==t.get("value").length&&(i="sortorder"),this.displayed_gallery.set("order_by",i),this.entities.reset(),this.$el.find("a.sortorder").each(function(){var i=e(this);i.attr("value")==t.get("value")?i.addClass("selected"):i.removeClass("selected")})},sortdirection_changed:function(t){this.sortdirection_options.each(function(e){e.set("selected",t.get("value")==e.get("value"),{silent:!0})}),this.displayed_gallery.set("order_direction",t.get("value")),this.entities.reset(),this.$el.find("a.sortdirection").each(function(){var i=e(this);i.attr("value")==t.get("value")?i.addClass("selected"):i.removeClass("selected")})},render:function(){return this.$el.empty(),this.populate_sorting_fields(),this.$el.append('<span style="margin-right: 8px;">Sort By:</span>'),this.sortorder_options.each(function(e,t){var i=new this.Button({model:e,className:"sortorder"});this.$el.append(i.render().el),this.sortorder_options.length-1>t&&this.$el.append('<span class="separator">|</span>')},this),this.$el.append('<span style="margin: 0 8px 0 40px;">Order By:</span>'),this.sortdirection_options.each(function(e,t){var i=new this.Button({model:e,className:"sortdirection"});this.$el.append(i.render().el),this.sortdirection_options.length-1>t&&this.$el.append('<span class="separator">|</span>')},this),this},Button:Backbone.View.extend({tagName:"a",initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this)},events:{click:"clicked"},clicked:function(e){e.preventDefault(),this.model.set("selected",!0)},render:function(){return this.$el.prop({value:this.model.get("value"),href:"#"}),this.$el.text(this.model.get("title")),this.model.get("selected")&&this.$el.addClass("selected"),this}})}),EntityElement:Backbone.View.extend({tagName:"li",events:{drop:"item_dropped"},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.initTime=(new Date).getTime(),this.model.on("change",this.render,this),0==this.model.get("sortorder")&&this.model.set("sortorder",-1,{silent:!0}),this.id=this.model.get("id_field")+"_"+this.model.entity_id()},item_dropped:function(e,i){t.DisplayTab.instance.displayed_gallery.set("order_by","sortorder"),this.model.set("sortorder",i)},render:function(){this.$el.empty();var t=e("<div/>").addClass("preview_item"),i=e("<div/>").addClass("image_container"),s=this.model.alttext().replace(/\\&/g,"&").replace(/\\'/g,"'"),l=this.initTime;i.attr({title:s,style:"background-image: url('"+this.model.get("thumb_url")+"?timestamp"+l+"')"}),this.$el.append(t).addClass("ui-state-default"),t.append(i);var n=e("<div/>").addClass("exclude_container"),a=e("<label/>");a.append(igw_data.i18n.exclude_question);var r=new this.ExcludeCheckbox({model:this.model});return a.append(r.render().el),n.append(a),t.append(n),this},ExcludeCheckbox:Backbone.View.extend({tagName:"input",events:{change:"entity_excluded"},type_set:!1,entity_excluded:function(e){this.model.set("exclude",e.target.checked)},initialize:function(e){this.options=e||{},_.each(this.options,function(e,t){this[t]=e},this),this.model.on("change:exclude",this.render,this)},render:function(){return this.type_set||(this.$el.attr("type","checkbox"),this.type_set=!0),this.model.is_excluded()?this.$el.prop("checked",!0):this.$el.prop("checked",!1),this}})})}),t.DisplayTab.Views.GalleriesSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.galleries=t.DisplayTab.instance.galleries},render:function(){var i=new t.Views.Chosen({collection:this.galleries,placeholder:igw_data.i18n.select_gallery,multiple:!0,width:500}),s=e('<tr><td class="galleries_column"></td><td><label>'+igw_data.i18n.galleries+"</label></td></tr>");return this.$el.empty(),this.$el.append(s),this.$el.find(".galleries_column").append(i.render().el),this}}),t.DisplayTab.Views.AlbumsSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.albums=t.DisplayTab.instance.albums},render:function(){var e=new t.Views.Chosen({collection:this.albums,multiple:!0,placeholder:"Select an album",text_field:"name",width:500});return this.$el.empty(),this.$el.append('<tr><td class="albums_column"></td><td><label>'+igw_data.i18n.albums+"</label></td></tr>"),this.$el.find(".albums_column").append(e.render().el),this}}),t.DisplayTab.Views.TagsSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.tags=t.DisplayTab.instance.tags},render:function(){var e=new t.Views.Chosen({collection:this.tags,multiple:!0,placeholder:"Select a tag",text_field:"name",width:500});return this.$el.empty(),this.$el.append('<tr><td class="tags_column"></td><td><label>Tags</label></td></tr>'),this.$el.find(".tags_column").append(e.render().el),this}}),t.DisplayTab.Views.Recent_imagesSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.maximum_entity_count=t.DisplayTab.instance.displayed_gallery.get("maximum_entity_count"),this.displayed_gallery.set("container_ids",[])},render:function(){var t=this,i=e("<input/>").prop({type:"text",value:this.maximum_entity_count,name:"maximum_entity_count"});return i.change(function(){t.displayed_gallery.set("maximum_entity_count",e(this).val())}),this.$el.empty(),this.$el.append('<tr><td class="recent_images_column"></td><td><label># of Images To Display</label></td></tr>'),this.$el.find(".recent_images_column").append(i),this}}),t.DisplayTab.Views.Random_imagesSource=Backbone.View.extend({tagName:"tbody",initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.maximum_entity_count=t.DisplayTab.instance.displayed_gallery.get("maximum_entity_count"),this.displayed_gallery.set("container_ids",[])},render:function(){var t=this,i=e("<input/>").prop({type:"text",value:this.maximum_entity_count,name:"maximum_entity_count"});return i.change(function(){t.displayed_gallery.set("maximum_entity_count",e(this).val())}),this.$el.empty(),this.$el.append('<tr><td class="random_images_column"></td><td><label># of Images To Display</label></td></tr>'),this.$el.find(".random_images_column").append(i),this}}),t.DisplayTab.Views.SaveButton=Backbone.View.extend({el:"#save_displayed_gallery",errors_el:"#errors",displayed_gallery:null,events:{click:"clicked"},initialize:function(){this.displayed_gallery=t.DisplayTab.instance.displayed_gallery,this.entities=t.DisplayTab.instance.entities,this.render()},clicked:function(){this.set_display_settings();var e=this.displayed_gallery.to_shortcode();insert_into_editor(e,this.displayed_gallery.id?this.displayed_gallery.id:igw_data.shortcode_ref);var t=null;(t=location.toString().match(/editor=([^\&]+)/))&&t.length>=2&&top.tinyMCE.editors[t[1]].fire("ngg-inserted",{shortcode:e}),close_attach_to_post_window()},set_display_settings:function(){var t=this.displayed_gallery.get("display_type");if(t){var i=e("form[rel='"+t+"']"),s=i.data("defaults"),l=function(t){var i={};return e.each(t.serializeArray(),function(e,t){for(var l=t.name.split("["),n=i,a=0;a<l.length;a++){var r=l[a].replace(/\]$/,"");if(s[r]==t.value)return!0;n[r]||(a==l.length-1?n[r]=t.value:n[r]={}),n=n[r]}}),i}(i);this.displayed_gallery.set("display_settings",l[t])}},render:function(){return this.$el.css("z-index",1e3),this}}),t.DisplayTab.App=Backbone.View.extend({initialize:function(){if(this.displayed_gallery=new t.DisplayTab.Models.Displayed_Gallery(igw_data.displayed_gallery),this.original_displayed_gallery=new t.DisplayTab.Models.Displayed_Gallery(igw_data.displayed_gallery),this.galleries=new t.DisplayTab.Models.Gallery_Collection(igw_data.galleries),this.albums=new t.DisplayTab.Models.Album_Collection(igw_data.albums),this.tags=new t.DisplayTab.Models.Tag_Collection(igw_data.tags),this.sources=new t.DisplayTab.Models.Source_Collection(igw_data.sources),this.display_types=new t.DisplayTab.Models.Display_Type_Collection(igw_data.display_types),this.display_type_order_base=igw_data.display_type_priority_base,this.display_type_order_step=igw_data.display_type_priority_step,this.entities=new t.DisplayTab.Models.Entity_Collection,this.entities.extra_data.displayed_gallery=this.displayed_gallery,this.image_key=igw_data.image_primary_key,this.displayed_gallery.get("source")){if(this.displayed_gallery.get("source")){var i=this.sources.find_by_name_or_alias(this.displayed_gallery.get("source"));i&&i.set("selected",!0)}if(this.displayed_gallery.get("container_ids")&&_.each(this.displayed_gallery.get("container_ids"),function(e){var t=this[this.displayed_gallery.get("source")].find(function(t){return t.id==e},this);t&&t.set("selected",!0)},this),this.displayed_gallery.get("display_type")){var s=this.display_types.find_by_name_or_alias(this.displayed_gallery.get("display_type"));s&&(s.set("selected",!0),this.displayed_gallery.set("display_type",s.get("name")))}}if(collections=["galleries","albums","tags"],_.each(collections,function(e){this[e].on("selected",function(){this.update_selected_containers(e)},this)},this),this.display_types.on("change:selected",function(){this.displayed_gallery.set("display_type",this.display_types.selected_value())},this),this.sources.on("selected",function(){e("#save_displayed_gallery").prop("disabled",!0),setTimeout(function(){e("#save_displayed_gallery").prop("disabled",!1)},1e3),this.displayed_gallery.set("source",this.sources.selected_value()),this.sources.selected_value()!=this.original_displayed_gallery.get("source")?this.displayed_gallery.set("exclusions",this.entities.excluded_ids()):this.displayed_gallery.set("exclusions",this.original_displayed_gallery.get("exclusions")),"random_images"!=this.sources.selected_value()&&"recent_images"!=this.sources.selected_value()||this.displayed_gallery.set("maximum_entity_count",20),this.galleries.deselect_all(),this.albums.deselect_all(),this.tags.deselect_all();var t=this.display_types.selected(),i=this.sources.selected();t.length>0&&i.length>0&&(t=t[0],i=i[0],t.is_compatible_with_source(i)||this.display_types.deselect_all(),this.display_type_selector&&this.display_type_selector.render()),this.preview_area&&this.preview_area.render()},this),this.entities.on("change:exclude finished_fetching",function(){this.displayed_gallery.set("exclusions",this.entities.excluded_ids())},this),!this.displayed_gallery.get("source")){var l=this.sources.find_by_name_or_alias("galleries");l&&(l.set("selected",!0),this.sources.trigger("selected"))}if(window.Frame_Event_Publisher){var n=this;Frame_Event_Publisher.listen_for("attach_to_post:new_gallery",function(){n.galleries.reset(),n.galleries.fetch()}),Frame_Event_Publisher.listen_for("attach_to_post:manage_galleries attach_to_post:manage_images",function(e){n.galleries.reset(),n.galleries.fetch();var t=n.sources.selected().pop();t&&(_.indexOf(t.get("returns"),"image")>=0||_.indexOf(t.get("returns"),"gallery"))&&n.entities.reset()}),Frame_Event_Publisher.listen_for("attach_to_post:manage_album",function(e){n.albums.reset(),n.albums.fetch();var t=n.sources.selected().pop();t&&_.indexOf(t.get("returns"),"album")>=0&&n.entities.reset()}),Frame_Event_Publisher.listen_for("attach_to_post:manage_tags attach_to_post:manage_images",function(e){n.tags.reset(),n.tags.fetch();var t=n.sources.selected().pop();t&&(_.indexOf(t.get("returns"),"image")>=0||_.indexOf(t.get("returns"),"gallery"))&&n.entities.reset()}),Frame_Event_Publisher.listen_for("attach_to_post:thumbnail_modified",function(e){var t=n.sources.selected().pop(),i=e.image[e.image.id_field];if(t)if(_.indexOf(t.get("returns"),"image")>=0){var s=n.entities.find(function(e){return parseInt(e.entity_id())==parseInt(i)},this);s&&s.set("thumb_url",e.image.thumb_url)}else{var l=n.entities.find(function(e){return parseInt(e.get("previewpic"))==i},this);l&&l.trigger("change")}})}},update_selected_containers:function(e){this.displayed_gallery.set("container_ids",this[e].selected_ids())},render:function(){this.display_type_selector=new t.DisplayTab.Views.Display_Type_Selector,new t.DisplayTab.Views.Source_Config,new t.DisplayTab.Views.Slug_Config,this.preview_area=new t.DisplayTab.Views.Preview_Area,new t.DisplayTab.Views.SaveButton}}),t.DisplayTab.instance=new t.DisplayTab.App,t.DisplayTab.instance.render(),window.Ngg=t,e("span.tooltip, label.tooltip").tooltip()}); \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/iframely.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/iframely.css index 21a46fa1a..dc5280ff9 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/iframely.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/iframely.css @@ -43,6 +43,12 @@ html#iframely { width: 100%; } +#iframely #ngg_page_content, +#iframely #ngg_page_content .ngg_manage_galleries table th, +#iframely #ngg_page_content .ngg_manage_galleries table td { + font-size: 13px !important; +} + #iframely .ngg-admin .notice, #iframely .ngg-admin div.error, #iframely .ngg-admin div.updated { @@ -50,31 +56,36 @@ html#iframely { } #iframely #ngg_page_content .ngg_page_content_header { - display:none; + margin: 25px 0 -30px; + padding-left: 30px; +} + +#iframely #ngg_page_content .ngg_page_content_header img, +#iframely #ngg_page_content .ngg_page_content_header p { + display: none; } #iframely #ngg_page_content .ngg_page_content_menu { background: transparent; border: none; - padding: 10px 20px 10px 0; + padding: 10px 20px 10px 23px; float: none; height: 25px; - margin-top: 0; + margin-top: 16px; width: auto; - border-bottom: 1px solid #ddd; - background: #fafafa; } #iframely #ngg_page_content .ngg_page_content_menu a { border: none; - color: #888; + color: black; display: inline; font-size: 14px; - font-weight: 400; + font-weight: 300; text-decoration: none; line-height: 25px; - padding: 15px 20px; + padding: 6px; font-size: 12px; + margin-right: 10px; } #iframely #ngg_page_content .ngg_page_content_menu a:active { @@ -82,26 +93,10 @@ html#iframely { } #iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active { - background: transparent; - font-weight: bold; - color: #123248; - border-left: 1px solid #ddd; - border-right: 1px solid #ddd; - border-bottom: 2px solid #fff; - background: #fff; -} + font-weight: 500; + border-bottom: 3px solid #9ebc1b; -/*#iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after { - border-left: 8px solid transparent; - border-right: 8px solid transparent; - border-top: 6px solid #cad1d6; - border-top: 6px solid #123248; - content: " "; - position: absolute; - left: 45%; - display: inline; - top: 42px; -}*/ +} #iframely #ngg_page_content .ngg_page_content_menu a:before { display: none; @@ -109,7 +104,7 @@ html#iframely { #displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after, #displayed_tab #ngg_page_content .ngg_page_content_menu a:active:after { - display: none; + display: none !important; } #iframely #ngg_page_content .ngg_page_content_main { diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/iframely.min.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/iframely.min.css index d65353018..08bc9a872 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/iframely.min.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/iframely.min.css @@ -1 +1 @@ -#iframely,#iframely body,html#iframely{background:#fff!important}#iframely,#iframely body{padding:0;width:100%;height:100%}#iframely{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;background-position:center center;background-repeat:no-repeat;position:absolute;visibility:hidden}#iframely #wpbody-content{float:none;padding:0}#iframely #ngg_page_content.ngg_settings_page{background:#fff}#iframely #icon-nextgen-gallery,#iframely #ngg_page_content .ngg_page_content_header,#iframely .ngg-admin .notice,#iframely .ngg-admin div.error,#iframely .ngg-admin div.updated,#iframely h2{display:none}#iframely #wpwrap{background-color:#fcfcfc}#iframely #ngg_page_content{margin:0;width:100%}#iframely #ngg_page_content .ngg_page_content_menu{border:none;padding:10px 20px 10px 0;float:none;height:25px;margin-top:0;width:auto;border-bottom:1px solid #ddd;background:#fafafa}#iframely #ngg_page_content .ngg_page_content_menu a{border:none;color:#888;display:inline;font-weight:400;text-decoration:none;line-height:25px;padding:15px 20px;font-size:12px}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after,#displayed_tab #ngg_page_content .ngg_page_content_menu a:active:after,#iframely #ngg_page_content .ngg_page_content_main h3,#iframely #ngg_page_content .ngg_page_content_menu a:before{display:none}#iframely #ngg_page_content .ngg_page_content_menu a:active{background:0 0}#iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active{font-weight:700;color:#123248;border-left:1px solid #ddd;border-right:1px solid #ddd;border-bottom:2px solid #fff;background:#fff}#iframely #ngg_page_content .ngg_page_content_main{padding:30px;width:100%;box-shadow:none}#iframely #ngg_page_content .ngg_manage_albums .ngg_page_content_main h3,#iframely #ngg_page_content .ngg_manage_images .ngg_page_content_main h3,#iframely #ngg_page_content .ngg_manage_tags .ngg_page_content_main h3{display:block}#iframely #ngg_page_content .button-primary:active,#iframely #ngg_page_content .button-secondary:active,#iframely #ngg_page_content button:active{vertical-align:top}#iframely #ngg_page_content .ngg_manage_galleries .search-form{margin-top:-20px}#iframely #ngg_page_content .ngg_manage_galleries p.search-box{margin:0;position:relative;float:none;top:37px;left:460px;width:350px}#iframely #bulkaction,#iframely .search-box input[name="s"]{width:140px!important}#iframely .tablenav.top .displaying-num{display:none}#iframely .ngg_manage_galleries table #id{min-width:40px}#iframely .ngg_manage_galleries table #author{min-width:85px}#iframely .ngg_manage_galleries table #page_id{min-width:65px}#iframely .gallery_page_nggallery-manage-gallery .ui-dialog{height:auto!important;min-height:auto}@media (max-width:1140px){#iframely .plupload_buttons{display:inline;margin:0 0 0 10px}#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary,#iframely .gallery_page_ngg_addgallery #ngg_page_content button{width:130px!important}}@media (max-width:940px){#iframely .plupload_buttons{display:block;margin:10px 0 0 75px}#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary,#iframely .gallery_page_ngg_addgallery #ngg_page_content button{width:201px!important}}@media (max-width:800px){#iframely .ngg-admin #wpbody{padding:0}#iframely #ngg_page_content .ngg_page_content_menu{padding:5px 0 0;background:0 0;border:none}#iframely #ngg_page_content .ngg_page_content_menu a{display:block;width:100%;float:left;padding:0;text-align:center;box-sizing:border-box}#iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active,#iframely #ngg_page_content .ngg_page_content_menu a:active{background:0 0}#iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after{display:none}#iframely #ngg_page_content .ngg_page_content_menu a:last-of-type{padding-bottom:5px}#iframely .plupload_buttons{margin-left:0}#iframely #ngg_page_content .plupload_droptext{line-height:60px}#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary,#iframely .gallery_page_ngg_addgallery #ngg_page_content button{width:100%!important;margin:4px 0;display:block}} \ No newline at end of file +#iframely,#iframely body,html#iframely{background:#fff!important}#iframely #icon-nextgen-gallery,#iframely #ngg_page_content .ngg_page_content_header img,#iframely #ngg_page_content .ngg_page_content_header p,#iframely .ngg-admin .notice,#iframely .ngg-admin div.error,#iframely .ngg-admin div.updated,#iframely h2{display:none}#iframely,#iframely body{padding:0;width:100%;height:100%}#iframely{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;background-position:center center;background-repeat:no-repeat;position:absolute;visibility:hidden}#iframely #wpbody-content{float:none;padding:0}#iframely #ngg_page_content.ngg_settings_page{background:#fff}#iframely #wpwrap{background-color:#fcfcfc}#iframely #ngg_page_content{margin:0;width:100%}#iframely #ngg_page_content,#iframely #ngg_page_content .ngg_manage_galleries table td,#iframely #ngg_page_content .ngg_manage_galleries table th{font-size:13px!important}#iframely #ngg_page_content .ngg_page_content_header{margin:25px 0 -30px;padding-left:30px}#iframely #ngg_page_content .ngg_page_content_menu{background:0 0;border:none;padding:10px 20px 10px 23px;float:none;height:25px;margin-top:16px;width:auto}#iframely #ngg_page_content .ngg_page_content_menu a{border:none;color:#000;display:inline;font-weight:300;text-decoration:none;line-height:25px;padding:6px;font-size:12px;margin-right:10px}#iframely #ngg_page_content .ngg_page_content_menu a:active{background:0 0}#iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active{font-weight:500;border-bottom:3px solid #9ebc1b}#iframely #ngg_page_content .ngg_page_content_menu a:before{display:none}#displayed_tab #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after,#displayed_tab #ngg_page_content .ngg_page_content_menu a:active:after{display:none!important}#iframely #ngg_page_content .ngg_page_content_main{padding:30px;width:100%;box-shadow:none}#iframely #ngg_page_content .ngg_page_content_main h3{display:none}#iframely #ngg_page_content .ngg_manage_albums .ngg_page_content_main h3,#iframely #ngg_page_content .ngg_manage_images .ngg_page_content_main h3,#iframely #ngg_page_content .ngg_manage_tags .ngg_page_content_main h3{display:block}#iframely #ngg_page_content .button-primary:active,#iframely #ngg_page_content .button-secondary:active,#iframely #ngg_page_content button:active{vertical-align:top}#iframely #ngg_page_content .ngg_manage_galleries .search-form{margin-top:-20px}#iframely #ngg_page_content .ngg_manage_galleries p.search-box{margin:0;position:relative;float:none;top:37px;left:460px;width:350px}#iframely #bulkaction,#iframely .search-box input[name="s"]{width:140px!important}#iframely .tablenav.top .displaying-num{display:none}#iframely .ngg_manage_galleries table #id{min-width:40px}#iframely .ngg_manage_galleries table #author{min-width:85px}#iframely .ngg_manage_galleries table #page_id{min-width:65px}#iframely .gallery_page_nggallery-manage-gallery .ui-dialog{height:auto!important;min-height:auto}@media (max-width:1140px){#iframely .plupload_buttons{display:inline;margin:0 0 0 10px}#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary,#iframely .gallery_page_ngg_addgallery #ngg_page_content button{width:130px!important}}@media (max-width:940px){#iframely .plupload_buttons{display:block;margin:10px 0 0 75px}#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary,#iframely .gallery_page_ngg_addgallery #ngg_page_content button{width:201px!important}}@media (max-width:800px){#iframely .ngg-admin #wpbody{padding:0}#iframely #ngg_page_content .ngg_page_content_menu{padding:5px 0 0;background:0 0;border:none}#iframely #ngg_page_content .ngg_page_content_menu a{display:block;width:100%;float:left;padding:0;text-align:center;box-sizing:border-box}#iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active,#iframely #ngg_page_content .ngg_page_content_menu a:active{background:0 0}#iframely #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after{display:none}#iframely #ngg_page_content .ngg_page_content_menu a:last-of-type{padding-bottom:5px}#iframely .plupload_buttons{margin-left:0}#iframely #ngg_page_content .plupload_droptext{line-height:60px}#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-primary,#iframely .gallery_page_ngg_addgallery #ngg_page_content .button-secondary,#iframely .gallery_page_ngg_addgallery #ngg_page_content button{width:100%!important;margin:4px 0;display:block}} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/igw_button.png b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/static/igw_button.png index f5cd550916542ef0c32df047784ae881f225400b..29e0c6cff5043a4754777eea326f06a1023d22c6 100644 GIT binary patch delta 14132 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 W-95v*_$31a1B0ilpUXO@geCxAmO6a^ delta 29981 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 Dd-U&x diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php index c5e3f7fda..dabbb782a 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/attach_to_post/templates/display_tab.php @@ -31,7 +31,7 @@ <input type="button" class="button button-primary button-large ngg_display_tab_save" id="save_displayed_gallery" value="<?php if ($displayed_gallery->id()) { _e('Save Changes', 'nggallery'); } else { _e('Insert Gallery', 'nggallery'); } ?>"/> </p> <div class="ngg_igw_video"> - <p class="ngg_igw_video_open"><?php esc_html_e('Need a quick tutorial?', 'nggallery'); ?></p> + <p class="ngg_igw_video_open button-primary"><?php esc_html_e('Need a quick tutorial?', 'nggallery'); ?></p> <div class="ngg_igw_video_inner"> <span class="ngg_igw_video_close"><?php esc_html_e('Click to Close', 'nggallery'); ?></span> </div> diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/datamapper/module.datamapper.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/datamapper/module.datamapper.php index ccbe23dc7..e6caf99c3 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/datamapper/module.datamapper.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/datamapper/module.datamapper.php @@ -14,7 +14,7 @@ class M_DataMapper extends C_Base_Module 'photocrati-datamapper', 'DataMapper', 'Provides a database abstraction layer following the DataMapper pattern', - '3.1.4.2', + '3.1.19', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/datamapper/package.module.datamapper.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/datamapper/package.module.datamapper.php index b7fa1ceae..9ce9f857f 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/datamapper/package.module.datamapper.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/datamapper/package.module.datamapper.php @@ -673,6 +673,10 @@ class C_DataMapper_Driver_Base extends C_Component return $default; } } + function flush_query_cache() + { + $this->_cache = array(); + } } /** * Provides instance methods for C_CustomTable_DataMapper_Driver @@ -1567,6 +1571,7 @@ class Mixin_DataMapper_Driver_Base extends Mixin { $retval = FALSE; $model = $entity; + $this->flush_query_cache(); // Attempt to use something else, most likely an associative array // TODO: Support assocative arrays. The trick is to support references // with dynamic calls using __call() and call_user_func_array(). @@ -1583,6 +1588,7 @@ class Mixin_DataMapper_Driver_Base extends Mixin unset($saved_entity->_errors); $retval = $this->object->_save_entity($saved_entity); } + $this->flush_query_cache(); // We always return the same type of entity that we given if (get_class($entity) == 'stdClass') { $model->get_entity(); @@ -1787,6 +1793,10 @@ class C_DataMapper_Model extends C_Component $this->_stdObject->__defaults_set = TRUE; } } + function jsonSerialize() + { + return $this->get_entity(); + } function has_default_values() { return isset($this->_stdObject->__defaults_set) && $this->_stdObject->__defaults_set == TRUE; diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/dynamic_thumbnails/module.dynamic_thumbnails.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/dynamic_thumbnails/module.dynamic_thumbnails.php index a40925749..4277dae86 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/dynamic_thumbnails/module.dynamic_thumbnails.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/dynamic_thumbnails/module.dynamic_thumbnails.php @@ -20,7 +20,7 @@ class M_Dynamic_Thumbnails extends C_Base_Module 'photocrati-dynamic_thumbnails', 'Dynamic Thumbnails', 'Adds support for dynamic thumbnails', - '3.0.0', + '3.1.8', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' @@ -29,11 +29,6 @@ class M_Dynamic_Thumbnails extends C_Base_Module C_Photocrati_Installer::add_handler($this->module_id, 'C_Dynamic_Thumbnails_Installer'); } - function _register_adapters() - { - $this->get_registry()->add_adapter('I_GalleryStorage_Driver', 'A_Dynamic_Thumbnails_Storage_Driver'); - } - function _register_utilities() { $this->get_registry()->add_utility('I_Dynamic_Thumbnails_Manager', 'C_Dynamic_Thumbnails_Manager'); @@ -63,10 +58,8 @@ class M_Dynamic_Thumbnails extends C_Base_Module function get_type_list() { return array( - 'A_Dynamic_Thumbnails_Storage_Driver' => 'adapter.dynamic_thumbnails_storage_driver.php', 'C_Dynamic_Thumbnails_Installer' => 'class.dynamic_thumbnails_installer.php', - 'C_Dynamic_Thumbnails_Controller' => 'class.dynamic_thumbnails_controller.php', - 'C_Dynamic_Thumbnails_Manager' => 'class.dynamic_thumbnails_manager.php' + 'C_Dynamic_Thumbnails_Controller' => 'class.dynamic_thumbnails_controller.php' ); } } diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/dynamic_thumbnails/package.module.dynamic_thumbnails.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/dynamic_thumbnails/package.module.dynamic_thumbnails.php index bed66ba44..a95cd1b32 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/dynamic_thumbnails/package.module.dynamic_thumbnails.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/dynamic_thumbnails/package.module.dynamic_thumbnails.php @@ -1,93 +1,4 @@ <?php -/** - * Class A_Dynamic_Thumbnails_Storage_Driver - * @mixin C_GalleryStorage_Driver_Base - * @adapts I_GalleryStorage_Driver - */ -class A_Dynamic_Thumbnails_Storage_Driver extends Mixin -{ - function get_image_abspath($image, $size = FALSE, $check_existance = FALSE) - { - $retval = NULL; - $dynthumbs = C_Dynamic_Thumbnails_Manager::get_instance(); - if ($dynthumbs && $dynthumbs->is_size_dynamic($size)) { - // If we have the id, get the actual image entity - if (is_numeric($image)) { - $image = $this->object->_image_mapper->find($image); - } - // Ensure we have the image entity - user could have passed in an - // incorrect id - if (is_object($image)) { - if ($folder_path = $this->object->get_cache_abspath($image->galleryid)) { - $params = $dynthumbs->get_params_from_name($size, true); - $image_filename = $dynthumbs->get_image_name($image, $params); - $image_path = implode(DIRECTORY_SEPARATOR, array(rtrim($folder_path, "\\/"), $image_filename)); - if ($check_existance) { - if (@file_exists($image_path)) { - $retval = $image_path; - } - } else { - $retval = $image_path; - } - } - } - } else { - $retval = $this->call_parent('get_image_abspath', $image, $size, $check_existance); - } - return $retval; - } - function get_image_url($image, $size = 'full', $check_existance = FALSE) - { - $retval = NULL; - $abspath = FALSE; - $dynthumbs = C_Dynamic_Thumbnails_Manager::get_instance(); - if ($dynthumbs && $dynthumbs->is_size_dynamic($size)) { - $abspath = $this->object->get_image_abspath($image, $size, true); - // If abspath is NULL, then we assume we're dealing with a dynamic image - if ($abspath == null) { - $params = $dynthumbs->get_params_from_name($size, true); - $retval = $dynthumbs->get_image_url($image, $params); - } else { - $check_existance = FALSE; - } - } - if ($retval == null) { - $retval = $this->call_parent('get_image_url', $image, $size, $check_existance, $abspath); - } - // Try generating the thumbnail - if ($retval == null) { - $params = array('watermark' => false, 'reflection' => false, 'crop' => true); - $result = $this->generate_image_size($image, $size, $params); - if ($result) { - $retval = $this->call_parent('get_image_url', $image, $size, $check_existance); - } - } - return $retval; - } - function get_image_dimensions($image, $size = 'full') - { - $retval = $this->call_parent('get_image_dimensions', $image, $size); - if ($retval == null) { - $dynthumbs = C_Dynamic_Thumbnails_Manager::get_instance(); - if ($dynthumbs && $dynthumbs->is_size_dynamic($size)) { - $new_dims = $this->object->calculate_image_size_dimensions($image, $size); - $retval = array('width' => $new_dims['real_width'], 'height' => $new_dims['real_height']); - } - } - return $retval; - } - function get_image_size_params($image, $size, $params = null, $skip_defaults = false) - { - $dynthumbs = C_Dynamic_Thumbnails_Manager::get_instance(); - if ($dynthumbs && $dynthumbs->is_size_dynamic($size)) { - $named_params = $dynthumbs->get_params_from_name($size, true); - foreach ($named_params as $param_name => $param_value) { - $params[$param_name] = $param_value; - } - } - return $this->call_parent('get_image_size_params', $image, $size, $params, $skip_defaults); - } -} /** * Class C_Dynamic_Thumbnails_Controller * @implements I_Dynamic_Thumbnails_Controller @@ -139,7 +50,7 @@ class C_Dynamic_Thumbnails_Controller extends C_MVC_Controller $hash = wp_hash($uri_plain); if (strpos($uri, $hash) === false) { $valid = false; - $filename = $this->object->find_static_file('invalid_image.png'); + $filename = M_Static_Assets::get_static_abspath('photocrati-dynamic_thumbnails#invalid_image.png'); $this->set_content_type('image/png'); readfile($filename); $this->render(); @@ -150,369 +61,4 @@ class C_Dynamic_Thumbnails_Controller extends C_MVC_Controller } } } -} -class Mixin_Dynamic_Thumbnails_Manager extends Mixin -{ - function get_route_name() - { - return C_NextGen_Settings::get_instance()->get('dynamic_thumbnail_slug'); - } - function _get_params_sanitized($params) - { - if (isset($params['rotation'])) { - $rotation = intval($params['rotation']); - if ($rotation && in_array(abs($rotation), array(90, 180, 270))) { - $rotation = $rotation % 360; - if ($rotation < 0) { - $rotation = 360 - $rotation; - } - $params['rotation'] = $rotation; - } else { - unset($params['rotation']); - } - } - if (isset($params['flip'])) { - $flip = strtolower($params['flip']); - if (in_array($flip, array('h', 'v', 'hv'))) { - $params['flip'] = $flip; - } else { - unset($params['flip']); - } - } - return $params; - } - function get_uri_from_params($params) - { - $params = $this->object->_get_params_sanitized($params); - $image = isset($params['image']) ? $params['image'] : null; - $image_id = is_scalar($image) || is_null($image) ? (int) $image : $image->pid; - $image_width = isset($params['width']) ? $params['width'] : null; - $image_height = isset($params['height']) ? $params['height'] : null; - $image_quality = isset($params['quality']) ? $params['quality'] : null; - $image_type = isset($params['type']) ? $params['type'] : null; - $image_crop = isset($params['crop']) ? $params['crop'] : null; - $image_watermark = isset($params['watermark']) ? $params['watermark'] : null; - $image_rotation = isset($params['rotation']) ? $params['rotation'] : null; - $image_flip = isset($params['flip']) ? $params['flip'] : null; - $image_reflection = isset($params['reflection']) ? $params['reflection'] : null; - $uri = null; - $uri .= '/'; - $uri .= $this->object->get_route_name() . '/'; - $uri .= strval($image_id) . '/'; - $uri .= strval($image_width) . 'x' . strval($image_height); - if ($image_quality != null) { - $uri .= 'x' . strval($image_quality); - } - $uri .= '/'; - if ($image_type != null) { - $uri .= $image_type . '/'; - } - if ($image_crop) { - $uri .= 'crop/'; - } - if ($image_watermark) { - $uri .= 'watermark/'; - } - if ($image_rotation) { - $uri .= 'rotation-' . $image_rotation . '/'; - } - if ($image_flip) { - $uri .= 'flip-' . $image_flip . '/'; - } - if ($image_reflection) { - $uri .= 'reflection/'; - } - return $uri; - } - function get_image_uri($image, $params) - { - $params['image'] = $image; - $uri = $this->object->get_uri_from_params($params); - if (substr($uri, -1) != '/') { - $uri .= '/'; - } - $uri .= wp_hash($uri) . '/'; - return $uri; - } - function get_image_url($image, $params) - { - return C_Router::get_instance()->get_url($this->object->get_image_uri($image, $params), FALSE, 'root'); - } - function get_params_from_uri($uri) - { - $regex = '/\\/?' . $this->object->get_route_name() . '\\/(\\d+)(?:\\/(.*))?/'; - $match = null; - // XXX move this URL clean up to I_Router? - $uri = preg_replace('/\\/index.php\\//', '/', $uri, 1); - $uri = trim($uri, '/'); - if (@preg_match($regex, $uri, $match) > 0) { - $image_id = $match[1]; - $uri_args = isset($match[2]) ? explode('/', $match[2]) : array(); - $params = array('image' => $image_id); - foreach ($uri_args as $uri_arg) { - $uri_arg_set = explode('-', $uri_arg); - $uri_arg_name = array_shift($uri_arg_set); - $uri_arg_value = $uri_arg_set ? array_shift($uri_arg_set) : null; - $size_match = null; - if ($uri_arg == 'watermark') { - $params['watermark'] = true; - } else { - if ($uri_arg_name == 'rotation') { - $params['rotation'] = $uri_arg_value; - } else { - if ($uri_arg_name == 'flip') { - $params['flip'] = $uri_arg_value; - } else { - if ($uri_arg == 'reflection') { - $params['reflection'] = true; - } else { - if ($uri_arg == 'crop') { - $params['crop'] = true; - } else { - if (in_array(strtolower($uri_arg), array('gif', 'jpg', 'png'))) { - $params['type'] = $uri_arg; - } else { - if (preg_match('/(\\d+)x(\\d+)(?:x(\\d+))?/i', $uri_arg, $size_match) > 0) { - $params['width'] = $size_match[1]; - $params['height'] = $size_match[2]; - if (isset($size_match[3])) { - $params['quality'] = $size_match[3]; - } - } - } - } - } - } - } - } - } - return $this->object->_get_params_sanitized($params); - } - return null; - } - function _get_name_prefix_list() - { - return array('id' => 'nggid0', 'size' => 'ngg0dyn-', 'flags' => '00f0', 'flag' => array('w0' => 'watermark', 'c0' => 'crop', 'r1' => 'rotation', 'f1' => 'flip', 'r0' => 'reflection', 't0' => 'type'), 'flag_len' => 2, 'max_value_length' => 15); - } - function get_name_from_params($params, $only_size_name = false, $id_in_name = true) - { - $prefix_list = $this->object->_get_name_prefix_list(); - $id_prefix = $prefix_list['id']; - $size_prefix = $prefix_list['size']; - $flags_prefix = $prefix_list['flags']; - $flags = $prefix_list['flag']; - $max_value_length = $prefix_list['max_value_length']; - $params = $this->object->_get_params_sanitized($params); - $image = isset($params['image']) ? $params['image'] : null; - $image_width = isset($params['width']) ? $params['width'] : null; - $image_height = isset($params['height']) ? $params['height'] : null; - $image_quality = isset($params['quality']) ? $params['quality'] : null; - $extension = null; - $name = null; - // if $only_size_name is false then we include the file name and image id for the image - if (!$only_size_name) { - if (is_int($image)) { - $imap = C_Image_Mapper::get_instance(); - $image = $imap->find($image); - } - if ($image != null) { - // this is used to remove the extension and then add it back at the end of the name - $extension = M_I18n::mb_pathinfo($image->filename, PATHINFO_EXTENSION); - if ($extension != null) { - $extension = '.' . $extension; - } - $name .= M_I18n::mb_basename($image->filename); - $name .= '-'; - if ($id_in_name) { - $image_id = strval($image->pid); - $id_len = min($max_value_length, strlen($image_id)); - $id_len_hex = dechex($id_len); - // sanity check, should never occurr if $max_value_length is not messed up, ensure only 1 character is used to encode length or else skip parameter - if (strlen($id_len_hex) == 1) { - $name .= $id_prefix . $id_len . substr($image_id, 0, $id_len); - $name .= '-'; - } - } - } - } - $name .= $size_prefix; - $name .= strval($image_width) . 'x' . strval($image_height); - if ($image_quality != null) { - $name .= 'x' . $image_quality; - } - $name .= '-'; - $name .= $flags_prefix; - foreach ($flags as $flag_prefix => $flag_name) { - $flag_value = 0; - if (isset($params[$flag_name])) { - $flag_value = $params[$flag_name]; - if (!is_string($flag_value)) { - // only strings or ints allowed, sprintf is required because intval(0) returns '' and not '0' - $flag_value = intval($flag_value); - $flag_value = sprintf('%d', $flag_value); - } - } - $flag_value = strval($flag_value); - $flag_len = min($max_value_length, strlen($flag_value)); - $flag_len_hex = dechex($flag_len); - // sanity check, should never occurr if $max_value_length is not messed up, ensure only 1 character is used to encode length or else skip parameter - if (strlen($flag_len_hex) == 1) { - $name .= $flag_prefix . $flag_len . substr($flag_value, 0, $flag_len); - } - } - $name .= $extension; - return $name; - } - function get_size_name($params) - { - $name = $this->object->get_name_from_params($params, true); - return $name; - } - function get_image_name($image, $params) - { - $params['image'] = $image; - $name = $this->object->get_name_from_params($params); - return $name; - } - function get_params_from_name($name, $is_only_size_name = false) - { - $prefix_list = $this->object->_get_name_prefix_list(); - $id_prefix = $prefix_list['id']; - $size_prefix = $prefix_list['size']; - $flags_prefix = $prefix_list['flags']; - $max_value_length = $prefix_list['max_value_length']; - $size_name = null; - $id_name = null; - $params = array(); - if (!$is_only_size_name) { - $extension = M_I18n::mb_pathinfo($name, PATHINFO_EXTENSION); - if ($extension != null) { - $extension = '.' . $extension; - } - $name = M_I18n::mb_basename($name); - } - $size_index = strrpos($name, $size_prefix); - if ($size_index > 0 || $size_index === 0) { - // check if name contains dynamic size/params info by looking for prefix - $size_name = substr($name, $size_index); - } - if (!$is_only_size_name) { - // name should contain the image id, search for prefix - $id_index = strrpos($name, $id_prefix); - if ($id_index > 0 || $id_index === 0) { - if ($size_index > 0 && $size_index > $id_index) { - $id_name = substr($name, $id_index, $size_index - $id_index); - } else { - $id_name = substr($name, $id_index); - } - } - } - // Double check we got a correct dynamic size/params string - if (substr($size_name, 0, strlen($size_prefix)) == $size_prefix) { - $flags = $prefix_list['flag']; - // get the length of the flag id (the key in the $flags array) in the string (how many characters to consume) - $flag_id_len = $prefix_list['flag_len']; - $params_str = substr($size_name, strlen($size_prefix)); - $params_parts = explode('-', $params_str); - // $param_part is a single param, separated by '-' - foreach ($params_parts as $param_part) { - // Parse WxHxQ - Q=quality - $param_size = explode('x', $param_part); - $param_size_count = count($param_size); - if (substr($param_part, 0, strlen($flags_prefix)) == $flags_prefix) { - /* Set flags, using $flags keys as prefixes */ - // move string pointer up (after the main flags prefix) - $param_flags = substr($param_part, strlen($flags_prefix)); - $param_flags_len = strlen($param_flags); - $flags_todo = $flags; - while (true) { - // ensure we don't run into an infinite loop ;) - if (count($flags_todo) == 0 || strlen($param_flags) == 0) { - break; - } - // get the flag prefix (a key in the $flags array) using flag id length - $flag_prefix = substr($param_flags, 0, $flag_id_len); - // move string pointer up (after the single flag prefix) - $param_flags = substr($param_flags, $flag_id_len); - // get the length of the flag value in the string (how many characters to consume) - // flag value length is stored in a single hexadecimal character next to the flag prefix - $flag_value_len = min(hexdec(substr($param_flags, 0, 1)), min($max_value_length, strlen($param_flags) - 1)); - // get the flag value - $flag_value = substr($param_flags, 1, $flag_value_len); - // move string pointer up (after the entire flag) - $param_flags = substr($param_flags, $flag_value_len + 1); - // make sure the flag is supported - if (isset($flags[$flag_prefix])) { - $flag_name = $flags[$flag_prefix]; - if (is_numeric($flag_value)) { - // convert numerical flags to integers - $flag_value = intval($flag_value); - } - $params[$flag_name] = $flag_value; - if (isset($flags_todo[$flag_prefix])) { - unset($flags_todo[$flag_prefix]); - } - } else { - // XXX unknown flag? - } - } - } else { - if ($param_size_count == 2 || $param_size_count == 3) { - // Set W H Q - $params['width'] = intval($param_size[0]); - $params['height'] = intval($param_size[1]); - if (isset($param_size[2]) && intval($param_size[2]) > 0) { - $params['quality'] = intval($param_size[2]); - } - } - } - } - } - // Double check we got a correct id string - if (substr($id_name, 0, strlen($id_prefix)) == $id_prefix) { - // move string pointer up (after the prefix) - $id_name = substr($id_name, strlen($id_prefix)); - // get the length of the image id in the string (how many characters to consume) - $id_len = min(hexdec(substr($id_name, 0, 1)), min($max_value_length, strlen($id_name) - 1)); - // get the id based on old position and id length - $image_id = intval(substr($id_name, 1, $id_len)); - if ($image_id > 0) { - $params['image'] = $image_id; - } - } - return $this->object->_get_params_sanitized($params); - } - function is_size_dynamic($name, $is_only_size_name = false) - { - $params = $this->object->get_params_from_name($name, $is_only_size_name); - if (isset($params['width']) && isset($params['height'])) { - return true; - } - return false; - } -} -/** - * Class C_Dynamic_Thumbnails_Manager - * @mixin Mixin_Dynamic_Thumbnails_Manager - */ -class C_Dynamic_Thumbnails_Manager extends C_Component -{ - static $_instances = array(); - function define($context = FALSE) - { - parent::define($context); - $this->implement('I_Dynamic_Thumbnails_Manager'); - $this->add_mixin('Mixin_Dynamic_Thumbnails_Manager'); - } - /** - * @param bool|string $context - * @return C_Dynamic_Thumbnails_Manager - */ - static function get_instance($context = False) - { - if (!isset(self::$_instances[$context])) { - self::$_instances[$context] = new C_Dynamic_Thumbnails_Manager($context); - } - return self::$_instances[$context]; - } } \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/fs/module.fs.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/fs/module.fs.php index 360d69a21..e1f189f75 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/fs/module.fs.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/fs/module.fs.php @@ -19,7 +19,7 @@ class M_Fs extends C_Base_Module 'photocrati-fs', 'Filesystem', 'Provides a filesystem abstraction layer for Pope modules', - '3.0.0', + '3.1.8', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/fs/package.module.fs.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/fs/package.module.fs.php index dba1c05fd..57824e947 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/fs/package.module.fs.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/fs/package.module.fs.php @@ -47,41 +47,11 @@ class Mixin_Fs_Instance_Methods extends Mixin * Returns a calculated path to a file * @param string $path * @param string|false $module (optional) - * @param bool $relpath (optional) - * @return string - */ - function get_abspath($path, $module = FALSE, $relpath = FALSE) - { - // Wel'l assume that we're to calculate the path relative to - // the site document root - $retval = $path; - if (strpos($path, $this->get_document_root()) === FALSE) { - $retval = $this->join_paths($this->get_document_root(), $path); - } - // If a module is provided, then we should calculate the path - // relative to the module directory - if ($module) { - if ($module_dir = $this->get_registry()->get_module_dir($module)) { - $retval = $this->join_paths($module_dir, $path); - } else { - $retval = $this->join_path($this->get_document_root(), $module, $path); - } - } - // Return the calculated path relative to the document root - if ($relpath) { - $retval = $this->object->remove_path_segment($retval, $this->get_document_root()); - } - return $retval; - } - /** - * Returns a calculated relpath to a particular file - * @param string $path - * @param string|false $module (optional) * @return string */ - function get_relpath($path, $module = FALSE) + function get_abspath($path, $module = FALSE) { - return $this->object->get_abspath($path, $module, TRUE); + return M_Static_Assets::get_static_abspath($path, $module); } /** * Removes a path segment from a url or filesystem path @@ -104,41 +74,25 @@ class Mixin_Fs_Instance_Methods extends Mixin * @param array $search_paths (optional) * @return string|NULL */ - function find_abspath($path, $module = FALSE, $relpath = FALSE, $search_paths = array()) + function find_abspath($path, $module = FALSE) { - $retval = NULL; - // Ensure that we weren't passed a module id in the path - if (!$module) { - list($path, $module) = $this->object->parse_formatted_path($path); - } - if (@file_exists($path)) { - $retval = $path; - } else { - // Ensure that we know where to search for the file - if (!$search_paths) { - $search_paths = $this->object->get_search_paths($path, $module); - } - // See if the file is located under one of the search paths directly - foreach ($search_paths as $dir) { - if (@file_exists($this->join_paths($dir, $path))) { - $retval = $this->join_paths($dir, $path); - break; - } - } - // Use rglob to find the file - if (!$retval) { - foreach ($search_paths as $dir) { - if ($retval = $this->object->_rglob($dir, $path)) { - break; - } - } - } - // Return the relative path if we're to do so - if ($relpath) { - $retval = $this->object->remove_path_segment($retval, $this->get_document_root()); + if (strpos($path, '#') !== FALSE) { + $parts = explode("#", $path); + if (count($parts) === 2) { + $path = $parts[1]; + $module = $parts[0]; + } else { + $path = $parts[0]; } } - return $retval; + if (!$module) { + die(sprintf("find_abspath requires a path and module. Received %s and %s", $path, strval($module))); + } + $module_dir = C_Component_Registry::get_instance()->get_module_dir($module); + $path = preg_replace("#^/{1,2}#", "", $path, 1); + $retval = path_join($module_dir, $path); + // Adjust for windows paths + return wp_normalize_path($retval); } /** * Returns a list of directories to search for a particular filename @@ -245,6 +199,7 @@ class Mixin_Fs_Instance_Methods extends Mixin } /** * Joins multiple path segments together + * @deprecated use path_join() instead when you can * @return string */ function join_paths() @@ -337,7 +292,7 @@ class Mixin_Fs_Instance_Methods extends Mixin break; case 'gallery': case 'galleries': - $root_type = defined('NGG_GALLERY_ROOT_TYPE') ? NGG_GALLERY_ROOT_TYPE : 'site'; + $root_type = NGG_GALLERY_ROOT_TYPE; if ($root_type == 'content') { $retval = WP_CONTENT_DIR; } else { @@ -347,14 +302,10 @@ class Mixin_Fs_Instance_Methods extends Mixin default: $retval = $this->_document_root; } - if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { - $retval = str_replace('/', DIRECTORY_SEPARATOR, $retval); - } - return $retval; + return wp_normalize_path($retval); } function get_absolute_path($path) { - $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path); $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen'); $absolutes = array(); foreach ($parts as $part) { @@ -367,7 +318,7 @@ class Mixin_Fs_Instance_Methods extends Mixin $absolutes[] = $part; } } - return implode(DIRECTORY_SEPARATOR, $absolutes); + return wp_normalize_path(implode(DIRECTORY_SEPARATOR, $absolutes)); } /** * Sets the document root for this application diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/lang/nggallery-da_DK.po b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/lang/nggallery-da_DK.po index 9d08822b3..41bf73fa2 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/lang/nggallery-da_DK.po +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/lang/nggallery-da_DK.po @@ -3499,10 +3499,10 @@ msgstr "Galleriet ID =%s findes ikke." #. Description of the plugin msgid "" "The most popular gallery plugin for WordPress and one of the most popular " -"plugins of all time with over 24 million downloads." +"plugins of all time with over 25 million downloads." msgstr "" "Den mest populære galleri plugin til WordPress og et af de mest populære " -"plugins igennem tiden med over 24 millioner downloads." +"plugins igennem tiden med over 25 millioner downloads." #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:290 msgid "The most powerful gallery system ever built for WordPress. " diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/lang/nggallery-sv_SE.po b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/lang/nggallery-sv_SE.po index 27bf045da..bf4489688 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/lang/nggallery-sv_SE.po +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/lang/nggallery-sv_SE.po @@ -2431,8 +2431,8 @@ msgid "Server Settings" msgstr "Serverinställningar" #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:97 -msgid "NextGEN Gallery is one of the most popular WordPress plugins of all time with over 24 million downloads." -msgstr "NextGEN Gallery är en av de mest populära WordPress-tilläggen genom tiderna med över 24 miljoner nedladdningar." +msgid "NextGEN Gallery is one of the most popular WordPress plugins of all time with over 25 million downloads." +msgstr "NextGEN Gallery är en av de mest populära WordPress-tilläggen genom tiderna med över 25 miljoner nedladdningar." # Missed by NextGEN, translated string is displayed. #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:97 @@ -3222,8 +3222,8 @@ msgid "https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/" msgstr "https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/" #. Description of the plugin/theme -msgid "The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 24 million downloads." -msgstr "Det mest populära galleri-tillägget för WordPress och ett av de mest populära tillägg genom tiderna med över 24 miljoner nedladdningar." +msgid "The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 25 million downloads." +msgstr "Det mest populära galleri-tillägget för WordPress och ett av de mest populära tillägg genom tiderna med över 25 miljoner nedladdningar." #. Author of the plugin/theme msgid "Imagely" diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/lang/nggallery.po b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/lang/nggallery.po index a0afdeec6..db42cc08f 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/lang/nggallery.po +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/lang/nggallery.po @@ -2446,7 +2446,7 @@ msgid "Server Settings" msgstr "" #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:97 -msgid "NextGEN Gallery is one of the most popular WordPress plugins of all time with over 24 million downloads." +msgid "NextGEN Gallery is one of the most popular WordPress plugins of all time with over 25 million downloads." msgstr "" #: products/photocrati_nextgen/modules/ngglegacy/admin/overview.php:97 @@ -3231,7 +3231,7 @@ msgid "https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/" msgstr "" #. Description of the plugin/theme -msgid "The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 24 million downloads." +msgid "The most popular gallery plugin for WordPress and one of the most popular plugins of all time with over 25 million downloads." msgstr "" #. Author of the plugin/theme diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/module.i18n.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/module.i18n.php index 14572c307..7510582f6 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/module.i18n.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/i18n/module.i18n.php @@ -20,7 +20,7 @@ class M_I18N extends C_Base_Module 'photocrati-i18n', 'Internationalization', "Adds I18N resources and methods", - '3.1.6', + '3.1.14', 'https://www.imagely.com/languages/', 'Imagely', 'https://www.imagely.com' @@ -47,11 +47,10 @@ class M_I18N extends C_Base_Module function register_translation_hooks() { - $fs = C_Fs::get_instance(); $dir = str_replace( - $fs->get_document_root('plugins'), - '', - $fs->get_abspath('lang', 'photocrati-i18n') + wp_normalize_path(WP_PLUGIN_DIR), + "", + wp_normalize_path(__DIR__ . DIRECTORY_SEPARATOR . 'lang') ); // Load text domain diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/imagify/lib/class-imagify-partner.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/imagify/lib/class-imagify-partner.php index 6e577f90a..0dd443d54 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/imagify/lib/class-imagify-partner.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/imagify/lib/class-imagify-partner.php @@ -833,7 +833,7 @@ if ( ! class_exists( 'Imagify_Partner' ) ) : return IMAGIFY_FILE; } - return WP_PLUGIN_DIR . '/imagify/imagify.php'; + return wp_normalize_path(WP_PLUGIN_DIR . '/imagify/imagify.php'); } /** diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/imagify/module.imagify.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/imagify/module.imagify.php index f030de296..6d1c44438 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/imagify/module.imagify.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/imagify/module.imagify.php @@ -27,7 +27,7 @@ class M_Imagify extends C_Base_Module 'photocrati-imagify', 'NextGEN Imagify Integration', 'NextGen Gallery / Imagify Integration', - '3.1.0', + '3.1.8', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/module.lightbox.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/module.lightbox.php index 3a87ab769..5944c154f 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/module.lightbox.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/module.lightbox.php @@ -23,7 +23,7 @@ class M_Lightbox extends C_Base_Module 'photocrati-lightbox', 'Lightbox', "Provides integration with several JavaScript lightbox effect libraries", - '3.0.0', + '3.1.19', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/static/simplelightbox/nextgen_simple_lightbox_init.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/static/simplelightbox/nextgen_simple_lightbox_init.js index 973840707..67ddf6ffa 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/static/simplelightbox/nextgen_simple_lightbox_init.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/static/simplelightbox/nextgen_simple_lightbox_init.js @@ -1,14 +1,24 @@ jQuery(function($) { + var selector = null; + + var nextgen_simplebox_options = { + history: false, + animationSlide: false, + animationSpeed: 100 + }; + var nextgen_simplelightbox_init = function() { - var selector = nextgen_lightbox_filter_selector($, $(".ngg-simplelightbox")); - selector.simpleLightbox({ - history: false, - animationSlide: false, - animationSpeed: 100 - }); + selector = nextgen_lightbox_filter_selector($, $(".ngg-simplelightbox")); + selector.simpleLightbox(nextgen_simplebox_options); }; - $(window).bind('refreshed', nextgen_simplelightbox_init); nextgen_simplelightbox_init(); -}); + + $(window).bind('refreshed', function() { + selector = nextgen_lightbox_filter_selector($, $(".ngg-simplelightbox")); + var gallery = selector.simpleLightbox(nextgen_simplebox_options); + gallery.refresh(); + + }); +}); \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/static/simplelightbox/nextgen_simple_lightbox_init.min.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/static/simplelightbox/nextgen_simple_lightbox_init.min.js index 804718f10..2fd7396f5 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/static/simplelightbox/nextgen_simple_lightbox_init.min.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/lightbox/static/simplelightbox/nextgen_simple_lightbox_init.min.js @@ -1 +1 @@ -jQuery(function(i){var e=function(){nextgen_lightbox_filter_selector(i,i(".ngg-simplelightbox")).simpleLightbox({history:!1,animationSlide:!1,animationSpeed:100})};i(window).bind("refreshed",e),e()}); \ No newline at end of file +jQuery(function(e){var i=null,n={history:!1,animationSlide:!1,animationSpeed:100};!function(){i=nextgen_lightbox_filter_selector(e,e(".ngg-simplelightbox")),i.simpleLightbox(n)}(),e(window).bind("refreshed",function(){i=nextgen_lightbox_filter_selector(e,e(".ngg-simplelightbox")),i.simpleLightbox(n).refresh()})}); \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/mvc/module.mvc.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/mvc/module.mvc.php index cbf21b50f..1277c0cd9 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/mvc/module.mvc.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/mvc/module.mvc.php @@ -27,7 +27,7 @@ class M_MVC extends C_Base_Module 'photocrati-mvc', 'MVC Framework', 'Provides an MVC architecture for the plugin to use', - '3.1.0', + '3.1.8', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery', 'Imagely', 'https://www.imagely.com' @@ -57,7 +57,6 @@ class M_MVC extends C_Base_Module function _register_adapters() { $this->get_registry()->add_adapter('I_Fs', 'A_MVC_Fs'); - $this->get_registry()->add_adapter('I_Router', 'A_MVC_Router'); $this->get_registry()->add_adapter('I_Component_Factory', 'A_MVC_Factory'); } @@ -66,7 +65,6 @@ class M_MVC extends C_Base_Module return array( 'A_Mvc_Factory' => 'adapter.mvc_factory.php', 'A_Mvc_Fs' => 'adapter.mvc_fs.php', - 'A_Mvc_Router' => 'adapter.mvc_router.php', 'C_Mvc_Installer' => 'class.mvc_installer.php', 'C_Mvc_Controller' => 'class.mvc_controller.php', 'C_Mvc_View' => 'class.mvc_view.php', diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/mvc/package.module.mvc.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/mvc/package.module.mvc.php index e05e90710..5e6a79f41 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/mvc/package.module.mvc.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/mvc/package.module.mvc.php @@ -42,6 +42,7 @@ class A_MVC_Fs extends Mixin * @param bool $relative (optional) * @param bool $found_root (optional) * @return string|NULL + * @deprecated Use M_Static_Assets instead */ function find_static_abspath($path, $module = FALSE, $relative = FALSE, &$found_root = FALSE) { @@ -72,6 +73,7 @@ class A_MVC_Fs extends Mixin } // Create the absolute path to the file $path = $this->object->join_paths($mod_dir, C_NextGen_Settings::get_instance()->get('mvc_static_dirname'), $path); + $path = wp_normalize_path($path); if ($relative) { $original_length = strlen($path); $roots = array('plugins', 'plugins_mu', 'templates', 'stylesheets'); @@ -104,123 +106,6 @@ class A_MVC_Fs extends Mixin } return $key; } - /** - * Gets the relative path to a static resource. If it doesn't exist, then NULL is returned - * - * @param string $path - * @param string|false $module (optional) - * @return string|NULL - */ - function find_static_relpath($path, $module = FALSE) - { - return $this->object->find_static_abspath($path, $module, TRUE); - } -} -/** - * Class A_MVC_Router - * @mixin C_Router - * @adapts I_Router - */ -class A_MVC_Router extends Mixin -{ - static $_lookups = array(); - function initialize() - { - register_shutdown_function(array(&$this, 'cache_lookups')); - self::$_lookups = C_Photocrati_Transient_Manager::fetch($this->_get_cache_key(), array()); - } - function _get_cache_key() - { - return C_Photocrati_Transient_Manager::create_key('MVC', 'get_static_url'); - } - function cache_lookups() - { - C_Photocrati_Transient_Manager::update($this->_get_cache_key(), self::$_lookups); - } - function _get_static_url_key($path, $module = FALSE) - { - $parts = array($path, $module, $this->object->get_base_url('plugins'), $this->object->get_base_url('plugins_mu'), $this->object->get_base_url('templates'), $this->object->get_base_url('stylesheets')); - return implode('|', $parts); - } - /** - * First tries to find the static file in the 'static' folder - * @param string $path - * @param string $module - * @return string - */ - function get_static_url($path, $module = FALSE) - { - $retval = NULL; - $key = $this->object->_get_static_url_key($path, $module); - // Have we looked up this url before? - if (isset(self::$_lookups[$key])) { - $retval = self::$_lookups[$key]; - } - $fs = C_Fs::get_instance(); - // Check for a user-supplied override - if (NULL === $retval) { - $formatted_path = $fs->parse_formatted_path($path); - $abspath = $fs->join_paths($this->object->get_static_override_dir($formatted_path[1]), $formatted_path[0]); - if (@is_file($abspath)) { - $abspath = str_replace($fs->get_document_root('content'), '', $abspath); - $retval = self::$_lookups[$key] = $this->object->join_paths($this->object->get_base_url('content'), str_replace("\\", '/', $abspath)); - } - } - // We'll have to calculate the url from our own modules - if (NULL === $retval) { - $path = $fs->find_static_abspath($path, $module); - $original_length = strlen($path); - $roots = array('plugins', 'plugins_mu', 'templates', 'stylesheets'); - $found_root = FALSE; - foreach ($roots as $root) { - $path = str_replace($fs->get_document_root($root), '', $path); - if (strlen($path) != $original_length) { - $found_root = $root; - break; - } - } - // We found the root so we know what base url to prepend - if ($found_root) { - $retval = self::$_lookups[$key] = $this->object->join_paths($this->object->get_base_url($found_root), str_replace("\\", '/', $path)); - } else { - $retval = self::$_lookups[$key] = $this->object->join_paths($this->object->get_base_url('root'), str_replace("\\", '/', $path)); - } - } - // For the "Sage" theme and others using the "Soil" plugin "Roots" theme was re-branded to "Sage" theme - // 2015-02-25; see https://roots.io/new-website-sage-and-the-future/ - if ((current_theme_supports('soil-relative-urls') || current_theme_supports('root-relative-urls')) && strpos($retval, '/') !== 0) { - $retval = '/' . $retval; - } - return $retval; - } - /** - * @param string $module_id - * - * @return string $dir - */ - function get_static_override_dir($module_id = NULL) - { - $fs = C_Fs::get_instance(); - $dir = $fs->join_paths(WP_CONTENT_DIR, 'ngg'); - if (!@file_exists($dir)) { - wp_mkdir_p($dir); - } - $dir = $fs->join_paths($dir, 'modules'); - if (!@file_exists($dir)) { - wp_mkdir_p($dir); - } - if ($module_id) { - $dir = $fs->join_paths($dir, $module_id); - if (!@file_exists($dir)) { - wp_mkdir_p($dir); - } - $dir = $fs->join_paths($dir, 'static'); - if (!@file_exists($dir)) { - wp_mkdir_p($dir); - } - } - return $dir; - } } if (preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You are not allowed to call this page directly.'); @@ -397,22 +282,11 @@ class Mixin_MVC_Controller_Instance_Methods extends Mixin * Gets the absolute path of a static resource * @param string $path * @param string|false $module (optional) - * @param boolean $relative - * @return string - */ - function get_static_abspath($path, $module = FALSE, $relative = FALSE) - { - return C_Fs::get_instance()->find_static_abspath($path, $module); - } - /** - * Gets the relative path of a static resource - * @param string $path - * @param string|false $module (optional) * @return string */ - function get_static_relpath($path, $module = FALSE) + function get_static_abspath($path, $module = FALSE) { - return C_Fs::get_instance()->find_static_abspath($path, $module, TRUE); + return M_Static_Assets::get_static_abspath($path, $module); } /** * @param string $path @@ -421,7 +295,7 @@ class Mixin_MVC_Controller_Instance_Methods extends Mixin */ function get_static_url($path, $module = FALSE) { - return C_Router::get_instance()->get_static_url($path, $module); + return M_Static_Assets::get_static_url($path, $module); } /** * Renders a template and outputs the response headers diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php index 4753124a1..fd5171031 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/module.nextgen_addgallery_page.php @@ -22,7 +22,7 @@ class M_NextGen_AddGallery_Page extends C_Base_Module 'photocrati-nextgen_addgallery_page', 'NextGEN Add Gallery Page', 'Provides admin page for adding a gallery and uploading images', - '3.0.0', + '3.1.19', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/package.module.nextgen_addgallery_page.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/package.module.nextgen_addgallery_page.php index 97923c89b..b6cd8c1b1 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/package.module.nextgen_addgallery_page.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/package.module.nextgen_addgallery_page.php @@ -19,7 +19,7 @@ class A_Import_Folder_Form extends Mixin } function render() { - return $this->object->render_partial('photocrati-nextgen_addgallery_page#import_folder', array('browse_sec_token' => C_WordPress_Security_Manager::get_instance()->get_request_token('nextgen_upload_image'), 'import_sec_token' => C_WordPress_Security_Manager::get_instance()->get_request_token('nextgen_upload_image')), TRUE); + return $this->object->render_partial('photocrati-nextgen_addgallery_page#import_folder', array('browse_nonce' => M_Security::create_nonce('nextgen_upload_image'), 'import_nonce' => M_Security::create_nonce('nextgen_upload_image')), TRUE); } } /** @@ -39,10 +39,7 @@ class A_Import_Media_Library_Form extends Mixin wp_enqueue_script('nextgen_media_library_import-js'); wp_enqueue_style('nextgen_media_library_import-css'); $url = admin_url() . 'admin.php?page=nggallery-manage-gallery&mode=edit&gid={gid}'; - $i18n_array = array('admin_url' => admin_url(), 'title' => __('Import Images into NextGen Gallery', 'nggallery'), 'import_multiple' => __('Import %s images', 'nggallery'), 'import_singular' => __('Import 1 image', 'nggallery'), 'imported_multiple' => sprintf(__('{count} images were uploaded successfully. <a href="%s" target="_blank">Manage gallery</a>', 'nggallery'), $url), 'imported_singular' => sprintf(__('1 image was uploaded successfully. <a href="%s" target="_blank">Manage gallery</a>', 'nggallery'), $url), 'imported_none' => __('0 images were uploaded', 'nggallery'), 'progress_title' => __('Importing gallery', 'nggallery'), 'in_progress' => __('In Progress...', 'nggallery'), 'gritter_title' => __('Upload complete. Great job!', 'nggallery'), 'gritter_error' => __('Oops! Sorry, but an error occured. This may be due to a server misconfiguration. Check your PHP error log or ask your hosting provider for assistance.', 'nggallery')); - foreach (C_WordPress_Security_Manager::get_instance()->get_request_token('nextgen_upload_image')->get_request_list() as $name => $value) { - $i18n_array['sectoken'][$name] = $value; - } + $i18n_array = array('admin_url' => admin_url(), 'title' => __('Import Images into NextGen Gallery', 'nggallery'), 'import_multiple' => __('Import %s images', 'nggallery'), 'import_singular' => __('Import 1 image', 'nggallery'), 'imported_multiple' => sprintf(__('{count} images were uploaded successfully. <a href="%s" target="_blank">Manage gallery</a>', 'nggallery'), $url), 'imported_singular' => sprintf(__('1 image was uploaded successfully. <a href="%s" target="_blank">Manage gallery</a>', 'nggallery'), $url), 'imported_none' => __('0 images were uploaded', 'nggallery'), 'progress_title' => __('Importing gallery', 'nggallery'), 'in_progress' => __('In Progress...', 'nggallery'), 'gritter_title' => __('Upload complete. Great job!', 'nggallery'), 'gritter_error' => __('Oops! Sorry, but an error occured. This may be due to a server misconfiguration. Check your PHP error log or ask your hosting provider for assistance.', 'nggallery'), 'nonce' => M_Security::create_nonce('nextgen_upload_image')); wp_localize_script('nextgen_media_library_import-js', 'ngg_importml_i18n', $i18n_array); } function render() @@ -52,16 +49,14 @@ class A_Import_Media_Library_Form extends Mixin } function get_galleries() { - $security = $this->get_registry()->get_utility('I_Security_Manager'); - $sec_actor = $security->get_current_actor(); $galleries = array(); - if ($sec_actor->is_allowed('nextgen_edit_gallery')) { + if (M_Security::is_allowed('nextgen_edit_gallery')) { $galleries = C_Gallery_Mapper::get_instance()->find_all(); - if (!$sec_actor->is_allowed('nextgen_edit_gallery_unowned')) { + if (!M_Security::is_allowed('nextgen_edit_gallery_unowned')) { $galleries_all = $galleries; $galleries = array(); foreach ($galleries_all as $gallery) { - if ($sec_actor->is_user() && $sec_actor->get_entity_id() == (int) $gallery->author) { + if (wp_get_current_user()->ID == (int) $gallery->author) { $galleries[] = $gallery; } } @@ -126,22 +121,22 @@ class A_NextGen_AddGallery_Ajax extends Mixin } else { $retval['error'] = __('Failed to extract images from ZIP', 'nggallery'); } - } elseif ($image = $storage->upload_image($gallery_id)) { - $retval['image_ids'] = array($image->id()); + } elseif ($image_id = $storage->upload_image($gallery_id)) { + $retval['image_ids'] = array($image_id); $retval['image_errors'] = array(); // check if image was resized correctly if ($settings->imgAutoResize) { - $image_path = $storage->get_full_abspath($image); + $image_path = $storage->get_full_abspath($image_id); $image_thumb = new C_NggLegacy_Thumbnail($image_path, true); if ($image_thumb->error) { - $retval['image_errors'][] = array('id' => $image->id(), 'error' => sprintf(__('Automatic image resizing failed [%1$s].', 'nggallery'), $image_thumb->errmsg)); + $retval['image_errors'][] = array('id' => $image_id, 'error' => sprintf(__('Automatic image resizing failed [%1$s].', 'nggallery'), $image_thumb->errmsg)); $image_thumb = null; } } // check if thumb was generated correctly - $thumb_path = $storage->get_thumb_abspath($image); + $thumb_path = $storage->get_thumb_abspath($image_id); if (!file_exists($thumb_path)) { - $retval['image_errors'][] = array('id' => $image->id(), 'error' => __('Thumbnail generation failed.', 'nggallery')); + $retval['image_errors'][] = array('id' => $image_id, 'error' => __('Thumbnail generation failed.', 'nggallery')); } } else { $retval['error'] = __('Image generation failed', 'nggallery'); @@ -161,6 +156,9 @@ class A_NextGen_AddGallery_Ajax extends Mixin } } } else { + $action = 'nextgen_upload_image'; + $retval['allowed'] = M_Security::is_allowed($action); + $retval['verified_token'] = !$_REQUEST['nonce'] || wp_verify_nonce($_REQUEST['nonce'], $action); $retval['error'] = __("No permissions to upload images. Try refreshing the page or ensuring that your user account has sufficient roles/privileges.", 'nggallery'); $error = TRUE; } @@ -224,7 +222,7 @@ class A_NextGen_AddGallery_Ajax extends Mixin function import_folder_action() { $retval = array(); - if ($this->validate_ajax_request('nextgen_upload_image', TRUE)) { + if ($this->validate_ajax_request('nextgen_upload_image', $_REQUEST['nonce'])) { if ($folder = $this->param('folder')) { $storage = C_Gallery_Storage::get_instance(); $fs = C_Fs::get_instance(); @@ -267,7 +265,7 @@ class A_NextGen_AddGallery_Ajax extends Mixin $gallery_mapper = C_Gallery_Mapper::get_instance(); $image_mapper = C_Image_Mapper::get_instance(); $attachment_ids = $this->param('attachment_ids'); - if ($this->validate_ajax_request('nextgen_upload_image', TRUE)) { + if ($this->validate_ajax_request('nextgen_upload_image', $_REQUEST['nonce'])) { if (empty($attachment_ids) || !is_array($attachment_ids)) { $retval['error'] = __('An unexpected error occured.', 'nggallery'); } @@ -297,10 +295,10 @@ class A_NextGen_AddGallery_Ajax extends Mixin $retval['error'] = __('Image generation failed', 'nggallery'); break; } - $image = $storage->upload_base64_image($gallery_id, $file_data, $file_name); + $image = $storage->upload_image($gallery_id, $file_name, $file_data); if ($image) { // Potentially import metadata from WordPress - $image = $image_mapper->find($image->id()); + $image = $image_mapper->find($image); if (!empty($attachment->post_excerpt)) { $image->alttext = $attachment->post_excerpt; } @@ -309,11 +307,11 @@ class A_NextGen_AddGallery_Ajax extends Mixin } $image = apply_filters('ngg_medialibrary_imported_image', $image, $attachment); $image_mapper->save($image); + $retval['image_ids'][] = $image->{$image->id_field}; } else { $retval['error'] = __('Image generation failed', 'nggallery'); break; } - $retval['image_ids'][] = $image->{$image->id_field}; } catch (E_NggErrorException $ex) { $retval['error'] = $ex->getMessage(); if ($created_gallery) { @@ -406,7 +404,7 @@ class A_Upload_Images_Form extends Mixin $fs = C_Fs::get_instance(); $router = C_Router::get_instance(); $locale = get_locale(); - $dir = $fs->find_static_abspath('photocrati-nextgen_addgallery_page#plupload-2.1.1/i18n') . DIRECTORY_SEPARATOR; + $dir = M_Static_Assets::get_static_abspath('photocrati-nextgen_addgallery_page#plupload-2.1.1/i18n'); $tmp = explode('_', $locale, 2); $retval = FALSE; if (file_exists($dir . $tmp[0] . '.js')) { @@ -417,7 +415,7 @@ class A_Upload_Images_Form extends Mixin } } if ($retval) { - $retval = $router->get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/i18n/' . $retval . '.js'); + $retval = M_Static_Assets::get_static_url('photocrati-nextgen_addgallery_page#plupload-2.1.1/i18n/' . $retval . '.js'); } return $retval; } @@ -434,7 +432,7 @@ class A_Upload_Images_Form extends Mixin } function render() { - return $this->object->render_partial('photocrati-nextgen_addgallery_page#upload_images', array('plupload_options' => json_encode($this->object->get_plupload_options()), 'galleries' => $this->object->get_galleries(), 'sec_token' => C_WordPress_Security_Manager::get_instance()->get_request_token('nextgen_upload_image')), TRUE); + return $this->object->render_partial('photocrati-nextgen_addgallery_page#upload_images', array('plupload_options' => json_encode($this->object->get_plupload_options()), 'galleries' => $this->object->get_galleries(), 'nonce' => M_Security::create_nonce('nextgen_upload_image')), TRUE); } function get_plupload_options() { @@ -468,17 +466,15 @@ class A_Upload_Images_Form extends Mixin } function get_galleries() { - $security = $this->get_registry()->get_utility('I_Security_Manager'); - $sec_actor = $security->get_current_actor(); $galleries = array(); - if ($sec_actor->is_allowed('nextgen_edit_gallery')) { + if (M_Security::is_allowed('nextgen_edit_gallery')) { $gallery_mapper = C_Gallery_Mapper::get_instance(); $galleries = $gallery_mapper->find_all(); - if (!$sec_actor->is_allowed('nextgen_edit_gallery_unowned')) { + if (!M_Security::is_allowed('nextgen_edit_gallery_unowned')) { $galleries_all = $galleries; $galleries = array(); foreach ($galleries_all as $gallery) { - if ($sec_actor->is_user() && $sec_actor->get_entity_id() == (int) $gallery->author) { + if (wp_get_current_user()->ID == (int) $gallery->author) { $galleries[] = $gallery; } } diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.js index 841b751cc..ef9a334e9 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.js @@ -53,10 +53,6 @@ ngg_importml.methods.import.params.gallery_id = ngg_importml.methods.urlencode(ngg_importml.selectors.gallery_select.val()); ngg_importml.methods.import.params.gallery_name = ngg_importml.methods.urlencode(ngg_importml.selectors.gallery_name.val()); - Object.keys(ngg_importml_i18n.sectoken).forEach(function(key) { - ngg_importml.methods.import.params[key] = ngg_importml_i18n.sectoken[key]; - }); - ngg_importml.progress_bar = $.nggProgressBar({ title: ngg_importml_i18n.progress_title, infinite: true, @@ -97,6 +93,7 @@ send_ajax: function() { var params = ngg_importml.methods.import.params; + params.nonce = ngg_importml_i18n.nonce; params.attachment_ids = [ngg_importml.import_ids.pop()]; $.post(photocrati_ajax.url, params, function(data) { diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.min.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.min.js index 1b12f52ed..6b31dae26 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.min.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/media-library-import.min.js @@ -1 +1 @@ -!function(e){var t={ml_data:null,import_ids:[],selectors:{ml_btn_import:e("#ngg-importML-selected-image-import"),ml_btn_select:e("#ngg-importML-select-opener"),gallery_select:e("#ngg-importML-gallery-id"),gallery_name:e("#ngg-importML-gallery-name")},initialize:function(){this.methods.initialize(),this.methods.set_events()},methods:{initialize:function(){t.ml_dialog=top.wp.media.frames.ngg_importml=top.wp.media({multiple:!0,title:ngg_importml_i18n.title,button:{text:ngg_importml_i18n.button_text}})},urlencode:function(e){return e=(e+"").toString(),encodeURIComponent(e).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")},import:{import_count:0,params:{action:"import_media_library"},start:function(){t.selectors.ml_btn_import.attr("disabled",!0),t.selectors.ml_btn_select.attr("disabled",!0),t.methods.import.params.gallery_id=t.methods.urlencode(t.selectors.gallery_select.val()),t.methods.import.params.gallery_name=t.methods.urlencode(t.selectors.gallery_name.val()),Object.keys(ngg_importml_i18n.sectoken).forEach(function(e){t.methods.import.params[e]=ngg_importml_i18n.sectoken[e]}),t.progress_bar=e.nggProgressBar({title:ngg_importml_i18n.progress_title,infinite:!0,starting_value:ngg_importml_i18n.in_progress}),e(t).trigger("send_ajax")},done:function(){t.progress_bar.close(100),t.selectors.ml_btn_import.attr("disabled",!1),t.selectors.ml_btn_select.attr("disabled",!1);var l=ngg_importml_i18n.imported_multiple;1==t.methods.import.import_count&&(l=ngg_importml_i18n.imported_singular),l=l.replace("{gid}",t.methods.import.params.gallery_id),l=l.replace("{count}",t.methods.import.import_count),delete t.methods.import.params.gallery_id,delete t.methods.import.params.gallery_name,e.gritter.add({title:ngg_importml_i18n.gritter_title,text:l,sticky:!0}),t.methods.import.import_count=0,t.ml_dialog.trigger("reset"),t.import_ids=[],t.selectors.ml_btn_import.fadeOut()},send_ajax:function(){var l=t.methods.import.params;l.attachment_ids=[t.import_ids.pop()],e.post(photocrati_ajax.url,l,function(l){if(void 0===l.error){if(t.methods.import.import_count++,0==t.selectors.gallery_select.find('option[value="'+l.gallery_id+'"]').length){t.methods.import.params.gallery_id=l.gallery_id;var r=e("<option/>").attr("value",l.gallery_id).html(l.gallery_name);t.selectors.gallery_select.append(r),t.selectors.gallery_select.val(l.gallery_id),r.prop("selected",!0),t.selectors.gallery_name.val("").fadeOut()}}else e.gritter.add({title:ngg_importml_i18n.gritter_error,text:l.error,sticky:!0});0==t.import_ids.length?t.methods.import.done():e(t).trigger("send_ajax")},"json")}},set_events:function(){e(t).on("send_ajax",function(){t.methods.import.send_ajax()}),t.ml_dialog.on("select",function(){t.import_ids=[],t.ml_data=t.ml_dialog.state().get("selection"),t.ml_data.map(function(e){e=e.toJSON(),t.import_ids.push(e.id)});var e=ngg_importml_i18n.import_multiple.replace("%s",t.import_ids.length);1==t.import_ids.length&&(e=ngg_importml_i18n.import_singular),t.selectors.ml_btn_import.html(e),t.selectors.ml_btn_import.fadeIn()}),t.selectors.ml_btn_select.on("click",function(e){e.preventDefault(),t.ml_dialog.open()}),t.selectors.ml_btn_import.on("click",function(e){e.preventDefault(),t.methods.import.start()}),t.selectors.gallery_select.on("change",function(){0==parseInt(this.value)?(t.selectors.gallery_name.fadeIn().focus(),0==t.selectors.gallery_name.val().length&&(t.selectors.ml_btn_import.fadeOut(),t.selectors.ml_btn_select.fadeOut())):t.selectors.gallery_name.fadeOut(400,function(){t.selectors.gallery_select.focus(),t.selectors.ml_btn_select.fadeIn(),t.import_ids.length>0&&t.selectors.ml_btn_import.fadeIn()})}),t.selectors.gallery_name.on("keyup",function(){t.selectors.gallery_name.val().length>0?(t.selectors.gallery_name.removeClass("error"),t.selectors.ml_btn_select.fadeIn(),t.import_ids.length>0&&t.selectors.ml_btn_import.fadeIn()):(t.selectors.ml_btn_import.fadeOut(),t.selectors.ml_btn_select.fadeOut())})}}};e(document).ready(function(){window.ngg_importml=t,t.initialize(),window.Frame_Event_Publisher.broadcast()})}(jQuery); \ No newline at end of file +!function(e){var t={ml_data:null,import_ids:[],selectors:{ml_btn_import:e("#ngg-importML-selected-image-import"),ml_btn_select:e("#ngg-importML-select-opener"),gallery_select:e("#ngg-importML-gallery-id"),gallery_name:e("#ngg-importML-gallery-name")},initialize:function(){this.methods.initialize(),this.methods.set_events()},methods:{initialize:function(){t.ml_dialog=top.wp.media.frames.ngg_importml=top.wp.media({multiple:!0,title:ngg_importml_i18n.title,button:{text:ngg_importml_i18n.button_text}})},urlencode:function(e){return e=(e+"").toString(),encodeURIComponent(e).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A").replace(/%20/g,"+")},import:{import_count:0,params:{action:"import_media_library"},start:function(){t.selectors.ml_btn_import.attr("disabled",!0),t.selectors.ml_btn_select.attr("disabled",!0),t.methods.import.params.gallery_id=t.methods.urlencode(t.selectors.gallery_select.val()),t.methods.import.params.gallery_name=t.methods.urlencode(t.selectors.gallery_name.val()),t.progress_bar=e.nggProgressBar({title:ngg_importml_i18n.progress_title,infinite:!0,starting_value:ngg_importml_i18n.in_progress}),e(t).trigger("send_ajax")},done:function(){t.progress_bar.close(100),t.selectors.ml_btn_import.attr("disabled",!1),t.selectors.ml_btn_select.attr("disabled",!1);var l=ngg_importml_i18n.imported_multiple;1==t.methods.import.import_count&&(l=ngg_importml_i18n.imported_singular),l=l.replace("{gid}",t.methods.import.params.gallery_id),l=l.replace("{count}",t.methods.import.import_count),delete t.methods.import.params.gallery_id,delete t.methods.import.params.gallery_name,e.gritter.add({title:ngg_importml_i18n.gritter_title,text:l,sticky:!0}),t.methods.import.import_count=0,t.ml_dialog.trigger("reset"),t.import_ids=[],t.selectors.ml_btn_import.fadeOut()},send_ajax:function(){var l=t.methods.import.params;l.nonce=ngg_importml_i18n.nonce,l.attachment_ids=[t.import_ids.pop()],e.post(photocrati_ajax.url,l,function(l){if(void 0===l.error){if(t.methods.import.import_count++,0==t.selectors.gallery_select.find('option[value="'+l.gallery_id+'"]').length){t.methods.import.params.gallery_id=l.gallery_id;var r=e("<option/>").attr("value",l.gallery_id).html(l.gallery_name);t.selectors.gallery_select.append(r),t.selectors.gallery_select.val(l.gallery_id),r.prop("selected",!0),t.selectors.gallery_name.val("").fadeOut()}}else e.gritter.add({title:ngg_importml_i18n.gritter_error,text:l.error,sticky:!0});0==t.import_ids.length?t.methods.import.done():e(t).trigger("send_ajax")},"json")}},set_events:function(){e(t).on("send_ajax",function(){t.methods.import.send_ajax()}),t.ml_dialog.on("select",function(){t.import_ids=[],t.ml_data=t.ml_dialog.state().get("selection"),t.ml_data.map(function(e){e=e.toJSON(),t.import_ids.push(e.id)});var e=ngg_importml_i18n.import_multiple.replace("%s",t.import_ids.length);1==t.import_ids.length&&(e=ngg_importml_i18n.import_singular),t.selectors.ml_btn_import.html(e),t.selectors.ml_btn_import.fadeIn()}),t.selectors.ml_btn_select.on("click",function(e){e.preventDefault(),t.ml_dialog.open()}),t.selectors.ml_btn_import.on("click",function(e){e.preventDefault(),t.methods.import.start()}),t.selectors.gallery_select.on("change",function(){0==parseInt(this.value)?(t.selectors.gallery_name.fadeIn().focus(),0==t.selectors.gallery_name.val().length&&(t.selectors.ml_btn_import.fadeOut(),t.selectors.ml_btn_select.fadeOut())):t.selectors.gallery_name.fadeOut(400,function(){t.selectors.gallery_select.focus(),t.selectors.ml_btn_select.fadeIn(),t.import_ids.length>0&&t.selectors.ml_btn_import.fadeIn()})}),t.selectors.gallery_name.on("keyup",function(){t.selectors.gallery_name.val().length>0?(t.selectors.gallery_name.removeClass("error"),t.selectors.ml_btn_select.fadeIn(),t.import_ids.length>0&&t.selectors.ml_btn_import.fadeIn()):(t.selectors.ml_btn_import.fadeOut(),t.selectors.ml_btn_select.fadeOut())})}}};e(document).ready(function(){window.ngg_importml=t,t.initialize(),window.Frame_Event_Publisher.broadcast()})}(jQuery); \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/styles.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/styles.css index 90dcf5685..26b678992 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/styles.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/styles.css @@ -108,10 +108,17 @@ border: 1px solid rgba(159, 187, 26, 0.13) !important; } +#ngg_page_content .plupload_wrapper { + font-family: Lato, sans-serif; + font-size: 13px; + font-weight: 300; + letter-spacing: .5px; +} + #ngg_page_content .plupload_filelist_header, #ngg_page_content .plupload_filelist_footer, #ngg_page_content .plupload_file_status span { - background: rgba(247, 248, 243, 0.46) !important; + background: #f7f7f7 !important; color: #999 !important; } @@ -130,17 +137,34 @@ overflow-y: hidden; } +#ngg_page_content .plupload_filelist li { + border: none; + background: #fff; + margin: 0; + padding: 20px; +} + +#ngg_page_content .plupload_filelist li:nth-of-type(2n) { + background: white; +} + #ngg_page_content #gallery_selection { padding: 20px 20px 25px !important; - background: #f7f8f3; + background: #f7f7f7; } #ngg_page_content #gallery_id, #ngg_page_content #gallery_name { - height: 30px !important; min-width: 200px !important; - font-size: 12px !important; - color: #888 !important; + font-size: 13px !important; + font-family: Lato, sans-serif; + font-weight: 400; + color: black !important; + vertical-align: middle; +} + +#ngg_page_content #gallery_name::placeholder { + color: black !important; } #ngg_page_content input#import_gallery_title { diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/styles.min.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/styles.min.css index f3ca41d00..13d7667f4 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/styles.min.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/static/styles.min.css @@ -1 +1 @@ -#gallery_selection{background-color:#fff;padding:7px}#gallery_selection label{font-weight:600;position:relative;top:-1px}#gallery_selection .plupload_buttons a{margin-right:6px;text-align:center;font-size:11px}#gallery_name{width:auto;min-width:200px}#gallery_name.error{border:1px solid red}#upload_images_content,#upload_images_content .plupload_container{padding:0}.plupload_header{display:none}.plupload_buttons{display:inline;margin-left:20px}.plupload_droptext{font-size:16px;color:silver}#gritter-notice-wrapper{background:rgba(56,70,82,.9);border:1px solid #2a343d;margin:10px 5px 0 0;border-radius:3px;bottom:20px;top:auto}.gritter-bottom,.gritter-close,.gritter-item,.gritter-top{background:0 0}.gritter-item{padding:2px 11px 0}.gritter-title{text-shadow:none}#gritter-notice-wrapper a{color:#b8d433;text-decoration:none;padding-top:5px;display:block}.gritter-close{width:auto;height:auto;display:block!important;top:10px;right:10px}.gritter-close:after{content:'X';font-weight:700;font-size:13px}.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_menu{width:25%}.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main{width:75%}#ngg_page_content .plupload_container{padding:0!important;border:1px solid rgba(159,187,26,.13)!important}#ngg_page_content .plupload_file_status span,#ngg_page_content .plupload_filelist_footer,#ngg_page_content .plupload_filelist_header{background:rgba(247,248,243,.46)!important;color:#999!important}#ngg_page_content .plupload_filelist_header{border-bottom:1px solid #f7f7f7!important;display:none}#ngg_page_content .plupload_filelist_footer{border-top:1px solid #f7f7f7!important}#ngg_page_content .plupload_scroll .plupload_filelist{background:#fff!important;height:auto;overflow-y:hidden}#ngg_page_content #gallery_selection{padding:20px 20px 25px!important;background:#f7f8f3}#ngg_page_content #gallery_id,#ngg_page_content #gallery_name{height:30px!important;min-width:200px!important;font-size:12px!important;color:#888!important}#ngg_page_content input#import_gallery_title{width:250px;font-size:13px;color:#aaa}@media (max-width:1380px){.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main,.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_menu{width:100%}}@media (max-width:1140px){.plupload_buttons{display:block;margin:10px 0 0 75px}.gallery_page_ngg_addgallery #ngg_page_content .button-primary,.gallery_page_ngg_addgallery #ngg_page_content .button-secondary,.gallery_page_ngg_addgallery #ngg_page_content button{width:201px!important}}@media (max-width:800px){.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main,.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_menu{width:100%}.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main input,.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main select{width:100%!important;max-width:100%;margin:5px 0;box-sizing:border-box}.gallery_page_ngg_addgallery #ngg_page_content input[type=checkbox]{width:16px!important}.plupload_buttons{margin-left:0}.gallery_page_ngg_addgallery #ngg_page_content .button-primary,.gallery_page_ngg_addgallery #ngg_page_content .button-secondary,.gallery_page_ngg_addgallery #ngg_page_content button{width:100%!important;margin:4px 0;display:block;text-align:center}#ngg-importML-gallery-selection{display:block!important}} \ No newline at end of file +#gallery_selection{background-color:#fff;padding:7px}#gallery_selection label{font-weight:600;position:relative;top:-1px}#gallery_selection .plupload_buttons a{margin-right:6px;text-align:center;font-size:11px}#gallery_name{width:auto;min-width:200px}#gallery_name.error{border:1px solid red}#upload_images_content,#upload_images_content .plupload_container{padding:0}.plupload_header{display:none}.plupload_buttons{display:inline;margin-left:20px}.plupload_droptext{font-size:16px;color:silver}#gritter-notice-wrapper{background:rgba(56,70,82,.9);border:1px solid #2a343d;margin:10px 5px 0 0;border-radius:3px;bottom:20px;top:auto}.gritter-bottom,.gritter-close,.gritter-item,.gritter-top{background:0 0}.gritter-item{padding:2px 11px 0}.gritter-title{text-shadow:none}#gritter-notice-wrapper a{color:#b8d433;text-decoration:none;padding-top:5px;display:block}.gritter-close{width:auto;height:auto;display:block!important;top:10px;right:10px}.gritter-close:after{content:'X';font-weight:700;font-size:13px}.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_menu{width:25%}.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main{width:75%}#ngg_page_content .plupload_container{padding:0!important;border:1px solid rgba(159,187,26,.13)!important}#ngg_page_content .plupload_wrapper{font-family:Lato,sans-serif;font-size:13px;font-weight:300;letter-spacing:.5px}#ngg_page_content .plupload_file_status span,#ngg_page_content .plupload_filelist_footer,#ngg_page_content .plupload_filelist_header{background:#f7f7f7!important;color:#999!important}#ngg_page_content .plupload_filelist_header{border-bottom:1px solid #f7f7f7!important;display:none}#ngg_page_content .plupload_filelist_footer{border-top:1px solid #f7f7f7!important}#ngg_page_content .plupload_scroll .plupload_filelist{background:#fff!important;height:auto;overflow-y:hidden}#ngg_page_content .plupload_filelist li{border:none;background:#fff;margin:0;padding:20px}#ngg_page_content .plupload_filelist li:nth-of-type(2n){background:#fff}#ngg_page_content #gallery_selection{padding:20px 20px 25px!important;background:#f7f7f7}#ngg_page_content #gallery_id,#ngg_page_content #gallery_name{min-width:200px!important;font-size:13px!important;font-family:Lato,sans-serif;font-weight:400;color:#000!important;vertical-align:middle}#ngg_page_content #gallery_name::placeholder{color:#000!important}#ngg_page_content input#import_gallery_title{width:250px;font-size:13px;color:#aaa}@media (max-width:1380px){.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main,.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_menu{width:100%}}@media (max-width:1140px){.plupload_buttons{display:block;margin:10px 0 0 75px}.gallery_page_ngg_addgallery #ngg_page_content .button-primary,.gallery_page_ngg_addgallery #ngg_page_content .button-secondary,.gallery_page_ngg_addgallery #ngg_page_content button{width:201px!important}}@media (max-width:800px){.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main,.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_menu{width:100%}.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main input,.gallery_page_ngg_addgallery #ngg_page_content .ngg_page_content_main select{width:100%!important;max-width:100%;margin:5px 0;box-sizing:border-box}.gallery_page_ngg_addgallery #ngg_page_content input[type=checkbox]{width:16px!important}.plupload_buttons{margin-left:0}.gallery_page_ngg_addgallery #ngg_page_content .button-primary,.gallery_page_ngg_addgallery #ngg_page_content .button-secondary,.gallery_page_ngg_addgallery #ngg_page_content button{width:100%!important;margin:4px 0;display:block;text-align:center}#ngg-importML-gallery-selection{display:block!important}} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_folder.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_folder.php index 7a646baf4..3951a8f8c 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_folder.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_folder.php @@ -20,7 +20,10 @@ else return; // Post params - var browse_params = <?php echo $browse_sec_token->get_json() ?>; + var browse_params = { + action: 'browser_folder', + nonce: '<?php echo $browse_nonce ?>' + }; browse_params.action = 'browse_folder'; // Render file browser @@ -52,11 +55,13 @@ }); // Start importing process - var post_params = <?php echo $import_sec_token->get_json()?>; - post_params.action = 'import_folder'; - post_params.folder = selected_folder; - post_params.keep_location = $('#import_keep_location').is(":checked") ? 'on' : 'off'; - post_params.gallery_title = $('#import_gallery_title').val(); + var post_params = { + nonce: '<?php echo $import_nonce ?>', + action: "import_folder", + folder: selected_folder, + keep_location: $('#import_keep_location').is(":checked") ? 'on' : 'off', + gallery_title: $('#import_gallery_title').val() + } $.post(photocrati_ajax.url, post_params, function(response){ if (typeof(response) != 'object') response = JSON.parse(response); diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_media_library.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_media_library.php index 473396352..ae673e1fa 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_media_library.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/import_media_library.php @@ -1,4 +1,3 @@ -<?php $i18n['isavalidvar'] = true; // make my editor shutup about invalid variables ?> <div id="ngg-importML-gallery-selection"> <label for="ngg-importML-gallery-id"><?php _e('Gallery', 'nggallery'); ?></label> <select id="ngg-importML-gallery-id"> diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php index 67283dfb5..5adc99c83 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_addgallery_page/templates/upload_images.php @@ -47,9 +47,7 @@ window.set_plupload_url = function(gallery_id, gallery_name) { var qs = "&action=upload_image&gallery_id="+urlencode(gallery_id); qs += "&gallery_name="+urlencode(gallery_name); - <?php foreach ($sec_token->get_request_list() as $name=>$value): ?> - qs += "&<?php echo $name?>=<?php echo $value?>"; - <?php endforeach ?> + qs += "&nonce="+urlencode("<?php echo $nonce; ?>"); return photocrati_ajax.url + qs; }; diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php index 68926da9b..8a7382480 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/module.nextgen_admin.php @@ -2,7 +2,7 @@ /*** { - Module: photocrati-nextgen_admin + Module: photocrati-nextgen_admin } ***/ @@ -10,10 +10,10 @@ define('NGG_FS_ACCESS_SLUG', 'ngg_fs_access'); class M_NextGen_Admin extends C_Base_Module { - /** - * Defines the module - */ - function define($id = 'pope-module', + /** + * Defines the module + */ + function define($id = 'pope-module', $name = 'Pope Module', $description = '', $version = '', @@ -21,36 +21,36 @@ class M_NextGen_Admin extends C_Base_Module $author = '', $author_uri = '', $context = FALSE) - { - parent::define( - 'photocrati-nextgen_admin', - 'NextGEN Administration', - 'Provides a framework for adding Administration pages', - '3.1.4.2', + { + parent::define( + 'photocrati-nextgen_admin', + 'NextGEN Administration', + 'Provides a framework for adding Administration pages', + '3.2.1', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' - ); + ); - C_Photocrati_Installer::add_handler($this->module_id, 'C_NextGen_Admin_Installer'); + C_Photocrati_Installer::add_handler($this->module_id, 'C_NextGen_Admin_Installer'); - C_NextGen_Settings::get_instance()->add_option_handler('C_NextGen_Admin_Option_Handler', array( - 'jquery_ui_theme', - 'jquery_ui_theme_version', - 'jquery_ui_theme_url' - )); + C_NextGen_Settings::get_instance()->add_option_handler('C_NextGen_Admin_Option_Handler', array( + 'jquery_ui_theme', + 'jquery_ui_theme_version', + 'jquery_ui_theme_url' + )); if (is_multisite()) C_NextGen_Global_Settings::get_instance()->add_option_handler('C_NextGen_Admin_Option_Handler', array( 'jquery_ui_theme', 'jquery_ui_theme_version', 'jquery_ui_theme_url' )); - } + } - /** - * Register utilities necessary for this module (and the plugin) - */ - function _register_utilities() - { + /** + * Register utilities necessary for this module (and the plugin) + */ + function _register_utilities() + { // Provides a NextGEN Administation page $this->get_registry()->add_utility( 'I_NextGen_Admin_Page', @@ -73,116 +73,117 @@ class M_NextGen_Admin extends C_Base_Module 'I_Form', 'C_Form' ); - } + } - /** - * Registers adapters required by this module - */ - function _register_adapters() - { - $this->get_registry()->add_adapter( - 'I_MVC_Controller', - 'A_MVC_Validation' - ); - } + /** + * Registers adapters required by this module + */ + function _register_adapters() + { + $this->get_registry()->add_adapter( + 'I_MVC_Controller', + 'A_MVC_Validation' + ); + } - function get_common_admin_css_handlers($array) - { - $array['nextgen_admin_css'] = $this->module_version; - return $array; - } + function get_common_admin_css_handlers($array) + { + $array['nextgen_admin_css'] = $this->module_version; + return $array; + } - function get_common_admin_js_handlers($array) - { - $array['nextgen_admin_js'] = $this->module_version; - return $array; - } + function get_common_admin_js_handlers($array) + { + $array['nextgen_admin_js'] = $this->module_version; + return $array; + } - // Enqueues static resources that should be enqueued in the HEADER on a NextGEN Admin Page - static function enqueue_common_admin_static_resources($footer=FALSE) - { - $footer = ($footer === TRUE); - $script_handles_filter = $footer ? 'ngg_admin_footer_script_handles' : 'ngg_admin_script_handles'; - $style_handles_filter = 'ngg_admin_style_handles'; - $enqueue_action = $footer ? 'ngg_admin_footer_enqueue_scripts' : 'ngg_admin_enqueue_scripts'; - - if ($slug = C_NextGen_Admin_Page_Manager::is_requested()) { - $script_handles = apply_filters($script_handles_filter, array(), $slug); - $style_handles = apply_filters($style_handles_filter, array(), $slug); - - foreach ($script_handles as $handle => $version) { - $hook = "ngg_enqueue_{$handle}_script"; - if (has_action($hook)) - do_action($hook, $handle, $version); - else - wp_enqueue_script($handle, '', array(), $version); - - } - - if (!$footer) { - foreach ($style_handles as $handle => $version) { - $hook = "ngg_enqueue_{$handle}_style"; - if (has_action($hook)) - do_action($hook, $handle, $version); - else - wp_enqueue_style($handle, '', array(), $version); - } - } - - // Expose a means for other modules or third-party plugins to provide their own - // enqueue calls - do_action($enqueue_action, $slug); - } - } - - // Enqueues static resources that should be enqueued in the FOOTER on a NextGEN Admin Page - function enqueue_common_admin_footer_static_resources() - { - self::enqueue_common_admin_static_resources(TRUE); - } + // Enqueues static resources that should be enqueued in the HEADER on a NextGEN Admin Page + static function enqueue_common_admin_static_resources($footer=FALSE) + { + $footer = ($footer === TRUE); + $script_handles_filter = $footer ? 'ngg_admin_footer_script_handles' : 'ngg_admin_script_handles'; + $style_handles_filter = 'ngg_admin_style_handles'; + $enqueue_action = $footer ? 'ngg_admin_footer_enqueue_scripts' : 'ngg_admin_enqueue_scripts'; + + if ($slug = C_NextGen_Admin_Page_Manager::is_requested()) { + $script_handles = apply_filters($script_handles_filter, array(), $slug); + $style_handles = apply_filters($style_handles_filter, array(), $slug); + + foreach ($script_handles as $handle => $version) { + $hook = "ngg_enqueue_{$handle}_script"; + if (has_action($hook)) + do_action($hook, $handle, $version); + else + wp_enqueue_script($handle, '', array(), $version); + + } + + if (!$footer) { + foreach ($style_handles as $handle => $version) { + $hook = "ngg_enqueue_{$handle}_style"; + if (has_action($hook)) + do_action($hook, $handle, $version); + else + wp_enqueue_style($handle, '', array(), $version); + } + } + + // Expose a means for other modules or third-party plugins to provide their own + // enqueue calls + do_action($enqueue_action, $slug); + } + } - /** - * Hooks into the WordPress Framework - */ - function _register_hooks() - { + // Enqueues static resources that should be enqueued in the FOOTER on a NextGEN Admin Page + function enqueue_common_admin_footer_static_resources() + { + self::enqueue_common_admin_static_resources(TRUE); + } + + /** + * Hooks into the WordPress Framework + */ + function _register_hooks() + { // Register scripts add_action('init', array($this, 'register_scripts'), 9); - add_action('admin_enqueue_scripts', array($this, 'enqueue_wizard_components')); + + // Wizard-related hooks + add_action('admin_enqueue_scripts', array($this, 'enqueue_wizard_components')); add_action('current_screen', array($this, 'init_wizards'), 20); add_action('current_screen', array($this, 'handle_wizards'), 100); // Enqueue common static resources for NGG admin pages - add_filter('ngg_admin_style_handles', array($this, 'get_common_admin_css_handlers')); - add_filter('ngg_admin_script_handles', array($this, 'get_common_admin_js_handlers')); - add_action('admin_enqueue_scripts', array(get_class(), 'enqueue_common_admin_static_resources')); - add_action('admin_footer_print_scripts', array(&$this, 'enqueue_common_admin_footer_static_resources')); + add_filter('ngg_admin_style_handles', array($this, 'get_common_admin_css_handlers')); + add_filter('ngg_admin_script_handles', array($this, 'get_common_admin_js_handlers')); + add_action('admin_enqueue_scripts', array(get_class(), 'enqueue_common_admin_static_resources')); + add_action('admin_footer_print_scripts', array(&$this, 'enqueue_common_admin_footer_static_resources')); - // Provides menu options for managing NextGEN Settings - add_action('admin_menu', array($this, 'add_menu_pages'), 999); - - // Define routes - add_action('ngg_routes', array($this, 'define_routes')); + // Provides menu options for managing NextGEN Settings + add_action('admin_menu', array($this, 'add_menu_pages'), 999); // Add ngg-admin body class to all admin pages for styling add_filter( 'admin_body_class', array($this, 'add_ngg_body_class')); - // Add ngg-post-type body class to NGG custom post types for styling + // Custom post types add_filter( 'admin_body_class', array($this, 'add_ngg_post_type_class')); - - // Add filters for custom post type admin page markup - add_action( 'all_admin_notices', array($this, 'custom_post_type_markup_top')); + add_filter( 'screen_options_show_screen', array($this, 'remove_post_type_screen_options')); + add_action( 'all_admin_notices', array($this, 'custom_post_type_markup_top'), 11); add_action( 'admin_footer', array($this, 'custom_post_type_markup_bottom')); // Requirements need to be registered with the notification manager *before* it's serve_ajax_request() add_action('init', array(C_Admin_Requirements_Manager::get_instance(), 'create_notification'), -10); + // Define routes + add_action('ngg_routes', array($this, 'define_routes')); + // Provides admin notices $notices = C_Admin_Notification_Manager::get_instance(); - add_action('init', array($notices, 'serve_ajax_request')); - add_action('admin_footer', array($notices, 'enqueue_scripts')); - add_action('do_ngg_notices', array($notices, 'render')); + add_action('init', array($notices, 'serve_ajax_request')); + add_action('admin_footer', array($notices, 'enqueue_scripts')); + add_action('do_ngg_notices', array($notices, 'render')); add_action('ngg_created_new_gallery', array($this, 'set_review_notice_flag')); add_action('ngg_created_new_gallery', get_class().'::update_gallery_count_setting'); add_action('ngg_delete_gallery', get_class().'::update_gallery_count_setting'); @@ -224,13 +225,15 @@ class M_NextGen_Admin extends C_Base_Module $notices->add($review_notice_1->get_name(), $review_notice_1); $notices->add($review_notice_2->get_name(), $review_notice_2); $notices->add($review_notice_3->get_name(), $review_notice_3); - } + + $notices->add('nextgen.beginner.gallery_creation_igw', 'C_NextGen_First_Run_Notification_Wizard'); + } /** * Used to determine if the current request is for a NGG legacy page * @return bool */ - static function is_ngg_legacy_page() + static function is_ngg_legacy_page() { return ( is_admin() && @@ -259,7 +262,7 @@ class M_NextGen_Admin extends C_Base_Module * We do not want to suddenly ask users for a review when they have upgraded. Instead we will wait for a new * gallery to be created and then will we also consider displaying reviews if the gallery count is within range. */ - function set_review_notice_flag() + function set_review_notice_flag() { $settings = C_NextGen_Settings::get_instance(); if (!$settings->get('gallery_created_after_reviews_introduced')) @@ -295,52 +298,52 @@ class M_NextGen_Admin extends C_Base_Module { $router = C_Router::get_instance(); wp_register_script( - 'gritter', - $router->get_static_url('photocrati-nextgen_admin#gritter/gritter.min.js'), - array('jquery'), - NGG_SCRIPT_VERSION + 'gritter', + $router->get_static_url('photocrati-nextgen_admin#gritter/gritter.min.js'), + array('jquery'), + NGG_SCRIPT_VERSION ); wp_register_style( - 'gritter', - $router->get_static_url('photocrati-nextgen_admin#gritter/css/gritter.css'), - array(), - NGG_SCRIPT_VERSION + 'gritter', + $router->get_static_url('photocrati-nextgen_admin#gritter/css/gritter.css'), + array(), + NGG_SCRIPT_VERSION ); wp_register_script( - 'ngg_progressbar', - $router->get_static_url('photocrati-nextgen_admin#ngg_progressbar.js'), - array('gritter'), - NGG_SCRIPT_VERSION + 'ngg_progressbar', + $router->get_static_url('photocrati-nextgen_admin#ngg_progressbar.js'), + array('gritter'), + NGG_SCRIPT_VERSION ); wp_register_style( - 'ngg_progressbar', - $router->get_static_url('photocrati-nextgen_admin#ngg_progressbar.css'), - array('gritter'), - NGG_SCRIPT_VERSION + 'ngg_progressbar', + $router->get_static_url('photocrati-nextgen_admin#ngg_progressbar.css'), + array('gritter'), + NGG_SCRIPT_VERSION ); wp_register_style( - 'ngg_select2', - $router->get_static_url('photocrati-nextgen_admin#select2/select2.css'), - array(), - NGG_SCRIPT_VERSION + 'ngg_select2', + $router->get_static_url('photocrati-nextgen_admin#select2/select2.css'), + array(), + NGG_SCRIPT_VERSION ); wp_register_script( - 'ngg_select2', - $router->get_static_url('photocrati-nextgen_admin#select2/select2.js'), - array(), - NGG_SCRIPT_VERSION + 'ngg_select2', + $router->get_static_url('photocrati-nextgen_admin#select2/select2.js'), + array(), + NGG_SCRIPT_VERSION ); wp_register_script( 'jquery.nextgen_radio_toggle', $router->get_static_url('photocrati-nextgen_admin#jquery.nextgen_radio_toggle.js'), array('jquery'), - NGG_SCRIPT_VERSION + NGG_SCRIPT_VERSION ); wp_register_style( - 'ngg-jquery-ui', - $router->get_static_url('photocrati-nextgen_admin#jquery-ui/jquery-ui-1.10.4.custom.css'), - array(), - '1.10.4' + 'ngg-jquery-ui', + $router->get_static_url('photocrati-nextgen_admin#jquery-ui/jquery-ui-1.10.4.custom.css'), + array(), + '1.10.4' ); wp_register_script( 'iris', @@ -363,32 +366,20 @@ class M_NextGen_Admin extends C_Base_Module 'nextgen_admin_js', $router->get_static_url('photocrati-nextgen_admin#nextgen_admin_page.js'), array('wp-color-picker'), - NGG_SCRIPT_VERSION + NGG_SCRIPT_VERSION ); // Style the parent menu icons for NextGEN-related pages wp_add_inline_style('wp-admin', ' - #adminmenu li.toplevel_page_nextgen-gallery img, - #adminmenu li[class*=toplevel_page_nextgen-gallery] img, - #adminmenu li[class*=toplevel_page_ngg] img { - opacity: 1; - max-width: 18px; - padding-top: 7px; - } + #adminmenu li.toplevel_page_nextgen-gallery img, + #adminmenu li[class*=toplevel_page_nextgen-gallery] img, + #adminmenu li[class*=toplevel_page_ngg] img { + opacity: 1; + max-width: 18px; + padding-top: 7px; + } '); - } - - /** - * Adds a common body class to all admin pages - * - * @param $classes - * - * @return string - */ - function add_ngg_body_class( $classes ) - { - return C_NextGen_Admin_Page_Manager::is_requested() ? "$classes ngg-admin" : $classes; - } + } /** * Adds a common body class to all admin pages @@ -397,130 +388,152 @@ class M_NextGen_Admin extends C_Base_Module * * @return string */ + function add_ngg_body_class( $classes ) + { + return C_NextGen_Admin_Page_Manager::is_requested() ? "$classes ngg-admin" : $classes; + } + + /** + * Adds a common body class to all NGG post types pages + * + * @param $classes + * + * @return string + */ function add_ngg_post_type_class( $classes ) + { + return C_NextGen_Admin_Page_Manager::is_requested_post_type() ? "$classes ngg-post-type" : $classes; + } + + function remove_post_type_screen_options() + { + return C_NextGen_Admin_Page_Manager::is_requested_post_type() ? FALSE : TRUE; + } + + /* Add common admin markup to top of custom post type pages */ + function custom_post_type_markup_top() + { + global $title; + if ( C_NextGen_Admin_Page_Manager::is_requested_post_type() && !$this->is_ngg_post_type_with_template() ) { + echo '<div id="ngg_page_content"><div class="ngg_page_content_header "><img src="' . C_Router::get_instance()->get_static_url('photocrati-nextgen_admin#imagely_icon.png') . '"><h3>'. $title . '</h3></div><div class="ngg_page_content_main">'; + } + } + + /* Add common admin markup to bottom of custom post type pages */ + function custom_post_type_markup_bottom() + { + if ( C_NextGen_Admin_Page_Manager::is_requested_post_type() && !$this->is_ngg_post_type_with_template() ) { + echo '</div></div>'; + } + } + + /* Conditional returns true if is post type and uses custom template */ + function is_ngg_post_type_with_template() { $url = $_SERVER['REQUEST_URI']; - $is_ngg_post_type = strpos($url, 'post_type=ngg_') || strpos($url, 'post_type=nextgen_'); - if ( $is_ngg_post_type ) { - return "$classes ngg-post-type"; - } else { - return $classes; + if ( C_NextGen_Admin_Page_Manager::is_requested_post_type() && strpos($url, '&ngg_edit') ) { + return TRUE; + } + return FALSE; + } + + /* Add function to determine if block editor is in use */ + static function is_block_editor() + { + $is_block_editor = false; + if (function_exists('get_current_screen')) { + $current_screen = get_current_screen(); + if (is_object($current_screen)) { + if (method_exists($current_screen, 'is_block_editor')) + $is_block_editor = $current_screen->is_block_editor(); + + if (!$is_block_editor) { + if ($current_screen->action == 'add') + $is_block_editor = function_exists('use_block_editor_for_post_type') && use_block_editor_for_post_type($current_screen->post_type); + else + $is_block_editor = function_exists('use_block_editor_for_post') && use_block_editor_for_post(null); + } + + if (!$is_block_editor) { + if ($current_screen->action == 'add') + $is_block_editor = !isset($_GET['classic-editor']) && function_exists('gutenberg_can_edit_post_type') && gutenberg_can_edit_post_type($current_screen->post_type); + else + $is_block_editor = !isset($_GET['classic-editor']) && function_exists('gutenberg_can_edit_post') && gutenberg_can_edit_post(null); + } + } } + if (!$is_block_editor) + $is_block_editor = function_exists('is_gutenberg_page') && is_gutenberg_page(); + + return $is_block_editor; } - /* Add common admin markup to top of custom post type pages */ - function custom_post_type_markup_top() { - global $title; - $url = $_SERVER['REQUEST_URI']; - $is_ngg_post_type = strpos($url, 'post_type=ngg_') || strpos($url, 'post_type=nextgen_'); - $is_single_edit_page = strpos($url, '&ngg_edit'); - if ( $is_ngg_post_type && !$is_single_edit_page) { - echo '<div id="ngg_page_content"><div class="ngg_page_content_header "><img src="' . C_Router::get_instance()->get_static_url('photocrati-nextgen_admin#imagely_icon.png') . '"><h3>'. $title . '</h3></div><div class="ngg_page_content_main">'; - } - } - - /* Add common admin markup to bottom of custom post type pages */ - function custom_post_type_markup_bottom() { - $url = $_SERVER['REQUEST_URI']; - $is_ngg_post_type = strpos($url, 'post_type=ngg_') || strpos($url, 'post_type=nextgen_'); - $is_single_edit_page = strpos($url, '&ngg_edit'); - if ( $is_ngg_post_type && !$is_single_edit_page) { - echo '</div></div>'; - } - } - - function init_wizards() - { - $is_block_editor = false; - if (function_exists('get_current_screen')) { - $current_screen = get_current_screen(); - if (is_object($current_screen)) { - if (method_exists($current_screen, 'is_block_editor')) - $is_block_editor = $current_screen->is_block_editor(); - - if (!$is_block_editor) { - if ($current_screen->action == 'add') - $is_block_editor = function_exists('use_block_editor_for_post_type') && use_block_editor_for_post_type($current_screen->post_type); - else - $is_block_editor = function_exists('use_block_editor_for_post') && use_block_editor_for_post(null); - } - - if (!$is_block_editor) { - if ($current_screen->action == 'add') - $is_block_editor = !isset($_GET['classic-editor']) && function_exists('gutenberg_can_edit_post_type') && gutenberg_can_edit_post_type($current_screen->post_type); - else - $is_block_editor = !isset($_GET['classic-editor']) && function_exists('gutenberg_can_edit_post') && gutenberg_can_edit_post(null); - } - } - } - - if (!$is_block_editor) - $is_block_editor = function_exists('is_gutenberg_page') && is_gutenberg_page(); - - $wizards = C_NextGEN_Wizard_Manager::get_instance(); - $wizards->set_starter(__('Do you need help with NextGEN?', 'nggallery')); - $wizards->set_active(false); - + function init_wizards() + { + $wizards = C_NextGEN_Wizard_Manager::get_instance(); + $wizards->set_starter(__('Do you need help with NextGEN?', 'nggallery')); + $wizards->set_active(false); + /* * This is the new wizard sequence that helps users both crerate a gallery * and add it to a page. */ - $wizard = $wizards->add_wizard('nextgen.beginner.gallery_creation_igw'); - $wizard->add_step('start'); - $wizard->set_step_text('start', __('Hello, this wizard will guide you through creating a NextGEN gallery and inserting it into a page. Click "Next step" to proceed.', 'nggallery')); - $wizard->add_step('pages_menu'); - $wizard->set_step_text('pages_menu', __('Click on "Pages" to access your WordPress pages.', 'nggallery')); - $wizard->set_step_target('pages_menu', '#menu-pages a.menu-top', 'right center', 'left center'); - $wizard->set_step_view('pages_menu', '#menu-pages a.menu-top'); - $wizard->add_step('add_page_menu'); - $wizard->set_step_text('add_page_menu', __('Click "Add New" to create a new page.', 'nggallery')); - $wizard->set_step_target('add_page_menu', '#menu-pages a[href*="post-new.php?post_type=page"]', 'right center', 'left center'); - $wizard->set_step_view('add_page_menu', '#menu-pages a[href*="post-new.php?post_type=page"]'); - - if ($is_block_editor) { - $wizard->add_step('input_page_title'); - $wizard->set_step_text('input_page_title', __('Type in a title for your page.', 'nggallery')); - $wizard->set_step_target('input_page_title', '.editor-post-title__input', 'bottom center', 'top center'); - $wizard->set_step_view('input_page_title', '.editor-post-title__input'); - - $wizard->add_step('add_block'); - $wizard->set_step_text('add_block', __('Now click the button to insert a block.', 'nggallery')); - $wizard->set_step_target('add_block', 'button.editor-inserter__toggle', 'right center', 'left center'); - $wizard->set_step_view('add_block', 'button.editor-inserter__toggle'); - $wizard->set_step_lazy('add_block', true); - - $wizard->add_step('search_nextgen'); - $wizard->set_step_text('search_nextgen', __('Type "nextgen" to search for the NextGEN block.', 'nggallery')); - $wizard->set_step_target('search_nextgen', 'input.editor-inserter__search', 'right center', 'left center'); - $wizard->set_step_view('search_nextgen', 'input.editor-inserter__search'); - $wizard->set_step_lazy('search_nextgen', true); - - $wizard->add_step('add_ngg_block'); - $wizard->set_step_text('add_ngg_block', __('Click on the NextGEN block to add it.', 'nggallery')); - $wizard->set_step_target('add_ngg_block', 'button.editor-block-list-item-imagely-nextgen-gallery', 'right center', 'left center'); - $wizard->set_step_view('add_ngg_block', 'button.editor-block-list-item-imagely-nextgen-gallery'); - $wizard->set_step_lazy('add_ngg_block', true); - $wizard->set_step_condition('add_ngg_block', 'wait', '1500'); - - $wizard->add_step('add-ngg-gallery'); - $wizard->set_step_text('add-ngg-gallery', __('Now click the "Add Gallery" button to open NextGEN\'s Insert Gallery Window.', 'nggallery')); - $wizard->set_step_target('add-ngg-gallery', '.add-ngg-gallery', 'bottom center', 'top center'); - $wizard->set_step_view('add-ngg-gallery', '.add-ngg-gallery'); - $wizard->set_step_lazy('add-ngg-gallery', true); - } - else { - $wizard->add_step('input_page_title'); - $wizard->set_step_text('input_page_title', __('Type in a title for your page.', 'nggallery')); - $wizard->set_step_target('input_page_title', 'input#title', 'bottom center', 'top center'); - $wizard->set_step_view('input_page_title', 'input#title'); - - $wizard->add_step('add_gallery_button'); - $wizard->set_step_text('add_gallery_button', __('Now click the "Add Gallery" button to open NextGEN\'s Insert Gallery Window (IGW).', 'nggallery')); - $wizard->set_step_target('add_gallery_button', 'a#ngg-media-button', 'right center', 'left center'); - $wizard->set_step_view('add_gallery_button', 'a#ngg-media-button'); - } - + $wizard = $wizards->add_wizard('nextgen.beginner.gallery_creation_igw'); + $wizard->add_step('start'); + $wizard->set_step_text('start', __('Hello, this wizard will guide you through creating a NextGEN gallery and inserting it into a page. Click "Next step" to proceed.', 'nggallery')); + $wizard->add_step('pages_menu'); + $wizard->set_step_text('pages_menu', __('Click on "Pages" to access your WordPress pages.', 'nggallery')); + $wizard->set_step_target('pages_menu', '#menu-pages a.menu-top', 'right center', 'left center'); + $wizard->set_step_view('pages_menu', '#menu-pages a.menu-top'); + $wizard->add_step('add_page_menu'); + $wizard->set_step_text('add_page_menu', __('Click "Add New" to create a new page.', 'nggallery')); + $wizard->set_step_target('add_page_menu', '#menu-pages a[href*="post-new.php?post_type=page"]', 'right center', 'left center'); + $wizard->set_step_view('add_page_menu', '#menu-pages a[href*="post-new.php?post_type=page"]'); + + if ($this->is_block_editor()) { + $wizard->add_step('input_page_title'); + $wizard->set_step_text('input_page_title', __('Type in a title for your page.', 'nggallery')); + $wizard->set_step_target('input_page_title', '.editor-post-title__input', 'bottom center', 'top center'); + $wizard->set_step_view('input_page_title', '.editor-post-title__input'); + + $wizard->add_step('add_block'); + $wizard->set_step_text('add_block', __('Now click the button to insert a block.', 'nggallery')); + $wizard->set_step_target('add_block', 'button.editor-inserter__toggle', 'right center', 'left center'); + $wizard->set_step_view('add_block', 'button.editor-inserter__toggle'); + $wizard->set_step_lazy('add_block', true); + + $wizard->add_step('search_nextgen'); + $wizard->set_step_text('search_nextgen', __('Type "nextgen" to search for the NextGEN block.', 'nggallery')); + $wizard->set_step_target('search_nextgen', 'input.editor-inserter__search', 'right center', 'left center'); + $wizard->set_step_view('search_nextgen', 'input.editor-inserter__search'); + $wizard->set_step_lazy('search_nextgen', true); + + $wizard->add_step('add_ngg_block'); + $wizard->set_step_text('add_ngg_block', __('Click on the NextGEN block to add it.', 'nggallery')); + $wizard->set_step_target('add_ngg_block', 'button.editor-block-list-item-imagely-nextgen-gallery', 'right center', 'left center'); + $wizard->set_step_view('add_ngg_block', 'button.editor-block-list-item-imagely-nextgen-gallery'); + $wizard->set_step_lazy('add_ngg_block', true); + $wizard->set_step_condition('add_ngg_block', 'wait', '1500'); + + $wizard->add_step('add-ngg-gallery'); + $wizard->set_step_text('add-ngg-gallery', __('Now click the "Add Gallery" button to open NextGEN\'s Insert Gallery Window.', 'nggallery')); + $wizard->set_step_target('add-ngg-gallery', '.add-ngg-gallery', 'bottom center', 'top center'); + $wizard->set_step_view('add-ngg-gallery', '.add-ngg-gallery'); + $wizard->set_step_lazy('add-ngg-gallery', true); + } + else { + $wizard->add_step('input_page_title'); + $wizard->set_step_text('input_page_title', __('Type in a title for your page.', 'nggallery')); + $wizard->set_step_target('input_page_title', 'input#title', 'bottom center', 'top center'); + $wizard->set_step_view('input_page_title', 'input#title'); + + $wizard->add_step('add_gallery_button'); + $wizard->set_step_text('add_gallery_button', __('Now click the "Add Gallery" button to open NextGEN\'s Insert Gallery Window (IGW).', 'nggallery')); + $wizard->set_step_target('add_gallery_button', 'a#ngg-media-button', 'right center', 'left center'); + $wizard->set_step_view('add_gallery_button', 'a#ngg-media-button'); + } + $wizard->add_step('add_gallery_tab'); $wizard->set_step_text('add_gallery_tab', __('Now click the "Upload Images" tab to add a new gallery.', 'nggallery')); $wizard->set_step_target('add_gallery_tab', '#attach_to_post_tabs a#ui-id-2', 'right center', 'left center'); @@ -528,94 +541,101 @@ class M_NextGen_Admin extends C_Base_Module $wizard->set_step_context('add_gallery_tab', 'iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]'); $wizard->set_step_lazy('add_gallery_tab', true); $wizard->set_step_condition('add_gallery_tab', 'nextgen_event', 'plupload_init', null, 10000); - $wizard->add_step('input_gallery_name'); - $wizard->set_step_text('input_gallery_name', __('Select a name for your gallery.', 'nggallery')); + $wizard->add_step('input_gallery_name'); + $wizard->set_step_text('input_gallery_name', __('Select a name for your gallery.', 'nggallery')); $wizard->set_step_target('input_gallery_name', 'input#gallery_name:visible', 'bottom center', 'top center'); $wizard->set_step_view('input_gallery_name', 'input#gallery_name'); $wizard->set_step_context('input_gallery_name', array('iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]', 'iframe#ngg-iframe-create_tab')); - $wizard->set_step_lazy('input_gallery_name', true); + $wizard->set_step_lazy('input_gallery_name', true); // $wizard->set_step_condition('input_gallery_name', 'nextgen_event', 'plupload_init', null, 10000); - $wizard->add_step('select_images'); - $wizard->set_step_text('select_images', __('Now click the "Add Files" button and select some images to add to the gallery.', 'nggallery')); - $wizard->set_step_target('select_images', 'a#uploader_browse', 'bottom center', 'top center'); - $wizard->set_step_view('select_images', 'a#uploader_browse'); - $wizard->set_step_context('select_images', array('iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]', 'iframe#ngg-iframe-create_tab')); - $wizard->set_step_lazy('select_images', true); - $wizard->add_step('upload_images'); - $wizard->set_step_text('upload_images', __('Now click the "Start Upload" button to begin the upload process.', 'nggallery')); - $wizard->set_step_target('upload_images', 'a#uploader_upload', 'bottom center', 'top center'); - $wizard->set_step_view('upload_images', 'a#uploader_upload'); - $wizard->set_step_context('upload_images', array('iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]', 'iframe#ngg-iframe-create_tab')); - $wizard->set_step_lazy('upload_images', true); - $wizard->set_step_condition('upload_images', 'plupload_bind', 'UploadComplete', array('iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]', 'iframe#ngg-iframe-create_tab', '#uploader')); - $wizard->add_step('display_gallery_tab'); - $wizard->set_step_text('display_gallery_tab', __('Congratulations! You just created your first gallery. Now let\'s insert it into the page. Click the "Insert into Page" tab.', 'nggallery')); - $wizard->set_step_target('display_gallery_tab', '#attach_to_post_tabs a#ui-id-1', 'right center', 'left center'); - $wizard->set_step_view('display_gallery_tab', '#attach_to_post_tabs a#ui-id-1'); - $wizard->set_step_context('display_gallery_tab', 'iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]'); - $wizard->set_step_lazy('display_gallery_tab', true); - $wizard->set_step_condition('display_gallery_tab', 'wait', '500'); - $wizard->add_step('display_type_select'); - $wizard->set_step_text('display_type_select', __('Click on the "NextGEN Basic Slideshow" radio button to select the display type for the gallery.', 'nggallery')); - $wizard->set_step_target('display_type_select', '.display_type_preview input[value="photocrati-nextgen_basic_slideshow"]', 'bottom center', 'top center'); - $wizard->set_step_view('display_type_select', '.display_type_preview input[type="radio"]'); - $wizard->set_step_context('display_type_select', 'iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]'); - $wizard->set_step_lazy('display_type_select', true); - $wizard->add_step('source_select'); - $wizard->set_step_text('source_select', __('Now click inside the "Galleries" field and select your gallery.', 'nggallery')); - $wizard->set_step_target('source_select', '#source_configuration .galleries_column .select2-container input', 'right center', 'left center'); - $wizard->set_step_view('source_select', '#source_configuration .galleries_column select'); - $wizard->set_step_context('source_select', 'iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]'); - $wizard->set_step_lazy('source_select', true); - $wizard->add_step('insert_gallery'); - $wizard->set_step_text('insert_gallery', __('Now click on the "Insert Gallery" button to insert the gallery in your page.', 'nggallery')); - $wizard->set_step_target('insert_gallery', '#displayed_tab #save_displayed_gallery', 'top center', 'bottom left'); - $wizard->set_step_view('insert_gallery', '#displayed_tab #save_displayed_gallery'); - $wizard->set_step_context('insert_gallery', 'iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]'); - $wizard->set_step_lazy('insert_gallery', true); - $wizard->set_step_condition('insert_gallery', 'wait', '1000'); - $wizard->add_step('finish'); - $wizard->set_step_text('finish', __('Congratulations! You just created your first gallery. You can now click the "Publish" button on the right to publish your page.', 'nggallery')); - } - - function handle_wizards() - { - $wizards = C_NextGEN_Wizard_Manager::get_instance(); - - // adjust wizards state based on query/parameters - $wizards->handle_wizard_query(); - - global $ngg_fs; - // make sure we don't trigger the wizards if NGG Fremius is running or this is an AJAX request - if (isset($_REQUEST['ngg_dismiss_notice']) || (is_admin() && !M_Attach_To_Post::is_atp_url() && !isset($_REQUEST['attach_to_post']) && (!isset($ngg_fs) || !$ngg_fs->is_activation_mode()) && (!defined('DOING_AJAX') || !DOING_AJAX))) - { - $wizards->set_active(true); - } - - // before adding notices or activating individual wizards, ensure wizards are globally enabled and no wizard is currently running already - if ($wizards->is_active() && $wizards->get_running_wizard() == null) - { - // add notice for gallery creation wizard - $wizard = $wizards->get_wizard('nextgen.beginner.gallery_creation_igw'); - - if (!$wizard->is_completed() && !$wizard->is_cancelled()) - { - $mapper = C_Gallery_Mapper::get_instance(); - if ($mapper->count() == 0) - { - $wizard->set_active(true); - $notices = C_Admin_Notification_Manager::get_instance(); - $notices->add('ngg_wizard_' . $wizard->get_id(), array("message" => __('Thanks for installing NextGEN Gallery! Want help creating your first gallery?', 'nggallery') . ' <a data-ngg-wizard="' . $wizard->get_id() . '" class="ngg-wizard-invoker" href="' . esc_url(add_query_arg('ngg_wizard', $wizard->get_id())) . '">' . __('Launch the Gallery Wizard', 'nggallery') . '</a>. ' . __('If you close this message, you can also launch the Gallery Wizard at any time from the', 'nggallery') . ' <a href="' . esc_url(admin_url('admin.php?page=nextgen-gallery')) . '">' . __('NextGEN Overview page', 'nggallery') . '</a>.')); - } - else if (isset($_GET['page']) && $_GET['page'] == 'nextgen-gallery') { - $wizard->set_active(true); - } - } - } - } - - function enqueue_wizard_components() - { + $wizard->add_step('select_images'); + $wizard->set_step_text('select_images', __('Now click the "Add Files" button and select some images to add to the gallery.', 'nggallery')); + $wizard->set_step_target('select_images', 'a#uploader_browse', 'bottom center', 'top center'); + $wizard->set_step_view('select_images', 'a#uploader_browse'); + $wizard->set_step_context('select_images', array('iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]', 'iframe#ngg-iframe-create_tab')); + $wizard->set_step_lazy('select_images', true); + $wizard->add_step('upload_images'); + $wizard->set_step_text('upload_images', __('Now click the "Start Upload" button to begin the upload process.', 'nggallery')); + $wizard->set_step_target('upload_images', 'a#uploader_upload', 'bottom center', 'top center'); + $wizard->set_step_view('upload_images', 'a#uploader_upload'); + $wizard->set_step_context('upload_images', array('iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]', 'iframe#ngg-iframe-create_tab')); + $wizard->set_step_lazy('upload_images', true); + $wizard->set_step_condition('upload_images', 'plupload_bind', 'UploadComplete', array('iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]', 'iframe#ngg-iframe-create_tab', '#uploader')); + $wizard->add_step('display_gallery_tab'); + $wizard->set_step_text('display_gallery_tab', __('Congratulations! You just created your first gallery. Now let\'s insert it into the page. Click the "Insert into Page" tab.', 'nggallery')); + $wizard->set_step_target('display_gallery_tab', '#attach_to_post_tabs a#ui-id-1', 'right center', 'left center'); + $wizard->set_step_view('display_gallery_tab', '#attach_to_post_tabs a#ui-id-1'); + $wizard->set_step_context('display_gallery_tab', 'iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]'); + $wizard->set_step_lazy('display_gallery_tab', true); + $wizard->set_step_condition('display_gallery_tab', 'wait', '500'); + $wizard->add_step('display_type_select'); + $wizard->set_step_text('display_type_select', __('Click on the "NextGEN Basic Slideshow" radio button to select the display type for the gallery.', 'nggallery')); + $wizard->set_step_target('display_type_select', '.display_type_preview input[value="photocrati-nextgen_basic_slideshow"]', 'bottom center', 'top center'); + $wizard->set_step_view('display_type_select', '.display_type_preview input[type="radio"]'); + $wizard->set_step_context('display_type_select', 'iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]'); + $wizard->set_step_lazy('display_type_select', true); + $wizard->add_step('source_select'); + $wizard->set_step_text('source_select', __('Now click inside the "Galleries" field and select your gallery.', 'nggallery')); + $wizard->set_step_target('source_select', '#source_configuration .galleries_column .select2-container input', 'right center', 'left center'); + $wizard->set_step_view('source_select', '#source_configuration .galleries_column select'); + $wizard->set_step_context('source_select', 'iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]'); + $wizard->set_step_lazy('source_select', true); + $wizard->add_step('insert_gallery'); + $wizard->set_step_text('insert_gallery', __('Now click on the "Insert Gallery" button to insert the gallery in your page.', 'nggallery')); + $wizard->set_step_target('insert_gallery', '#displayed_tab #save_displayed_gallery', 'top center', 'bottom left'); + $wizard->set_step_view('insert_gallery', '#displayed_tab #save_displayed_gallery'); + $wizard->set_step_context('insert_gallery', 'iframe[src*="' . NGG_ATTACH_TO_POST_SLUG . '"]'); + $wizard->set_step_lazy('insert_gallery', true); + $wizard->set_step_condition('insert_gallery', 'wait', '1000'); + $wizard->add_step('finish'); + $wizard->set_step_text('finish', __('Congratulations! You just created your first gallery. You can now click the "Publish" button on the right to publish your page.', 'nggallery')); + } + + function handle_wizards() + { + $wizards = C_NextGEN_Wizard_Manager::get_instance(); + + // adjust wizards state based on query/parameters + $wizards->handle_wizard_query(); + + global $ngg_fs; + // make sure we don't trigger the wizards if NGG Fremius is running or this is an AJAX request + if (isset($_REQUEST['ngg_dismiss_notice']) + || (is_admin() + // && C_NextGen_Admin_Page_Manager::is_requested() + && !M_Attach_To_Post::is_atp_url() + && !isset($_REQUEST['attach_to_post']) + && (!isset($ngg_fs) || !$ngg_fs->is_activation_mode()) + && (!defined('DOING_AJAX') || !DOING_AJAX))) + { + $wizards->set_active(true); + } + + // before adding notices or activating individual wizards, ensure wizards are globally enabled and no wizard is currently running already + if ($wizards->is_active() && $wizards->get_running_wizard() == null) + { + // add notice for gallery creation wizard + $wizard = $wizards->get_wizard('nextgen.beginner.gallery_creation_igw'); + + // enable gallery wizard / notification under specific conditions + $is_ngg_overview_page = isset($_GET['page']) && $_GET['page'] == 'nextgen-gallery'; + $is_ecom_instructions_page = isset($_GET['page']) && $_GET['page'] == 'ngg-ecommerce-instructions-page'; + if (!$wizard->is_completed() && !$wizard->is_cancelled() && !$is_ecom_instructions_page) { + $mapper = C_Gallery_Mapper::get_instance(); + if ($mapper->count() == 0) + { + $wizard->set_active(true); + // This notification was registered earlier; set_wizard() here makes the is_renderable() return TRUE + C_NextGen_First_Run_Notification_Wizard::set_wizard($wizard); + } + } + if ($is_ngg_overview_page) + $wizard->set_active(true); + } + } + + function enqueue_wizard_components() + { $router = C_Router::get_instance(); // Wizards related scripts/styles @@ -625,143 +645,144 @@ class M_NextGen_Admin extends C_Base_Module array(), NGG_SCRIPT_VERSION ); - - wp_register_script( - 'tourist', - $router->get_static_url('photocrati-nextgen_admin#tourist/tourist.js'), - array('jquery', 'backbone'), - NGG_SCRIPT_VERSION - ); - wp_register_style( - 'tourist', - $router->get_static_url('photocrati-nextgen_admin#tourist/tourist.css'), - array('bootstrap-tooltip'), - NGG_SCRIPT_VERSION - ); - wp_register_script( - 'ngg-wizards', - $router->get_static_url('photocrati-nextgen_admin#nextgen_wizards.js'), - array('tourist'), - NGG_SCRIPT_VERSION, - true - ); - wp_register_style( - 'ngg-wizards', - $router->get_static_url('photocrati-nextgen_admin#nextgen_wizards.css'), - array('tourist'), - NGG_SCRIPT_VERSION - ); - $wizards = C_NextGEN_Wizard_Manager::get_instance(); - $wizard = $wizards->get_next_wizard(); - - if ($wizards->is_active() && $wizard != null) { - $data = array(); - $data['starter'] = array('text' => $wizards->get_starter(), 'image' => $router->get_static_url('photocrati-nextgen_admin#imagely_icon.png')); - $running_wizard = $wizards->get_running_wizard(); - $data['running_wizard'] = $running_wizard != null ? $running_wizard->get_id() : null; - $data['wizard_list'] = array($wizard->toData()); - wp_localize_script('ngg-wizards', 'NextGEN_Wizard_Manager_State', $data); - if (method_exists('M_Gallery_Display', 'enqueue_fontawesome')) - M_Gallery_Display::enqueue_fontawesome(); - - wp_enqueue_style('ngg-wizards'); - wp_enqueue_script('ngg-wizards'); - }; - } - - /** - * Adds menu pages to manage NextGen Settings - * @uses action: admin_menu - */ - function add_menu_pages() - { - C_NextGen_Admin_Page_Manager::get_instance()->setup(); - } + wp_register_script( + 'tourist', + $router->get_static_url('photocrati-nextgen_admin#tourist/tourist.js'), + array('jquery', 'backbone'), + NGG_SCRIPT_VERSION + ); + wp_register_style( + 'tourist', + $router->get_static_url('photocrati-nextgen_admin#tourist/tourist.css'), + array('bootstrap-tooltip'), + NGG_SCRIPT_VERSION + ); + wp_register_script( + 'ngg-wizards', + $router->get_static_url('photocrati-nextgen_admin#nextgen_wizards.js'), + array('tourist'), + NGG_SCRIPT_VERSION, + true + ); + wp_register_style( + 'ngg-wizards', + $router->get_static_url('photocrati-nextgen_admin#nextgen_wizards.css'), + array('tourist'), + NGG_SCRIPT_VERSION + ); + + $wizards = C_NextGEN_Wizard_Manager::get_instance(); + $wizard = $wizards->get_next_wizard(); + + if ($wizards->is_active() && $wizard != null) { + $data = array(); + $data['starter'] = array('text' => $wizards->get_starter(), 'image' => $router->get_static_url('photocrati-nextgen_admin#imagely_icon.png')); + $running_wizard = $wizards->get_running_wizard(); + $data['running_wizard'] = $running_wizard != null ? $running_wizard->get_id() : null; + $data['wizard_list'] = array($wizard->toData()); + wp_localize_script('ngg-wizards', 'NextGEN_Wizard_Manager_State', $data); + if (method_exists('M_Gallery_Display', 'enqueue_fontawesome')) + M_Gallery_Display::enqueue_fontawesome(); + + wp_enqueue_style('ngg-wizards'); + wp_enqueue_script('ngg-wizards'); + }; + } + + /** + * Adds menu pages to manage NextGen Settings + * @uses action: admin_menu + */ + function add_menu_pages() + { + C_NextGen_Admin_Page_Manager::get_instance()->setup(); + } function get_type_list() { return array( - 'A_Fs_Access_Page' => 'adapter.fs_access_page.php', - 'A_MVC_Validation' => 'adapter.mvc_validation.php', - 'A_Nextgen_Admin_Default_Pages' => 'adapter.nextgen_admin_default_pages.php', - 'A_Nextgen_Settings_Routes' => 'adapter.nextgen_settings_routes.php', - 'C_Admin_Notification_Manager' => 'class.admin_notification_manager.php', - 'C_Admin_Requirements_Manager' => 'class.admin_requirements_manager.php', - 'C_Form' => 'class.form.php', - 'C_Form_Manager' => 'class.form_manager.php', - 'C_NextGEN_Wizard_Manager' => 'class.nextgen_wizard_manager.php', - 'C_NextGen_Admin_Page_Manager' => 'class.nextgen_admin_page_manager.php', - 'C_Nextgen_Admin_Installer' => 'class.nextgen_admin_installer.php', - 'C_Nextgen_Admin_Page_Controller' => 'class.nextgen_admin_page_controller.php' + 'A_Fs_Access_Page' => 'adapter.fs_access_page.php', + 'A_MVC_Validation' => 'adapter.mvc_validation.php', + 'A_Nextgen_Admin_Default_Pages' => 'adapter.nextgen_admin_default_pages.php', + 'A_Nextgen_Settings_Routes' => 'adapter.nextgen_settings_routes.php', + 'C_Admin_Notification_Manager' => 'class.admin_notification_manager.php', + 'C_Admin_Requirements_Manager' => 'class.admin_requirements_manager.php', + 'C_Form' => 'class.form.php', + 'C_Form_Manager' => 'class.form_manager.php', + 'C_NextGEN_Wizard_Manager' => 'class.nextgen_wizard_manager.php', + 'C_NextGen_Admin_Page_Manager' => 'class.nextgen_admin_page_manager.php', + 'C_Nextgen_Admin_Installer' => 'class.nextgen_admin_installer.php', + 'C_Nextgen_Admin_Page_Controller' => 'class.nextgen_admin_page_controller.php', + 'C_NextGen_First_Run_Notification_Wizard' => 'class.nextgen_first_run_notification_wizard.php' ); } } class C_NextGen_Admin_Installer { - function install() - { - $settings = C_NextGen_Settings::get_instance(); - - // In version 0.2 of this module and earlier, the following values - // were statically set rather than dynamically using a handler. Therefore, we need - // to delete those static values - $module_name = 'photocrati-nextgen_admin'; - $modules = get_option('pope_module_list', array()); - if (!$modules) { - $modules = $settings->get('pope_module_list', array()); - } - - $cleanup = FALSE; - foreach ($modules as $module) { - if (strpos($module, $module_name) !== FALSE) { - // Leave $module as-is: inside version_compare() will warn about passing items by reference - $module = explode('|', $module); - $val = array_pop($module); - if (version_compare($val, '0.3') == -1) { - $cleanup = TRUE; - } - break; - } - } - - if ($cleanup) { - $keys = array( - 'jquery_ui_theme', - 'jquery_ui_theme_version', - 'jquery_ui_theme_url' - ); - foreach ($keys as $key) $settings->delete($key); - } - } + function install() + { + $settings = C_NextGen_Settings::get_instance(); + + // In version 0.2 of this module and earlier, the following values + // were statically set rather than dynamically using a handler. Therefore, we need + // to delete those static values + $module_name = 'photocrati-nextgen_admin'; + $modules = get_option('pope_module_list', array()); + if (!$modules) { + $modules = $settings->get('pope_module_list', array()); + } + + $cleanup = FALSE; + foreach ($modules as $module) { + if (strpos($module, $module_name) !== FALSE) { + // Leave $module as-is: inside version_compare() will warn about passing items by reference + $module = explode('|', $module); + $val = array_pop($module); + if (version_compare($val, '0.3') == -1) { + $cleanup = TRUE; + } + break; + } + } + + if ($cleanup) { + $keys = array( + 'jquery_ui_theme', + 'jquery_ui_theme_version', + 'jquery_ui_theme_url' + ); + foreach ($keys as $key) $settings->delete($key); + } + } } class C_NextGen_Admin_Option_Handler { - function get_router() - { - return C_Router::get_instance(); - } + function get_router() + { + return C_Router::get_instance(); + } - function get($key, $default=NULL) - { - $retval = $default; - - switch ($key) { - case 'jquery_ui_theme': - $retval = 'jquery-ui-nextgen'; - break; - case 'jquery_ui_theme_version': - $retval = '1.8'; - break; - case 'jquery_ui_theme_url': - $retval = $this->get_router()->get_static_url('photocrati-nextgen_admin#jquery-ui/jquery-ui-1.10.4.custom.css'); - break; - } - - return $retval; - } + function get($key, $default=NULL) + { + $retval = $default; + + switch ($key) { + case 'jquery_ui_theme': + $retval = 'jquery-ui-nextgen'; + break; + case 'jquery_ui_theme_version': + $retval = '1.8'; + break; + case 'jquery_ui_theme_url': + $retval = $this->get_router()->get_static_url('photocrati-nextgen_admin#jquery-ui/jquery-ui-1.10.4.custom.css'); + break; + } + + return $retval; + } } new M_NextGen_Admin(); \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/package.module.nextgen_admin.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/package.module.nextgen_admin.php index 31aaedfce..6f4151b9b 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/package.module.nextgen_admin.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/package.module.nextgen_admin.php @@ -350,7 +350,12 @@ class C_Admin_Notification_Manager } ob_end_clean(); echo json_encode($retval); - throw new E_Clean_Exit(); + // E_Clean_Exit causes warnings to be appended to XHR responses, potentially breaking the client JS + if (!defined('NGG_DISABLE_SHUTDOWN_EXCEPTION_HANDLER') || !NGG_DISABLE_SHUTDOWN_EXCEPTION_HANDLER) { + throw new E_Clean_Exit(); + } else { + exit; + } } } function render_notice($name) @@ -362,7 +367,11 @@ class C_Admin_Notification_Manager if ($has_method && $handler->is_renderable() || !$has_method) { $show_dismiss_button = method_exists($handler, 'show_dismiss_button') ? $handler->show_dismiss_button() : method_exists($handler, 'is_dismissable') ? $handler->is_dismissable() : FALSE; $template = method_exists($handler, 'get_mvc_template') ? $handler->get_mvc_template() : 'photocrati-nextgen_admin#admin_notice'; - $view = new C_MVC_View($template, array('css_class' => method_exists($handler, 'get_css_class') ? $handler->get_css_class() : 'updated', 'is_dismissable' => method_exists($handler, 'is_dismissable') ? $handler->is_dismissable() : FALSE, 'html' => method_exists($handler, 'render') ? $handler->render() : '', 'show_dismiss_button' => $show_dismiss_button, 'notice_name' => $name)); + // The 'inline' class is necessary to prevent our notices from being moved in the DOM + // see https://core.trac.wordpress.org/ticket/34570 for reference + $css_class = 'inline '; + $css_class .= method_exists($handler, 'get_css_class') ? $handler->get_css_class() : 'updated'; + $view = new C_MVC_View($template, array('css_class' => $css_class, 'is_dismissable' => method_exists($handler, 'is_dismissable') ? $handler->is_dismissable() : FALSE, 'html' => method_exists($handler, 'render') ? $handler->render() : '', 'show_dismiss_button' => $show_dismiss_button, 'notice_name' => $name)); $retval = $view->render(TRUE); $this->_displayed_notice = TRUE; } @@ -904,18 +913,16 @@ class Mixin_NextGen_Admin_Page_Instance_Methods extends Mixin */ function is_authorized_request($privilege = NULL) { + $retval = TRUE; if (!$privilege) { $privilege = $this->object->get_required_permission(); } - $security = $this->get_registry()->get_utility('I_Security_Manager'); - $retval = $sec_token = $security->get_request_token(str_replace(array(' ', "\n", "\t"), '_', $privilege)); - $sec_actor = $security->get_current_actor(); // Ensure that the user has permission to access this page - if (!$sec_actor->is_allowed($privilege)) { + if (!M_Security::is_allowed($privilege)) { $retval = FALSE; } // Ensure that nonce is valid - if ($this->object->is_post_request() && !$sec_token->check_current_request()) { + if ($this->object->is_post_request() && (isset($_REQUEST['nonce']) && !M_Security::verify_nonce($_REQUEST['nonce'], $privilege))) { $retval = FALSE; } return $retval; @@ -926,7 +933,7 @@ class Mixin_NextGen_Admin_Page_Instance_Methods extends Mixin */ function get_required_permission() { - return $this->object->name; + return str_replace(array(' ', "\n", "\t"), '_', $this->object->name); } // Sets an appropriate screen for NextGEN Admin Pages function set_screen() @@ -993,7 +1000,7 @@ class Mixin_NextGen_Admin_Page_Instance_Methods extends Mixin if (defined('NGG_PRO_PLUGIN_VERSION')) { $message = __("Good work. Keep making the web beautiful.", 'nggallery'); } else { - $message = __('Create more beautiful galleries. Upgrade to ') . '<a href="https://www.imagely.com/wordpress-gallery-plugin/nextgen-pro/?utm_source=ngg&utm_medium=ngguser&utm_campaign=ngpro" target="_blank">' . __('NextGEN Pro') . '</a>'; + $message = __('Create more beautiful galleries. Upgrade to ') . '<a href="https://www.imagely.com/wordpress-gallery-plugin/nextgen-pro/?utm_source=ngg&utm_medium=ngguser&utm_campaign=ngpro" class="button-primary" style="margin-left: 10px;" target="_blank">' . __('NextGEN Pro') . '</a>'; } return $message; } @@ -1103,7 +1110,7 @@ class Mixin_NextGen_Admin_Page_Instance_Methods extends Mixin } } // Render the view - $index_params = array('page_heading' => $this->object->get_page_heading(), 'tabs' => $tabs, 'forms' => $forms, 'errors' => $errors, 'success' => $success, 'header_message' => $this->object->get_header_message(), 'form_header' => $token->get_form_html(), 'show_save_button' => $this->object->show_save_button(), 'model' => $this->object->has_method('get_model') ? $this->get_model() : NULL, 'logo' => $this->get_router()->get_static_url('photocrati-nextgen_admin#imagely_icon.png')); + $index_params = array('page_heading' => $this->object->get_page_heading(), 'tabs' => $tabs, 'forms' => $forms, 'errors' => $errors, 'success' => $success, 'form_header' => FALSE, 'header_message' => $this->object->get_header_message(), 'nonce' => M_Security::create_nonce($this->object->get_required_permission()), 'show_save_button' => $this->object->show_save_button(), 'model' => $this->object->has_method('get_model') ? $this->get_model() : NULL, 'logo' => $this->get_router()->get_static_url('photocrati-nextgen_admin#imagely_icon.png')); $index_params = array_merge($index_params, $this->object->get_index_params()); $this->render_partial($this->object->index_template(), $index_params); } else { @@ -1144,16 +1151,30 @@ class C_NextGen_Admin_Page_Manager extends C_Component $this->implement('I_Page_Manager'); } /** - * Determines if a NextGEN Admin page is being requested + * Determines if a NextGEN page or post type is being requested * @return bool|string */ static function is_requested() + { + $retval = FALSE; + if (self::is_requested_page()) { + $retval = self::is_requested_page(); + } elseif (self::is_requested_post_type()) { + $retval = self::is_requested_post_type(); + } + return apply_filters('is_ngg_admin_page', $retval); + } + /** + * Determines if a NextGEN Admin page is being requested + * @return bool|string + */ + static function is_requested_page() { $retval = FALSE; // First, check the screen for the "ngg" property. This is how ngglegacy pages register themselves $screen = get_current_screen(); if (property_exists($screen, 'ngg') && $screen->ngg) { - $retval = TRUE; + $retval = $screen->id; } else { foreach (self::get_instance()->get_all() as $slug => $properties) { // Are we rendering a NGG added page? @@ -1163,13 +1184,27 @@ class C_NextGen_Admin_Page_Manager extends C_Component $retval = $slug; break; } - } elseif (isset($properties['post_type']) && $screen->post_type == $properties['post_type']) { - $retval = $slug; - break; } } } - return apply_filters('is_ngg_admin_page', $retval); + return $retval; + } + /** + * Determines if a NextGEN post type is being requested + * @return bool|string + */ + static function is_requested_post_type() + { + $retval = FALSE; + $screen = get_current_screen(); + foreach (self::get_instance()->get_all() as $slug => $properties) { + // Are we rendering a NGG post type? + if (isset($properties['post_type']) && $screen->post_type == $properties['post_type']) { + $retval = $slug; + break; + } + } + return $retval; } } class Mixin_Page_Manager extends Mixin @@ -1308,6 +1343,56 @@ class C_Page_Manager return C_NextGen_Admin_Page_Manager::is_requested(); } } +class C_NextGen_First_Run_Notification_Wizard +{ + protected static $wizard = NULL; + protected static $_instance = NULL; + /** + * @return bool + */ + public function is_renderable() + { + return is_null(self::$wizard) ? FALSE : TRUE; + } + /** + * @return string + */ + public function render() + { + if (!self::$wizard) { + return ''; + } + $wizard = self::$wizard; + return __('Thanks for installing NextGEN Gallery! Want help creating your first gallery?', 'nggallery') . ' <a data-ngg-wizard="' . $wizard->get_id() . '" class="ngg-wizard-invoker" href="' . esc_url(add_query_arg('ngg_wizard', $wizard->get_id())) . '">' . __('Launch the Gallery Wizard', 'nggallery') . '</a>. ' . __('If you close this message, you can also launch the Gallery Wizard at any time from the', 'nggallery') . ' <a href="' . esc_url(admin_url('admin.php?page=nextgen-gallery')) . '">' . __('NextGEN Overview page', 'nggallery') . '</a>.'; + } + public function get_css_class() + { + return 'updated'; + } + public function is_dismissable() + { + return TRUE; + } + public function dismiss($code) + { + return array('handled' => TRUE); + } + /** + * @return C_NextGen_First_Run_Notification_Wizard + */ + public static function get_instance() + { + if (!isset(self::$_instance)) { + $klass = get_class(); + self::$_instance = new $klass(); + } + return self::$_instance; + } + public static function set_wizard($wizard) + { + self::$wizard = $wizard; + } +} /** * Class C_NextGEN_Wizard */ diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/dropdown_arrow.png b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/dropdown_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..4158fde32511ad56dcd776110704ca626242bb9d GIT binary patch literal 5367 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 a@SmUQ=Alf{%I*gsAA7p`xvX<aXaWGLgBJ$? literal 0 HcmV?d00001 diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/imagely_icon.png b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/imagely_icon.png index 2cef0cae5026801384bf570e89bc9674d9e1537c..29e0c6cff5043a4754777eea326f06a1023d22c6 100644 GIT binary patch delta 14178 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 S{E~rzfx*+&&t;ucLK6T22|x`1 delta 10744 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½QDCm&)Y-Z_UgG+EgR?Es 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 diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.css index b7b037dbe..112523dbd 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.css @@ -117,15 +117,22 @@ table.nextgen_settings_position { } #ngg_page_content { - padding-bottom: 0; - width: 98%; + background: #ffffff; + box-shadow: 0 0 12px 6px rgba(0,0,0,.03); + box-sizing: border-box; font-family: lato,sans-serif; + float:left; height: auto; margin-top: 25px; - float:left; - box-shadow: 0 0 100px 10px rgba(0,0,0,.05); + padding: 20px 40px; + width: 98%; + color: black; + font-size: 15px; + letter-spacing: .3px; + font-weight: 500; } + #adminmenu .wp-submenu a[href*=ngg_pro_upgrade] { color: #9fbb1a; font-weight: 600; @@ -144,7 +151,7 @@ table.nextgen_settings_position { .ngg_manage_images, .ngg_manage_images, .ngg_gallery_sort { - background: #fcfcfc; + background: #ffffff; } #ngg_page_content .wrap { @@ -153,9 +160,31 @@ table.nextgen_settings_position { #ngg_page_content .about-wrap { max-width: 100%; - background: #fff; float: left; - background: #fcfcfc; +} + +.about-wrap [class$="-col"] { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.about-wrap [class$="-col"] .col { + flex: 1; + align-self: flex-start; +} + +.about-wrap [class$="-col"] .col+.col { + margin-left: 20px; +} + +.about-wrap .two-col img { + margin-bottom: 1.5em; +} + +.about-wrap .headline-feature { + max-width: none; + margin: 0 0 40px 0; } #ngg_page_content a { @@ -166,34 +195,43 @@ table.nextgen_settings_position { #ngg_page_content .button-primary, #ngg_page_content .button-secondary { background-color: #9FBB1A; + background-color: black; color: #fff !important; border: none !important; box-shadow: none !important; text-shadow: none !important; + outline: none !important; height: 35px !important; padding: 0 24px !important; line-height: 35px; width: auto !important; - border-radius: 3px; + border-radius: 0px; text-transform: uppercase; letter-spacing: 1px; font-size: 11px; font-weight: bold; font-family: Lato, sans-serif; + vertical-align: middle; } #ngg_page_content button:hover, #ngg_page_content .button-primary:hover, #ngg_page_content .button-secondary:hover { - background-color: #A9C524; + background-color: #383838; } -#ngg_page_content button:active, -#ngg_page_content .button-primary:active, -#ngg_page_content .button-secondary:active { +#ngg_page_content button:hover, +#ngg_page_content .button-primary:hover, +#ngg_page_content .button-secondary:hover { vertical-align: middle; } +#ngg_page_content button:disabled, +#ngg_page_content .button-primary:disabled, +#ngg_page_content .button-secondary:disabled { + background: #bbb !important; +} + #ngg_page_content .button-secondary { background-color: #888 !important; } @@ -235,10 +273,13 @@ table.nextgen_settings_position { } #ngg_page_content .ngg_save_settings_button { - margin: 30px; - font-weight: 700; - height: 40px !important; - padding: 0 40px !important; + position: absolute; + right: 61px; + top: 128px; +} + +.ecommerce_page_ngg-ecommerce-instructions-page #ngg_page_content .ngg_save_settings_button { + display: none; } #ngg_page_content ::-webkit-input-placeholder { /* Chrome */ @@ -263,16 +304,14 @@ table.nextgen_settings_position { /***** 3) NGG Admin CSS: Header and Menu *****/ #ngg_page_content .ngg_page_content_header { - border-bottom: 10px solid #9FBB1A; height: 80px; - padding: 0 0 0 20px; - background: #143650; margin-top: -23px; + margin-bottom: 24px; } #ngg_page_content .ngg_page_content_header img { - height: 40px; - padding-top: 20px; + height: 60px; + padding-top: 10px; padding-right: 20px; float: left; width: auto; @@ -281,7 +320,7 @@ table.nextgen_settings_position { #ngg_page_content .ngg_page_content_header h2, #ngg_page_content .ngg_page_content_header h3 { line-height: 80px; - color: #fff; + color: black; font-size: 18px; font-family: 'Lato', sans-serif; text-transform: uppercase; @@ -294,26 +333,10 @@ table.nextgen_settings_position { float: right; margin: -98px 0 0 0; font-size: 15px; - font-style: italic; - font-weight: 400; - color: #cdd3d8; - background: rgba(93, 134, 167, 0.18); - padding: 0 40px; - border-left: 1px solid #566b7c; - color: #a7b8c6; - line-height: 80px; -} - -#ngg_page_content .ngg_page_content_header p a { - text-decoration: none; font-weight: 500; - background: #aac43b; - color: #fff; - padding: 5px 10px; - font-style: normal; - margin: -1px 0 0 20px; - border-radius: 1px; - text-transform: uppercase; + color: black; + line-height: 80px; + letter-spacing: .3px; } #ngg_page_content .ngg_page_content_header .ngg_save_settings_button { @@ -331,17 +354,17 @@ table.nextgen_settings_position { #ngg_page_content .ngg_page_content_menu a { box-shadow: none !important; + border-left: 5px solid #ffffff; cursor: pointer; display: block; - padding: 20px 10px 20px 15px; + padding: 10px 0 10px 20px; line-height: 22px; - margin: 0; + margin: 10px 0; text-decoration: none; - color: #2b5d89;; + color: black; text-transform: uppercase; - font-size: 11px; - border-bottom: 1px solid #eee; - font-weight: 600; + font-size: 13px; + font-weight: 400; letter-spacing: 1.2px; } @@ -353,7 +376,7 @@ table.nextgen_settings_position { } .responsive-menu-icon::before { - color: #fff; + color: black; content: '\f0c9'; display: block; font: normal 20px/1 'Font Awesome 5 Free'; @@ -367,26 +390,11 @@ table.nextgen_settings_position { outline: 0; outline-width: 0; outline-color: transparent; - border-right: 1px solid #fff; - background: #9ebc1b; + border-left: 5px solid #9dbd1b; position: relative; - color: #fff; + color: black; margin-right: -1px; font-weight: 800; - border-bottom: 1px solid #9dbd1b; -} - -#ngg_page_content .ngg_page_content_menu a:before { - float: left; - font: normal 16px/1 'Font Awesome 5 Free'; - height: 16px; - right: 0; - margin-top: 3px; - text-align: right; - z-index: 9999; - padding-right: 10px; - content: "\f1de"; - font-weight: 900; } #ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after, @@ -405,13 +413,16 @@ table.nextgen_settings_position { /***** 4) NGG Admin CSS: Main Content *****/ #ngg_page_content .ngg_page_content_main { - padding: 10px 20px 20px 30px; + padding: 0 20px 20px 30px; min-height: 600px; float: left; - background: #fff; box-sizing: border-box; width: 100%; - box-shadow: 0 -5px 4px 2px rgba(0,0,0,.05); +} + +.gallery_page_nggallery-manage-gallery #ngg_page_content .ngg_page_content_main, +.gallery_page_nggallery-manage-album #ngg_page_content .ngg_page_content_main { + padding: 0 10px 30px; } #ngg_page_content .ngg_overview .ngg_page_content_main, @@ -458,11 +469,16 @@ table.nextgen_settings_position { padding-left: 10px; box-shadow: none; width: 200px; - box-shadow: inset 0 0 2px 1px rgba(100,100,100,.05); + -webkit-appearance: none; + -webkit-border-radius: 0px; + border-radius: 0; } #ngg_page_content .ngg_page_content_main select { - font-size: 13px; + background-image: url(dropdown_arrow.png); + background-size: 10px 10px; + background-repeat: no-repeat; + background-position: 95% 55%; } #ngg_page_content .ngg_page_content_main .select2-container { @@ -473,6 +489,24 @@ table.nextgen_settings_position { #ngg_page_content .ngg_page_content_main .select2-selection--multiple, #ngg_page_content .ngg_page_content_main .select2-selection--single { border: 1px solid #ddd; + border-radius: 0; + height: 35px; + line-height: 35px; + padding-top: 1px; +} + +#ngg_page_content .ngg_page_content_main .thumbnail_options .select2-selection--multiple { + height: auto; + padding-right: 3px; +} + +#ngg_page_content .ngg_page_content_main .thumbnail_options .select2-selection--multiple .select2-search__field { + width: 100% !important; +} + +#ngg_page_content .select2-container--default .select2-selection--single .select2-selection__arrow { + top: 4px; + display: none; } #ngg_page_content .ngg_page_content_main .select2-search { @@ -521,10 +555,10 @@ table.nextgen_settings_position { color: transparent; content: "\2022"; display:block; - height: 16px; - margin: 0 0 0 -1px; + height: 17px; + margin: -1px 0 0 -1px; vertical-align: middle; - width: 16px; + width: 17px; } /***** 5) NGG Admin CSS: Tables *****/ @@ -577,8 +611,6 @@ table.nextgen_settings_position { line-height: 1.5 !important; } -/*#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr td:first-of-type, -#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr th:first-of-type,*/ #attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr td:first-of-type { width: 300px; text-align: left; @@ -595,7 +627,7 @@ table.nextgen_settings_position { #ngg_page_content.ngg_settings_page .ngg_page_content_main table tr:nth-of-type(2n), #attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr:nth-of-type(2n) { - background-color: rgb(247, 248, 243); + background-color: #f7f7f7; } #ngg_page_content.ngg_settings_page .ngg_page_content_main tr.watermark_field { @@ -644,7 +676,7 @@ table.nextgen_settings_position { } #ngg_page_content.ngg_settings_page .nextgen_pro_lightbox_admin_header { - background: #38576f !important; + background: black !important; margin-top: 20px; } @@ -652,14 +684,19 @@ table.nextgen_settings_position { padding-left: 0 !important; } +.nextgen_pro_lightbox_admin_header td { + padding: 10px 0 !important; +} + .nextgen_pro_lightbox_admin_header td h3 { - text-transform: none !important; color: #fff !important; margin: 0 0 0 20px !important; + font-size: 13px !important; + letter-spacing: 1.5px; } .ngg_options_promo { - background: #224460; + background: black; color: #fff; font-family: Lato, sans-serif; font-size: 14px; @@ -685,9 +722,13 @@ table.nextgen_settings_position { /* First, CSS for post type lists */ +.ngg-post-type #screen-meta .metabox-prefs.view-mode { + display: none; +} + .ngg-post-type .ngg_page_content_main .button, .ngg-post-type .ngg_page_content_main .page-title-action { - background-color: #9FBB1A !important; + background-color: black !important; color: #fff !important; border: none !important; box-shadow: none !important; @@ -696,18 +737,24 @@ table.nextgen_settings_position { padding: 0 15px !important; line-height: 35px; width: auto !important; + text-transform: uppercase; + letter-spacing: 1px; + font-size: 11px; } .ngg-post-type .ngg_page_content_main .button:hover, .ngg-post-type .ngg_page_content_main .page-title-action:hover { - background-color: #A9C524 !important; + background-color: #383838 !important; } .ngg-post-type .ngg_page_content_main .page-title-action { - padding: 8px 16px !important; + padding: 10px 18px !important; + margin-left: 10px; + top: -4px; } -.ngg-post-type .ngg_admin_notice { +.ngg-post-type .notice, +.ngg-post-type div#setting-error-tgmpa { display: none; } @@ -740,12 +787,12 @@ table.nextgen_settings_position { .ngg-post-type .ngg_page_content_main table thead, .ngg-post-type .ngg_page_content_main table tfoot { - background-color: #38576f; + background-color: black; text-transform: uppercase; } .ngg-post-type .ngg_page_content_main table tfoot { - background-color: #38576f; + background-color: black; } .ngg-post-type .ngg_page_content_main table thead a, @@ -787,7 +834,7 @@ table.nextgen_settings_position { } .ngg-post-type .ngg_page_content_main .striped>tbody>:nth-child(odd) { - background-color: rgb(247, 248, 243); + background-color: #f7f7f7; } .ngg-post-type .ngg_page_content_main a.row-title { @@ -833,10 +880,18 @@ table.nextgen_settings_position { /* Second, CSS for individual post type edit pages */ +#ngg_page_content #titlediv input#title { + font-size: 22px; + padding: 24px 12px; + color: #383838; + letter-spacing: .5px; + font-weight: 400; +} + .ngg-post-type #ngg_page_content h3.accordion_tab, .ngg-admin #postbox-container-2 h2.ui-sortable-handle { padding: 10px; - background: #38576f; + background: black; margin-bottom: 0; } @@ -844,15 +899,20 @@ table.nextgen_settings_position { .ngg-admin #postbox-container-2 h2.ui-sortable-handle { color: #fff; text-decoration: none; + text-transform: uppercase; + font-weight: 400; + font-size: 15px; + letter-spacing: 2px; + margin-left: 6px; } .ngg-post-type .accordion > div, .ngg-admin #postbox-container-2 .postbox { - border-left: 1px solid rgba(159, 187, 26, 0.05); - border-bottom: 1px solid rgba(159, 187, 26, 0.05); - border-right: 1px solid rgba(159, 187, 26, 0.05); + border-left: 1px solid #eeeeee; + border-bottom: 1px solid #eeeeee; + border-right: 1px solid #eeeeee; margin-bottom: 30px; - background-color: rgb(247, 248, 243); + background-color: #fcfcfc; } .ngg-post-type .accordion > div { @@ -886,6 +946,115 @@ table.nextgen_settings_position { margin: 0; } +/* Third, overrides for some specific post type pages */ + +.post-type-ngg_order #ngg_page_content .ngg_page_content_main, +.post-type-nextgen_proof #ngg_page_content .ngg_page_content_main { + padding-left: 10px; +} + +.post-type-ngg_order.post-php .wp-heading-inline, +.post-type-ngg_order.post-php #submitdiv, +.post-type-ngg_order.post-php .toggle-indicator, +.post-type-nextgen_proof.post-php .wp-heading-inline, +.post-type-nextgen_proof.post-php #submitdiv, +.post-type-nextgen_proof #post-body-content .inside, +.post-type-nextgen_proof.post-php .toggle-indicator { + display:none; +} + +.post-type-ngg_order.post-php #poststuff #post-body.columns-2, +.post-type-nextgen_proof.post-php #poststuff #post-body.columns-2 { + margin-right: 300px; + margin-right: 100px; +} + +.post-type-ngg_order.post-php #post-body.columns-2 #postbox-container-1, +.post-type-nextgen_proof.post-php #post-body.columns-2 #postbox-container-1 { + width: 80px; + margin-right: -100px; +} + +.post-type-ngg_order.post-php #side-sortables, +.post-type-nextgen_proof.post-php #side-sortables { + border:none; +} + +.post-type-ngg_order.post-php #post-body-content { + margin-bottom: 0; +} + +.post-type-ngg_order.post-php #post-body.columns-2 #postbox-container-2 { + float: none; +} + +.post-type-ngg_order.post-php #postbox-container-2 .postbox, +.post-type-nextgen_proof.post-php #postbox-container-2 .postbox { + background-color: #ffffff; +} + +.post-type-ngg_order.post-php #normal-sortables { + min-height: 10px !important; +} + +.post-type-ngg_order.post-php #postbox-container-2 h2.ui-sortable-handle, +.post-type-nextgen_proof.post-php #postbox-container-2 h2.ui-sortable-handle { + margin-left: 0; + padding-left: 16px; +} + +.post-type-ngg_order.post-php .inside h4, +.post-type-nextgen_proof.post-php .inside h4 { + padding: 5px 10px; + text-decoration: none !important; + text-transform: uppercase; + font-weight: 400; +} + +.post-type-ngg_order.post-php .inside, +.post-type-nextgen_proof.post-php .inside { + padding: 30px; + font-size: 14px; +} + +.post-type-nextgen_proof #normal-sortables .closed .inside { + display: block !important; +} + +.post-type-ngg_order.post-php th, +.post-type-nextgen_proof.post-php th { + text-transform: uppercase; + font-size: 15px; + letter-spacing: 1px; + font-weight: 400; + padding-bottom: 10px !important; + color: black !important; +} + +.post-type-ngg_order.post-php table thead, +.post-type-ngg_order.post-php table tfoot, +.post-type-nextgen_proof.post-php.post-php table thead, +.post-type-nextgen_proof.post-php.post-php table tfoot { + background-color: transparent !important; +} + +.post-type-ngg_order .ngg_pro_order_info > table { + max-width: 1200px; + background: #fcfcfc; + box-shadow: none; + font-size: 14px; +} + +.post-type-nextgen_proof .row-actions .inline { + display: none; +} + +/* Extras: Fix for Pro ecom styling when not running updated Pro */ + +#ngg_page_content .ngg_payment_gateway_enable_row { + background: black !important; +} + /* 7) NGG Admin CSS: Media Queries */ @media (max-width: 1030px) { @@ -901,6 +1070,11 @@ table.nextgen_settings_position { } @media (max-width: 782px) { + .about-wrap .three-col .col, .about-wrap .two-col .col { + min-width: 100%! important; + margin-left: 0; + margin-top: 1em; + } .ngg-post-type #ngg_page_content button.toggle-row { width: 40px !important; height: 40px !important; @@ -956,6 +1130,13 @@ table.nextgen_settings_position { #ngg_page_content.ngg_settings_page .ngg_page_content_main table.nextgen_settings_position tr td { display: table-cell; } + #ngg_page_content.ngg_settings_page td.ngg_options_promo { + line-height: 20px !important; + padding: 20px !important; + } + .ngg_options_promo a { + margin-left: 0; + } #ngg_page_content.ngg_settings_page .ngg_page_content_main h2, #ngg_page_content.ngg_settings_page .ngg_page_content_main h3 { text-align: center; @@ -1007,6 +1188,9 @@ table.nextgen_settings_position { display: block; text-align: center; } + #ngg_page_content .ngg_save_settings_button { + position: static; + } .ngg-post-type .ngg_page_content_main .button, .ngg-post-type .ngg_page_content_main .page-title-action { width: 80%!important; @@ -1044,12 +1228,10 @@ table.nextgen_settings_position { /* Responsive Navigation on Mobile */ #ngg_page_content .responsive-menu-icon { display: block; - background: #9fbb1a; padding: 10px 0 15px; } #ngg_page_content .responsive-menu { display: none; - float: none; margin: 0; } #ngg_page_content .responsive-menu a { @@ -1059,4 +1241,4 @@ table.nextgen_settings_position { #ngg_page_content .ngg_page_content_menu a:active:after { display:none; } -} \ No newline at end of file +} diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.js index 79f905b91..3e2011fd1 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.js @@ -51,7 +51,7 @@ jQuery(function($){ } // Check if this is a proxy button for another field - if ($button.attr('name').indexOf('_proxy') != -1) { + if ($button.attr('name') && $button.attr('name').indexOf('_proxy') != -1) { // Get the value to set var value = $button.attr('data-proxy-value'); diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.min.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.min.css index cedc164cc..d50248437 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.min.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.min.css @@ -1 +1 @@ -#ngg_page_content.ngg_settings_page .ngg_page_content_main .watermark_field img,.url_field{max-width:100%}.ngg-admin .notice,.ngg-admin div.error,.ngg-admin div.updated{margin:20px 15px 0 0}.ngg-admin #ngg_page_content .notice,.ngg-admin #ngg_page_content div.error,.ngg-admin #ngg_page_content div.updated{margin:20px 0}.hidden{display:none}.nextgen_advanced_toggle_link{font-size:11px;position:relative;bottom:5px;color:#444}.url_field{width:400px}.nextgen_settings_field_colorpicker{width:85px!important;text-align:center;margin-left:50px}#ngg_page_content .wp-picker-container,#ngg_page_content .wp-picker-holder,#ngg_page_content .wp-picker-input-wrap{position:initial!important}#nextgen_settings_wmXpos,#nextgen_settings_wmYpos{width:65px!important}table.nextgen_settings_position{width:auto!important}#ngg_page_content label.tooltip,#ngg_page_content span.tooltip{outline:0;background-image:url(information.png);background-repeat:no-repeat;padding-left:22px;padding-bottom:4px;background-size:18px}#poststuff .ui-accordion h3{padding-left:25px}#lightbox_effects_content table tr td:first-child{vertical-align:top;text-align:right;padding-right:7px;padding-top:5px}#lightbox_effects_content tr{height:28px}.ngg-admin #screen-meta-links{padding-bottom:20px}.ngg-admin #wpbody{position:static}#ngg_page_content{padding-bottom:0;width:98%;font-family:lato,sans-serif;height:auto;margin-top:25px;float:left;box-shadow:0 0 100px 10px rgba(0,0,0,.05)}#adminmenu .wp-submenu a[href*=ngg_pro_upgrade]{color:#9fbb1a;font-weight:600}.toplevel_page_nextgen-gallery #ngg_page_content{margin-top:20px}#ngg_page_content.ngg_settings_page{background:#fff}.ngg_gallery_sort,.ngg_manage_albums,.ngg_manage_galleries,.ngg_manage_images{background:#fcfcfc}#ngg_page_content .wrap{margin:0}#ngg_page_content .about-wrap{max-width:100%;float:left;background:#fcfcfc}#ngg_page_content a{color:#9fbb1a}#ngg_page_content .button-primary,#ngg_page_content .button-secondary,#ngg_page_content button{background-color:#9FBB1A;color:#fff!important;border:none!important;box-shadow:none!important;text-shadow:none!important;height:35px!important;padding:0 24px!important;line-height:35px;width:auto!important;border-radius:3px;text-transform:uppercase;letter-spacing:1px;font-size:11px;font-weight:700;font-family:Lato,sans-serif}#ngg_page_content .button-primary:hover,#ngg_page_content .button-secondary:hover,#ngg_page_content button:hover{background-color:#A9C524}#ngg_page_content .button-primary:active,#ngg_page_content .button-secondary:active,#ngg_page_content button:active{vertical-align:middle}#ngg_page_content .button-secondary{background-color:#888!important}.ngg-admin #ngg_page_content .notice button,.ngg-admin #ngg_page_content div.error button,.ngg-admin #ngg_page_content div.updated button{background-color:transparent!important;padding:0}#ngg_page_content button,.ngg-admin .notice button,.ngg-admin div.error button,.ngg-admin div.updated button{background:0 0}#ngg_page_content button.wp-color-result{height:24px!important;padding:0 0 0 30px!important;border:1px solid #ddd!important}#ngg_page_content button.wp-color-result:hover{background-color:transparent}#ngg_page_content input[type=checkbox]{height:16px!important;width:16px!important}#ngg_page_content.ngg_settings_page form>p{width:81%;background:#fff;margin:0;float:right}#ngg_page_content .ngg_save_settings_button{margin:30px;font-weight:700;height:40px!important;padding:0 40px!important}#ngg_page_content ::-webkit-input-placeholder{color:#aaa}#ngg_page_content :-ms-input-placeholder{color:#aaa}#ngg_page_content ::-moz-placeholder{color:#aaa;opacity:1}#ngg_page_content :-moz-placeholder{color:#aaa;opacity:1}.ngg-admin .select2-drop.select2-drop-above .select2-search input{width:100%}#ngg_page_content .ngg_page_content_header{border-bottom:10px solid #9FBB1A;height:80px;padding:0 0 0 20px;background:#143650;margin-top:-23px}#ngg_page_content .ngg_page_content_header img{height:40px;padding-top:20px;padding-right:20px;float:left;width:auto}#ngg_page_content .ngg_page_content_header h2,#ngg_page_content .ngg_page_content_header h3{line-height:80px;color:#fff;font-size:18px;font-family:Lato,sans-serif;text-transform:uppercase;letter-spacing:2px;text-align:left;font-weight:900}#ngg_page_content .ngg_page_content_header p{float:right;margin:-98px 0 0;font-size:15px;font-style:italic;font-weight:400;background:rgba(93,134,167,.18);padding:0 40px;border-left:1px solid #566b7c;color:#a7b8c6;line-height:80px}#ngg_page_content .ngg_page_content_header p a{text-decoration:none;font-weight:500;background:#aac43b;color:#fff;padding:5px 10px;font-style:normal;margin:-1px 0 0 20px;border-radius:1px;text-transform:uppercase}#ngg_page_content .ngg_page_content_header .ngg_save_settings_button{margin:0!important}#ngg_page_content .ngg_page_content_menu{width:20%;float:left;padding:0;height:100%;background:0 0}#ngg_page_content .ngg_page_content_menu a{box-shadow:none!important;cursor:pointer;display:block;padding:20px 10px 20px 15px;line-height:22px;margin:0;text-decoration:none;color:#2b5d89;text-transform:uppercase;font-size:11px;border-bottom:1px solid #eee;font-weight:600;letter-spacing:1.2px}.responsive-menu-icon{cursor:pointer;display:none;margin-bottom:5px;text-align:left}.responsive-menu-icon::before{color:#fff;content:'\f0c9';display:block;font:400 20px/1 'Font Awesome 5 Free';margin:0 auto;text-align:center;font-weight:900}#ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active,#ngg_page_content .ngg_page_content_menu a:active{outline:transparent 0;border-right:1px solid #fff;background:#9ebc1b;position:relative;color:#fff;margin-right:-1px;font-weight:800;border-bottom:1px solid #9dbd1b}#ngg_page_content .ngg_page_content_menu a:before{float:left;font:400 16px/1 'Font Awesome 5 Free';height:16px;right:0;margin-top:3px;text-align:right;z-index:9999;padding-right:10px;content:"\f1de";font-weight:900}#ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after,#ngg_page_content .ngg_page_content_menu a:active:after{right:0;border:8px solid transparent;content:"";width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}#ngg_page_content .ngg_page_content_main{padding:10px 20px 20px 30px;min-height:600px;float:left;background:#fff;box-sizing:border-box;width:100%;box-shadow:0 -5px 4px 2px rgba(0,0,0,.05)}#ngg_page_content .ngg_overview .ngg_page_content_main,#ngg_page_content.ngg_settings_page .ngg_page_content_main{width:80%}.gallery_page_ngg_display_settings #ngg_page_content.ngg_settings_page .ngg_page_content_main{min-height:1000px}.gallery_page_ngg_other_options #ngg_page_content.ngg_settings_page .ngg_page_content_main{min-height:400px}#ngg_page_content .ngg_manage_tags .ngg_page_content_main{padding:0}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main>div,#ngg_page_content .ngg_overview .ngg_page_content_main>div,#ngg_page_content.ngg_settings_page .ngg_page_content_main>div{display:none}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main>div:first-of-type,#ngg_page_content .ngg_overview .ngg_page_content_main>div:first-of-type,#ngg_page_content.ngg_settings_page .ngg_page_content_main>div:first-of-type{display:block}#ngg_page_content.ngg_settings_page .ngg_page_content_main h3{color:rgba(29,36,42,.85);font-size:18px;margin:20px 0 30px;text-transform:uppercase}#ngg_page_content .ngg_page_content_main input,#ngg_page_content .ngg_page_content_main select{color:#888;height:35px;border:1px solid #ddd;padding-left:10px;width:200px;box-shadow:inset 0 0 2px 1px rgba(100,100,100,.05)}#ngg_page_content .ngg_page_content_main select{font-size:13px}#ngg_page_content .ngg_page_content_main .select2-container{width:200px!important;line-height:0}#ngg_page_content .ngg_page_content_main .select2-selection--multiple,#ngg_page_content .ngg_page_content_main .select2-selection--single{border:1px solid #ddd}#ngg_page_content .ngg_page_content_main .select2-search{width:100%}#ngg_page_content .ngg_page_content_main .select2-search__field{border-radius:3px}#ngg_page_content .ngg_page_content_main .select2-selection__choice{background:#9fbb1a;border:none;box-shadow:none;color:#fff;line-height:20px;padding:7px 10px 7px 8px;width:92%}#ngg_page_content .ngg_page_content_main .select2-selection__choice__remove{color:#fff;margin-right:6px}#ngg_page_content .ngg_page_content_main div[data-id=lightbox_effects] .select2-container,#ngg_page_content .ngg_page_content_main div[data-id=lightbox_effects] input,#ngg_page_content .ngg_page_content_main div[data-id=lightbox_effects] select{width:250px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main input[type=radio],#ngg_page_content.ngg_settings_page .ngg_page_content_main input[type=radio]{border-radius:50%!important;height:16px!important;width:16px!important;padding:0!important;vertical-align:middle}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main input[type=radio]:checked:before,#ngg_page_content.ngg_settings_page .ngg_page_content_main input[type=radio]:checked:before{background-color:#9FBB1A;border-radius:50%;color:transparent;content:"\2022";display:block;height:16px;margin:0 0 0 -1px;vertical-align:middle;width:16px}#tr_photocrati-nextgen_basic_imagebrowser_ngg_triggers_display,#tr_photocrati-nextgen_basic_slideshow_ngg_triggers_display,.ngg-post-type .ngg_admin_notice{display:none}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table,#ngg_page_content.ngg_settings_page .ngg_page_content_main table{color:rgba(29,36,42,.85);border-collapse:collapse;width:100%}#ngg_page_content table .sorting-indicator:before{color:#fff!important}#attach_to_post_tabs #displayed_tab #display_settings_tab_content table tr,#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr{border:1px solid #f7f8f3;padding:5px 0!important;height:auto}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr td,#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr td,#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr th{line-height:30px;vertical-align:middle;padding:10px 20px;box-sizing:border-box}.ngg-admin #ngg_page_content .widefat td,.ngg-admin #ngg_page_content .widefat th{padding:10px;color:#aaa;vertical-align:middle}.ngg-admin #ngg_page_content .widefat tfoot th,.ngg-admin #ngg_page_content .widefat thead th{padding:0 10px;color:#fff;text-transform:uppercase}#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr th{font-weight:400!important;font-size:13px!important;line-height:1.5!important}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr td:first-of-type{width:300px;text-align:left;font-weight:400;padding-top:8px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table table tr td:first-of-type,#ngg_page_content.ngg_settings_page .ngg_page_content_main table table tr td:first-of-type{width:auto;font-weight:400;padding:10px 20px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr:nth-of-type(2n),#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr:nth-of-type(2n){background-color:#f7f8f3}#ngg_page_content.ngg_settings_page .ngg_page_content_main tr.watermark_field{padding:10px 0!important}#ngg_page_content.ngg_settings_page .ngg_page_content_main .watermark_field table{border:1px solid #d3e1c8}#ngg_page_content.ngg_settings_page .ngg_page_content_main .watermark_field table td{padding:5px 15px!important}#ngg_page_content.ngg_settings_page .ngg_page_content_main .watermark_field table td:first-of-type{width:auto!important}#ngg_page_content.ngg_settings_page .ngg_page_content_main .watermark_field table tr{border:none;padding:0!important}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main label,#ngg_page_content.ngg_settings_page .ngg_page_content_main label,#ngg_page_content.ngg_settings_page .ngg_page_content_main p.description{font-size:14px;color:#666}#ngg_page_content.ngg_settings_page .ngg_page_content_main label{margin-right:5px}#ngg_page_content.ngg_settings_page .ngg_page_content_main label:last-of-type{margin-right:15px}#ngg_page_content.ngg_settings_page .nextgen_settings_position td,#ngg_page_content.ngg_settings_page .nextgen_settings_position tr:nth-of-type(2n){border:none!important}#ngg_page_content.ngg_settings_page .nextgen_pro_lightbox_admin_header{background:#38576f!important;margin-top:20px}.nextgen_pro_lightbox_admin_header td{padding-left:0!important}.nextgen_pro_lightbox_admin_header td h3{text-transform:none!important;color:#fff!important;margin:0 0 0 20px!important}.ngg_options_promo{background:#224460;color:#fff;font-family:Lato,sans-serif;font-size:14px;font-weight:600}.ngg_options_promo a{text-decoration:none;font-weight:600;margin-left:6px}.gallery_page_ngg_other_options #ngg_page_content .ngg_page_content_main tbody tr td.ngg_options_promo{width:100%!important}.ngg-post-type .ngg_page_content_main .button,.ngg-post-type .ngg_page_content_main .page-title-action{background-color:#9FBB1A!important;color:#fff!important;border:none!important;box-shadow:none!important;text-shadow:none!important;height:35px!important;padding:0 15px!important;line-height:35px;width:auto!important}.ngg-post-type .ngg_page_content_main .button:hover,.ngg-post-type .ngg_page_content_main .page-title-action:hover{background-color:#A9C524!important}.ngg-post-type .ngg_page_content_main .page-title-action{padding:8px 16px!important}.ngg-post-type .ngg_page_content_main .tablenav{margin:0 0 20px}.ngg-post-type .ngg_page_content_main .tablenav .actions,.ngg-post-type .ngg_page_content_main .tablenav .tablenav-pages{margin:10px 0}.ngg-post-type .ngg_page_content_main .tablenav .tablenav-pages a,.ngg-post-type .ngg_page_content_main .tablenav-pages-navspan{background:#556472;border:none;color:#fff!important;margin:0 2px}.ngg-post-type #ngg_page_content .ngg_page_content_main .tablenav input.current-page{width:50px!important}.ngg-post-type .ngg_page_content_main table{box-shadow:none;table-layout:auto;border:1px solid rgba(159,187,26,.08)}.ngg-post-type .ngg_page_content_main table tfoot,.ngg-post-type .ngg_page_content_main table thead{background-color:#38576f;text-transform:uppercase}.ngg-post-type .ngg_page_content_main table tfoot{background-color:#38576f}.ngg-post-type .ngg_page_content_main table tfoot a,.ngg-post-type .ngg_page_content_main table thead a{padding:0}.ngg-post-type .ngg_page_content_main table tfoot span,.ngg-post-type .ngg_page_content_main table thead span{color:#fff;font-size:15px}.ngg-post-type .ngg_page_content_main table thead td,.ngg-post-type .ngg_page_content_main table thead th{background-color:transparent;border:none;color:#fff}.ngg-post-type .ngg_page_content_main table thead td{padding:12px 5px!important}.ngg-post-type #ngg_page_content .ngg_page_content_main input[type=checkbox]{height:13px!important;width:13px!important;min-width:auto;margin-top:2px}.ngg-post-type #ngg_page_content .ngg_page_content_main input[type=checkbox]:checked:before{color:#9FBB1A;margin:-5px 0 0 -5px}.ngg-post-type #ngg_page_content .sorting-indicator:before{color:#fff!important}.ngg-post-type .ngg_page_content_main .striped>tbody>:nth-child(odd){background-color:#f7f8f3}.ngg-post-type .ngg_page_content_main a.row-title{font-weight:400}.ngg-post-type .ngg_page_content_main .row-actions{left:0;padding-top:0}.ngg-post-type .ngg_page_content_main .row-actions a{color:#aaa!important}.ngg-post-type .ngg_page_content_main td.column-title strong{margin-bottom:0}.ngg-post-type #wpbody-content .quick-edit-row-page .inline-edit-col-left{width:100%}.ngg-post-type #ngg_page_content .widefat td,.ngg-post-type #ngg_page_content .widefat th{padding:10px;color:#aaa;vertical-align:middle}.ngg-post-type #ngg_page_content .widefat tfoot th,.ngg-post-type #ngg_page_content .widefat thead th{padding:0 10px;color:#fff;text-transform:uppercase}.ngg-post-type .ngg_page_content_main .tablenav.bottom{margin:10px 0 0}.ngg-admin #postbox-container-2 h2.ui-sortable-handle,.ngg-post-type #ngg_page_content h3.accordion_tab{padding:10px;background:#38576f;margin-bottom:0}.ngg-admin #postbox-container-2 h2.ui-sortable-handle,.ngg-post-type #ngg_page_content h3.accordion_tab a{color:#fff;text-decoration:none}.ngg-admin #postbox-container-2 .postbox,.ngg-post-type .accordion>div{border-left:1px solid rgba(159,187,26,.05);border-bottom:1px solid rgba(159,187,26,.05);border-right:1px solid rgba(159,187,26,.05);margin-bottom:30px;background-color:#f7f8f3}.ngg-post-type .accordion>div{padding:20px;margin-bottom:30px}.ngg-post-type .accordion>div table{border:none}.ngg-admin #postbox-container-2 .postbox .inside{margin:0}.ngg-admin #postbox-container-2 .postbox .inside a{color:#9fbb1a}.ngg-admin #postbox-container-2 .postbox .inside td,.ngg-admin #postbox-container-2 .postbox .inside th{padding:5px 10px}.ngg-admin #postbox-container-2 .postbox .inside .button-primary,.ngg-post-type .accordion>div .button-primary{margin:15px 0 0}.ngg-post-type table input[type=text]{margin:0}@media (max-width:1030px){#ngg_page_content .ngg_page_content_header p{padding:0 20px}}@media (max-width:900px){#ngg_page_content .ngg_page_content_header p{display:none}}@media (max-width:782px){.ngg-post-type #ngg_page_content button.toggle-row{width:40px!important;height:40px!important;background:0 0!important}.ngg-post-type tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 8px 3px 35%}.ngg-post-type #ngg_page_content .ngg_page_content_main input[type=checkbox]:checked:before{font:400 20px/1 dashicons!important}#ngg_page_content .ngg_page_content_header img{padding-right:10px}#ngg_page_content .ngg_overview .ngg_page_content_header h3,#ngg_page_content .ngg_page_content_header h3{font-size:14px}#ngg_page_content .ngg_overview .ngg_page_content_main,#ngg_page_content .ngg_page_content_menu,#ngg_page_content.ngg_settings_page .ngg_page_content_main{width:100%}#ngg_page_content .ngg_page_content_main,#ngg_page_content.ngg_settings_page .ngg_page_content_main{padding:20px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table,#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main tbody,#ngg_page_content.ngg_settings_page .ngg_page_content_main table,#ngg_page_content.ngg_settings_page .ngg_page_content_main tbody{display:block!important;max-width:100%}#attach_to_post_tabs #displayed_tab #ngg_page_content #slug_configuration,#ngg_page_content.ngg_settings_page .ngg_page_content_main tbody.hidden{display:none!important}#attach_to_post_tabs #displayed_tab #display_settings_tab_content table tr,#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr{display:block!important;padding:10px 0 20px!important}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr td,#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr td,#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr th{display:block;padding:2px 10px}#ngg_page_content.ngg_settings_page .ngg_page_content_main table.nextgen_settings_position tr td{display:table-cell}#ngg_page_content.ngg_settings_page .ngg_page_content_main h2,#ngg_page_content.ngg_settings_page .ngg_page_content_main h3{text-align:center}#ngg_page_content.ngg_settings_page form>p{width:100%;padding:15px;box-sizing:border-box}#ngg_page_content .ngg_page_content_main input,#ngg_page_content .ngg_page_content_main select{max-width:100%;margin:5px 0;box-sizing:border-box}#ngg_page_content .ngg_page_content_main .select2-container,#ngg_page_content .ngg_page_content_main input[type=number],#ngg_page_content .ngg_page_content_main input[type=text],#ngg_page_content .ngg_page_content_main select{width:100%!important}#ngg_page_content button.wp-color-result{width:auto!important}#ngg_page_content button.wp-color-result .wp-color-result-text{line-height:22px}.ngg-post-type .ngg_page_content_main .subsubsub,.ngg-post-type .ngg_page_content_main .tablenav .actions{width:100%}.ngg-post-type #ngg_page_content .ngg_page_content_main input,.ngg-post-type #ngg_page_content .ngg_page_content_main select{width:100%!important;max-width:100%;margin:5px 0;box-sizing:border-box}#ngg_page_content input[type=checkbox]{width:16px!important}#ngg_page_content .button-primary,#ngg_page_content .button-secondary,#ngg_page_content button{width:100%!important;margin:4px 0;display:block;text-align:center}.ngg-post-type .ngg_page_content_main .button,.ngg-post-type .ngg_page_content_main .page-title-action{width:80%!important;display:block;text-align:center;margin:10px auto 20px;padding:0!important}.ngg-post-type .ngg_page_content_main .displaying-num{display:none}#gallery_selection label{display:block;padding-bottom:8px}.post-type-ngg_pricelist .accordion table{width:100%!important}.post-type-ngg_pricelist .accordion #manual_shipping_options td{display:block;width:100%!important}.post-type-ngg_pricelist #ngg_page_content .accordion table input.shipping_rate{width:100%;max-width:100%}.post-type-ngg_pricelist .accordion input[type=checkbox]:checked:before{font:400 21px/1 dashicons}.ngg-post-type #ngg_page_content h1{text-align:center;display:block}#ngg_page_content .responsive-menu-icon{display:block;background:#9fbb1a;padding:10px 0 15px}#ngg_page_content .responsive-menu{display:none;float:none;margin:0}#ngg_page_content .responsive-menu a{display:block}#ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after,#ngg_page_content .ngg_page_content_menu a:active:after{display:none}} \ No newline at end of file +.ngg-admin .notice,.ngg-admin div.error,.ngg-admin div.updated{margin:20px 15px 0 0}.ngg-admin #ngg_page_content .notice,.ngg-admin #ngg_page_content div.error,.ngg-admin #ngg_page_content div.updated{margin:20px 0}.hidden{display:none}.nextgen_advanced_toggle_link{font-size:11px;position:relative;bottom:5px;color:#444}.url_field{width:400px;max-width:100%}.nextgen_settings_field_colorpicker{width:85px!important;text-align:center;margin-left:50px}#ngg_page_content .wp-picker-container,#ngg_page_content .wp-picker-holder,#ngg_page_content .wp-picker-input-wrap{position:initial!important}#nextgen_settings_wmXpos,#nextgen_settings_wmYpos{width:65px!important}table.nextgen_settings_position{width:auto!important}#ngg_page_content label.tooltip,#ngg_page_content span.tooltip{outline:0;background-image:url(information.png);background-repeat:no-repeat;padding-left:22px;padding-bottom:4px;background-size:18px}#poststuff .ui-accordion h3{padding-left:25px}#lightbox_effects_content table tr td:first-child{vertical-align:top;text-align:right;padding-right:7px;padding-top:5px}#lightbox_effects_content tr{height:28px}.ngg-admin #screen-meta-links{padding-bottom:20px}.ngg-admin #wpbody{position:static}#ngg_page_content{background:#fff;box-shadow:0 0 12px 6px rgba(0,0,0,.03);box-sizing:border-box;font-family:lato,sans-serif;float:left;height:auto;margin-top:25px;padding:20px 40px;width:98%;color:#000;font-size:15px;letter-spacing:.3px;font-weight:500}#adminmenu .wp-submenu a[href*=ngg_pro_upgrade]{color:#9fbb1a;font-weight:600}.toplevel_page_nextgen-gallery #ngg_page_content{margin-top:20px}#ngg_page_content.ngg_settings_page,.ngg_gallery_sort,.ngg_manage_albums,.ngg_manage_galleries,.ngg_manage_images{background:#fff}#ngg_page_content .wrap{margin:0}#ngg_page_content .about-wrap{max-width:100%;float:left}.about-wrap [class$="-col"]{display:flex;justify-content:space-between;flex-wrap:wrap}.about-wrap [class$="-col"] .col{flex:1;align-self:flex-start}.about-wrap [class$="-col"] .col+.col{margin-left:20px}.about-wrap .two-col img{margin-bottom:1.5em}.about-wrap .headline-feature{max-width:none;margin:0 0 40px}#ngg_page_content a{color:#9fbb1a}#ngg_page_content .button-primary,#ngg_page_content .button-secondary,#ngg_page_content button{background-color:#000;color:#fff!important;border:none!important;box-shadow:none!important;text-shadow:none!important;outline:0!important;height:35px!important;padding:0 24px!important;line-height:35px;width:auto!important;border-radius:0;text-transform:uppercase;letter-spacing:1px;font-size:11px;font-weight:700;font-family:Lato,sans-serif;vertical-align:middle}#ngg_page_content .button-primary:hover,#ngg_page_content .button-secondary:hover,#ngg_page_content button:hover{background-color:#383838;vertical-align:middle}#ngg_page_content .button-primary:disabled,#ngg_page_content .button-secondary:disabled,#ngg_page_content button:disabled{background:#bbb!important}#ngg_page_content .button-secondary{background-color:#888!important}.ngg-admin #ngg_page_content .notice button,.ngg-admin #ngg_page_content div.error button,.ngg-admin #ngg_page_content div.updated button{background-color:transparent!important;padding:0}#ngg_page_content button,.ngg-admin .notice button,.ngg-admin div.error button,.ngg-admin div.updated button{background:0 0}#ngg_page_content button.wp-color-result{height:24px!important;padding:0 0 0 30px!important;border:1px solid #ddd!important}#ngg_page_content button.wp-color-result:hover{background-color:transparent}#ngg_page_content input[type=checkbox]{height:16px!important;width:16px!important}#ngg_page_content.ngg_settings_page form>p{width:81%;background:#fff;margin:0;float:right}#ngg_page_content .ngg_save_settings_button{position:absolute;right:61px;top:128px}.ecommerce_page_ngg-ecommerce-instructions-page #ngg_page_content .ngg_save_settings_button{display:none}#ngg_page_content ::-webkit-input-placeholder{color:#aaa}#ngg_page_content :-ms-input-placeholder{color:#aaa}#ngg_page_content ::-moz-placeholder{color:#aaa;opacity:1}#ngg_page_content :-moz-placeholder{color:#aaa;opacity:1}.ngg-admin .select2-drop.select2-drop-above .select2-search input{width:100%}#ngg_page_content .ngg_page_content_header{height:80px;margin-top:-23px;margin-bottom:24px}#ngg_page_content .ngg_page_content_header img{height:60px;padding-top:10px;padding-right:20px;float:left;width:auto}#ngg_page_content .ngg_page_content_header h2,#ngg_page_content .ngg_page_content_header h3{line-height:80px;color:#000;font-size:18px;font-family:Lato,sans-serif;text-transform:uppercase;letter-spacing:2px;text-align:left;font-weight:900}#ngg_page_content .ngg_page_content_header p{float:right;margin:-98px 0 0;font-size:15px;font-weight:500;color:#000;line-height:80px;letter-spacing:.3px}#ngg_page_content .ngg_page_content_header .ngg_save_settings_button{margin:0!important}#ngg_page_content .ngg_page_content_menu{width:20%;float:left;padding:0;height:100%;background:0 0}#ngg_page_content .ngg_page_content_menu a{box-shadow:none!important;border-left:5px solid #fff;cursor:pointer;display:block;padding:10px 0 10px 20px;line-height:22px;margin:10px 0;text-decoration:none;color:#000;text-transform:uppercase;font-size:13px;font-weight:400;letter-spacing:1.2px}.responsive-menu-icon{cursor:pointer;display:none;margin-bottom:5px;text-align:left}.responsive-menu-icon::before{color:#000;content:'\f0c9';display:block;font:400 20px/1 'Font Awesome 5 Free';margin:0 auto;text-align:center;font-weight:900}#ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active,#ngg_page_content .ngg_page_content_menu a:active{outline:transparent 0;border-left:5px solid #9dbd1b;position:relative;color:#000;margin-right:-1px;font-weight:800}#ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after,#ngg_page_content .ngg_page_content_menu a:active:after{right:0;border:8px solid transparent;content:"";width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}#ngg_page_content .ngg_page_content_main{padding:0 20px 20px 30px;min-height:600px;float:left;box-sizing:border-box;width:100%}.gallery_page_nggallery-manage-album #ngg_page_content .ngg_page_content_main,.gallery_page_nggallery-manage-gallery #ngg_page_content .ngg_page_content_main{padding:0 10px 30px}#ngg_page_content .ngg_overview .ngg_page_content_main,#ngg_page_content.ngg_settings_page .ngg_page_content_main{width:80%}.gallery_page_ngg_display_settings #ngg_page_content.ngg_settings_page .ngg_page_content_main{min-height:1000px}.gallery_page_ngg_other_options #ngg_page_content.ngg_settings_page .ngg_page_content_main{min-height:400px}#ngg_page_content .ngg_manage_tags .ngg_page_content_main{padding:0}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main>div,#ngg_page_content .ngg_overview .ngg_page_content_main>div,#ngg_page_content.ngg_settings_page .ngg_page_content_main>div{display:none}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main>div:first-of-type,#ngg_page_content .ngg_overview .ngg_page_content_main>div:first-of-type,#ngg_page_content.ngg_settings_page .ngg_page_content_main>div:first-of-type{display:block}#ngg_page_content.ngg_settings_page .ngg_page_content_main h3{color:rgba(29,36,42,.85);font-size:18px;margin:20px 0 30px;text-transform:uppercase}#ngg_page_content .ngg_page_content_main input,#ngg_page_content .ngg_page_content_main select{color:#888;height:35px;border:1px solid #ddd;padding-left:10px;box-shadow:none;width:200px;-webkit-appearance:none;-webkit-border-radius:0;border-radius:0}#ngg_page_content .ngg_page_content_main select{background-image:url(dropdown_arrow.png);background-size:10px 10px;background-repeat:no-repeat;background-position:95% 55%}#ngg_page_content .ngg_page_content_main .select2-container{width:200px!important;line-height:0}#ngg_page_content .ngg_page_content_main .select2-selection--multiple,#ngg_page_content .ngg_page_content_main .select2-selection--single{border:1px solid #ddd;border-radius:0;height:35px;line-height:35px;padding-top:1px}#ngg_page_content .ngg_page_content_main .thumbnail_options .select2-selection--multiple{height:auto;padding-right:3px}#ngg_page_content .ngg_page_content_main .thumbnail_options .select2-selection--multiple .select2-search__field{width:100%!important}#ngg_page_content .select2-container--default .select2-selection--single .select2-selection__arrow{top:4px;display:none}#ngg_page_content .ngg_page_content_main .select2-search{width:100%}#ngg_page_content .ngg_page_content_main .select2-search__field{border-radius:3px}#ngg_page_content .ngg_page_content_main .select2-selection__choice{background:#9fbb1a;border:none;box-shadow:none;color:#fff;line-height:20px;padding:7px 10px 7px 8px;width:92%}#ngg_page_content .ngg_page_content_main .select2-selection__choice__remove{color:#fff;margin-right:6px}#ngg_page_content .ngg_page_content_main div[data-id=lightbox_effects] .select2-container,#ngg_page_content .ngg_page_content_main div[data-id=lightbox_effects] input,#ngg_page_content .ngg_page_content_main div[data-id=lightbox_effects] select{width:250px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main input[type=radio],#ngg_page_content.ngg_settings_page .ngg_page_content_main input[type=radio]{border-radius:50%!important;height:16px!important;width:16px!important;padding:0!important;vertical-align:middle}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main input[type=radio]:checked:before,#ngg_page_content.ngg_settings_page .ngg_page_content_main input[type=radio]:checked:before{background-color:#9FBB1A;border-radius:50%;color:transparent;content:"\2022";display:block;height:17px;margin:-1px 0 0 -1px;vertical-align:middle;width:17px}#tr_photocrati-nextgen_basic_imagebrowser_ngg_triggers_display,#tr_photocrati-nextgen_basic_slideshow_ngg_triggers_display,.ngg-post-type #screen-meta .metabox-prefs.view-mode,.ngg-post-type .notice,.ngg-post-type div#setting-error-tgmpa,.post-type-nextgen_proof #post-body-content .inside,.post-type-nextgen_proof.post-php #submitdiv,.post-type-nextgen_proof.post-php .toggle-indicator,.post-type-nextgen_proof.post-php .wp-heading-inline,.post-type-ngg_order.post-php #submitdiv,.post-type-ngg_order.post-php .toggle-indicator,.post-type-ngg_order.post-php .wp-heading-inline{display:none}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table,#ngg_page_content.ngg_settings_page .ngg_page_content_main table{color:rgba(29,36,42,.85);border-collapse:collapse;width:100%}#ngg_page_content table .sorting-indicator:before{color:#fff!important}#attach_to_post_tabs #displayed_tab #display_settings_tab_content table tr,#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr{border:1px solid #f7f8f3;padding:5px 0!important;height:auto}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr td,#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr td,#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr th{line-height:30px;vertical-align:middle;padding:10px 20px;box-sizing:border-box}.ngg-admin #ngg_page_content .widefat td,.ngg-admin #ngg_page_content .widefat th{padding:10px;color:#aaa;vertical-align:middle}.ngg-admin #ngg_page_content .widefat tfoot th,.ngg-admin #ngg_page_content .widefat thead th{padding:0 10px;color:#fff;text-transform:uppercase}#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr th{font-weight:400!important;font-size:13px!important;line-height:1.5!important}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr td:first-of-type{width:300px;text-align:left;font-weight:400;padding-top:8px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table table tr td:first-of-type,#ngg_page_content.ngg_settings_page .ngg_page_content_main table table tr td:first-of-type{width:auto;font-weight:400;padding:10px 20px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr:nth-of-type(2n),#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr:nth-of-type(2n){background-color:#f7f7f7}#ngg_page_content.ngg_settings_page .ngg_page_content_main tr.watermark_field{padding:10px 0!important}#ngg_page_content.ngg_settings_page .ngg_page_content_main .watermark_field table{border:1px solid #d3e1c8}#ngg_page_content.ngg_settings_page .ngg_page_content_main .watermark_field table td{padding:5px 15px!important}#ngg_page_content.ngg_settings_page .ngg_page_content_main .watermark_field table td:first-of-type{width:auto!important}#ngg_page_content.ngg_settings_page .ngg_page_content_main .watermark_field table tr{border:none;padding:0!important}#ngg_page_content.ngg_settings_page .ngg_page_content_main .watermark_field img{max-width:100%}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main label,#ngg_page_content.ngg_settings_page .ngg_page_content_main label,#ngg_page_content.ngg_settings_page .ngg_page_content_main p.description{font-size:14px;color:#666}#ngg_page_content.ngg_settings_page .ngg_page_content_main label{margin-right:5px}#ngg_page_content.ngg_settings_page .ngg_page_content_main label:last-of-type{margin-right:15px}#ngg_page_content.ngg_settings_page .nextgen_settings_position td,#ngg_page_content.ngg_settings_page .nextgen_settings_position tr:nth-of-type(2n){border:none!important}#ngg_page_content.ngg_settings_page .nextgen_pro_lightbox_admin_header{background:#000!important;margin-top:20px}.nextgen_pro_lightbox_admin_header td{padding:10px 0!important}.nextgen_pro_lightbox_admin_header td h3{color:#fff!important;margin:0 0 0 20px!important;font-size:13px!important;letter-spacing:1.5px}.ngg_options_promo{background:#000;color:#fff;font-family:Lato,sans-serif;font-size:14px;font-weight:600}.ngg_options_promo a{text-decoration:none;font-weight:600;margin-left:6px}.gallery_page_ngg_other_options #ngg_page_content .ngg_page_content_main tbody tr td.ngg_options_promo{width:100%!important}.ngg-post-type .ngg_page_content_main .button,.ngg-post-type .ngg_page_content_main .page-title-action{background-color:#000!important;color:#fff!important;border:none!important;box-shadow:none!important;text-shadow:none!important;height:35px!important;padding:0 15px!important;line-height:35px;width:auto!important;text-transform:uppercase;letter-spacing:1px;font-size:11px}.ngg-post-type .ngg_page_content_main .button:hover,.ngg-post-type .ngg_page_content_main .page-title-action:hover{background-color:#383838!important}.ngg-post-type .ngg_page_content_main .page-title-action{padding:10px 18px!important;margin-left:10px;top:-4px}.ngg-post-type .ngg_page_content_main .tablenav{margin:0 0 20px}.ngg-post-type .ngg_page_content_main .tablenav .actions,.ngg-post-type .ngg_page_content_main .tablenav .tablenav-pages{margin:10px 0}.ngg-post-type .ngg_page_content_main .tablenav .tablenav-pages a,.ngg-post-type .ngg_page_content_main .tablenav-pages-navspan{background:#556472;border:none;color:#fff!important;margin:0 2px}.ngg-post-type #ngg_page_content .ngg_page_content_main .tablenav input.current-page{width:50px!important}.ngg-post-type .ngg_page_content_main table{box-shadow:none;table-layout:auto;border:1px solid rgba(159,187,26,.08)}.ngg-post-type .ngg_page_content_main table tfoot,.ngg-post-type .ngg_page_content_main table thead{background-color:#000;text-transform:uppercase}.ngg-post-type .ngg_page_content_main table tfoot{background-color:#000}.ngg-post-type .ngg_page_content_main table tfoot a,.ngg-post-type .ngg_page_content_main table thead a{padding:0}.ngg-post-type .ngg_page_content_main table tfoot span,.ngg-post-type .ngg_page_content_main table thead span{color:#fff;font-size:15px}.ngg-post-type .ngg_page_content_main table thead td,.ngg-post-type .ngg_page_content_main table thead th{background-color:transparent;border:none;color:#fff}.ngg-post-type .ngg_page_content_main table thead td{padding:12px 5px!important}.ngg-post-type #ngg_page_content .ngg_page_content_main input[type=checkbox]{height:13px!important;width:13px!important;min-width:auto;margin-top:2px}.ngg-post-type #ngg_page_content .ngg_page_content_main input[type=checkbox]:checked:before{color:#9FBB1A;margin:-5px 0 0 -5px}.ngg-post-type #ngg_page_content .sorting-indicator:before{color:#fff!important}.ngg-post-type .ngg_page_content_main .striped>tbody>:nth-child(odd){background-color:#f7f7f7}.ngg-post-type .ngg_page_content_main a.row-title{font-weight:400}.ngg-post-type .ngg_page_content_main .row-actions{left:0;padding-top:0}.ngg-post-type .ngg_page_content_main .row-actions a{color:#aaa!important}.ngg-post-type .ngg_page_content_main td.column-title strong{margin-bottom:0}.ngg-post-type #wpbody-content .quick-edit-row-page .inline-edit-col-left{width:100%}.ngg-post-type #ngg_page_content .widefat td,.ngg-post-type #ngg_page_content .widefat th{padding:10px;color:#aaa;vertical-align:middle}.ngg-post-type #ngg_page_content .widefat tfoot th,.ngg-post-type #ngg_page_content .widefat thead th{padding:0 10px;color:#fff;text-transform:uppercase}.ngg-post-type .ngg_page_content_main .tablenav.bottom{margin:10px 0 0}#ngg_page_content #titlediv input#title{font-size:22px;padding:24px 12px;color:#383838;letter-spacing:.5px;font-weight:400}.ngg-admin #postbox-container-2 h2.ui-sortable-handle,.ngg-post-type #ngg_page_content h3.accordion_tab{padding:10px;background:#000;margin-bottom:0}.ngg-admin #postbox-container-2 h2.ui-sortable-handle,.ngg-post-type #ngg_page_content h3.accordion_tab a{color:#fff;text-decoration:none;text-transform:uppercase;font-weight:400;font-size:15px;letter-spacing:2px;margin-left:6px}.ngg-admin #postbox-container-2 .postbox,.ngg-post-type .accordion>div{border-left:1px solid #eee;border-bottom:1px solid #eee;border-right:1px solid #eee;margin-bottom:30px;background-color:#fcfcfc}.ngg-post-type .accordion>div table,.post-type-nextgen_proof.post-php #side-sortables,.post-type-ngg_order.post-php #side-sortables{border:none}.ngg-post-type .accordion>div{padding:20px;margin-bottom:30px}.ngg-admin #postbox-container-2 .postbox .inside{margin:0}.ngg-admin #postbox-container-2 .postbox .inside a{color:#9fbb1a}.ngg-admin #postbox-container-2 .postbox .inside td,.ngg-admin #postbox-container-2 .postbox .inside th{padding:5px 10px}.ngg-admin #postbox-container-2 .postbox .inside .button-primary,.ngg-post-type .accordion>div .button-primary{margin:15px 0 0}.ngg-post-type table input[type=text]{margin:0}.post-type-nextgen_proof #ngg_page_content .ngg_page_content_main,.post-type-ngg_order #ngg_page_content .ngg_page_content_main{padding-left:10px}.post-type-nextgen_proof.post-php #poststuff #post-body.columns-2,.post-type-ngg_order.post-php #poststuff #post-body.columns-2{margin-right:100px}.post-type-nextgen_proof.post-php #post-body.columns-2 #postbox-container-1,.post-type-ngg_order.post-php #post-body.columns-2 #postbox-container-1{width:80px;margin-right:-100px}.post-type-ngg_order.post-php #post-body-content{margin-bottom:0}.post-type-ngg_order.post-php #post-body.columns-2 #postbox-container-2{float:none}.post-type-nextgen_proof.post-php #postbox-container-2 .postbox,.post-type-ngg_order.post-php #postbox-container-2 .postbox{background-color:#fff}.post-type-ngg_order.post-php #normal-sortables{min-height:10px!important}.post-type-nextgen_proof.post-php #postbox-container-2 h2.ui-sortable-handle,.post-type-ngg_order.post-php #postbox-container-2 h2.ui-sortable-handle{margin-left:0;padding-left:16px}.post-type-nextgen_proof.post-php .inside h4,.post-type-ngg_order.post-php .inside h4{padding:5px 10px;text-decoration:none!important;text-transform:uppercase;font-weight:400}.post-type-nextgen_proof.post-php .inside,.post-type-ngg_order.post-php .inside{padding:30px;font-size:14px}.post-type-nextgen_proof #normal-sortables .closed .inside{display:block!important}.post-type-nextgen_proof.post-php th,.post-type-ngg_order.post-php th{text-transform:uppercase;font-size:15px;letter-spacing:1px;font-weight:400;padding-bottom:10px!important;color:#000!important}.post-type-nextgen_proof.post-php.post-php table tfoot,.post-type-nextgen_proof.post-php.post-php table thead,.post-type-ngg_order.post-php table tfoot,.post-type-ngg_order.post-php table thead{background-color:transparent!important}.post-type-ngg_order .ngg_pro_order_info>table{max-width:1200px;background:#fcfcfc;box-shadow:none;font-size:14px}.post-type-nextgen_proof .row-actions .inline{display:none}#ngg_page_content .ngg_payment_gateway_enable_row{background:#000!important}@media (max-width:1030px){#ngg_page_content .ngg_page_content_header p{padding:0 20px}}@media (max-width:900px){#ngg_page_content .ngg_page_content_header p{display:none}}@media (max-width:782px){.about-wrap .three-col .col,.about-wrap .two-col .col{min-width:100%!important;margin-left:0;margin-top:1em}.ngg-post-type #ngg_page_content button.toggle-row{width:40px!important;height:40px!important;background:0 0!important}.ngg-post-type tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 8px 3px 35%}.ngg-post-type #ngg_page_content .ngg_page_content_main input[type=checkbox]:checked:before{font:400 20px/1 dashicons!important}#ngg_page_content .ngg_page_content_header img{padding-right:10px}#ngg_page_content .ngg_overview .ngg_page_content_header h3,#ngg_page_content .ngg_page_content_header h3{font-size:14px}#ngg_page_content .ngg_overview .ngg_page_content_main,#ngg_page_content .ngg_page_content_menu,#ngg_page_content.ngg_settings_page .ngg_page_content_main{width:100%}#ngg_page_content .ngg_page_content_main,#ngg_page_content.ngg_settings_page .ngg_page_content_main{padding:20px}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table,#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main tbody,#ngg_page_content.ngg_settings_page .ngg_page_content_main table,#ngg_page_content.ngg_settings_page .ngg_page_content_main tbody{display:block!important;max-width:100%}#attach_to_post_tabs #displayed_tab #ngg_page_content #slug_configuration,#ngg_page_content.ngg_settings_page .ngg_page_content_main tbody.hidden{display:none!important}#attach_to_post_tabs #displayed_tab #display_settings_tab_content table tr,#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr{display:block!important;padding:10px 0 20px!important}#attach_to_post_tabs #displayed_tab #ngg_page_content .ngg_page_content_main table tr td,#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr td,#ngg_page_content.ngg_settings_page .ngg_page_content_main table tr th{display:block;padding:2px 10px}#ngg_page_content.ngg_settings_page .ngg_page_content_main table.nextgen_settings_position tr td{display:table-cell}#ngg_page_content.ngg_settings_page td.ngg_options_promo{line-height:20px!important;padding:20px!important}.ngg_options_promo a{margin-left:0}#ngg_page_content.ngg_settings_page .ngg_page_content_main h2,#ngg_page_content.ngg_settings_page .ngg_page_content_main h3{text-align:center}#ngg_page_content.ngg_settings_page form>p{width:100%;padding:15px;box-sizing:border-box}#ngg_page_content .ngg_page_content_main input,#ngg_page_content .ngg_page_content_main select{max-width:100%;margin:5px 0;box-sizing:border-box}#ngg_page_content .ngg_page_content_main .select2-container,#ngg_page_content .ngg_page_content_main input[type=number],#ngg_page_content .ngg_page_content_main input[type=text],#ngg_page_content .ngg_page_content_main select{width:100%!important}#ngg_page_content button.wp-color-result{width:auto!important}#ngg_page_content button.wp-color-result .wp-color-result-text{line-height:22px}.ngg-post-type .ngg_page_content_main .subsubsub,.ngg-post-type .ngg_page_content_main .tablenav .actions{width:100%}.ngg-post-type #ngg_page_content .ngg_page_content_main input,.ngg-post-type #ngg_page_content .ngg_page_content_main select{width:100%!important;max-width:100%;margin:5px 0;box-sizing:border-box}#ngg_page_content input[type=checkbox]{width:16px!important}#ngg_page_content .button-primary,#ngg_page_content .button-secondary,#ngg_page_content button{width:100%!important;margin:4px 0;display:block;text-align:center}#ngg_page_content .ngg_save_settings_button{position:static}.ngg-post-type .ngg_page_content_main .button,.ngg-post-type .ngg_page_content_main .page-title-action{width:80%!important;display:block;text-align:center;margin:10px auto 20px;padding:0!important}.ngg-post-type .ngg_page_content_main .displaying-num{display:none}#gallery_selection label{display:block;padding-bottom:8px}.post-type-ngg_pricelist .accordion table{width:100%!important}.post-type-ngg_pricelist .accordion #manual_shipping_options td{display:block;width:100%!important}.post-type-ngg_pricelist #ngg_page_content .accordion table input.shipping_rate{width:100%;max-width:100%}.post-type-ngg_pricelist .accordion input[type=checkbox]:checked:before{font:400 21px/1 dashicons}.ngg-post-type #ngg_page_content h1{text-align:center;display:block}#ngg_page_content .responsive-menu-icon{display:block;padding:10px 0 15px}#ngg_page_content .responsive-menu{display:none;margin:0}#ngg_page_content .responsive-menu a{display:block}#ngg_page_content .ngg_page_content_menu .ngg_page_content_menu_active:after,#ngg_page_content .ngg_page_content_menu a:active:after{display:none}} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.min.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.min.js index 5283d21b7..4b970ba98 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.min.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_admin_page.min.js @@ -1 +1 @@ -jQuery(function(e){e(".ngg_page_content_menu a:first-of-type").addClass("ngg_page_content_menu_active"),e(".ngg_page_content_menu a").click(function(t){e(".ngg_page_content_menu a").removeClass("ngg_page_content_menu_active"),e(this).addClass("ngg_page_content_menu_active");e(this).attr("data-id");e(".ngg_page_content_main > div").css("display","none"),e('div[data-id="'+e(this).attr("data-id")+'"]').css("display","block")}),e(".responsive-menu-icon").remove(),e(".ngg_page_content_menu").addClass("responsive-menu").before('<div class="responsive-menu-icon"></div>'),e(".responsive-menu-icon").click(function(){e(this).next(".ngg_page_content_menu").slideToggle("fast")}),e(window).resize(function(){window.innerWidth>640&&(e(".ngg_page_content_menu").removeAttr("style"),e(".responsive-menu > a").removeClass("menu-open"))}),e(".responsive-menu > a").click(function(t){window.innerWidth<782&&e(this).parent(".ngg_page_content_menu").slideToggle("fast")}),e('input[type="submit"], button[type="submit"]').click(function(t){var n=e(this),i=!1;if((i=n.attr("data-confirm"))&&!confirm(i))return void t.preventDefault();if(-1!=n.attr("name").indexOf("_proxy")){var a=n.attr("data-proxy-value");a||(a=n.attr("value"));var s=n.attr("name").replace("_proxy",""),o=e('input[name="'+s+'"]');o.length>0?o.val(a):(o=e("<input/>").attr({type:"hidden",name:s,value:a}),n.parents("form").append(o))}}),e(".nextgen_advanced_toggle_link").on("click",function(t){t.preventDefault();var n="#"+e(this).attr("rel"),i=e(this);e(n).toggle(500,"swing",function(){e(this).hasClass("hidden")?(e(this).removeClass("hidden"),i.text(i.attr("active_label"))):(e(this).addClass("hidden"),i.text(i.attr("hidden_label")))})}),e("input.nextgen_settings_field_colorpicker").wpColorPicker(),e("#ngg_page_content").css("visibility","visible"),e("#ngg-listimages .row-actions .confirmrecover, #ngg-listimages .row-actions.submitdelete.delete").on("click",function(e){var t=e.target;confirm(t.getAttribute("data-question")+' "'+t.getAttribute("data-text")+'"')||e.preventDefault()})}); \ No newline at end of file +jQuery(function(e){e(".ngg_page_content_menu a:first-of-type").addClass("ngg_page_content_menu_active"),e(".ngg_page_content_menu a").click(function(t){e(".ngg_page_content_menu a").removeClass("ngg_page_content_menu_active"),e(this).addClass("ngg_page_content_menu_active");e(this).attr("data-id");e(".ngg_page_content_main > div").css("display","none"),e('div[data-id="'+e(this).attr("data-id")+'"]').css("display","block")}),e(".responsive-menu-icon").remove(),e(".ngg_page_content_menu").addClass("responsive-menu").before('<div class="responsive-menu-icon"></div>'),e(".responsive-menu-icon").click(function(){e(this).next(".ngg_page_content_menu").slideToggle("fast")}),e(window).resize(function(){window.innerWidth>640&&(e(".ngg_page_content_menu").removeAttr("style"),e(".responsive-menu > a").removeClass("menu-open"))}),e(".responsive-menu > a").click(function(t){window.innerWidth<782&&e(this).parent(".ngg_page_content_menu").slideToggle("fast")}),e('input[type="submit"], button[type="submit"]').click(function(t){var n=e(this),i=!1;if((i=n.attr("data-confirm"))&&!confirm(i))return void t.preventDefault();if(n.attr("name")&&-1!=n.attr("name").indexOf("_proxy")){var a=n.attr("data-proxy-value");a||(a=n.attr("value"));var s=n.attr("name").replace("_proxy",""),o=e('input[name="'+s+'"]');o.length>0?o.val(a):(o=e("<input/>").attr({type:"hidden",name:s,value:a}),n.parents("form").append(o))}}),e(".nextgen_advanced_toggle_link").on("click",function(t){t.preventDefault();var n="#"+e(this).attr("rel"),i=e(this);e(n).toggle(500,"swing",function(){e(this).hasClass("hidden")?(e(this).removeClass("hidden"),i.text(i.attr("active_label"))):(e(this).addClass("hidden"),i.text(i.attr("hidden_label")))})}),e("input.nextgen_settings_field_colorpicker").wpColorPicker(),e("#ngg_page_content").css("visibility","visible"),e("#ngg-listimages .row-actions .confirmrecover, #ngg-listimages .row-actions.submitdelete.delete").on("click",function(e){var t=e.target;confirm(t.getAttribute("data-question")+' "'+t.getAttribute("data-text")+'"')||e.preventDefault()})}); \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.css index c7971e254..d60e0eba3 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.css @@ -39,12 +39,12 @@ left: 10%; .ngg-wizard-anchor { background: transparent; -width: 50px; -height: 50px; +width: 10px; +height: 10px; } #ngg-wizard-anchor { position: fixed; -top: 50%; +top: 45%; left: 50%; margin-left: -25px; margin-top: -25px; diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.js index d753935d8..9830172c3 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.js @@ -105,18 +105,30 @@ if (typeof(NextGEN_Wizard_Manager) === 'undefined') { el.click(function (e) { // here we only trigger done() if anchor is page-local (i.e. JS button) because for normal anchors this step is only "done" when reaching the new page - if (!el.is('a') || (el.attr("href").startsWith("#") || el.attr("href").startsWith("javascript:") || el.hasClass("thickbox"))) { + if (!el.is('a,button.ngg_save_settings_button,input.ngg_save_gallery_changes') || (el.attr("href").startsWith("#") || el.attr("href").startsWith("javascript:") || el.hasClass("thickbox"))) { self.done(el); } }); this.setup = function() { - if (!el.is('a')) - return; - var href = el.attr("href"); - this.originalHref = href; + if (!el.is('a,button.ngg_save_settings_button,button.ngg_save_pricelist_button,input.ngg_save_gallery_changes')) { + return; + } + if (el.is('a')) { + var href = el.attr("href"); + this.originalHref = href; + } + + if (el.is('button.ngg_save_settings_button,button.ngg_save_pricelist_button,input.ngg_save_gallery_changes')) { + var href = el.parents('form').attr('action'); + if (href.indexOf("&ngg_wizard") > -1) { + hrefSplit = href.split("&ngg_wizard"); + href = hrefSplit[0]; + } + } + if (!href.startsWith("#")) { if (href.indexOf("?") == -1) href = href + "?"; @@ -125,7 +137,11 @@ if (typeof(NextGEN_Wizard_Manager) === 'undefined') { href = href + "ngg_wizard=" + this.currentWizard + "&ngg_wizard_step=" + this.currentStep; - el.attr("href", href); + if ( el.is('a') ) + el.attr("href", href); + + if ( el.is('button.ngg_save_settings_button,button.ngg_save_pricelist_button,input.ngg_save_gallery_changes') ) + el.parents('form').attr('action', href); } }; @@ -208,7 +224,7 @@ if (typeof(NextGEN_Wizard_Manager) === 'undefined') { view = { handler : ButtonView, name : "ButtonView", - selector : "a, input[type='button'], input[type='submit']" + selector : "a, input[type='button'], input[type='submit'], button" }; this.views.push(view); diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.min.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.min.css index b9af908d2..6dbd92121 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.min.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.min.css @@ -1 +1 @@ -.ngg-wizard-starter{width:250px}.ngg-wizard-starter .starter-wrap-top{width:180px;margin:0 auto}.ngg-wizard-starter .starter-wrap-icon{background:#fff;border-radius:50%;border:2px solid #ccc;border-top-width:4px;padding:1.2em;cursor:pointer}.ngg-wizard-starter img.starter-icon{max-width:100%;z-index:10000}.ngg-wizard-starter .starter-wrap-bottom{background:#fff;border-radius:1em;border:2px solid #ccc;border-top-width:1px;padding:.8em;text-align:center;line-height:1.5em;position:relative;margin-top:-2.2em;cursor:pointer}#ngg-wizard-starter{position:fixed;bottom:0;left:10%}.ngg-wizard-anchor{background:0 0;width:50px;height:50px}#ngg-wizard-anchor{position:fixed;top:50%;left:50%;margin-left:-25px;margin-top:-25px}.tourist-popover .arrow,.tourist-popover .arrow:after{margin-left:0;bottom:auto;overflow:visible}.tourist-popover{z-index:1000100!important;min-width:230px}.tourist-popover .arrow:after{background-color:transparent;box-shadow:none;left:auto;top:auto;transform:none}.tourist-popover .ngg-wizard-text{margin:30px 20px}.tourist-popover .ngg-wizard-loading{text-align:center;margin:5px 0 0;clear:both;font-style:italic} \ No newline at end of file +.ngg-wizard-starter{width:250px}.ngg-wizard-starter .starter-wrap-top{width:180px;margin:0 auto}.ngg-wizard-starter .starter-wrap-icon{background:#fff;border-radius:50%;border:2px solid #ccc;border-top-width:4px;padding:1.2em;cursor:pointer}.ngg-wizard-starter img.starter-icon{max-width:100%;z-index:10000}.ngg-wizard-starter .starter-wrap-bottom{background:#fff;border-radius:1em;border:2px solid #ccc;border-top-width:1px;padding:.8em;text-align:center;line-height:1.5em;position:relative;margin-top:-2.2em;cursor:pointer}#ngg-wizard-starter{position:fixed;bottom:0;left:10%}.ngg-wizard-anchor{background:0 0;width:10px;height:10px}#ngg-wizard-anchor{position:fixed;top:45%;left:50%;margin-left:-25px;margin-top:-25px}.tourist-popover .arrow,.tourist-popover .arrow:after{margin-left:0;bottom:auto;overflow:visible}.tourist-popover{z-index:1000100!important;min-width:230px}.tourist-popover .arrow:after{background-color:transparent;box-shadow:none;left:auto;top:auto;transform:none}.tourist-popover .ngg-wizard-text{margin:30px 20px}.tourist-popover .ngg-wizard-loading{text-align:center;margin:5px 0 0;clear:both;font-style:italic} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.min.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.min.js index b36392c6b..1a936558d 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.min.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/nextgen_wizards.min.js @@ -1 +1 @@ -function NextGEN_Wizard(t,e){this.id=t,this.manager=e,this.data={},this.steps=[],this.status=null,this.tour=null,this.created=Math.floor(Date.now()/1e3)}if("undefined"==typeof NextGEN_Wizard_Manager){NextGEN_Wizard.prototype.start=function(){null!=this.tour&&this.tour.start()},NextGEN_Wizard.prototype.getNextStep=function(t){for(var e=0;e<this.steps.length;e++){if(this.steps[e].id==t)break}return e++,e<this.steps.length?this.steps[e]:null},NextGEN_Wizard.prototype.setState=function(t){};var manager={state:[],wizards:[],runningWizard:null,views:[],starter:null,anchor:null,events:{},targetWatchers:{},refreshTimer:null,nggEvents:[],init:function(){function t(t){this.itemSelector=".view-item",this.currentWizard=null,this.currentStep=null,this.doneFlag=!1,this.init=function(){},this.disable=function(){t.addClass("ngg-wizard-disabled")},this.enable=function(){t.removeClass("ngg-wizard-disabled")},this.setup=function(){},this.reset=function(){t.removeClass("ngg-wizard-has-selection"),t.find(this.itemSelector).removeClass("ngg-wizard-selected")},this.done=function(t){this.doneFlag||(this.doneFlag=!0,this.trigger("done",this,t))}}function e(e){t.call(this,e);var i=this;jQuery(e.get(0).ownerDocument).on("click",e.selector,function(t){i.done(e)})}function i(e){t.call(this,e);var i=this;e.click(function(t){(!e.is("a")||e.attr("href").startsWith("#")||e.attr("href").startsWith("javascript:")||e.hasClass("thickbox"))&&i.done(e)}),this.setup=function(){if(e.is("a")){var t=e.attr("href");this.originalHref=t,t.startsWith("#")||(-1==t.indexOf("?")?t+="?":t+="&",t=t+"ngg_wizard="+this.currentWizard+"&ngg_wizard_step="+this.currentStep,e.attr("href",t))}},this.reset=function(){this.originalHref&&e.is("a")&&e.attr("href",this.originalHref)}}function n(e){t.call(this,e);var i=this;e.on("input",function(t){jQuery(this).val().length>=3&&i.done(e)}),this.setup=function(){}}function r(e){t.call(this,e);var i=this;jQuery(e.get(0).ownerDocument).on("change",e.selector,function(t){jQuery(this).is(":checked")&&i.done(e)}),this.setup=function(){}}function a(e){t.call(this,e);var i=this;e.on("change",function(t){i.done(e)})}"undefined"!=typeof NextGEN_Wizard_Manager_State&&(this.state=NextGEN_Wizard_Manager_State);var o=this;jQuery(window.top.document).find("body").on("nextgen_event",function(t,e){o.nggEvents.push({type:e})}),_.extend(t.prototype,Backbone.Events),_.extend(e.prototype,t.prototype),_.extend(i.prototype,t.prototype),_.extend(n.prototype,t.prototype),_.extend(r.prototype,t.prototype),_.extend(a.prototype,t.prototype);var s=null;s={handler:a,name:"SelectView",selector:"select"},this.views.push(s),s={handler:r,name:"RadioView",selector:"input[type='radio']"},this.views.push(s),s={handler:n,name:"TextView",selector:"input[type='text'], input[type='search'], input[type='email'], input[type='tel'], input[type='number'], input[type='username'], input[type='password'], textarea"},this.views.push(s),s={handler:i,name:"ButtonView",selector:"a, input[type='button'], input[type='submit']"},this.views.push(s),s={handler:e,name:"GenericView",selector:"*"},this.views.push(s),Tourist.Tip.Base.prototype.nextButtonTemplate='<a class="button-primary pull-right tour-next">Next step →</a>',Tourist.Tip.Base.prototype.finalButtonTemplate='<button class="button-primary pull-right tour-next">Finish up</button>',Tourist.Tip.Base.prototype.closeButtonTemplate='<a class="btn btn-close tour-close" href="#"><i class="icon icon-remove far fa-window-close"></i></a>',Tourist.Tip.BootstrapTip.prototype._getTargetBounds=function(t){var e,i;e=t[0],i="function"==typeof e.getBoundingClientRect?e.getBoundingClientRect():{width:e.offsetWidth,height:e.offsetHeight};var n=t.offset();if(t.ownerDocument!=document)for(var r=function(t,e){for(var i=t.find("iframe"),n=[],a=0;a<i.size();a++){var o=jQuery(i.get(a));try{if(o.prop("contentWindow").document==e)return[o]}catch(t){continue}var s=r(o.contents(),e);if(s.length>0){n.push(o);for(var u=0;u<s.length;u++)n.push(s[u]);break}}return n},a=r(jQuery(document),t.get(0).ownerDocument),o=0;o<a.length;o++){var s=a[o],u=s.offset();n.left+=u.left,n.top+=u.top}return jQuery.extend({},i,n)},jQuery(".ngg-wizard-invoker").on("click",function(t){t.preventDefault();for(var e=NextGEN_Wizard_Manager,i=jQuery(this).data("ngg-wizard"),n=null,r=0;r<e.wizards.length;r++){var a=e.wizards[r];if(a.id==i){n=a;break}}return null!=n&&null==this.runningWizard&&n.start(),!1})},bind:function(t,e){t in this.events||(this.events[t]=[]);var i={handler:e};this.events[t].push(i)},trigger:function(t,e){if(void 0===e&&(e={}),t in this.events)for(var i=this.events[t],n=0;n<i.length;n++){var r=i[n];r.handler&&r.handler(this,e)}},didNextgenEventFire:function(t){for(var e=0;e<this.nggEvents.length;e++){if(this.nggEvents[e].type==t)return!0}return!1},getViewForSelector:function(t,e){var i=null;void 0===e&&(e=!0);for(var n=0;n<this.views.length;n++){var r=this.views[n];if(t.is(r.selector)){i=r.handler;break}}if(null!=i){var r=new i(t);return e&&r.init(),r}return null},getViewFor:function(t,e,i){var n=this.getViewForSelector(t,!1);return null!=n&&(n.currentWizard=e,n.currentStep=i,n.init()),n},generateQueue:function(t){var e=this,i=this.state,n=i.wizard_list.length,r=i.starter,a=i.running_wizard;if(n>0){var o=t('<div id="ngg-wizard-starter" class="ngg-wizard-starter"></div>');o.append('<div class="starter-wrap-top"><div class="starter-wrap-icon"><img class="starter-icon" src="'+r.image+'" /></div></div>'),o.append('<div class="starter-wrap-bottom"><div class="starter-wrap-text">'+r.text+"</div></div>"),o.on("click",".starter-wrap-icon, starter-wrap-bottom",function(){e.startQueue()}),o.hide(),o.appendTo("body"),this.starter=o;var s=t('<div id="ngg-wizard-anchor" class="ngg-wizard-anchor"></div>');s.appendTo("body"),this.anchor=s;for(var u=0,l=0;l<n;l++){var d=i.wizard_list[l],h=new NextGEN_Wizard(d.id,this);h.data=d,h.steps=d.steps;var c=this.generateTour(h);"ok"==c.result?(h.status="ready",h.tour=c.tour):"wait_element"==c.result&&(h.status="wait",u++),h.id==a?(this.wizards.unshift(h),this.runningWizard=h):this.wizards.push(h)}u>0?this.enqueueRefreshOperation():this.trigger("ready")}},getContextObject:function(t){var e=null;if(null!=t){"object"!=typeof t&&(t=[t]);for(var i=0;i<t.length;i++){var n=t[i];if(e=null==e?jQuery(n):e.find(n),e.is("iframe")){var r=e.prop("contentWindow");if("interactive"!=r.document.readyState&&"complete"!=r.document.readyState){e=jQuery([]);break}e=r.jQuery?r.jQuery("body"):e.contents().find("body")}}0==e.size()&&(e=jQuery([]))}else e=jQuery(document);return e},computeStepTarget:function(t,e,i){var n=e.target_wait,r=e.target,a=e.view,o=null,s=null,u=null,l=this.getContextObject(e.context),d=!1;if(null!=r){if(o=l.find(r),o.size()>0?d=!0:o=this.anchor,!d&&null!=n&&Math.floor(Date.now()/1e3)-t.created<=n)return!1}else o=this.anchor;return null!=a&&(s=l.find(a),s.size()>0&&(u=this.getViewFor(s,t.id,e.id))),i.highlightTarget=d,i.nextButton=!d||e.optional,i.target=o,i.ngg_view=u,!0},scrollIntoView:function(t){},generateTour:function(t){if(null==t.tour){var e=t.data,i=e.steps,n=e.current_step,r=0,a=[],o=null;if(null!=e.view&&null==(o=this.getViewFor(jQuery(e.view),t.id)))return{result:"wait_element",element:e.view};for(var s=0;s<i.length;s++){var u=i[s];null!=n&&n==u.id&&(r=s);var l={ngg_step_id:u.id,ngg_step_data:u,viewport:jQuery(window),closeButton:!0,content:'<div class="ngg-wizard-text">'+u.text+"</div>",my:u.popup_anchor,at:u.target_anchor,bind:["onDone"],onDone:function(t,e,i,n){var r=t.ngg_wizard,a=this.ngg_step_data,o=!0;if(null!=a.condition&&(this.condition_met||(o=!1,this.condition_setup||this.setupCondition(t,e))),o&&null!=r){var s=r.getNextStep(this.ngg_step_id);if(null!=s&&s.lazy){o=!1;for(var u=null,l=0;l<t.options.steps.length;l++){var d=t.options.steps[l];if(d.ngg_step_id==s.id){u=d;break}}null!=u&&(null==u.target||0==u.target.size()||"ngg-wizard-anchor"==u.target.attr("id")?!(o=r.manager.computeStepTarget(r,s,u))||null!=u.target&&0!=u.target.size()&&"ngg-wizard-anchor"!=u.target.attr("id")||(o=!1):o=!0)}}if(o)t.next();else{null!=this.lazyTimeout&&(clearTimeout(this.lazyTimeout),this.lazyTimeout=null);var h=this;this.lazyTimeout=setTimeout(function(){h.lazyTimeout=null,h.onDone(t,e,i,n)},500)}}};if(!this.computeStepTarget(t,u,l))return{result:"wait_element",element:u.target};l.setupCondition=function(t,e){var i=t.ngg_wizard,n=this.ngg_step_data;if(!this.condition_setup&&null!=n.condition){var r=n.condition,a=r.type,o=r.value,s=r.context,u=r.timeout;this.condition_met=!1,this.condition_setup=!1,s&&"object"!=typeof s&&(s=[s]);var l=jQuery([]);if(s){s=s.slice(0);var d=s.pop();l=i.manager.getContextObject(s).find(d)}if(l.size()>0){var h=l.get(0).ownerDocument;h.defaultView||h.parentWindow}switch(a){case"frame_event":if(window.Frame_Event_Publisher){this.condition_setup=!0;var c=this;Frame_Event_Publisher.listen_for(o,function(){c.condition_met=!0})}break;case"event_bind":case"plupload_bind":var p=l.size()>0;if("plupload_bind"==a&&(void 0!==l.pluploadQueue?l=l.pluploadQueue():p=!1),p){this.condition_setup=!0;var c=this;l.bind(o,function(){c.condition_met=!0})}break;case"nextgen_event":if(this.condition_setup=!0,i.manager.didNextgenEventFire(o))this.condition_met=!0;else{var c=this;jQuery(window.top.document).find("body").bind("nextgen_event",function(t,e){e==o&&(c.condition_met=!0)})}break;case"wait":this.condition_setup=!0;var c=this;setTimeout(function(){c.condition_met=!0},o)}}var g=jQuery(".tourist-popover .ngg-wizard-text"),f=g.find(".ngg-wizard-loading");if(f.hide(),this.condition_setup&&!this.condition_met&&u>0){this.condition_timeout=0,0==f.length&&(f=jQuery('<div class="ngg-wizard-loading"></div>'),g.append(f)),f.html("Loading... ("+Math.ceil(u/1e3).toString()+")"),f.show();var c=this;c.condition_timer=setInterval(function(){c.condition_timeout+=1e3,c.condition_timeout>=u&&(c.condition_met=!0);var t=(Math.floor(c.condition_timeout/1e3),Math.ceil(u/1e3),Math.floor((u-c.condition_timeout)/1e3));f.html("Loading... ("+t.toString()+")"),c.condition_met&&(f.hide(),clearInterval(c.condition_timer),c.condition_timer=null)},1e3)}return this.condition_setup},l.setup=function(t,e){var i=e.view;null!=this.ngg_view&&(i=this.ngg_view),null!=i&&(i.currentWizard=t.ngg_wizard_id,i.currentStep=this.ngg_step_id,i.setup(),i.bind("done",this.onDone),i.enable())},l.teardown=function(t,e){var i=e.view;null!=this.ngg_view&&(i=this.ngg_view),null!=i&&(i.disable(),i.unbind("done",this.onDone),i.reset())},a.push(l)}var d={steps:a,tipClass:"Bootstrap",tipOptions:{showEffect:"slidein"},stepOptions:{}};null!=o&&(d.stepOptions.view=o);var h=new Tourist.Tour(d);for(h.ngg_wizard_id=t.id,h.ngg_wizard=t;r>0;)h.next(),r--;return{result:"ok",tour:h}}},enqueueRefreshOperation:function(){null!=this.refreshTimer&&(clearTimeout(this.refreshTimer),this.refreshTimer=null),this.refreshTimer=setTimeout(function(t){NextGEN_Wizard_Manager.refreshQueue()},500)},refreshQueue:function(){this.refreshTimer=null;for(var t=0,e=0;e<this.wizards.length;e++){var i=this.wizards[e];if("wait"==i.status){var n=this.generateTour(i);"ok"==n.result?(i.status="ready",i.tour=n.tour):"wait_element"==n.result&&(i.status="wait",t++)}}t>0?this.enqueueRefreshOperation():this.trigger("ready")},start:function(){null!=this.runningWizard?this.runningWizard.start():this.showStarter()},showStarter:function(){},startQueue:function(){if(null!=this.starter){var t=this;this.starter.fadeOut(function(){t.nextTour()})}else this.nextTour()},nextTour:function(){for(var t=0,e=0;e<this.wizards.length;e++){var i=this.wizards[e];if("ready"==i.status&&null!=i.tour){t=e;break}}if(t<this.wizards.length){var i=this.wizards[t];i.tour.start()}},updateWizardState:function(t){}};manager.init(),window.NextGEN_Wizard_Manager=manager}jQuery(function(t){"undefined"!=typeof NextGEN_Wizard_Manager&&(NextGEN_Wizard_Manager.bind("ready",function(){NextGEN_Wizard_Manager.start()}),NextGEN_Wizard_Manager.generateQueue(t))}); \ No newline at end of file +function NextGEN_Wizard(t,e){this.id=t,this.manager=e,this.data={},this.steps=[],this.status=null,this.tour=null,this.created=Math.floor(Date.now()/1e3)}if("undefined"==typeof NextGEN_Wizard_Manager){NextGEN_Wizard.prototype.start=function(){null!=this.tour&&this.tour.start()},NextGEN_Wizard.prototype.getNextStep=function(t){for(var e=0;e<this.steps.length;e++){if(this.steps[e].id==t)break}return e++,e<this.steps.length?this.steps[e]:null},NextGEN_Wizard.prototype.setState=function(t){};var manager={state:[],wizards:[],runningWizard:null,views:[],starter:null,anchor:null,events:{},targetWatchers:{},refreshTimer:null,nggEvents:[],init:function(){function t(t){this.itemSelector=".view-item",this.currentWizard=null,this.currentStep=null,this.doneFlag=!1,this.init=function(){},this.disable=function(){t.addClass("ngg-wizard-disabled")},this.enable=function(){t.removeClass("ngg-wizard-disabled")},this.setup=function(){},this.reset=function(){t.removeClass("ngg-wizard-has-selection"),t.find(this.itemSelector).removeClass("ngg-wizard-selected")},this.done=function(t){this.doneFlag||(this.doneFlag=!0,this.trigger("done",this,t))}}function e(e){t.call(this,e);var i=this;jQuery(e.get(0).ownerDocument).on("click",e.selector,function(t){i.done(e)})}function i(e){t.call(this,e);var i=this;e.click(function(t){(!e.is("a,button.ngg_save_settings_button,input.ngg_save_gallery_changes")||e.attr("href").startsWith("#")||e.attr("href").startsWith("javascript:")||e.hasClass("thickbox"))&&i.done(e)}),this.setup=function(){if(e.is("a,button.ngg_save_settings_button,button.ngg_save_pricelist_button,input.ngg_save_gallery_changes")){if(e.is("a")){var t=e.attr("href");this.originalHref=t}if(e.is("button.ngg_save_settings_button,button.ngg_save_pricelist_button,input.ngg_save_gallery_changes")){var t=e.parents("form").attr("action");t.indexOf("&ngg_wizard")>-1&&(hrefSplit=t.split("&ngg_wizard"),t=hrefSplit[0])}t.startsWith("#")||(-1==t.indexOf("?")?t+="?":t+="&",t=t+"ngg_wizard="+this.currentWizard+"&ngg_wizard_step="+this.currentStep,e.is("a")&&e.attr("href",t),e.is("button.ngg_save_settings_button,button.ngg_save_pricelist_button,input.ngg_save_gallery_changes")&&e.parents("form").attr("action",t))}},this.reset=function(){this.originalHref&&e.is("a")&&e.attr("href",this.originalHref)}}function n(e){t.call(this,e);var i=this;e.on("input",function(t){jQuery(this).val().length>=3&&i.done(e)}),this.setup=function(){}}function r(e){t.call(this,e);var i=this;jQuery(e.get(0).ownerDocument).on("change",e.selector,function(t){jQuery(this).is(":checked")&&i.done(e)}),this.setup=function(){}}function a(e){t.call(this,e);var i=this;e.on("change",function(t){i.done(e)})}"undefined"!=typeof NextGEN_Wizard_Manager_State&&(this.state=NextGEN_Wizard_Manager_State);var s=this;jQuery(window.top.document).find("body").on("nextgen_event",function(t,e){s.nggEvents.push({type:e})}),_.extend(t.prototype,Backbone.Events),_.extend(e.prototype,t.prototype),_.extend(i.prototype,t.prototype),_.extend(n.prototype,t.prototype),_.extend(r.prototype,t.prototype),_.extend(a.prototype,t.prototype);var o=null;o={handler:a,name:"SelectView",selector:"select"},this.views.push(o),o={handler:r,name:"RadioView",selector:"input[type='radio']"},this.views.push(o),o={handler:n,name:"TextView",selector:"input[type='text'], input[type='search'], input[type='email'], input[type='tel'], input[type='number'], input[type='username'], input[type='password'], textarea"},this.views.push(o),o={handler:i,name:"ButtonView",selector:"a, input[type='button'], input[type='submit'], button"},this.views.push(o),o={handler:e,name:"GenericView",selector:"*"},this.views.push(o),Tourist.Tip.Base.prototype.nextButtonTemplate='<a class="button-primary pull-right tour-next">Next step →</a>',Tourist.Tip.Base.prototype.finalButtonTemplate='<button class="button-primary pull-right tour-next">Finish up</button>',Tourist.Tip.Base.prototype.closeButtonTemplate='<a class="btn btn-close tour-close" href="#"><i class="icon icon-remove far fa-window-close"></i></a>',Tourist.Tip.BootstrapTip.prototype._getTargetBounds=function(t){var e,i;e=t[0],i="function"==typeof e.getBoundingClientRect?e.getBoundingClientRect():{width:e.offsetWidth,height:e.offsetHeight};var n=t.offset();if(t.ownerDocument!=document)for(var r=function(t,e){for(var i=t.find("iframe"),n=[],a=0;a<i.size();a++){var s=jQuery(i.get(a));try{if(s.prop("contentWindow").document==e)return[s]}catch(t){continue}var o=r(s.contents(),e);if(o.length>0){n.push(s);for(var u=0;u<o.length;u++)n.push(o[u]);break}}return n},a=r(jQuery(document),t.get(0).ownerDocument),s=0;s<a.length;s++){var o=a[s],u=o.offset();n.left+=u.left,n.top+=u.top}return jQuery.extend({},i,n)},jQuery(".ngg-wizard-invoker").on("click",function(t){t.preventDefault();for(var e=NextGEN_Wizard_Manager,i=jQuery(this).data("ngg-wizard"),n=null,r=0;r<e.wizards.length;r++){var a=e.wizards[r];if(a.id==i){n=a;break}}return null!=n&&null==this.runningWizard&&n.start(),!1})},bind:function(t,e){t in this.events||(this.events[t]=[]);var i={handler:e};this.events[t].push(i)},trigger:function(t,e){if(void 0===e&&(e={}),t in this.events)for(var i=this.events[t],n=0;n<i.length;n++){var r=i[n];r.handler&&r.handler(this,e)}},didNextgenEventFire:function(t){for(var e=0;e<this.nggEvents.length;e++){if(this.nggEvents[e].type==t)return!0}return!1},getViewForSelector:function(t,e){var i=null;void 0===e&&(e=!0);for(var n=0;n<this.views.length;n++){var r=this.views[n];if(t.is(r.selector)){i=r.handler;break}}if(null!=i){var r=new i(t);return e&&r.init(),r}return null},getViewFor:function(t,e,i){var n=this.getViewForSelector(t,!1);return null!=n&&(n.currentWizard=e,n.currentStep=i,n.init()),n},generateQueue:function(t){var e=this,i=this.state,n=i.wizard_list.length,r=i.starter,a=i.running_wizard;if(n>0){var s=t('<div id="ngg-wizard-starter" class="ngg-wizard-starter"></div>');s.append('<div class="starter-wrap-top"><div class="starter-wrap-icon"><img class="starter-icon" src="'+r.image+'" /></div></div>'),s.append('<div class="starter-wrap-bottom"><div class="starter-wrap-text">'+r.text+"</div></div>"),s.on("click",".starter-wrap-icon, starter-wrap-bottom",function(){e.startQueue()}),s.hide(),s.appendTo("body"),this.starter=s;var o=t('<div id="ngg-wizard-anchor" class="ngg-wizard-anchor"></div>');o.appendTo("body"),this.anchor=o;for(var u=0,l=0;l<n;l++){var d=i.wizard_list[l],h=new NextGEN_Wizard(d.id,this);h.data=d,h.steps=d.steps;var c=this.generateTour(h);"ok"==c.result?(h.status="ready",h.tour=c.tour):"wait_element"==c.result&&(h.status="wait",u++),h.id==a?(this.wizards.unshift(h),this.runningWizard=h):this.wizards.push(h)}u>0?this.enqueueRefreshOperation():this.trigger("ready")}},getContextObject:function(t){var e=null;if(null!=t){"object"!=typeof t&&(t=[t]);for(var i=0;i<t.length;i++){var n=t[i];if(e=null==e?jQuery(n):e.find(n),e.is("iframe")){var r=e.prop("contentWindow");if("interactive"!=r.document.readyState&&"complete"!=r.document.readyState){e=jQuery([]);break}e=r.jQuery?r.jQuery("body"):e.contents().find("body")}}0==e.size()&&(e=jQuery([]))}else e=jQuery(document);return e},computeStepTarget:function(t,e,i){var n=e.target_wait,r=e.target,a=e.view,s=null,o=null,u=null,l=this.getContextObject(e.context),d=!1;if(null!=r){if(s=l.find(r),s.size()>0?d=!0:s=this.anchor,!d&&null!=n&&Math.floor(Date.now()/1e3)-t.created<=n)return!1}else s=this.anchor;return null!=a&&(o=l.find(a),o.size()>0&&(u=this.getViewFor(o,t.id,e.id))),i.highlightTarget=d,i.nextButton=!d||e.optional,i.target=s,i.ngg_view=u,!0},scrollIntoView:function(t){},generateTour:function(t){if(null==t.tour){var e=t.data,i=e.steps,n=e.current_step,r=0,a=[],s=null;if(null!=e.view&&null==(s=this.getViewFor(jQuery(e.view),t.id)))return{result:"wait_element",element:e.view};for(var o=0;o<i.length;o++){var u=i[o];null!=n&&n==u.id&&(r=o);var l={ngg_step_id:u.id,ngg_step_data:u,viewport:jQuery(window),closeButton:!0,content:'<div class="ngg-wizard-text">'+u.text+"</div>",my:u.popup_anchor,at:u.target_anchor,bind:["onDone"],onDone:function(t,e,i,n){var r=t.ngg_wizard,a=this.ngg_step_data,s=!0;if(null!=a.condition&&(this.condition_met||(s=!1,this.condition_setup||this.setupCondition(t,e))),s&&null!=r){var o=r.getNextStep(this.ngg_step_id);if(null!=o&&o.lazy){s=!1;for(var u=null,l=0;l<t.options.steps.length;l++){var d=t.options.steps[l];if(d.ngg_step_id==o.id){u=d;break}}null!=u&&(null==u.target||0==u.target.size()||"ngg-wizard-anchor"==u.target.attr("id")?!(s=r.manager.computeStepTarget(r,o,u))||null!=u.target&&0!=u.target.size()&&"ngg-wizard-anchor"!=u.target.attr("id")||(s=!1):s=!0)}}if(s)t.next();else{null!=this.lazyTimeout&&(clearTimeout(this.lazyTimeout),this.lazyTimeout=null);var h=this;this.lazyTimeout=setTimeout(function(){h.lazyTimeout=null,h.onDone(t,e,i,n)},500)}}};if(!this.computeStepTarget(t,u,l))return{result:"wait_element",element:u.target};l.setupCondition=function(t,e){var i=t.ngg_wizard,n=this.ngg_step_data;if(!this.condition_setup&&null!=n.condition){var r=n.condition,a=r.type,s=r.value,o=r.context,u=r.timeout;this.condition_met=!1,this.condition_setup=!1,o&&"object"!=typeof o&&(o=[o]);var l=jQuery([]);if(o){o=o.slice(0);var d=o.pop();l=i.manager.getContextObject(o).find(d)}if(l.size()>0){var h=l.get(0).ownerDocument;h.defaultView||h.parentWindow}switch(a){case"frame_event":if(window.Frame_Event_Publisher){this.condition_setup=!0;var c=this;Frame_Event_Publisher.listen_for(s,function(){c.condition_met=!0})}break;case"event_bind":case"plupload_bind":var g=l.size()>0;if("plupload_bind"==a&&(void 0!==l.pluploadQueue?l=l.pluploadQueue():g=!1),g){this.condition_setup=!0;var c=this;l.bind(s,function(){c.condition_met=!0})}break;case"nextgen_event":if(this.condition_setup=!0,i.manager.didNextgenEventFire(s))this.condition_met=!0;else{var c=this;jQuery(window.top.document).find("body").bind("nextgen_event",function(t,e){e==s&&(c.condition_met=!0)})}break;case"wait":this.condition_setup=!0;var c=this;setTimeout(function(){c.condition_met=!0},s)}}var p=jQuery(".tourist-popover .ngg-wizard-text"),f=p.find(".ngg-wizard-loading");if(f.hide(),this.condition_setup&&!this.condition_met&&u>0){this.condition_timeout=0,0==f.length&&(f=jQuery('<div class="ngg-wizard-loading"></div>'),p.append(f)),f.html("Loading... ("+Math.ceil(u/1e3).toString()+")"),f.show();var c=this;c.condition_timer=setInterval(function(){c.condition_timeout+=1e3,c.condition_timeout>=u&&(c.condition_met=!0);var t=(Math.floor(c.condition_timeout/1e3),Math.ceil(u/1e3),Math.floor((u-c.condition_timeout)/1e3));f.html("Loading... ("+t.toString()+")"),c.condition_met&&(f.hide(),clearInterval(c.condition_timer),c.condition_timer=null)},1e3)}return this.condition_setup},l.setup=function(t,e){var i=e.view;null!=this.ngg_view&&(i=this.ngg_view),null!=i&&(i.currentWizard=t.ngg_wizard_id,i.currentStep=this.ngg_step_id,i.setup(),i.bind("done",this.onDone),i.enable())},l.teardown=function(t,e){var i=e.view;null!=this.ngg_view&&(i=this.ngg_view),null!=i&&(i.disable(),i.unbind("done",this.onDone),i.reset())},a.push(l)}var d={steps:a,tipClass:"Bootstrap",tipOptions:{showEffect:"slidein"},stepOptions:{}};null!=s&&(d.stepOptions.view=s);var h=new Tourist.Tour(d);for(h.ngg_wizard_id=t.id,h.ngg_wizard=t;r>0;)h.next(),r--;return{result:"ok",tour:h}}},enqueueRefreshOperation:function(){null!=this.refreshTimer&&(clearTimeout(this.refreshTimer),this.refreshTimer=null),this.refreshTimer=setTimeout(function(t){NextGEN_Wizard_Manager.refreshQueue()},500)},refreshQueue:function(){this.refreshTimer=null;for(var t=0,e=0;e<this.wizards.length;e++){var i=this.wizards[e];if("wait"==i.status){var n=this.generateTour(i);"ok"==n.result?(i.status="ready",i.tour=n.tour):"wait_element"==n.result&&(i.status="wait",t++)}}t>0?this.enqueueRefreshOperation():this.trigger("ready")},start:function(){null!=this.runningWizard?this.runningWizard.start():this.showStarter()},showStarter:function(){},startQueue:function(){if(null!=this.starter){var t=this;this.starter.fadeOut(function(){t.nextTour()})}else this.nextTour()},nextTour:function(){for(var t=0,e=0;e<this.wizards.length;e++){var i=this.wizards[e];if("ready"==i.status&&null!=i.tour){t=e;break}}if(t<this.wizards.length){var i=this.wizards[t];i.tour.start()}},updateWizardState:function(t){}};manager.init(),window.NextGEN_Wizard_Manager=manager}jQuery(function(t){"undefined"!=typeof NextGEN_Wizard_Manager&&(NextGEN_Wizard_Manager.bind("ready",function(){NextGEN_Wizard_Manager.start()}),NextGEN_Wizard_Manager.generateQueue(t))}); \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/tourist/tourist.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/tourist/tourist.css index b1dcd2f93..2df4fd535 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/tourist/tourist.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/tourist/tourist.css @@ -1,9 +1,5 @@ .tour-highlight{ background: transparent; - -moz-box-shadow: 0px 0px 7px 0px rgba(0, 241, 255, 0.701961); - -webkit-box-shadow: 0px 0px 7px 0px rgba(0, 241, 255, 0.701961); - -o-box-shadow: 0px 0px 7px 0px rgba(0, 241, 255, 0.701961); - box-shadow: 0px 0px 7px 0px rgba(0, 241, 255, 0.701961); border-radius: 2px; } @@ -38,7 +34,7 @@ background: #f5f5f5; border-radius: 0px 0px 6px 6px; box-sizing: content-box; - background: #103149; + background: black; padding: 15px 20px 17px; border-top: 3px solid #9fbb1a; } diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/tourist/tourist.min.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/tourist/tourist.min.css index fa136a7a6..0ebb18c4c 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/tourist/tourist.min.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/static/tourist/tourist.min.css @@ -1 +1 @@ -.tour-highlight{background:0 0;-moz-box-shadow:0 0 7px 0 rgba(0,241,255,.701961);-webkit-box-shadow:0 0 7px 0 rgba(0,241,255,.701961);-o-box-shadow:0 0 7px 0 rgba(0,241,255,.701961);box-shadow:0 0 7px 0 rgba(0,241,255,.701961);border-radius:2px}.tourist-popover{padding:0;z-index:999999!important}.tourist-popover .popover-content{padding:10px 0 0;min-width:200px}.tourist-popover .popover-content p{margin:0 8px 10px}.tourist-popover .popover-content .action-label{background:rgba(0,111,255,.168627);font-size:14px;padding:3px 10px}.tourist-popover .popover-content .tour-counter{margin:0;padding:0;position:absolute;left:20px;bottom:23px;font-size:11px;color:#fff}.tourist-popover .tour-buttons{min-height:28px;border-radius:0 0 6px 6px;box-sizing:content-box;background:#103149;padding:15px 20px 17px;border-top:3px solid #9fbb1a}.tourist-popover .button-primary{background-color:#9fbb1a;box-shadow:none;text-shadow:none;border:none;padding:1px 20px;float:right}.tourist-popover .button-primary:hover{background-color:#A9C524}.tourist-popover .btn-close{background:0 0;border:none;position:absolute;top:4px;right:7px;padding:0;opacity:.3}.tourist-popover .btn-close:hover{opacity:.5}.tourist-popover.top>.arrow{border-top-color:#2a343d;overflow:hidden}.qtip-tour,.qtip-tour .qtip-content{padding:0}.qtip-tour .qtip-content{padding-top:10px}.qtip-tour .qtip-content p{margin:0 8px 10px}.qtip-tour .qtip-content .action-label{background:rgba(0,111,255,.168627);font-size:14px;padding:3px 10px}.qtip-tour .qtip-content .tour-counter{font-size:11px;color:#acacac}.qtip-tour .tour-buttons{padding:8px 10px;min-height:28px;background:#f5f5f5;border-radius:0 0 6px 6px;box-sizing:content-box} \ No newline at end of file +.tour-highlight{background:0 0;border-radius:2px}.tourist-popover{padding:0;z-index:999999!important}.tourist-popover .popover-content{padding:10px 0 0;min-width:200px}.tourist-popover .popover-content p{margin:0 8px 10px}.tourist-popover .popover-content .action-label{background:rgba(0,111,255,.168627);font-size:14px;padding:3px 10px}.tourist-popover .popover-content .tour-counter{margin:0;padding:0;position:absolute;left:20px;bottom:23px;font-size:11px;color:#fff}.tourist-popover .tour-buttons{min-height:28px;border-radius:0 0 6px 6px;box-sizing:content-box;background:#000;padding:15px 20px 17px;border-top:3px solid #9fbb1a}.tourist-popover .button-primary{background-color:#9fbb1a;box-shadow:none;text-shadow:none;border:none;padding:1px 20px;float:right}.tourist-popover .button-primary:hover{background-color:#A9C524}.tourist-popover .btn-close{background:0 0;border:none;position:absolute;top:4px;right:7px;padding:0;opacity:.3}.tourist-popover .btn-close:hover{opacity:.5}.tourist-popover.top>.arrow{border-top-color:#2a343d;overflow:hidden}.qtip-tour,.qtip-tour .qtip-content{padding:0}.qtip-tour .qtip-content{padding-top:10px}.qtip-tour .qtip-content p{margin:0 8px 10px}.qtip-tour .qtip-content .action-label{background:rgba(0,111,255,.168627);font-size:14px;padding:3px 10px}.qtip-tour .qtip-content .tour-counter{font-size:11px;color:#acacac}.qtip-tour .tour-buttons{padding:8px 10px;min-height:28px;background:#f5f5f5;border-radius:0 0 6px 6px;box-sizing:content-box} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/templates/nextgen_admin_page.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/templates/nextgen_admin_page.php index 20b4e92f8..1e75dae0b 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/templates/nextgen_admin_page.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_admin/templates/nextgen_admin_page.php @@ -21,6 +21,9 @@ <?php if (isset($form_header)): ?> <?php echo $form_header."\n"; ?> <?php endif ?> + <?php if (isset($nonce)): ?> + <input type="hidden" name="nonce" value="<?php echo esc_attr($nonce)?>"/> + <?php endif ?> <input type="hidden" name="action"/> <!-- <div class="accordion" id="nextgen_admin_accordion"> --> <div class="ngg_page_content_menu""> diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_album/module.nextgen_basic_album.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_album/module.nextgen_basic_album.php index ffac67592..f7f830729 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_album/module.nextgen_basic_album.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_album/module.nextgen_basic_album.php @@ -26,7 +26,7 @@ class M_NextGen_Basic_Album extends C_Base_Module NGG_BASIC_ALBUM, 'NextGEN Basic Album', "Provides support for NextGEN's Basic Album", - '3.0.0.5', + '3.1.8', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_gallery/module.nextgen_basic_gallery.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_gallery/module.nextgen_basic_gallery.php index 3a07f55e0..bab0740d4 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_gallery/module.nextgen_basic_gallery.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_gallery/module.nextgen_basic_gallery.php @@ -37,7 +37,7 @@ class M_NextGen_Basic_Gallery extends C_Base_Module NGG_BASIC_GALLERY, 'NextGEN Basic Gallery', "Provides NextGEN Gallery's basic thumbnail/slideshow integrated gallery", - '3.0.13', + '3.1.8', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_gallery/templates/thumbnails/default-view.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_gallery/templates/thumbnails/default-view.php index c17120494..c7dc85252 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_gallery/templates/thumbnails/default-view.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_gallery/templates/thumbnails/default-view.php @@ -1,8 +1,7 @@ <?php - $this->start_element('nextgen_gallery.gallery_container', 'container', $displayed_gallery); - ?> +<!-- default-view.php --> <div class="ngg-galleryoverview default-view <?php if (!intval($ajax_pagination)) echo ' ngg-ajax-pagination-none'; ?>" id="ngg-gallery-<?php echo esc_attr($displayed_gallery_id)?>-<?php echo esc_attr($current_page)?>"> @@ -48,7 +47,7 @@ $this->start_element('nextgen_gallery.gallery_container', 'container', $displaye <img title="<?php echo esc_attr($image->alttext)?>" alt="<?php echo esc_attr($image->alttext)?>" - src="<?php echo esc_attr($storage->get_image_url($image, $thumbnail_size_name, TRUE))?>" + src="<?php echo esc_attr($storage->get_image_url($image, $thumbnail_size_name))?>" width="<?php echo esc_attr($thumb_size['width'])?>" height="<?php echo esc_attr($thumb_size['height'])?>" style="max-width:100%;" diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_gallery/templates/thumbnails/index.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_gallery/templates/thumbnails/index.php index a3253777e..6f2c2b649 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_gallery/templates/thumbnails/index.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_gallery/templates/thumbnails/index.php @@ -1,8 +1,7 @@ <?php - $this->start_element('nextgen_gallery.gallery_container', 'container', $displayed_gallery); - ?> +<!-- index.php --> <div class="ngg-galleryoverview<?php if (!intval($ajax_pagination)) echo ' ngg-ajax-pagination-none'; ?>" id="ngg-gallery-<?php echo esc_attr($displayed_gallery_id)?>-<?php echo esc_attr($current_page)?>"> diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/module.nextgen_basic_imagebrowser.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/module.nextgen_basic_imagebrowser.php index d8f3080d3..e8aa6f585 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/module.nextgen_basic_imagebrowser.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_imagebrowser/module.nextgen_basic_imagebrowser.php @@ -26,7 +26,7 @@ class M_NextGen_Basic_ImageBrowser extends C_Base_Module 'photocrati-nextgen_basic_imagebrowser', 'NextGEN Basic ImageBrowser', 'Provides the NextGEN Basic ImageBrowser Display Type', - '3.0.0.4', + '3.1.8', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_singlepic/module.nextgen_basic_singlepic.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_singlepic/module.nextgen_basic_singlepic.php index b4c06c7db..34de29003 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_singlepic/module.nextgen_basic_singlepic.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_singlepic/module.nextgen_basic_singlepic.php @@ -24,7 +24,7 @@ class M_NextGen_Basic_Singlepic extends C_Base_Module NGG_BASIC_SINGLEPIC, 'NextGen Basic Singlepic', 'Provides a singlepic gallery for NextGEN Gallery', - '3.1.0', + '3.1.8', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_tagcloud/module.nextgen_basic_tagcloud.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_tagcloud/module.nextgen_basic_tagcloud.php index 02d522e49..0ffb1ac62 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_tagcloud/module.nextgen_basic_tagcloud.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_basic_tagcloud/module.nextgen_basic_tagcloud.php @@ -24,7 +24,7 @@ class M_NextGen_Basic_Tagcloud extends C_Base_Module NGG_BASIC_TAGCLOUD, 'NextGen Basic Tagcloud', 'Provides a tagcloud for NextGEN Gallery', - '3.1.6', + '3.1.8', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/module.nextgen_block.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/module.nextgen_block.php index 7ac02d902..00ded6c1f 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/module.nextgen_block.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/module.nextgen_block.php @@ -23,7 +23,7 @@ class M_NextGEN_Block extends C_Base_Module 'photocrati-nextgen_block', 'NextGEN Block', 'Provides a NextGEN Block for the Gutenberg interface.', - '3.1.5.3', + '3.1.19', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/block.min.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/block.min.js index 9ed81de09..9dd01f223 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/block.min.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/block.min.js @@ -1,2 +1,2 @@ -!function(C){var e={};function t(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return C[n].call(r.exports,r,r.exports,t),r.l=!0,r.exports}t.m=C,t.c=e,t.d=function(C,e,n){t.o(C,e)||Object.defineProperty(C,e,{enumerable:!0,get:n})},t.r=function(C){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(C,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(C,"__esModule",{value:!0})},t.t=function(C,e){if(1&e&&(C=t(C)),8&e)return C;if(4&e&&"object"==typeof C&&C&&C.__esModule)return C;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:C}),2&e&&"string"!=typeof C)for(var r in C)t.d(n,r,function(e){return C[e]}.bind(null,r));return n},t.n=function(C){var e=C&&C.__esModule?function(){return C.default}:function(){return C};return t.d(e,"a",e),e},t.o=function(C,e){return Object.prototype.hasOwnProperty.call(C,e)},t.p="",t(t.s=0)}([function(C,e,t){"use strict";function n(C){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(C){return typeof C}:function(C){return C&&"function"==typeof Symbol&&C.constructor===Symbol&&C!==Symbol.prototype?"symbol":typeof C})(C)}function r(C,e){for(var t=0;t<e.length;t++){var n=e[t];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(C,n.key,n)}}function o(C,e,t){return(o="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(C,e,t){var n=function(C,e){for(;!Object.prototype.hasOwnProperty.call(C,e)&&null!==(C=l(C)););return C}(C,e);if(n){var r=Object.getOwnPropertyDescriptor(n,e);return r.get?r.get.call(t):r.value}})(C,e,t||C)}function l(C){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(C){return C.__proto__||Object.getPrototypeOf(C)})(C)}function i(C,e){return(i=Object.setPrototypeOf||function(C,e){return C.__proto__=e,C})(C,e)}function a(C){if(void 0===C)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return C}t.r(e);wp.i18n.__;var c=(0,lodash.memoize)(function(C,e){return function(t){function c(C){var e;return function(C,e){if(!(C instanceof e))throw new TypeError("Cannot call a class as a function")}(this,c),(e=function(C,e){return!e||"object"!==n(e)&&"function"!=typeof e?a(C):e}(this,l(c).call(this,C))).openIGW=e.openIGW.bind(a(a(e))),e.updateContent=e.updateContent.bind(a(a(e))),e.hasGallery=e.hasGallery.bind(a(a(e))),e.toggleAddGalleryBtn=e.toggleAddGalleryBtn.bind(a(a(e))),e}return function(C,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");C.prototype=Object.create(e&&e.prototype,{constructor:{value:C,writable:!0,configurable:!0}}),e&&i(C,e)}(c,e),function(C,e,t){e&&r(C.prototype,e),t&&r(C,t)}(c,[{key:"hasGallery",value:function(){return this.props.attributes.content&&this.props.attributes.content.length>0}},{key:"componentDidMount",value:function(){o(l(c.prototype),"componentDidMount",this).call(this),C(this.ref).addClass("freeform-toolbar").addClass("ngg-freeform-toolbar"),this.toggleAddGalleryBtn()}},{key:"componentDidUpdate",value:function(){this.toggleAddGalleryBtn()}},{key:"toggleAddGalleryBtn",value:function(){this.props.attributes.content?(C(this.ref).addClass("hidden"),C(this.ref).siblings(".add-ngg-gallery-wrap").hide()):(C(this.ref).removeClass("hidden"),C(this.ref).siblings(".add-ngg-gallery-wrap").show())}},{key:"updateContent",value:function(C){this.props.setAttributes({content:C})}},{key:"onSetup",value:function(C){o(l(c.prototype),"onSetup",this).call(this,C);var e=this.updateContent.bind(this);C.on("ngg-removed",function(){return e("")}),C.on("ngg-inserted",function(C){var t=C.shortcode;return e(t)})}},{key:"openIGW",value:function(){this.editor.execCommand("ngg_attach_to_post")}},{key:"render",value:function(){return[o(l(c.prototype),"render",this).call(this),React.createElement("div",{className:"add-ngg-gallery-wrap"},React.createElement("div",{className:"add-ngg-gallery",onClick:this.openIGW},ngg_tinymce_plugin.i18n.button_label))]}}]),c}()}),u={};u.nextgen=React.createElement("svg",{id:"svg",version:"1.1",width:"400",height:"385.8088930936613",viewBox:"0 0 400 385.8088930936613"},React.createElement("g",{id:"svgg"},React.createElement("path",{id:"path0",d:"",stroke:"none",fill:"#000055","fill-rule":"evenodd"}),React.createElement("path",{id:"path1",d:"",stroke:"none",fill:"#002424","fill-rule":"evenodd"}),React.createElement("path",{id:"path2",d:"M194.418 152.698 C 154.152 157.677,135.139 203.873,160.388 235.383 C 179.730 259.522,217.168 260.458,237.772 237.316 C 261.954 210.156,250.860 167.167,216.592 155.239 C 210.224 153.023,200.657 151.926,194.418 152.698 ",stroke:"none",fill:"#143650","fill-rule":"evenodd"}),React.createElement("path",{id:"path3",d:"",stroke:"none",fill:"#555500","fill-rule":"evenodd"}),React.createElement("path",{id:"path4",d:"M109.430 274.467 C 109.368 274.629,109.202 274.717,109.061 274.663 C 108.920 274.609,108.715 274.732,108.606 274.936 C 108.496 275.140,108.286 275.307,108.139 275.307 C 107.992 275.307,107.796 275.441,107.705 275.605 C 107.536 275.907,106.895 276.338,106.291 276.556 C 106.109 276.622,105.960 276.753,105.960 276.848 C 105.960 276.942,105.747 277.101,105.487 277.200 C 105.227 277.299,105.014 277.467,105.014 277.573 C 105.014 277.680,104.920 277.767,104.805 277.767 C 104.690 277.767,104.285 278.009,103.906 278.303 C 103.527 278.598,103.068 278.894,102.886 278.960 C 102.703 279.026,102.554 279.168,102.554 279.275 C 102.554 279.382,102.427 279.470,102.272 279.470 C 102.117 279.470,101.884 279.640,101.754 279.849 C 101.624 280.057,101.367 280.227,101.184 280.227 C 101.001 280.227,100.851 280.314,100.851 280.421 C 100.851 280.528,100.639 280.696,100.378 280.795 C 100.118 280.894,99.905 281.071,99.905 281.189 C 99.905 281.306,99.793 281.360,99.655 281.307 C 99.518 281.254,99.304 281.373,99.181 281.570 C 99.057 281.768,98.838 281.930,98.694 281.930 C 98.550 281.930,98.383 282.059,98.322 282.217 C 98.262 282.374,97.997 282.585,97.734 282.685 C 97.471 282.785,97.256 282.954,97.256 283.061 C 97.256 283.167,97.095 283.254,96.898 283.254 C 96.701 283.254,96.491 283.382,96.431 283.538 C 96.371 283.694,96.201 283.822,96.053 283.822 C 95.904 283.822,95.731 283.959,95.667 284.126 C 95.603 284.292,95.438 284.386,95.302 284.334 C 95.165 284.281,94.952 284.400,94.829 284.598 C 94.705 284.796,94.529 284.957,94.437 284.957 C 94.344 284.957,93.996 285.213,93.661 285.525 C 93.327 285.837,92.965 286.093,92.857 286.093 C 92.748 286.093,92.296 286.391,91.851 286.755 C 91.407 287.119,90.958 287.417,90.854 287.417 C 90.750 287.417,90.637 287.481,90.602 287.559 C 90.471 287.855,89.293 288.565,89.116 288.455 C 89.014 288.392,88.931 288.476,88.931 288.641 C 88.931 288.805,88.718 289.021,88.458 289.120 C 88.198 289.219,87.985 289.392,87.985 289.505 C 87.985 289.617,87.602 289.879,87.133 290.086 C 86.665 290.293,86.282 290.546,86.282 290.647 C 86.282 290.749,86.090 290.915,85.856 291.017 C 85.220 291.292,84.692 291.646,84.522 291.911 C 84.439 292.041,84.245 292.148,84.091 292.148 C 83.936 292.148,83.761 292.275,83.701 292.431 C 83.641 292.588,83.504 292.715,83.396 292.715 C 83.287 292.715,82.835 293.013,82.391 293.377 C 81.946 293.742,81.493 294.040,81.384 294.040 C 81.276 294.040,81.097 294.207,80.988 294.411 C 80.871 294.629,80.673 294.738,80.508 294.675 C 80.337 294.609,80.227 294.677,80.227 294.850 C 80.227 295.006,80.014 295.187,79.754 295.253 C 79.494 295.318,79.281 295.455,79.281 295.557 C 79.281 295.659,79.162 295.743,79.017 295.743 C 78.872 295.743,78.707 295.864,78.650 296.012 C 78.594 296.160,78.223 296.433,77.826 296.619 C 77.429 296.804,76.994 297.108,76.858 297.295 C 76.722 297.482,76.488 297.635,76.337 297.635 C 76.187 297.635,76.064 297.715,76.064 297.814 C 76.064 297.990,75.336 298.457,74.693 298.693 C 74.510 298.760,74.361 298.892,74.361 298.986 C 74.361 299.081,74.170 299.241,73.936 299.342 C 73.345 299.597,72.922 299.894,72.049 300.662 C 71.636 301.026,71.221 301.325,71.127 301.325 C 71.032 301.325,70.662 301.559,70.303 301.845 C 69.945 302.131,69.562 302.365,69.452 302.365 C 69.342 302.365,69.253 302.449,69.253 302.551 C 69.253 302.653,69.040 302.790,68.780 302.855 C 68.519 302.920,68.307 303.102,68.307 303.259 C 68.307 303.451,68.183 303.512,67.928 303.446 C 67.680 303.381,67.550 303.440,67.550 303.617 C 67.550 303.766,67.337 303.969,67.077 304.068 C 66.816 304.167,66.604 304.337,66.604 304.447 C 66.604 304.556,66.391 304.726,66.131 304.825 C 65.870 304.924,65.658 305.092,65.658 305.199 C 65.658 305.305,65.487 305.393,65.279 305.393 C 65.071 305.393,64.901 305.480,64.901 305.587 C 64.901 305.693,64.688 305.861,64.428 305.960 C 64.167 306.059,63.955 306.227,63.955 306.334 C 63.955 306.441,63.784 306.528,63.576 306.528 C 63.368 306.528,63.198 306.615,63.198 306.722 C 63.198 306.828,62.985 306.997,62.725 307.096 C 62.465 307.194,62.252 307.361,62.252 307.465 C 62.252 307.570,61.907 307.831,61.486 308.046 C 61.064 308.261,60.672 308.561,60.614 308.712 C 60.556 308.864,60.389 308.988,60.243 308.988 C 60.097 308.988,59.835 309.154,59.662 309.356 C 59.488 309.559,59.285 309.687,59.210 309.641 C 59.135 309.595,58.800 309.812,58.467 310.124 C 58.133 310.436,57.748 310.691,57.612 310.691 C 57.475 310.691,57.335 310.754,57.301 310.833 C 57.184 311.095,55.380 312.394,55.132 312.394 C 54.996 312.394,54.803 312.547,54.703 312.735 C 54.602 312.923,54.174 313.242,53.752 313.445 C 53.330 313.647,52.983 313.879,52.982 313.959 C 52.981 314.040,52.789 314.189,52.554 314.290 C 51.958 314.548,51.520 314.853,50.731 315.562 C 50.355 315.900,49.942 316.176,49.812 316.177 C 49.683 316.177,49.476 316.340,49.353 316.537 C 49.229 316.735,49.027 316.858,48.903 316.810 C 48.779 316.763,48.626 316.856,48.564 317.018 C 48.502 317.181,48.339 317.313,48.203 317.313 C 48.067 317.313,47.695 317.547,47.375 317.833 C 46.625 318.507,45.782 319.104,45.364 319.259 C 45.182 319.327,45.033 319.470,45.033 319.578 C 45.033 319.685,44.903 319.773,44.743 319.773 C 44.584 319.773,44.405 319.901,44.345 320.057 C 44.285 320.213,44.075 320.341,43.878 320.341 C 43.622 320.341,43.519 320.476,43.519 320.814 C 43.519 321.074,43.587 321.287,43.670 321.287 C 43.753 321.287,44.147 321.798,44.545 322.422 C 44.942 323.046,45.343 323.557,45.434 323.557 C 45.526 323.557,45.601 323.655,45.601 323.774 C 45.601 323.894,45.899 324.355,46.263 324.799 C 46.627 325.244,46.925 325.700,46.925 325.812 C 46.925 325.925,47.010 326.017,47.114 326.017 C 47.219 326.017,47.304 326.132,47.304 326.272 C 47.304 326.411,47.474 326.680,47.682 326.868 C 47.890 327.057,48.061 327.331,48.061 327.477 C 48.061 327.634,48.209 327.719,48.420 327.685 C 48.728 327.634,49.763 328.480,49.763 328.783 C 49.763 328.837,49.976 329.160,50.237 329.501 C 50.497 329.842,50.710 330.217,50.710 330.335 C 50.710 330.610,51.587 331.190,51.802 331.058 C 51.891 331.002,52.123 331.229,52.316 331.562 C 52.509 331.894,52.780 332.235,52.918 332.318 C 53.056 332.401,53.169 332.587,53.169 332.731 C 53.169 332.875,53.347 333.049,53.565 333.118 C 53.783 333.187,54.082 333.533,54.230 333.888 C 54.378 334.242,54.578 334.532,54.675 334.532 C 54.772 334.532,54.964 334.766,55.102 335.052 C 55.239 335.338,55.492 335.574,55.663 335.575 C 56.001 335.578,56.764 336.191,56.764 336.461 C 56.764 336.713,57.567 337.748,57.763 337.748 C 57.981 337.748,58.642 338.535,58.650 338.804 C 58.654 338.917,58.888 339.130,59.171 339.277 C 59.786 339.598,61.757 341.524,61.929 341.973 C 61.996 342.147,62.168 342.289,62.311 342.289 C 62.454 342.289,62.725 342.577,62.915 342.929 C 63.125 343.319,63.542 343.693,63.985 343.889 C 64.385 344.065,64.711 344.333,64.711 344.485 C 64.711 344.637,64.882 344.825,65.091 344.902 C 65.299 344.979,65.628 345.336,65.821 345.696 C 66.014 346.056,66.335 346.394,66.535 346.449 C 66.972 346.567,68.307 347.617,68.307 347.843 C 68.307 348.075,69.693 349.274,69.850 349.177 C 69.923 349.132,70.037 349.267,70.103 349.477 C 70.170 349.687,70.389 349.858,70.590 349.858 C 70.791 349.858,70.956 349.924,70.956 350.004 C 70.956 350.370,72.658 351.980,72.934 351.874 C 73.117 351.804,73.226 351.868,73.226 352.046 C 73.226 352.202,73.370 352.385,73.545 352.452 C 73.721 352.520,74.109 352.853,74.408 353.193 C 74.727 353.556,75.063 353.768,75.222 353.707 C 75.385 353.645,75.552 353.757,75.637 353.986 C 75.778 354.360,77.338 355.718,77.633 355.722 C 77.925 355.725,78.903 356.556,78.903 356.800 C 78.903 356.937,78.988 357.048,79.093 357.048 C 79.198 357.048,79.469 357.261,79.695 357.521 C 79.921 357.781,80.240 357.997,80.403 357.999 C 80.566 358.002,81.069 358.343,81.520 358.756 C 81.972 359.170,82.451 359.508,82.586 359.508 C 82.721 359.508,82.876 359.678,82.931 359.886 C 82.988 360.104,83.189 360.265,83.404 360.265 C 83.627 360.265,83.821 360.428,83.883 360.668 C 83.961 360.965,84.092 361.045,84.379 360.970 C 84.624 360.906,84.768 360.959,84.768 361.114 C 84.768 361.353,85.288 361.680,85.572 361.619 C 85.650 361.603,85.714 361.717,85.714 361.873 C 85.714 362.029,85.864 362.157,86.048 362.157 C 86.231 362.157,86.466 362.349,86.570 362.583 C 86.674 362.817,86.908 362.997,87.090 362.982 C 87.272 362.967,87.686 363.202,88.008 363.503 C 88.331 363.805,88.863 364.179,89.191 364.334 C 89.518 364.490,89.998 364.809,90.257 365.043 C 90.517 365.277,90.814 365.478,90.918 365.489 C 91.452 365.547,91.958 365.827,91.958 366.064 C 91.958 366.211,92.107 366.386,92.289 366.453 C 92.472 366.520,92.693 366.695,92.781 366.842 C 92.883 367.012,93.105 367.067,93.396 366.994 C 93.646 366.932,93.851 366.963,93.851 367.063 C 93.851 367.400,94.783 368.258,95.042 368.158 C 95.182 368.105,95.398 368.222,95.521 368.420 C 95.645 368.618,95.905 368.780,96.100 368.780 C 96.294 368.780,96.559 368.907,96.689 369.063 C 96.818 369.219,97.049 369.347,97.202 369.347 C 97.355 369.347,97.828 369.645,98.254 370.009 C 98.679 370.374,99.129 370.672,99.254 370.672 C 99.379 370.672,99.586 370.798,99.714 370.953 C 99.843 371.108,100.024 371.189,100.116 371.131 C 100.208 371.074,100.284 371.112,100.284 371.214 C 100.284 371.425,101.342 371.996,101.732 371.996 C 101.872 371.996,101.965 372.103,101.939 372.233 C 101.912 372.372,102.130 372.493,102.470 372.526 C 102.801 372.558,103.360 372.861,103.781 373.235 C 104.185 373.594,104.655 373.888,104.826 373.888 C 104.997 373.888,105.342 374.106,105.592 374.372 C 105.873 374.671,106.180 374.821,106.396 374.765 C 106.594 374.713,106.953 374.853,107.220 375.085 C 107.480 375.311,107.751 375.501,107.820 375.506 C 108.117 375.528,108.913 375.843,109.149 376.032 C 109.289 376.145,109.518 376.254,109.657 376.274 C 109.796 376.294,110.249 376.584,110.664 376.917 C 111.079 377.251,111.501 377.472,111.602 377.410 C 111.704 377.348,111.837 377.429,111.899 377.591 C 111.962 377.753,112.093 377.836,112.191 377.776 C 112.289 377.715,112.694 377.851,113.091 378.077 C 114.435 378.844,114.758 378.995,115.057 378.996 C 115.221 378.997,115.558 379.214,115.807 379.478 C 116.071 379.759,116.425 379.938,116.658 379.907 C 116.877 379.879,117.263 379.987,117.516 380.147 C 117.769 380.308,118.444 380.635,119.016 380.874 C 119.588 381.114,120.203 381.438,120.381 381.595 C 120.559 381.753,120.847 381.827,121.021 381.760 C 121.216 381.685,121.596 381.838,122.021 382.162 C 122.398 382.449,122.810 382.660,122.938 382.631 C 123.065 382.602,123.363 382.702,123.600 382.854 C 123.837 383.006,124.201 383.158,124.409 383.192 C 124.617 383.226,124.903 383.410,125.045 383.601 C 125.219 383.834,125.444 383.912,125.735 383.839 C 125.999 383.772,126.203 383.825,126.261 383.974 C 126.364 384.244,127.909 384.408,127.909 384.150 C 127.909 384.061,128.172 383.720,128.493 383.391 C 128.979 382.894,129.056 382.698,128.951 382.220 C 128.843 381.728,128.872 381.664,129.154 381.773 C 129.421 381.875,129.463 381.821,129.376 381.489 C 129.294 381.175,129.353 381.079,129.625 381.079 C 129.919 381.079,129.961 380.981,129.868 380.513 C 129.795 380.146,129.862 379.784,130.062 379.479 C 130.231 379.221,130.369 378.916,130.369 378.801 C 130.369 378.686,130.500 378.461,130.659 378.301 C 130.886 378.075,130.901 377.952,130.726 377.742 C 130.546 377.525,130.624 377.364,131.121 376.920 C 131.619 376.476,131.716 376.274,131.618 375.885 C 131.552 375.619,131.565 375.402,131.649 375.402 C 131.907 375.402,132.450 374.330,132.450 373.821 C 132.450 373.241,132.798 372.415,133.253 371.913 C 133.436 371.711,133.568 371.456,133.546 371.346 C 133.477 370.988,133.777 370.104,133.968 370.104 C 134.070 370.104,134.153 369.891,134.153 369.631 C 134.153 369.354,134.251 369.178,134.390 369.205 C 134.539 369.235,134.621 369.043,134.613 368.685 C 134.606 368.373,134.720 368.028,134.867 367.918 C 135.013 367.809,135.108 367.596,135.077 367.445 C 135.005 367.096,135.651 365.752,135.891 365.752 C 135.991 365.752,136.055 365.561,136.034 365.326 C 135.986 364.807,136.396 363.671,136.632 363.671 C 136.725 363.671,136.802 363.467,136.802 363.218 C 136.802 362.969,136.939 362.713,137.106 362.649 C 137.318 362.567,137.376 362.395,137.297 362.082 C 137.226 361.799,137.288 361.546,137.466 361.399 C 137.621 361.270,137.748 361.086,137.748 360.989 C 137.748 360.893,137.919 360.462,138.127 360.031 C 138.335 359.600,138.505 359.088,138.505 358.894 C 138.505 358.699,138.590 358.592,138.694 358.657 C 138.804 358.724,138.884 358.547,138.884 358.239 C 138.884 357.944,139.096 357.390,139.357 357.008 C 139.617 356.625,139.830 356.124,139.830 355.895 C 139.830 355.368,140.756 353.453,141.011 353.453 C 141.121 353.453,141.154 353.217,141.089 352.892 C 141.008 352.486,141.062 352.282,141.283 352.159 C 141.484 352.046,141.552 351.844,141.480 351.570 C 141.399 351.260,141.440 351.179,141.641 351.256 C 141.842 351.334,141.911 351.196,141.911 350.715 C 141.911 350.360,141.990 350.021,142.086 349.962 C 142.182 349.902,142.316 349.599,142.385 349.288 C 142.453 348.977,142.613 348.723,142.741 348.723 C 142.871 348.723,143.126 348.120,143.321 347.351 C 143.512 346.596,143.784 345.845,143.925 345.680 C 144.066 345.516,144.182 345.249,144.182 345.086 C 144.182 344.923,144.315 344.739,144.479 344.676 C 144.671 344.602,144.735 344.434,144.660 344.198 C 144.596 343.997,144.713 343.465,144.918 343.014 C 145.572 341.583,145.955 340.687,145.995 340.492 C 146.130 339.835,146.342 339.451,146.569 339.451 C 146.727 339.451,146.833 339.245,146.837 338.931 C 146.840 338.645,146.966 338.247,147.117 338.048 C 147.304 337.801,147.332 337.612,147.204 337.458 C 147.074 337.302,147.105 337.156,147.301 336.993 C 147.459 336.863,147.588 336.596,147.588 336.401 C 147.588 336.205,147.673 336.045,147.777 336.045 C 147.881 336.045,147.966 335.837,147.966 335.583 C 147.966 335.329,148.129 335.006,148.329 334.866 C 148.539 334.719,148.741 334.286,148.808 333.839 C 148.871 333.414,149.091 332.719,149.296 332.294 C 149.792 331.268,149.789 330.258,149.290 329.991 C 149.082 329.879,148.912 329.700,148.912 329.593 C 148.912 329.485,148.699 329.119,148.439 328.777 C 148.179 328.436,147.966 328.086,147.966 327.998 C 147.966 327.911,147.625 327.435,147.209 326.941 C 146.793 326.448,146.452 325.953,146.452 325.841 C 146.452 325.730,146.386 325.639,146.306 325.639 C 146.226 325.639,145.991 325.321,145.786 324.934 C 145.580 324.546,145.284 324.090,145.128 323.921 C 144.619 323.370,144.182 322.798,144.182 322.684 C 144.182 322.622,143.926 322.248,143.614 321.854 C 143.302 321.460,143.046 321.041,143.046 320.922 C 143.046 320.804,142.919 320.658,142.763 320.598 C 142.606 320.538,142.479 320.406,142.479 320.305 C 142.479 320.203,142.181 319.757,141.816 319.312 C 141.452 318.868,141.154 318.404,141.154 318.281 C 141.154 318.158,141.026 318.009,140.870 317.949 C 140.714 317.889,140.587 317.719,140.587 317.571 C 140.587 317.423,140.459 317.252,140.303 317.192 C 140.147 317.132,140.019 317.004,140.019 316.907 C 140.019 316.698,139.230 315.544,139.026 315.453 C 138.947 315.418,138.884 315.282,138.884 315.151 C 138.884 315.019,138.713 314.758,138.505 314.570 C 138.297 314.381,138.127 314.113,138.127 313.973 C 138.127 313.833,138.040 313.718,137.933 313.718 C 137.826 313.718,137.658 313.505,137.559 313.245 C 137.460 312.985,137.306 312.772,137.216 312.772 C 137.067 312.772,136.696 312.128,136.642 311.775 C 136.630 311.695,136.443 311.440,136.228 311.208 C 135.601 310.532,134.359 308.771,134.237 308.384 C 134.175 308.189,133.939 307.836,133.713 307.599 C 133.487 307.362,133.174 306.971,133.018 306.730 C 132.862 306.489,132.644 306.196,132.534 306.079 C 132.424 305.962,132.169 305.573,131.967 305.216 C 131.764 304.858,131.450 304.390,131.268 304.175 C 130.563 303.344,130.452 303.186,130.089 302.503 C 129.884 302.115,129.647 301.798,129.564 301.798 C 129.481 301.798,129.333 301.585,129.234 301.325 C 129.135 301.064,128.967 300.851,128.860 300.851 C 128.753 300.851,128.666 300.737,128.666 300.597 C 128.666 300.457,128.496 300.188,128.288 300.000 C 128.079 299.812,127.909 299.579,127.909 299.484 C 127.909 299.389,127.803 299.200,127.673 299.064 C 127.543 298.928,127.308 298.626,127.152 298.393 C 126.996 298.160,126.734 297.788,126.570 297.566 C 126.405 297.344,126.216 297.013,126.150 296.831 C 126.083 296.649,125.950 296.500,125.853 296.500 C 125.756 296.500,125.489 296.138,125.260 295.695 C 125.030 295.253,124.723 294.823,124.578 294.740 C 124.433 294.657,124.314 294.465,124.314 294.314 C 124.314 294.163,124.226 294.040,124.119 294.040 C 124.012 294.040,123.869 293.891,123.802 293.709 C 123.735 293.526,123.503 293.122,123.287 292.810 C 123.071 292.498,122.809 292.106,122.705 291.939 C 122.487 291.589,121.384 290.080,121.101 289.743 C 120.995 289.617,120.908 289.459,120.908 289.392 C 120.908 289.289,119.878 287.898,119.207 287.094 C 119.102 286.968,119.016 286.810,119.016 286.743 C 119.016 286.675,118.761 286.298,118.448 285.904 C 118.136 285.509,117.881 285.097,117.881 284.987 C 117.881 284.877,117.774 284.719,117.644 284.636 C 117.344 284.444,116.556 283.327,116.556 283.093 C 116.556 282.996,116.429 282.868,116.272 282.808 C 116.116 282.748,115.989 282.577,115.989 282.429 C 115.989 282.281,115.861 282.111,115.705 282.051 C 115.549 281.991,115.421 281.851,115.421 281.739 C 115.421 281.511,114.646 280.356,114.428 280.259 C 114.350 280.224,114.286 280.079,114.286 279.937 C 114.286 279.795,114.179 279.610,114.049 279.527 C 113.749 279.335,112.961 278.218,112.961 277.984 C 112.961 277.887,112.833 277.759,112.677 277.699 C 112.521 277.639,112.394 277.503,112.394 277.396 C 112.394 276.953,110.065 274.176,109.691 274.173 C 109.610 274.173,109.493 274.305,109.430 274.467 ",stroke:"none",fill:"#8ca516","fill-rule":"evenodd"}),React.createElement("path",{id:"path5",d:"",stroke:"none",fill:"#6db600","fill-rule":"evenodd"}),React.createElement("path",{id:"path6",d:"M79.186 45.256 C 78.978 45.372,78.369 45.838,77.832 46.291 C 77.295 46.744,76.809 47.114,76.752 47.114 C 76.696 47.114,76.441 47.306,76.186 47.540 C 75.500 48.170,75.046 48.533,74.934 48.540 C 74.693 48.557,73.983 49.116,73.983 49.289 C 73.982 49.611,72.116 51.366,71.950 51.200 C 71.890 51.140,71.722 51.260,71.577 51.468 C 71.431 51.675,71.190 51.845,71.039 51.845 C 70.889 51.845,70.766 52.019,70.766 52.232 C 70.766 52.464,70.539 52.748,70.200 52.942 C 69.888 53.119,69.633 53.328,69.632 53.406 C 69.632 53.484,69.461 53.548,69.253 53.548 C 69.044 53.548,68.874 53.634,68.874 53.739 C 68.874 53.992,67.915 55.061,67.688 55.061 C 67.590 55.061,67.342 55.274,67.137 55.535 C 66.933 55.795,66.647 56.008,66.502 56.008 C 66.357 56.008,66.137 56.197,66.013 56.429 C 65.743 56.933,65.537 57.138,64.871 57.564 C 64.594 57.741,64.126 58.227,63.830 58.644 C 63.452 59.177,63.194 59.371,62.961 59.300 C 62.776 59.244,62.630 59.297,62.630 59.421 C 62.630 59.747,61.733 60.786,61.150 61.136 C 60.865 61.307,60.668 61.576,60.699 61.751 C 60.730 61.922,60.634 62.062,60.487 62.062 C 60.249 62.062,59.039 63.359,58.877 63.788 C 58.843 63.879,58.688 63.955,58.533 63.955 C 58.258 63.955,57.711 64.387,57.711 64.603 C 57.711 64.663,57.561 64.867,57.379 65.056 C 57.197 65.246,56.793 65.714,56.482 66.097 C 56.170 66.480,55.804 66.793,55.668 66.793 C 55.532 66.793,55.296 67.091,55.144 67.455 C 54.992 67.819,54.762 68.121,54.633 68.125 C 54.505 68.130,53.463 69.275,52.318 70.671 C 51.173 72.067,50.086 73.262,49.903 73.326 C 49.719 73.390,49.605 73.501,49.649 73.573 C 49.805 73.824,49.216 74.409,48.921 74.296 C 48.711 74.216,48.627 74.303,48.625 74.604 C 48.622 75.122,48.429 75.402,48.074 75.402 C 47.926 75.402,47.741 75.638,47.663 75.927 C 47.586 76.216,47.349 76.642,47.137 76.874 C 46.126 77.977,44.276 80.266,44.276 80.414 C 44.276 80.505,44.106 80.634,43.898 80.700 C 43.690 80.766,43.519 80.985,43.519 81.186 C 43.519 81.387,43.390 81.701,43.233 81.883 C 41.478 83.908,40.527 85.119,40.618 85.210 C 40.679 85.271,40.378 85.740,39.948 86.253 C 39.519 86.766,39.167 87.281,39.167 87.396 C 39.167 87.512,39.040 87.606,38.884 87.606 C 38.728 87.606,38.600 87.763,38.600 87.954 C 38.600 88.146,38.324 88.625,37.988 89.019 C 37.651 89.413,37.374 89.838,37.373 89.964 C 37.371 90.090,36.944 90.679,36.424 91.275 C 35.904 91.870,35.500 92.441,35.527 92.542 C 35.554 92.644,35.398 92.916,35.181 93.147 C 34.964 93.378,34.676 93.822,34.542 94.134 C 34.408 94.447,34.074 94.941,33.800 95.232 C 33.526 95.524,33.302 95.856,33.302 95.971 C 33.302 96.086,33.089 96.459,32.829 96.800 C 32.569 97.141,32.356 97.527,32.356 97.657 C 32.356 97.788,32.194 98.070,31.996 98.285 C 31.656 98.654,31.110 99.547,30.515 100.706 C 30.370 100.990,30.171 101.272,30.073 101.332 C 29.976 101.392,29.896 101.592,29.896 101.776 C 29.896 101.960,29.683 102.310,29.423 102.554 C 29.163 102.799,28.950 103.139,28.950 103.311 C 28.950 103.483,28.745 103.816,28.495 104.051 C 28.245 104.286,27.983 104.780,27.914 105.149 C 27.845 105.518,27.539 106.085,27.233 106.410 C 26.928 106.735,26.716 107.099,26.761 107.220 C 26.806 107.340,26.678 107.587,26.477 107.769 C 26.276 107.951,26.112 108.252,26.112 108.438 C 26.112 108.624,26.032 108.825,25.934 108.886 C 25.725 109.015,25.166 110.097,25.166 110.374 C 25.166 110.480,25.049 110.701,24.908 110.865 C 24.766 111.029,24.497 111.573,24.310 112.072 C 24.124 112.572,23.805 113.098,23.602 113.240 C 23.388 113.390,23.291 113.594,23.372 113.724 C 23.448 113.848,23.409 114.012,23.285 114.089 C 23.161 114.166,23.040 114.357,23.017 114.513 C 22.994 114.669,22.842 115.001,22.679 115.251 C 22.516 115.500,22.320 115.918,22.245 116.178 C 22.005 117.008,21.524 117.971,21.276 118.117 C 21.144 118.196,20.979 118.600,20.908 119.016 C 20.838 119.432,20.703 119.773,20.608 119.773 C 20.513 119.773,20.435 119.909,20.435 120.075 C 20.435 120.390,19.954 121.350,19.531 121.878 C 19.395 122.047,19.304 122.260,19.328 122.351 C 19.423 122.710,19.048 123.830,18.710 124.192 C 18.514 124.402,18.354 124.722,18.354 124.902 C 18.354 125.081,18.265 125.258,18.156 125.294 C 18.048 125.331,17.934 125.593,17.904 125.878 C 17.874 126.163,17.792 126.453,17.723 126.522 C 17.654 126.591,17.597 126.800,17.597 126.985 C 17.597 127.171,17.456 127.402,17.284 127.498 C 17.104 127.598,17.019 127.797,17.083 127.965 C 17.148 128.134,17.072 128.303,16.903 128.368 C 16.743 128.430,16.659 128.604,16.718 128.756 C 16.776 128.908,16.742 129.083,16.643 129.144 C 16.543 129.206,16.462 129.496,16.462 129.789 C 16.462 130.083,16.337 130.426,16.184 130.553 C 16.031 130.680,15.913 130.839,15.922 130.907 C 15.975 131.306,15.854 131.666,15.559 131.989 C 15.375 132.191,15.231 132.483,15.240 132.640 C 15.254 132.898,14.806 134.251,14.394 135.194 C 14.034 136.017,13.441 137.881,13.325 138.555 C 13.257 138.946,13.127 139.313,13.034 139.370 C 12.942 139.427,12.867 139.724,12.867 140.030 C 12.867 140.336,12.781 140.587,12.677 140.587 C 12.573 140.587,12.488 140.752,12.488 140.954 C 12.488 141.156,12.403 141.374,12.299 141.438 C 12.195 141.502,12.108 141.784,12.106 142.064 C 12.103 142.344,11.940 142.928,11.743 143.362 C 11.546 143.796,11.432 144.198,11.489 144.255 C 11.547 144.312,11.412 144.782,11.189 145.299 C 10.967 145.816,10.785 146.405,10.785 146.608 C 10.785 146.811,10.658 147.220,10.503 147.519 C 10.347 147.817,10.219 148.290,10.219 148.570 C 10.218 148.850,10.144 149.124,10.054 149.180 C 9.964 149.236,9.832 149.645,9.760 150.090 C 9.514 151.625,8.933 154.114,8.690 154.683 C 8.531 155.055,8.445 155.436,7.841 158.467 C 7.675 159.300,7.457 160.135,7.357 160.323 C 7.256 160.510,7.122 161.216,7.060 161.890 C 6.997 162.564,6.873 163.160,6.784 163.215 C 6.695 163.270,6.621 163.586,6.620 163.918 C 6.618 164.251,6.490 165.061,6.335 165.719 C 6.180 166.377,6.010 167.271,5.957 167.706 C 5.904 168.140,5.815 168.794,5.757 169.158 C 5.700 169.522,5.628 170.076,5.597 170.388 C 5.566 170.700,5.489 171.083,5.425 171.239 C 5.361 171.395,5.221 172.247,5.113 173.132 C 5.006 174.016,4.874 174.995,4.821 175.307 C 4.767 175.620,4.675 176.471,4.616 177.200 C 4.557 177.928,4.436 178.612,4.347 178.719 C 4.258 178.827,4.184 179.337,4.182 179.854 C 4.180 180.372,4.133 181.306,4.077 181.930 C 4.021 182.554,3.937 183.576,3.890 184.201 C 3.843 184.825,3.790 185.336,3.772 185.336 C 3.711 185.336,3.445 190.033,3.343 192.917 C 3.310 193.860,3.223 194.729,3.149 194.847 C 3.017 195.060,3.058 195.456,3.313 196.452 C 3.388 196.743,3.369 196.973,3.271 196.973 C 2.976 196.973,3.139 207.939,3.515 213.434 C 3.575 214.319,3.650 215.511,3.680 216.083 C 3.711 216.656,3.841 218.188,3.969 219.489 C 4.098 220.790,4.193 222.138,4.181 222.485 C 4.170 222.833,4.219 223.211,4.291 223.327 C 4.449 223.584,4.491 223.880,4.653 225.875 C 4.722 226.734,4.832 227.436,4.897 227.436 C 4.961 227.436,5.029 227.670,5.047 227.956 C 5.081 228.509,5.332 230.268,5.686 232.450 C 5.804 233.179,5.892 234.009,5.880 234.295 C 5.869 234.581,5.927 234.816,6.010 234.816 C 6.092 234.816,6.155 235.163,6.149 235.587 C 6.144 236.012,6.205 236.400,6.286 236.450 C 6.367 236.500,6.433 236.797,6.433 237.110 C 6.433 237.423,6.516 237.833,6.617 238.023 C 6.719 238.212,6.898 238.994,7.016 239.760 C 7.134 240.527,7.282 241.239,7.344 241.342 C 7.407 241.445,7.471 241.785,7.488 242.099 C 7.504 242.412,7.616 243.024,7.736 243.460 C 7.857 243.896,7.937 244.321,7.916 244.406 C 7.894 244.491,8.052 245.128,8.267 245.821 C 8.482 246.515,8.615 247.303,8.564 247.572 C 8.511 247.851,8.557 248.061,8.673 248.061 C 8.785 248.061,8.929 248.380,8.994 248.770 C 9.059 249.160,9.162 249.607,9.224 249.763 C 9.286 249.920,9.352 250.218,9.370 250.426 C 9.389 250.634,9.502 251.044,9.622 251.337 C 9.741 251.630,9.839 252.027,9.839 252.220 C 9.839 252.413,9.929 252.600,10.040 252.637 C 10.150 252.674,10.245 253.071,10.251 253.519 C 10.258 254.029,10.360 254.371,10.524 254.434 C 10.668 254.489,10.785 254.736,10.785 254.982 C 10.785 255.505,11.579 258.598,11.996 259.697 C 12.153 260.114,12.286 260.593,12.291 260.764 C 12.295 260.934,12.426 261.317,12.582 261.615 C 12.737 261.913,12.865 262.292,12.865 262.457 C 12.866 262.621,12.926 262.815,12.998 262.888 C 13.071 262.960,13.152 263.123,13.179 263.251 C 13.404 264.299,13.720 265.234,13.934 265.483 C 14.076 265.648,14.191 265.999,14.191 266.264 C 14.191 266.529,14.319 266.852,14.475 266.982 C 14.631 267.112,14.759 267.458,14.759 267.751 C 14.759 268.044,14.838 268.333,14.936 268.393 C 15.033 268.454,15.252 268.991,15.423 269.587 C 15.594 270.184,15.898 270.953,16.098 271.297 C 16.298 271.642,16.462 272.082,16.462 272.275 C 16.462 272.469,16.558 272.659,16.675 272.698 C 16.792 272.737,16.907 272.936,16.929 273.139 C 17.027 274.010,17.279 274.723,17.524 274.816 C 17.668 274.872,17.786 275.128,17.786 275.385 C 17.786 275.642,17.871 275.905,17.975 275.970 C 18.079 276.034,18.165 276.232,18.165 276.409 C 18.165 276.587,18.335 277.050,18.543 277.438 C 18.751 277.827,18.925 278.294,18.928 278.476 C 18.932 278.659,19.137 279.055,19.384 279.357 C 19.631 279.659,19.788 280.024,19.733 280.169 C 19.678 280.313,19.771 280.583,19.940 280.770 C 20.109 280.957,20.375 281.538,20.530 282.062 C 20.686 282.585,20.983 283.230,21.192 283.495 C 21.400 283.760,21.570 284.084,21.570 284.216 C 21.570 284.347,21.687 284.589,21.830 284.753 C 21.973 284.918,22.233 285.494,22.409 286.035 C 22.585 286.575,22.882 287.214,23.070 287.454 C 23.257 287.694,23.476 288.103,23.555 288.363 C 23.635 288.623,23.944 289.172,24.243 289.583 C 24.542 289.994,24.787 290.569,24.787 290.860 C 24.787 291.152,24.852 291.391,24.931 291.391 C 25.093 291.391,25.194 291.562,26.053 293.295 C 26.385 293.965,26.875 294.806,27.141 295.164 C 27.407 295.523,27.625 295.999,27.625 296.223 C 27.625 296.447,27.796 296.784,28.004 296.973 C 28.212 297.161,28.382 297.402,28.382 297.507 C 28.382 297.613,28.501 297.834,28.647 297.998 C 29.249 298.678,29.679 299.668,29.465 299.882 C 29.311 300.036,29.391 300.234,29.765 300.624 C 30.045 300.917,30.274 301.258,30.274 301.382 C 30.274 301.507,30.346 301.608,30.433 301.608 C 30.521 301.608,30.692 301.800,30.815 302.034 C 30.937 302.268,31.289 302.800,31.596 303.217 C 31.903 303.633,32.157 304.086,32.160 304.224 C 32.164 304.361,32.273 304.592,32.403 304.737 C 32.948 305.345,33.113 305.575,33.113 305.728 C 33.113 305.817,33.367 306.133,33.678 306.431 C 34.339 307.065,34.665 306.968,36.013 305.736 C 36.434 305.351,36.848 305.079,36.934 305.132 C 37.019 305.184,37.140 305.094,37.202 304.932 C 37.265 304.769,37.430 304.636,37.569 304.636 C 37.708 304.636,37.940 304.466,38.086 304.259 C 38.231 304.051,38.408 303.939,38.479 304.011 C 38.550 304.082,38.739 303.953,38.899 303.726 C 39.058 303.498,39.308 303.311,39.453 303.311 C 39.598 303.311,39.784 303.205,39.868 303.075 C 39.951 302.945,40.307 302.677,40.660 302.481 C 41.013 302.284,41.460 301.986,41.653 301.819 C 41.847 301.651,42.169 301.372,42.368 301.198 C 42.568 301.025,42.783 300.935,42.846 300.998 C 42.909 301.061,43.091 300.926,43.251 300.698 C 43.410 300.470,43.655 300.284,43.794 300.284 C 43.933 300.284,44.098 300.151,44.160 299.988 C 44.222 299.825,44.350 299.739,44.443 299.797 C 44.536 299.854,44.941 299.597,45.343 299.225 C 45.745 298.853,46.383 298.390,46.760 298.195 C 47.137 298.000,47.497 297.709,47.558 297.548 C 47.620 297.388,47.790 297.256,47.937 297.256 C 48.083 297.256,48.309 297.130,48.437 296.975 C 48.566 296.820,48.747 296.740,48.840 296.797 C 48.933 296.855,49.061 296.768,49.123 296.605 C 49.186 296.442,49.544 296.163,49.920 295.985 C 50.295 295.806,50.746 295.530,50.921 295.371 C 51.096 295.211,51.463 294.877,51.737 294.629 C 52.011 294.381,52.289 294.231,52.354 294.297 C 52.420 294.362,52.593 294.245,52.740 294.035 C 52.886 293.826,53.080 293.701,53.171 293.757 C 53.261 293.813,53.404 293.750,53.489 293.618 C 53.635 293.389,54.125 293.034,54.633 292.790 C 54.761 292.728,55.229 292.345,55.673 291.939 C 56.117 291.534,56.558 291.202,56.652 291.202 C 56.746 291.202,57.129 290.968,57.503 290.682 C 57.877 290.396,58.245 290.182,58.320 290.207 C 58.395 290.232,58.547 290.082,58.658 289.875 C 58.768 289.668,58.987 289.499,59.142 289.499 C 59.298 289.499,59.476 289.366,59.538 289.204 C 59.601 289.042,59.753 288.948,59.877 288.996 C 60.001 289.043,60.204 288.921,60.327 288.723 C 60.451 288.525,60.636 288.363,60.740 288.363 C 60.843 288.363,61.097 288.214,61.306 288.032 C 61.514 287.850,61.861 287.545,62.078 287.354 C 62.295 287.163,62.515 287.050,62.567 287.102 C 62.619 287.154,62.825 287.055,63.024 286.881 C 63.224 286.708,63.550 286.424,63.750 286.250 C 63.949 286.077,64.164 285.987,64.227 286.050 C 64.290 286.113,64.472 285.978,64.632 285.750 C 64.792 285.522,65.025 285.336,65.150 285.336 C 65.275 285.336,65.484 285.166,65.614 284.957 C 65.744 284.749,65.950 284.579,66.073 284.579 C 66.196 284.579,66.784 284.196,67.380 283.728 C 67.976 283.259,68.556 282.876,68.669 282.876 C 68.782 282.876,68.874 282.801,68.874 282.709 C 68.874 282.617,69.023 282.488,69.205 282.422 C 69.809 282.204,70.450 281.773,70.619 281.471 C 70.710 281.307,70.904 281.173,71.050 281.173 C 71.196 281.173,71.383 281.056,71.466 280.912 C 71.550 280.769,71.919 280.491,72.286 280.296 C 72.944 279.946,73.261 279.714,74.012 279.029 C 74.222 278.838,74.434 278.722,74.483 278.772 C 74.533 278.822,74.773 278.680,75.017 278.457 C 75.752 277.784,76.020 277.596,76.111 277.688 C 76.159 277.735,76.572 277.432,77.030 277.014 C 77.487 276.596,77.959 276.254,78.078 276.254 C 78.197 276.254,78.347 276.117,78.411 275.950 C 78.475 275.783,78.639 275.690,78.776 275.742 C 78.912 275.794,79.127 275.672,79.253 275.470 C 79.379 275.269,79.561 275.152,79.656 275.211 C 79.752 275.270,79.922 275.145,80.035 274.934 C 80.148 274.723,80.356 274.551,80.497 274.551 C 80.639 274.551,80.803 274.423,80.863 274.267 C 80.923 274.111,81.092 273.983,81.239 273.983 C 81.385 273.983,81.609 273.858,81.736 273.705 C 81.863 273.552,82.022 273.446,82.090 273.469 C 82.158 273.491,82.405 273.340,82.640 273.132 C 82.874 272.923,83.243 272.597,83.459 272.406 C 83.676 272.215,83.903 272.108,83.963 272.168 C 84.023 272.229,84.191 272.108,84.336 271.900 C 84.482 271.693,84.723 271.523,84.874 271.523 C 85.024 271.523,85.147 271.438,85.147 271.334 C 85.147 271.230,85.296 271.145,85.480 271.145 C 85.663 271.145,85.921 270.971,86.053 270.759 C 86.186 270.547,86.367 270.418,86.457 270.474 C 86.546 270.529,86.758 270.362,86.928 270.102 C 87.098 269.843,87.362 269.631,87.516 269.631 C 87.670 269.631,87.796 269.554,87.796 269.461 C 87.796 269.367,88.158 269.103,88.600 268.874 C 89.042 268.644,89.472 268.337,89.555 268.192 C 89.639 268.047,89.830 267.928,89.981 267.928 C 90.132 267.928,90.255 267.841,90.255 267.734 C 90.255 267.628,90.468 267.459,90.728 267.360 C 90.989 267.262,91.202 267.113,91.202 267.030 C 91.202 266.947,91.521 266.713,91.911 266.511 C 92.632 266.138,92.857 265.977,93.614 265.288 C 93.848 265.075,94.105 264.922,94.185 264.948 C 94.328 264.994,94.626 264.780,95.394 264.081 C 95.603 263.890,95.823 263.783,95.883 263.843 C 95.943 263.903,96.111 263.782,96.257 263.575 C 96.402 263.367,96.641 263.198,96.787 263.198 C 96.934 263.198,97.145 263.027,97.256 262.819 C 97.368 262.611,97.566 262.441,97.696 262.441 C 97.826 262.441,98.228 262.189,98.588 261.881 C 98.948 261.573,99.345 261.318,99.470 261.313 C 99.595 261.309,99.765 261.199,99.849 261.069 C 99.932 260.939,100.170 260.738,100.378 260.623 C 100.865 260.354,100.977 259.783,100.587 259.564 C 100.420 259.471,100.284 259.324,100.284 259.238 C 100.284 259.151,99.986 258.586,99.622 257.981 C 99.257 257.376,98.959 256.766,98.959 256.626 C 98.959 256.485,98.803 256.202,98.612 255.997 C 98.421 255.792,97.979 255.051,97.629 254.350 C 97.279 253.648,96.927 253.047,96.847 253.014 C 96.766 252.980,96.644 252.639,96.575 252.257 C 96.507 251.874,96.369 251.458,96.270 251.333 C 95.977 250.964,95.364 249.702,95.364 249.469 C 95.364 249.350,95.194 249.057,94.986 248.817 C 94.778 248.577,94.607 248.192,94.607 247.960 C 94.607 247.729,94.480 247.433,94.324 247.304 C 94.167 247.174,94.039 246.972,94.039 246.855 C 94.038 246.737,93.928 246.429,93.794 246.168 C 93.659 245.908,93.364 245.142,93.137 244.465 C 92.909 243.789,92.551 242.898,92.341 242.486 C 92.131 242.074,91.958 241.551,91.958 241.324 C 91.958 241.097,91.831 240.862,91.675 240.802 C 91.518 240.742,91.391 240.480,91.391 240.219 C 91.391 239.959,91.175 239.258,90.912 238.663 C 90.648 238.067,90.474 237.471,90.525 237.339 C 90.576 237.207,90.536 237.048,90.436 236.986 C 90.337 236.925,90.255 236.743,90.255 236.583 C 90.255 236.423,90.138 236.024,89.994 235.696 C 89.633 234.873,89.405 234.170,89.035 232.734 C 88.860 232.058,88.638 231.243,88.540 230.923 C 88.443 230.604,88.363 230.199,88.363 230.024 C 88.363 229.850,88.269 229.707,88.154 229.707 C 88.038 229.707,87.997 229.569,88.062 229.399 C 88.127 229.230,88.106 228.995,88.014 228.879 C 87.923 228.762,87.793 228.249,87.727 227.739 C 87.660 227.229,87.529 226.718,87.435 226.604 C 87.341 226.489,87.205 225.885,87.133 225.260 C 87.061 224.636,86.875 223.674,86.720 223.122 C 86.565 222.570,86.365 221.506,86.276 220.757 C 86.039 218.777,85.722 216.991,85.531 216.556 C 85.440 216.348,85.312 215.241,85.247 214.096 C 85.073 211.034,84.952 209.437,84.844 208.798 C 84.589 207.284,84.477 198.358,84.678 195.553 C 84.730 194.825,84.809 193.718,84.853 193.094 C 84.897 192.469,85.030 190.851,85.149 189.499 C 85.269 188.146,85.391 186.729,85.421 186.350 C 85.452 185.972,85.521 185.588,85.574 185.499 C 85.628 185.409,85.733 184.697,85.808 183.917 C 85.884 183.136,86.031 182.392,86.135 182.264 C 86.239 182.135,86.272 181.893,86.208 181.726 C 86.144 181.559,86.155 181.324,86.233 181.203 C 86.311 181.083,86.476 180.345,86.598 179.565 C 86.721 178.784,86.878 177.933,86.947 177.673 C 87.017 177.412,87.119 176.753,87.174 176.206 C 87.230 175.660,87.347 175.213,87.434 175.213 C 87.522 175.213,87.650 174.785,87.719 174.263 C 87.789 173.740,87.916 173.269,88.001 173.216 C 88.087 173.163,88.214 172.612,88.284 171.990 C 88.355 171.369,88.477 170.861,88.556 170.861 C 88.679 170.861,88.867 170.215,89.051 169.158 C 89.178 168.428,89.542 167.132,89.766 166.612 C 90.345 165.264,90.429 164.986,90.334 164.738 C 90.279 164.594,90.375 164.422,90.548 164.356 C 90.726 164.287,90.816 164.116,90.756 163.959 C 90.698 163.807,90.732 163.633,90.831 163.571 C 90.931 163.510,91.012 163.214,91.012 162.914 C 91.012 162.614,91.097 162.316,91.202 162.252 C 91.306 162.187,91.391 161.991,91.392 161.815 C 91.393 161.639,91.520 161.251,91.676 160.953 C 91.831 160.655,91.958 160.303,91.958 160.172 C 91.958 160.040,92.086 159.827,92.242 159.697 C 92.398 159.568,92.526 159.217,92.526 158.917 C 92.526 158.618,92.611 158.373,92.715 158.373 C 92.819 158.373,92.904 158.207,92.904 158.005 C 92.904 157.803,92.990 157.586,93.094 157.521 C 93.198 157.457,93.283 157.239,93.283 157.037 C 93.283 156.835,93.368 156.670,93.472 156.670 C 93.576 156.670,93.661 156.457,93.661 156.197 C 93.661 155.937,93.746 155.724,93.851 155.724 C 93.955 155.724,94.040 155.558,94.040 155.356 C 94.040 155.154,94.114 154.943,94.205 154.887 C 94.295 154.831,94.424 154.513,94.491 154.179 C 94.557 153.846,94.732 153.439,94.879 153.276 C 95.025 153.113,95.173 152.854,95.207 152.701 C 95.242 152.547,95.372 152.311,95.498 152.175 C 95.624 152.039,95.683 151.814,95.629 151.675 C 95.576 151.535,95.668 151.368,95.835 151.304 C 96.002 151.240,96.122 151.080,96.101 150.949 C 96.052 150.643,96.622 149.354,96.875 149.198 C 96.981 149.132,97.067 148.918,97.067 148.722 C 97.067 148.526,97.247 148.240,97.466 148.086 C 97.686 147.933,97.814 147.725,97.753 147.625 C 97.691 147.525,97.809 147.228,98.016 146.965 C 98.223 146.702,98.392 146.357,98.392 146.197 C 98.392 146.037,98.472 145.857,98.570 145.797 C 98.668 145.736,98.936 145.310,99.166 144.849 C 99.396 144.389,99.678 144.029,99.792 144.049 C 99.907 144.070,99.973 143.930,99.940 143.737 C 99.907 143.545,99.992 143.247,100.129 143.075 C 100.434 142.693,100.816 142.036,101.254 141.139 C 101.437 140.767,101.719 140.352,101.881 140.218 C 102.043 140.083,102.176 139.856,102.176 139.712 C 102.176 139.569,102.472 139.124,102.835 138.723 C 103.197 138.322,103.444 137.944,103.382 137.883 C 103.256 137.756,104.837 135.667,105.059 135.667 C 105.138 135.667,105.203 135.517,105.203 135.334 C 105.203 135.151,105.500 134.661,105.862 134.246 C 106.224 133.831,106.522 133.385,106.524 133.254 C 106.526 133.124,106.627 133.039,106.748 133.065 C 106.869 133.091,107.018 132.927,107.079 132.700 C 107.192 132.281,107.820 131.433,108.930 130.202 C 109.269 129.825,109.549 129.414,109.551 129.288 C 109.553 129.161,109.726 128.967,109.934 128.855 C 110.142 128.744,110.312 128.528,110.312 128.376 C 110.312 128.223,110.405 128.098,110.518 128.098 C 110.815 128.098,111.434 127.306,111.441 126.916 C 111.445 126.717,111.593 126.585,111.813 126.585 C 112.072 126.585,112.197 126.432,112.239 126.064 C 112.280 125.705,112.401 125.552,112.630 125.570 C 112.812 125.585,112.961 125.521,112.961 125.429 C 112.961 125.337,113.259 124.931,113.623 124.528 C 113.988 124.125,114.286 123.699,114.286 123.582 C 114.286 123.464,114.413 123.368,114.570 123.368 C 114.726 123.368,114.854 123.304,114.854 123.226 C 114.855 122.992,116.210 121.476,116.417 121.476 C 116.688 121.476,117.111 120.877,117.118 120.482 C 117.121 120.297,117.270 120.149,117.455 120.147 C 117.637 120.144,118.031 119.811,118.331 119.405 C 118.654 118.970,118.982 118.709,119.135 118.768 C 119.278 118.823,119.395 118.791,119.395 118.698 C 119.395 118.605,119.733 118.149,120.146 117.685 C 120.559 117.220,120.900 116.776,120.903 116.698 C 120.906 116.620,121.026 116.556,121.170 116.556 C 121.313 116.556,121.656 116.262,121.930 115.901 C 122.243 115.491,122.534 115.287,122.710 115.354 C 122.884 115.421,122.990 115.348,122.990 115.161 C 122.990 114.996,123.181 114.810,123.415 114.748 C 123.649 114.687,124.120 114.259,124.462 113.799 C 124.804 113.338,125.169 112.961,125.275 112.961 C 125.625 112.961,126.383 111.929,126.388 111.447 C 126.391 111.052,125.869 110.217,124.884 109.043 C 124.779 108.917,124.689 108.747,124.685 108.665 C 124.681 108.582,124.425 108.220,124.117 107.860 C 123.809 107.499,123.557 107.123,123.557 107.024 C 123.557 106.925,123.427 106.709,123.269 106.544 C 122.761 106.017,121.665 104.476,121.665 104.289 C 121.665 104.190,121.537 104.060,121.381 104.000 C 121.225 103.940,121.097 103.790,121.097 103.668 C 121.097 103.545,120.799 103.081,120.435 102.637 C 120.071 102.192,119.773 101.736,119.773 101.624 C 119.773 101.511,119.688 101.419,119.584 101.419 C 119.480 101.419,119.395 101.305,119.395 101.165 C 119.395 101.025,119.224 100.756,119.016 100.568 C 118.808 100.379,118.638 100.120,118.638 99.991 C 118.638 99.862,118.510 99.708,118.354 99.648 C 118.198 99.588,118.070 99.413,118.070 99.258 C 118.070 99.104,117.959 98.910,117.823 98.827 C 117.687 98.744,117.373 98.335,117.124 97.919 C 116.875 97.502,116.561 97.094,116.425 97.010 C 116.289 96.927,116.178 96.766,116.178 96.652 C 116.178 96.537,115.880 96.080,115.516 95.636 C 115.151 95.191,114.853 94.753,114.853 94.663 C 114.853 94.573,114.601 94.204,114.293 93.843 C 113.985 93.483,113.730 93.121,113.726 93.038 C 113.722 92.956,113.632 92.786,113.527 92.660 C 112.772 91.760,112.204 90.922,112.204 90.709 C 112.204 90.571,112.034 90.367,111.826 90.255 C 111.618 90.144,111.447 89.926,111.447 89.770 C 111.447 89.614,111.320 89.438,111.164 89.378 C 111.008 89.318,110.880 89.189,110.880 89.092 C 110.880 88.883,110.091 87.729,109.886 87.638 C 109.808 87.603,109.745 87.459,109.745 87.316 C 109.745 87.174,109.638 86.990,109.508 86.906 C 109.195 86.706,108.420 85.593,108.420 85.344 C 108.420 85.235,108.333 85.147,108.226 85.147 C 108.120 85.147,107.951 84.934,107.852 84.674 C 107.753 84.413,107.585 84.201,107.479 84.201 C 107.372 84.201,107.285 84.112,107.285 84.004 C 107.285 83.795,106.542 82.672,106.274 82.476 C 106.086 82.338,105.636 81.589,105.472 81.139 C 105.408 80.964,105.236 80.775,105.090 80.719 C 104.944 80.663,104.825 80.496,104.825 80.348 C 104.825 80.200,104.697 80.029,104.541 79.969 C 104.385 79.910,104.257 79.743,104.257 79.600 C 104.257 79.457,104.087 79.186,103.879 78.997 C 103.671 78.809,103.500 78.582,103.500 78.493 C 103.500 78.404,103.032 77.698,102.460 76.924 C 101.887 76.150,101.419 75.467,101.419 75.407 C 101.419 75.346,101.100 74.885,100.710 74.382 C 100.319 73.879,99.872 73.278,99.716 73.046 C 99.560 72.815,99.262 72.431,99.054 72.193 C 98.846 71.956,98.505 71.477,98.297 71.129 C 98.089 70.781,97.769 70.280,97.585 70.016 C 97.402 69.752,97.200 69.387,97.138 69.205 C 97.075 69.023,96.946 68.874,96.851 68.874 C 96.757 68.874,96.598 68.661,96.500 68.401 C 96.401 68.141,96.232 67.928,96.126 67.928 C 96.019 67.928,95.932 67.836,95.932 67.723 C 95.932 67.611,95.634 67.155,95.270 66.711 C 94.905 66.266,94.607 65.805,94.607 65.685 C 94.607 65.566,94.520 65.468,94.413 65.468 C 94.307 65.468,94.137 65.277,94.036 65.043 C 93.750 64.382,93.408 63.889,93.046 63.616 C 92.864 63.478,92.715 63.261,92.715 63.133 C 92.715 63.004,92.463 62.605,92.155 62.245 C 91.847 61.884,91.592 61.522,91.588 61.440 C 91.583 61.357,91.494 61.187,91.389 61.061 C 90.740 60.285,89.688 58.868,89.688 58.772 C 89.688 58.668,88.254 56.616,87.796 56.063 C 87.692 55.937,87.606 55.776,87.606 55.704 C 87.606 55.632,87.308 55.210,86.944 54.765 C 86.580 54.321,86.282 53.872,86.282 53.768 C 86.282 53.664,86.218 53.551,86.140 53.516 C 85.977 53.444,85.147 52.290,85.147 52.136 C 85.147 52.080,84.998 51.870,84.816 51.669 C 84.309 51.111,84.132 50.868,83.637 50.047 C 83.386 49.631,83.070 49.222,82.934 49.139 C 82.798 49.056,82.687 48.894,82.687 48.780 C 82.687 48.666,82.389 48.209,82.025 47.764 C 81.660 47.320,81.362 46.864,81.362 46.752 C 81.362 46.639,81.277 46.547,81.173 46.547 C 81.069 46.547,80.984 46.433,80.984 46.294 C 80.984 46.033,79.963 45.029,79.708 45.039 C 79.629 45.042,79.395 45.140,79.186 45.256 ",stroke:"none",fill:"#9fbb1a","fill-rule":"evenodd"}),React.createElement("path",{id:"path7",d:"M190.728 4.092 C 190.364 4.223,189.799 4.285,189.473 4.229 C 189.135 4.172,188.824 4.219,188.750 4.338 C 188.679 4.453,188.530 4.491,188.419 4.423 C 188.117 4.236,186.136 4.191,185.800 4.363 C 185.639 4.446,184.674 4.555,183.655 4.606 C 182.637 4.658,181.757 4.746,181.700 4.803 C 181.643 4.860,181.445 4.825,181.260 4.726 C 181.028 4.602,180.702 4.639,180.211 4.844 C 179.819 5.008,179.236 5.103,178.916 5.056 C 178.597 5.009,178.153 5.054,177.930 5.155 C 177.665 5.276,177.408 5.275,177.188 5.151 C 176.939 5.012,176.677 5.060,176.193 5.332 C 175.705 5.606,175.498 5.643,175.395 5.476 C 175.317 5.350,175.150 5.315,175.018 5.396 C 174.731 5.574,173.781 5.731,173.132 5.709 C 172.871 5.700,172.531 5.745,172.375 5.809 C 172.219 5.872,171.835 5.942,171.523 5.964 C 171.211 5.986,170.805 6.068,170.621 6.145 C 170.437 6.223,170.057 6.243,169.775 6.189 C 169.494 6.135,168.963 6.205,168.596 6.343 C 168.229 6.481,167.673 6.577,167.360 6.556 C 167.048 6.534,166.553 6.631,166.259 6.771 C 165.966 6.910,165.540 7.007,165.313 6.985 C 165.086 6.963,164.773 6.996,164.617 7.059 C 164.461 7.122,163.936 7.213,163.450 7.261 C 162.965 7.310,162.403 7.437,162.203 7.544 C 162.003 7.651,161.464 7.761,161.005 7.788 C 160.547 7.815,159.865 7.985,159.491 8.166 C 159.117 8.347,158.627 8.447,158.401 8.388 C 158.176 8.329,157.886 8.367,157.757 8.472 C 157.627 8.576,157.223 8.661,156.859 8.658 C 156.495 8.656,155.899 8.785,155.535 8.945 C 155.170 9.104,154.532 9.288,154.115 9.354 C 153.699 9.419,153.018 9.570,152.602 9.689 C 152.185 9.809,151.771 9.888,151.680 9.865 C 151.589 9.842,151.079 9.974,150.545 10.156 C 150.011 10.339,149.404 10.494,149.196 10.501 C 148.988 10.508,148.711 10.580,148.582 10.660 C 148.452 10.741,148.160 10.842,147.933 10.886 C 147.706 10.930,147.466 11.054,147.399 11.162 C 147.333 11.270,146.854 11.388,146.337 11.424 C 145.819 11.460,145.229 11.581,145.025 11.691 C 144.416 12.023,143.918 12.170,143.561 12.126 C 143.375 12.103,142.854 12.291,142.402 12.543 C 141.806 12.877,141.492 12.953,141.259 12.823 C 141.031 12.696,140.841 12.731,140.605 12.944 C 140.423 13.110,140.221 13.245,140.158 13.245 C 140.095 13.245,139.804 13.342,139.511 13.461 C 139.218 13.580,138.851 13.703,138.694 13.735 C 137.405 14.000,136.837 14.157,136.471 14.348 C 135.438 14.886,135.267 14.948,134.805 14.948 C 134.536 14.948,134.188 15.076,134.032 15.232 C 133.876 15.388,133.551 15.516,133.311 15.516 C 133.071 15.516,132.768 15.644,132.638 15.802 C 132.460 16.015,132.336 16.035,132.148 15.879 C 131.958 15.721,131.744 15.777,131.277 16.110 C 130.937 16.353,130.518 16.527,130.348 16.498 C 130.177 16.469,129.991 16.567,129.934 16.715 C 129.877 16.863,129.210 17.172,128.451 17.403 C 127.692 17.633,126.900 17.942,126.691 18.088 C 126.482 18.234,126.171 18.354,126.000 18.354 C 125.829 18.354,125.479 18.520,125.221 18.722 C 124.961 18.927,124.590 19.048,124.387 18.995 C 124.177 18.940,123.727 19.099,123.331 19.367 C 122.952 19.625,122.597 19.791,122.543 19.736 C 122.488 19.682,122.192 19.817,121.883 20.036 C 121.575 20.256,121.143 20.435,120.923 20.435 C 120.702 20.435,120.185 20.648,119.773 20.908 C 119.361 21.168,118.958 21.383,118.878 21.385 C 118.798 21.387,117.966 21.769,117.029 22.235 C 116.093 22.701,115.172 23.082,114.983 23.083 C 114.794 23.084,114.368 23.289,114.037 23.539 C 113.705 23.789,113.117 24.124,112.729 24.284 C 112.341 24.444,111.836 24.750,111.605 24.965 C 111.172 25.369,111.017 25.422,110.449 25.364 C 110.263 25.345,109.604 25.675,108.984 26.099 C 108.364 26.522,107.767 26.868,107.657 26.868 C 107.548 26.868,106.986 27.217,106.409 27.643 C 105.732 28.143,105.231 28.384,104.995 28.322 C 104.763 28.262,104.208 28.515,103.479 29.014 C 102.847 29.447,102.189 29.886,102.016 29.991 C 101.844 30.095,101.650 30.253,101.585 30.342 C 101.520 30.431,101.290 30.448,101.075 30.380 C 100.804 30.294,100.435 30.433,99.869 30.835 C 99.421 31.154,98.845 31.562,98.591 31.743 C 98.336 31.924,97.760 32.349,97.312 32.687 C 96.863 33.025,96.412 33.302,96.309 33.302 C 96.206 33.302,96.121 33.387,96.121 33.491 C 96.121 33.595,96.032 33.680,95.924 33.680 C 95.815 33.680,95.624 33.763,95.498 33.865 C 95.372 33.966,95.019 34.252,94.713 34.501 L 94.157 34.952 94.848 35.972 C 95.229 36.533,96.117 37.818,96.824 38.829 C 97.530 39.840,98.482 41.202,98.939 41.857 C 99.396 42.511,100.152 43.600,100.618 44.276 C 101.085 44.953,101.626 45.682,101.821 45.897 C 102.016 46.112,102.176 46.351,102.176 46.428 C 102.176 46.506,102.474 46.969,102.838 47.457 C 103.690 48.598,103.846 48.816,104.594 49.902 C 105.327 50.967,108.212 55.098,108.792 55.913 C 109.014 56.225,109.932 57.545,110.832 58.846 C 111.732 60.147,112.515 61.254,112.573 61.306 C 112.631 61.358,112.934 61.783,113.246 62.252 C 113.557 62.720,113.878 63.188,113.957 63.292 C 114.786 64.376,115.421 65.277,115.421 65.371 C 115.421 65.434,115.825 66.032,116.320 66.700 C 117.956 68.911,118.920 70.264,119.016 70.484 C 119.068 70.604,119.648 71.461,120.305 72.390 C 124.511 78.336,125.354 79.540,126.329 80.984 C 126.926 81.868,127.674 82.929,127.993 83.340 C 128.311 83.751,128.657 84.236,128.761 84.418 C 128.933 84.718,130.457 86.906,132.027 89.106 C 132.367 89.582,133.022 90.525,133.484 91.202 C 133.945 91.878,134.716 92.985,135.198 93.661 C 135.680 94.338,136.301 95.232,136.580 95.648 C 136.858 96.064,137.171 96.501,137.275 96.618 C 137.379 96.736,137.574 96.991,137.707 97.186 C 137.840 97.381,138.421 98.221,138.998 99.054 C 139.575 99.886,140.190 100.801,140.364 101.087 C 140.778 101.764,141.053 101.743,142.264 100.946 C 142.817 100.581,143.341 100.326,143.427 100.380 C 143.513 100.433,143.697 100.366,143.835 100.231 C 144.299 99.780,145.901 98.770,146.152 98.770 C 146.289 98.770,146.618 98.600,146.882 98.392 C 147.147 98.184,147.483 98.013,147.628 98.013 C 147.774 98.013,148.059 97.888,148.261 97.735 C 148.463 97.583,148.726 97.455,148.846 97.452 C 148.965 97.448,149.509 97.145,150.055 96.778 C 150.600 96.411,151.089 96.153,151.140 96.205 C 151.192 96.257,151.483 96.122,151.786 95.906 C 152.118 95.670,152.519 95.548,152.792 95.600 C 153.102 95.659,153.457 95.512,153.915 95.135 C 154.284 94.831,154.661 94.630,154.754 94.687 C 154.846 94.744,155.137 94.622,155.400 94.416 C 155.663 94.209,156.064 94.040,156.292 94.040 C 156.699 94.040,156.919 93.949,158.510 93.124 C 158.950 92.896,159.546 92.677,159.835 92.638 C 160.332 92.572,161.122 92.273,162.479 91.639 C 162.812 91.484,163.157 91.402,163.247 91.457 C 163.337 91.513,163.916 91.315,164.534 91.018 C 165.152 90.721,165.730 90.547,165.818 90.631 C 165.907 90.716,166.439 90.574,167.002 90.317 C 167.565 90.059,168.344 89.809,168.733 89.762 C 169.521 89.665,170.644 89.319,170.995 89.064 C 171.120 88.973,171.298 88.945,171.391 89.002 C 171.483 89.059,171.986 88.944,172.508 88.746 C 173.207 88.480,173.512 88.441,173.668 88.597 C 173.824 88.753,173.972 88.725,174.230 88.491 C 174.423 88.317,174.760 88.174,174.980 88.174 C 175.200 88.174,175.429 88.095,175.489 87.997 C 175.549 87.900,175.894 87.869,176.255 87.927 C 176.638 87.989,177.025 87.941,177.181 87.811 C 177.329 87.688,177.822 87.566,178.277 87.539 C 178.732 87.512,179.217 87.420,179.356 87.335 C 179.494 87.249,180.025 87.157,180.536 87.129 C 181.047 87.102,181.577 86.986,181.715 86.871 C 181.852 86.757,182.016 86.715,182.079 86.778 C 182.142 86.841,182.631 86.787,183.166 86.659 C 183.701 86.530,184.664 86.406,185.305 86.382 C 185.946 86.358,186.641 86.288,186.850 86.226 C 187.397 86.063,191.399 85.731,194.229 85.613 C 198.932 85.416,201.514 85.397,201.514 85.558 C 201.514 85.654,201.635 85.665,201.783 85.582 C 201.992 85.464,204.170 85.524,206.339 85.706 C 206.505 85.720,207.806 85.733,209.555 85.737 C 209.868 85.738,210.251 85.786,210.407 85.844 C 210.703 85.954,211.110 86.005,212.895 86.157 C 213.483 86.207,214.121 86.329,214.314 86.429 C 214.507 86.528,214.771 86.571,214.901 86.524 C 215.032 86.477,216.032 86.579,217.124 86.751 C 218.216 86.922,219.182 87.017,219.271 86.962 C 219.360 86.907,219.595 86.980,219.792 87.124 C 220.057 87.317,220.216 87.331,220.402 87.177 C 220.589 87.022,220.696 87.038,220.821 87.240 C 220.913 87.390,221.141 87.528,221.327 87.547 C 221.513 87.566,222.067 87.623,222.558 87.674 C 223.049 87.725,223.519 87.808,223.603 87.860 C 223.686 87.911,224.136 88.011,224.602 88.080 C 225.068 88.150,225.542 88.284,225.656 88.378 C 225.770 88.472,225.910 88.502,225.967 88.445 C 226.024 88.388,226.570 88.486,227.179 88.664 C 227.789 88.841,228.415 89.001,228.571 89.019 C 228.728 89.037,229.111 89.160,229.423 89.293 C 229.735 89.426,230.309 89.547,230.699 89.564 C 231.089 89.580,231.408 89.657,231.409 89.735 C 231.409 89.813,231.527 89.877,231.669 89.877 C 231.812 89.877,232.329 90.054,232.818 90.270 C 233.308 90.487,233.820 90.621,233.956 90.568 C 234.093 90.516,234.380 90.596,234.594 90.746 C 234.809 90.896,235.053 90.997,235.136 90.971 C 235.220 90.944,235.544 91.016,235.856 91.130 C 236.168 91.244,236.764 91.446,237.181 91.578 C 237.597 91.710,238.273 91.977,238.683 92.172 C 239.092 92.367,239.620 92.526,239.854 92.526 C 240.089 92.526,240.333 92.611,240.397 92.715 C 240.462 92.819,240.672 92.904,240.866 92.904 C 241.059 92.904,241.246 92.970,241.280 93.049 C 241.315 93.129,242.092 93.441,243.007 93.742 C 243.922 94.043,244.740 94.414,244.825 94.566 C 244.910 94.718,245.209 94.868,245.491 94.899 C 245.772 94.930,246.657 95.268,247.457 95.650 C 248.834 96.308,249.689 96.696,250.331 96.956 C 250.487 97.020,250.870 97.234,251.183 97.434 C 251.495 97.633,251.870 97.803,252.016 97.810 C 252.162 97.818,252.561 98.037,252.902 98.297 C 253.243 98.557,253.630 98.770,253.762 98.770 C 253.893 98.770,254.317 98.989,254.704 99.257 C 255.091 99.526,255.524 99.762,255.666 99.783 C 255.808 99.804,256.191 100.010,256.516 100.242 C 256.841 100.473,257.206 100.662,257.327 100.662 C 257.449 100.662,257.667 100.769,257.812 100.899 C 258.456 101.477,258.653 101.600,259.113 101.716 C 259.382 101.783,259.603 101.966,259.603 102.122 C 259.603 102.289,259.713 102.363,259.871 102.303 C 260.018 102.246,260.183 102.314,260.236 102.453 C 260.289 102.592,260.632 102.804,260.996 102.924 C 261.361 103.045,261.982 103.439,262.376 103.799 C 262.770 104.160,263.182 104.421,263.291 104.379 C 263.401 104.336,263.783 104.590,264.139 104.942 C 264.496 105.294,264.924 105.582,265.091 105.582 C 265.258 105.582,265.962 106.050,266.656 106.623 C 267.350 107.195,268.005 107.663,268.112 107.663 C 268.219 107.663,268.307 107.748,268.307 107.852 C 268.307 107.956,268.436 108.042,268.594 108.042 C 268.753 108.042,268.979 108.254,269.098 108.515 C 269.221 108.785,269.472 108.988,269.684 108.988 C 269.887 108.988,270.385 109.329,270.790 109.746 C 271.194 110.163,271.706 110.532,271.926 110.565 C 272.147 110.599,272.441 110.832,272.581 111.084 C 272.720 111.336,272.837 111.460,272.841 111.360 C 272.845 111.261,273.167 111.516,273.557 111.928 C 274.300 112.712,274.800 113.086,275.355 113.273 C 275.537 113.334,275.686 113.449,275.686 113.528 C 275.686 113.825,277.572 115.636,277.760 115.520 C 277.868 115.453,278.135 115.702,278.353 116.072 C 278.572 116.442,278.827 116.698,278.921 116.640 C 279.015 116.582,279.258 116.817,279.462 117.162 C 279.665 117.507,280.105 117.951,280.439 118.148 C 281.049 118.508,282.687 120.109,282.687 120.345 C 282.687 120.579,283.386 121.281,283.503 121.164 C 283.567 121.101,283.720 121.271,283.844 121.542 C 283.968 121.814,284.213 122.082,284.388 122.138 C 284.564 122.193,284.820 122.449,284.957 122.706 C 285.095 122.962,285.369 123.224,285.567 123.287 C 285.765 123.349,286.020 123.606,286.135 123.857 C 286.249 124.109,286.414 124.314,286.502 124.314 C 286.589 124.314,286.660 124.442,286.660 124.598 C 286.660 124.754,286.740 124.882,286.837 124.882 C 286.934 124.882,287.066 125.048,287.130 125.250 C 287.195 125.453,287.395 125.666,287.575 125.723 C 287.755 125.781,288.042 126.062,288.213 126.348 C 288.945 127.577,289.576 128.101,289.881 127.732 C 290.035 127.546,290.416 127.253,290.728 127.080 C 291.041 126.907,291.807 126.381,292.431 125.911 C 293.056 125.441,293.716 125.007,293.898 124.947 C 294.080 124.887,294.229 124.767,294.229 124.681 C 294.229 124.595,294.437 124.413,294.691 124.277 C 295.220 123.994,297.304 122.597,297.446 122.430 C 297.498 122.369,297.753 122.176,298.013 122.002 C 298.273 121.828,298.912 121.380,299.432 121.007 C 299.953 120.634,300.712 120.108,301.120 119.839 C 301.529 119.569,302.034 119.189,302.244 118.993 C 302.454 118.798,302.730 118.638,302.858 118.638 C 302.986 118.638,303.119 118.570,303.154 118.487 C 303.188 118.404,303.898 117.873,304.730 117.306 C 305.563 116.740,306.287 116.225,306.339 116.161 C 306.391 116.097,306.807 115.798,307.263 115.497 C 308.823 114.465,309.129 114.251,310.763 113.052 C 311.192 112.738,312.053 112.146,312.677 111.736 C 313.302 111.326,313.898 110.924,314.002 110.843 C 314.520 110.440,315.959 109.416,316.457 109.096 C 316.766 108.897,317.187 108.578,317.391 108.388 C 317.596 108.197,317.848 108.042,317.952 108.042 C 318.055 108.042,318.334 107.859,318.571 107.637 C 318.808 107.414,319.161 107.138,319.356 107.022 C 319.885 106.708,321.547 105.551,323.463 104.163 C 324.399 103.484,325.302 102.866,325.469 102.789 C 325.636 102.712,326.019 102.458,326.321 102.224 C 326.622 101.991,327.252 101.502,327.720 101.138 C 328.188 100.774,328.644 100.476,328.733 100.475 C 328.822 100.474,329.163 100.259,329.490 99.997 C 329.817 99.735,330.177 99.448,330.289 99.358 C 330.401 99.268,330.860 98.950,331.308 98.651 C 331.756 98.352,332.440 97.895,332.829 97.635 C 333.217 97.375,333.902 96.917,334.350 96.619 C 334.798 96.320,335.256 95.996,335.368 95.900 C 335.608 95.694,337.379 94.421,338.282 93.806 C 338.627 93.570,339.150 93.186,339.444 92.952 C 339.738 92.718,340.066 92.526,340.172 92.526 C 340.279 92.526,340.394 92.456,340.429 92.371 C 340.488 92.225,340.999 91.856,343.992 89.798 C 344.669 89.333,345.310 88.877,345.416 88.785 C 345.523 88.692,345.864 88.454,346.173 88.255 C 346.483 88.057,347.086 87.638,347.515 87.324 C 349.323 86.002,351.509 84.476,352.195 84.057 C 352.492 83.876,353.295 83.314,353.981 82.808 C 354.667 82.303,355.425 81.799,355.665 81.690 C 356.209 81.442,356.225 80.909,355.707 80.361 C 355.489 80.131,354.905 79.342,354.408 78.606 C 351.941 74.954,351.625 74.551,351.234 74.551 C 350.972 74.551,350.426 74.114,350.426 73.903 C 350.426 73.567,348.578 71.305,348.232 71.218 C 348.005 71.161,347.506 70.660,347.123 70.104 C 346.740 69.549,346.319 69.053,346.186 69.002 C 346.053 68.951,345.633 68.440,345.253 67.866 C 344.872 67.293,344.262 66.640,343.898 66.415 C 343.534 66.189,343.236 65.944,343.236 65.869 C 343.236 65.795,342.767 65.243,342.195 64.642 C 341.623 64.042,341.154 63.478,341.154 63.389 C 341.154 63.301,340.835 63.035,340.445 62.798 C 340.054 62.561,339.661 62.246,339.571 62.098 C 339.481 61.950,339.077 61.488,338.672 61.071 C 338.268 60.655,337.938 60.245,337.938 60.160 C 337.938 60.076,337.773 59.954,337.573 59.891 C 337.372 59.827,337.035 59.481,336.822 59.121 C 336.610 58.762,336.306 58.467,336.146 58.467 C 335.987 58.467,335.856 58.382,335.856 58.278 C 335.856 58.174,335.772 58.089,335.669 58.089 C 335.566 58.089,335.162 57.736,334.771 57.304 C 333.770 56.200,332.960 55.440,332.783 55.440 C 332.588 55.440,330.937 53.717,330.937 53.514 C 330.937 53.428,330.824 53.359,330.687 53.359 C 330.550 53.359,330.151 53.103,329.801 52.791 C 329.452 52.479,329.114 52.223,329.051 52.223 C 328.988 52.223,328.786 51.968,328.602 51.656 C 328.417 51.343,328.149 51.088,328.006 51.088 C 327.863 51.088,327.691 50.918,327.625 50.710 C 327.510 50.348,327.323 50.254,326.836 50.314 C 326.713 50.329,326.559 50.169,326.492 49.958 C 326.425 49.747,326.254 49.574,326.112 49.574 C 325.970 49.574,325.676 49.325,325.458 49.019 C 325.241 48.714,324.873 48.437,324.641 48.404 C 324.409 48.371,324.135 48.153,324.033 47.919 C 323.930 47.684,323.743 47.493,323.616 47.493 C 323.490 47.493,323.319 47.380,323.236 47.242 C 323.152 47.103,322.807 46.830,322.469 46.633 C 322.131 46.437,321.854 46.209,321.854 46.128 C 321.854 46.046,321.764 45.979,321.654 45.979 C 321.544 45.979,321.037 45.543,320.526 45.010 C 319.887 44.344,319.501 44.078,319.289 44.160 C 319.083 44.239,318.950 44.158,318.886 43.916 C 318.834 43.717,318.629 43.512,318.431 43.460 C 318.232 43.408,318.070 43.239,318.070 43.084 C 318.070 42.779,317.569 42.510,317.304 42.673 C 317.214 42.729,316.817 42.432,316.422 42.012 C 316.028 41.593,315.573 41.249,315.411 41.249 C 315.250 41.249,314.654 40.842,314.087 40.345 C 313.520 39.847,312.822 39.338,312.535 39.213 C 312.249 39.089,312.015 38.899,312.015 38.793 C 312.015 38.687,311.890 38.600,311.738 38.600 C 311.586 38.600,311.366 38.423,311.250 38.207 C 311.135 37.990,310.932 37.855,310.799 37.906 C 310.667 37.957,310.232 37.708,309.834 37.353 C 309.435 36.998,308.961 36.708,308.781 36.708 C 308.601 36.708,308.243 36.457,307.985 36.151 C 307.727 35.844,307.476 35.633,307.427 35.682 C 307.379 35.731,307.231 35.641,307.099 35.482 C 306.968 35.324,306.714 35.194,306.536 35.194 C 306.358 35.194,305.964 34.941,305.661 34.632 C 305.357 34.322,304.965 34.067,304.789 34.064 C 304.614 34.061,304.200 33.812,303.870 33.510 C 303.540 33.209,303.030 32.914,302.737 32.856 C 302.443 32.797,301.882 32.427,301.488 32.034 C 301.079 31.625,300.628 31.343,300.434 31.376 C 300.247 31.408,300.095 31.343,300.095 31.232 C 300.095 31.122,299.971 31.031,299.820 31.031 C 299.669 31.031,299.463 30.883,299.361 30.702 C 299.260 30.520,299.116 30.433,299.042 30.507 C 298.890 30.659,297.824 30.087,297.824 29.855 C 297.824 29.774,297.695 29.707,297.538 29.707 C 297.142 29.707,296.529 29.332,295.890 28.700 C 295.593 28.406,295.247 28.204,295.121 28.250 C 294.995 28.296,294.636 28.145,294.324 27.915 C 294.011 27.685,293.511 27.436,293.213 27.362 C 292.914 27.289,292.546 27.105,292.395 26.954 C 292.244 26.803,291.961 26.679,291.767 26.679 C 291.572 26.679,291.360 26.593,291.295 26.488 C 291.230 26.383,290.629 26.040,289.959 25.727 C 289.290 25.414,288.742 25.075,288.742 24.973 C 288.742 24.871,288.593 24.785,288.411 24.783 C 288.228 24.781,287.867 24.612,287.606 24.409 C 287.346 24.205,286.989 24.037,286.813 24.034 C 286.637 24.032,286.440 23.944,286.375 23.838 C 286.309 23.732,286.189 23.687,286.108 23.737 C 286.027 23.787,285.775 23.655,285.547 23.443 C 285.320 23.231,285.030 23.092,284.903 23.136 C 284.777 23.179,284.546 23.071,284.390 22.896 C 284.148 22.624,283.364 22.302,282.814 22.248 C 282.727 22.240,282.540 22.073,282.397 21.878 C 282.246 21.672,282.014 21.570,281.844 21.635 C 281.683 21.697,281.552 21.665,281.552 21.565 C 281.552 21.464,281.432 21.381,281.287 21.381 C 281.141 21.381,280.537 21.126,279.943 20.814 C 279.350 20.501,278.738 20.246,278.583 20.246 C 278.429 20.246,277.698 19.948,276.958 19.584 C 276.219 19.219,275.457 18.921,275.266 18.921 C 275.074 18.921,274.868 18.794,274.808 18.638 C 274.748 18.482,274.494 18.354,274.244 18.354 C 273.994 18.354,273.641 18.279,273.460 18.187 C 273.279 18.095,272.876 17.913,272.564 17.783 C 272.252 17.653,271.826 17.473,271.618 17.383 C 271.410 17.293,271.068 17.196,270.859 17.167 C 270.650 17.138,270.269 16.968,270.013 16.788 C 269.757 16.609,269.370 16.462,269.154 16.462 C 268.938 16.462,268.680 16.394,268.581 16.312 C 268.482 16.230,267.763 15.953,266.982 15.697 C 266.202 15.441,265.535 15.168,265.500 15.090 C 265.465 15.012,265.230 14.948,264.977 14.948 C 264.724 14.948,264.369 14.873,264.189 14.781 C 263.474 14.417,262.885 14.167,262.622 14.114 C 262.470 14.084,262.219 14.011,262.062 13.952 C 261.906 13.893,261.523 13.780,261.211 13.702 C 260.899 13.624,260.601 13.546,260.549 13.529 C 260.497 13.512,260.199 13.434,259.886 13.357 C 259.310 13.213,258.639 12.958,258.044 12.655 C 257.863 12.563,257.549 12.488,257.346 12.488 C 257.142 12.488,256.929 12.413,256.873 12.321 C 256.816 12.229,256.214 12.049,255.535 11.921 C 254.856 11.792,254.253 11.611,254.195 11.517 C 254.137 11.423,254.013 11.394,253.919 11.452 C 253.825 11.510,253.494 11.426,253.184 11.266 C 252.874 11.106,252.408 10.974,252.149 10.974 C 251.890 10.974,251.632 10.901,251.577 10.811 C 251.490 10.670,251.059 10.569,249.571 10.339 C 249.413 10.314,249.194 10.239,249.085 10.171 C 248.975 10.104,248.679 10.009,248.426 9.962 C 247.537 9.795,246.829 9.596,246.641 9.460 C 246.537 9.385,246.325 9.320,246.168 9.316 C 246.012 9.312,245.246 9.168,244.465 8.996 C 243.685 8.824,242.833 8.654,242.573 8.617 C 242.313 8.581,241.845 8.451,241.533 8.330 C 241.220 8.209,240.922 8.121,240.870 8.134 C 240.596 8.206,238.851 7.878,238.653 7.718 C 238.526 7.615,237.917 7.515,237.300 7.494 C 236.683 7.474,236.043 7.345,235.878 7.208 C 235.712 7.071,235.441 7.011,235.274 7.075 C 235.107 7.139,234.872 7.128,234.751 7.051 C 234.630 6.974,234.149 6.900,233.680 6.887 C 233.212 6.874,232.573 6.753,232.261 6.618 C 231.949 6.483,231.626 6.387,231.543 6.406 C 231.460 6.424,230.524 6.303,229.462 6.136 C 228.400 5.969,227.190 5.798,226.774 5.755 C 226.358 5.713,225.634 5.632,225.166 5.576 C 224.697 5.520,223.974 5.439,223.557 5.396 C 223.141 5.354,222.800 5.309,222.800 5.296 C 222.800 5.284,222.460 5.239,222.044 5.196 C 220.557 5.042,219.570 4.935,218.638 4.825 C 217.114 4.646,215.912 4.545,214.096 4.444 C 211.620 4.306,210.155 4.179,209.893 4.078 C 209.766 4.030,209.610 4.075,209.545 4.179 C 209.481 4.282,209.244 4.308,209.019 4.235 C 208.606 4.101,206.004 4.009,202.176 3.994 C 201.031 3.989,199.924 3.983,199.716 3.979 C 198.221 3.955,194.042 3.995,193.188 4.042 C 192.616 4.074,191.977 4.044,191.769 3.977 C 191.561 3.910,191.093 3.962,190.728 4.092 ",stroke:"none",fill:"#b5cb2b","fill-rule":"evenodd"}),React.createElement("path",{id:"path8",d:"",stroke:"none",fill:"#55ff00","fill-rule":"evenodd"}),React.createElement("path",{id:"path9",d:"M364.522 96.081 C 363.619 96.742,362.897 97.244,359.648 99.478 C 358.854 100.024,357.583 100.938,356.822 101.509 C 356.062 102.080,355.333 102.549,355.203 102.551 C 355.073 102.553,354.967 102.627,354.967 102.715 C 354.967 102.851,354.376 103.279,352.707 104.352 C 352.545 104.456,351.944 104.889,351.372 105.314 C 350.799 105.740,350.024 106.293,349.648 106.544 C 347.578 107.929,346.136 108.917,345.885 109.122 C 345.631 109.330,344.163 110.365,341.471 112.233 C 340.970 112.582,340.270 113.079,339.916 113.340 C 339.562 113.600,338.581 114.281,337.736 114.853 C 336.890 115.426,335.705 116.256,335.103 116.698 C 334.500 117.140,333.921 117.502,333.816 117.502 C 333.712 117.502,333.577 117.631,333.516 117.789 C 333.456 117.947,333.212 118.162,332.976 118.267 C 332.595 118.436,331.562 119.112,331.031 119.541 C 330.927 119.624,330.118 120.192,329.234 120.801 C 328.349 121.410,327.597 121.981,327.562 122.071 C 327.528 122.160,327.408 122.233,327.296 122.233 C 327.185 122.233,326.787 122.467,326.413 122.752 C 326.039 123.038,325.180 123.649,324.503 124.109 C 323.827 124.570,323.231 124.997,323.179 125.058 C 323.127 125.119,322.709 125.424,322.250 125.735 C 321.792 126.046,321.229 126.429,320.999 126.585 C 320.769 126.741,320.047 127.252,319.395 127.720 C 318.742 128.188,318.015 128.699,317.780 128.855 C 316.016 130.025,314.359 131.179,313.150 132.081 C 312.370 132.663,311.582 133.194,311.400 133.262 C 311.218 133.329,311.069 133.472,311.069 133.580 C 311.069 133.687,310.971 133.775,310.851 133.775 C 310.731 133.775,310.284 134.034,309.858 134.351 C 308.177 135.600,305.993 137.141,304.778 137.938 C 304.075 138.398,303.500 138.831,303.500 138.901 C 303.500 138.970,303.253 139.129,302.952 139.254 C 302.650 139.379,302.209 139.688,301.972 139.940 C 301.736 140.191,301.463 140.397,301.366 140.397 C 301.269 140.397,300.879 140.639,300.500 140.934 C 300.121 141.228,299.662 141.524,299.480 141.590 C 299.001 141.764,299.066 142.077,299.811 143.183 C 300.175 143.724,300.473 144.297,300.473 144.456 C 300.473 144.615,300.856 145.249,301.325 145.865 C 301.793 146.480,302.176 147.071,302.176 147.178 C 302.176 147.284,302.473 147.940,302.836 148.637 C 303.199 149.333,303.455 149.967,303.406 150.046 C 303.358 150.125,303.615 150.580,303.979 151.057 C 304.343 151.534,304.627 151.991,304.609 152.073 C 304.592 152.156,304.718 152.540,304.890 152.927 C 305.063 153.314,305.203 153.766,305.203 153.933 C 305.203 154.099,305.416 154.514,305.676 154.855 C 305.937 155.197,306.149 155.646,306.149 155.854 C 306.149 156.062,306.308 156.376,306.501 156.551 C 306.726 156.754,306.820 157.034,306.764 157.328 C 306.709 157.616,306.825 157.978,307.075 158.295 C 307.294 158.574,307.474 158.951,307.474 159.132 C 307.474 159.313,307.592 159.560,307.737 159.680 C 307.882 159.800,308.057 160.277,308.127 160.740 C 308.196 161.202,308.339 161.634,308.444 161.699 C 308.549 161.764,308.592 161.928,308.540 162.064 C 308.488 162.200,308.604 162.454,308.798 162.630 C 308.993 162.806,309.105 163.070,309.048 163.218 C 308.992 163.366,309.060 163.625,309.201 163.794 C 309.341 163.963,309.431 164.295,309.400 164.530 C 309.369 164.766,309.434 165.015,309.544 165.083 C 309.654 165.151,309.745 165.404,309.745 165.646 C 309.745 165.887,309.860 166.180,310.002 166.298 C 310.147 166.418,310.220 166.715,310.170 166.976 C 310.117 167.253,310.205 167.564,310.386 167.745 C 310.554 167.913,310.691 168.251,310.691 168.498 C 310.691 168.745,310.776 168.999,310.880 169.063 C 310.984 169.128,311.069 169.388,311.069 169.641 C 311.069 169.895,311.232 170.592,311.432 171.191 C 311.631 171.790,311.849 172.682,311.916 173.174 C 311.982 173.666,312.109 174.113,312.198 174.168 C 312.286 174.223,312.313 174.438,312.259 174.646 C 312.204 174.855,312.254 175.139,312.370 175.279 C 312.485 175.418,312.526 175.585,312.460 175.651 C 312.394 175.717,312.456 175.912,312.599 176.084 C 312.742 176.256,312.881 176.748,312.909 177.177 C 312.958 177.938,313.431 180.323,313.646 180.889 C 313.705 181.045,313.785 181.514,313.822 181.930 C 313.981 183.680,314.099 184.354,314.286 184.579 C 314.413 184.733,314.421 184.979,314.309 185.275 C 314.203 185.553,314.203 185.856,314.307 186.044 C 314.403 186.214,314.514 186.720,314.554 187.169 C 314.594 187.618,314.680 188.453,314.744 189.026 C 315.128 192.434,315.238 194.787,315.312 201.135 C 315.348 204.241,315.301 206.811,315.207 206.929 C 315.114 207.045,315.068 207.746,315.106 208.487 C 315.143 209.228,315.123 209.885,315.061 209.947 C 314.999 210.009,314.935 210.627,314.919 211.321 C 314.894 212.420,314.508 215.779,314.177 217.786 C 314.117 218.150,314.070 218.615,314.073 218.818 C 314.076 219.021,313.991 219.294,313.883 219.424 C 313.775 219.554,313.743 219.839,313.813 220.057 C 313.882 220.275,313.846 220.565,313.734 220.700 C 313.621 220.836,313.534 221.151,313.540 221.401 C 313.558 222.105,312.777 225.972,312.566 226.227 C 312.462 226.352,312.433 226.675,312.501 226.945 C 312.574 227.240,312.544 227.436,312.426 227.436 C 312.317 227.436,312.170 227.841,312.100 228.335 C 311.917 229.615,311.490 231.225,311.260 231.503 C 311.151 231.633,311.112 231.869,311.172 232.026 C 311.233 232.183,311.029 232.869,310.720 233.550 C 310.412 234.231,310.201 234.831,310.253 234.882 C 310.359 234.989,309.875 236.529,308.877 239.262 C 308.801 239.470,308.752 239.704,308.768 239.782 C 308.785 239.860,308.719 239.924,308.621 239.924 C 308.523 239.924,308.442 240.073,308.439 240.255 C 308.431 240.809,307.965 242.384,307.809 242.384 C 307.729 242.384,307.663 242.549,307.663 242.751 C 307.663 242.953,307.578 243.171,307.474 243.236 C 307.370 243.300,307.285 243.551,307.285 243.794 C 307.285 244.037,307.147 244.288,306.979 244.353 C 306.794 244.424,306.710 244.609,306.767 244.825 C 306.820 245.029,306.672 245.410,306.417 245.721 C 306.173 246.019,305.971 246.415,305.967 246.601 C 305.963 246.787,305.828 247.140,305.667 247.385 C 305.506 247.631,305.331 248.075,305.278 248.372 C 305.224 248.669,305.101 248.993,305.003 249.092 C 304.905 249.191,304.825 249.418,304.825 249.596 C 304.825 249.775,304.758 249.950,304.677 249.984 C 304.596 250.019,304.257 250.622,303.924 251.325 C 303.592 252.027,303.232 252.602,303.126 252.602 C 303.020 252.602,302.930 252.793,302.927 253.027 C 302.924 253.262,302.796 253.618,302.643 253.820 C 302.490 254.022,302.365 254.364,302.365 254.579 C 302.365 254.795,302.069 255.311,301.707 255.726 C 301.344 256.141,301.046 256.600,301.044 256.747 C 301.042 256.893,300.828 257.292,300.568 257.633 C 300.307 257.974,300.095 258.386,300.095 258.548 C 300.095 258.710,299.906 259.059,299.676 259.324 C 299.446 259.589,299.169 260.077,299.061 260.409 C 298.953 260.740,298.668 261.110,298.427 261.229 C 298.186 261.349,297.995 261.500,298.001 261.565 C 298.060 262.145,297.957 262.497,297.635 262.819 C 297.427 263.027,297.256 263.277,297.256 263.374 C 297.256 263.471,297.078 263.607,296.861 263.676 C 296.594 263.761,296.495 263.915,296.556 264.148 C 296.612 264.366,296.408 264.755,296.005 265.195 C 295.653 265.579,295.364 266.007,295.364 266.145 C 295.364 266.474,294.426 267.471,294.183 267.400 C 294.079 267.370,294.040 267.466,294.097 267.615 C 294.241 267.992,293.752 268.691,292.337 270.133 C 292.077 270.398,291.862 270.718,291.861 270.843 C 291.859 270.968,291.518 271.416,291.104 271.839 C 290.689 272.261,290.326 272.742,290.297 272.907 C 290.267 273.073,289.926 273.542,289.540 273.950 C 288.536 275.010,287.803 275.939,287.799 276.159 C 287.796 276.263,287.540 276.518,287.228 276.727 C 286.916 276.935,286.661 277.198,286.661 277.312 C 286.661 277.425,286.362 277.679,285.998 277.875 C 285.594 278.093,285.336 278.374,285.336 278.596 C 285.336 278.965,283.437 280.984,283.090 280.984 C 282.987 280.984,282.843 281.167,282.773 281.390 C 282.593 281.958,280.226 284.201,279.808 284.201 C 279.726 284.201,279.659 284.330,279.659 284.489 C 279.659 284.648,279.447 284.859,279.186 284.957 C 278.910 285.062,278.713 285.287,278.713 285.497 C 278.713 285.719,278.495 285.948,278.146 286.093 C 277.833 286.222,277.578 286.446,277.578 286.591 C 277.578 286.736,277.131 287.143,276.585 287.497 C 276.038 287.850,275.367 288.381,275.093 288.677 C 274.558 289.254,274.365 289.412,273.557 289.930 C 272.807 290.412,272.879 290.641,274.487 292.876 C 275.285 293.984,276.285 295.402,276.710 296.026 C 277.135 296.651,277.532 297.204,277.592 297.256 C 277.651 297.308,277.757 297.479,277.825 297.635 C 277.894 297.791,278.418 298.557,278.989 299.338 C 279.561 300.118,280.409 301.310,280.875 301.987 C 281.340 302.663,282.300 304.043,283.008 305.054 C 283.716 306.065,284.551 307.256,284.863 307.702 C 285.175 308.148,286.147 309.535,287.022 310.784 C 288.475 312.858,289.115 313.775,290.954 316.414 C 291.298 316.909,291.895 317.760,292.279 318.307 C 292.664 318.853,294.253 321.131,295.810 323.368 C 297.367 325.605,298.805 327.649,299.004 327.909 C 299.363 328.377,302.341 332.638,303.542 334.403 C 303.883 334.905,304.253 335.415,304.364 335.538 C 304.474 335.661,305.113 336.564,305.783 337.545 C 306.977 339.294,307.255 339.694,309.416 342.763 C 310.003 343.595,310.973 345.000,311.573 345.885 C 312.173 346.769,312.714 347.535,312.775 347.588 C 312.836 347.640,313.265 348.236,313.728 348.912 C 314.191 349.588,314.616 350.184,314.672 350.237 C 314.729 350.289,315.155 350.893,315.618 351.580 C 318.330 355.596,319.517 357.226,319.734 357.232 C 319.869 357.235,320.961 356.535,322.162 355.676 C 323.363 354.818,324.573 353.969,324.850 353.790 C 325.894 353.117,326.206 352.823,326.206 352.517 C 326.206 352.225,327.371 351.257,328.471 350.635 C 329.111 350.273,329.423 349.937,329.423 349.610 C 329.423 349.458,329.820 349.048,330.304 348.698 C 330.789 348.347,331.449 347.799,331.771 347.479 C 332.092 347.159,332.654 346.694,333.018 346.445 C 333.921 345.827,334.153 345.582,334.153 345.249 C 334.153 345.092,334.430 344.773,334.768 344.539 C 335.106 344.306,335.649 343.853,335.973 343.533 C 336.298 343.213,336.809 342.735,337.109 342.470 C 337.408 342.205,337.872 341.737,338.138 341.430 C 338.404 341.122,339.149 340.384,339.793 339.790 C 340.438 339.196,340.965 338.621,340.965 338.513 C 340.965 338.405,341.071 338.313,341.202 338.310 C 341.585 338.300,342.523 337.379,342.421 337.113 C 342.367 336.972,342.600 336.721,342.970 336.522 C 343.324 336.331,343.614 336.062,343.614 335.924 C 343.614 335.785,343.950 335.450,344.360 335.179 C 344.772 334.906,345.132 334.502,345.164 334.277 C 345.196 334.053,345.413 333.786,345.646 333.683 C 345.879 333.581,346.050 333.373,346.025 333.221 C 346.000 333.069,346.173 332.845,346.410 332.725 C 346.647 332.604,347.158 332.085,347.545 331.571 C 348.386 330.457,349.674 329.157,350.232 328.858 C 350.489 328.720,350.614 328.496,350.578 328.236 C 350.539 327.966,350.667 327.757,350.958 327.610 C 351.199 327.489,351.390 327.336,351.384 327.271 C 351.350 326.931,351.406 326.848,351.791 326.677 C 352.022 326.574,352.256 326.300,352.312 326.069 C 352.367 325.837,352.843 325.198,353.370 324.648 C 353.896 324.099,354.449 323.372,354.599 323.034 C 354.749 322.695,355.021 322.370,355.203 322.312 C 355.385 322.255,355.535 322.127,355.535 322.030 C 355.535 321.932,355.747 321.667,356.008 321.441 C 356.268 321.214,356.481 320.872,356.481 320.679 C 356.481 320.486,356.608 320.280,356.764 320.220 C 356.921 320.160,357.048 320.011,357.048 319.888 C 357.048 319.766,357.307 319.512,357.624 319.325 C 358.051 319.073,358.170 318.892,358.084 318.621 C 358.009 318.386,358.073 318.217,358.265 318.143 C 358.428 318.081,358.562 317.917,358.562 317.779 C 358.562 317.641,358.720 317.478,358.914 317.416 C 359.107 317.355,359.423 316.956,359.615 316.529 C 359.807 316.103,360.330 315.378,360.777 314.918 C 361.224 314.458,361.589 313.922,361.589 313.727 C 361.589 313.532,361.845 313.131,362.157 312.836 C 362.469 312.541,362.725 312.190,362.725 312.055 C 362.725 311.813,362.908 311.546,363.503 310.918 C 363.672 310.741,363.959 310.274,364.143 309.880 C 364.326 309.487,364.721 308.903,365.020 308.583 C 365.319 308.263,365.563 307.924,365.563 307.830 C 365.563 307.543,366.016 306.832,366.367 306.567 C 366.549 306.430,366.698 306.159,366.698 305.966 C 366.698 305.772,366.954 305.373,367.266 305.078 C 367.578 304.783,367.833 304.398,367.833 304.222 C 367.833 304.045,367.920 303.848,368.026 303.782 C 368.132 303.717,368.169 303.584,368.108 303.486 C 368.048 303.388,368.132 303.258,368.295 303.195 C 368.457 303.133,368.590 302.972,368.590 302.838 C 368.590 302.704,368.718 302.546,368.874 302.486 C 369.030 302.426,369.158 302.213,369.158 302.013 C 369.158 301.812,369.413 301.375,369.726 301.041 C 370.038 300.706,370.293 300.272,370.293 300.075 C 370.293 299.877,370.442 299.565,370.624 299.379 C 370.807 299.194,371.104 298.747,371.285 298.386 C 371.758 297.447,372.058 296.994,372.319 296.826 C 372.445 296.745,372.498 296.547,372.436 296.386 C 372.374 296.225,372.485 295.866,372.683 295.587 C 372.881 295.308,373.169 294.825,373.323 294.513 C 373.478 294.201,373.710 293.877,373.841 293.794 C 373.971 293.711,374.078 293.537,374.078 293.408 C 374.078 293.138,374.697 291.879,375.024 291.485 C 375.146 291.338,375.191 291.129,375.123 291.021 C 375.056 290.912,375.091 290.823,375.202 290.823 C 375.312 290.823,375.402 290.716,375.402 290.585 C 375.402 290.454,375.577 290.237,375.791 290.104 C 376.054 289.939,376.142 289.744,376.064 289.498 C 375.989 289.261,376.084 289.019,376.338 288.801 C 376.552 288.618,376.727 288.251,376.727 287.985 C 376.727 287.712,376.974 287.231,377.294 286.880 C 377.606 286.538,377.862 286.092,377.862 285.889 C 377.862 285.686,377.943 285.372,378.041 285.191 C 378.477 284.394,379.453 282.202,379.422 282.090 C 379.403 282.022,379.513 281.863,379.665 281.736 C 379.818 281.609,379.943 281.345,379.943 281.149 C 379.943 280.954,380.114 280.476,380.322 280.087 C 380.530 279.699,380.700 279.274,380.700 279.142 C 380.700 279.010,380.785 278.903,380.889 278.903 C 380.993 278.903,381.079 278.724,381.079 278.506 C 381.079 278.047,381.647 277.010,381.898 277.010 C 381.992 277.010,382.028 276.853,381.977 276.660 C 381.927 276.468,382.036 276.111,382.219 275.868 C 382.403 275.624,382.512 275.318,382.462 275.187 C 382.411 275.056,382.499 274.710,382.657 274.419 C 383.245 273.334,383.996 271.427,384.282 270.293 C 384.361 269.981,384.652 269.249,384.928 268.667 C 385.204 268.084,385.430 267.429,385.430 267.211 C 385.430 266.993,385.516 266.763,385.620 266.698 C 385.724 266.634,385.809 266.415,385.809 266.211 C 385.809 266.008,385.886 265.694,385.980 265.513 C 386.074 265.332,386.258 264.823,386.388 264.380 C 386.519 263.938,386.707 263.576,386.805 263.576 C 386.904 263.576,386.940 263.459,386.885 263.316 C 386.830 263.173,386.906 262.822,387.054 262.537 C 387.202 262.252,387.323 261.826,387.323 261.591 C 387.323 261.355,387.454 261.054,387.614 260.920 C 387.801 260.766,387.841 260.613,387.725 260.497 C 387.609 260.381,387.674 260.082,387.906 259.669 C 388.105 259.314,388.269 258.813,388.269 258.556 C 388.269 258.299,388.343 258.089,388.434 258.089 C 388.591 258.089,388.868 256.944,388.922 256.065 C 388.937 255.837,389.103 255.478,389.293 255.269 C 389.530 255.007,389.600 254.737,389.517 254.407 C 389.451 254.143,389.466 253.926,389.550 253.926 C 389.723 253.926,390.211 252.364,390.249 251.690 C 390.262 251.449,390.385 251.183,390.521 251.099 C 390.677 251.003,390.720 250.793,390.638 250.535 C 390.567 250.309,390.592 250.021,390.695 249.896 C 390.798 249.771,390.944 249.243,391.020 248.723 C 391.096 248.202,391.244 247.564,391.349 247.304 C 391.548 246.809,391.566 246.732,391.769 245.506 C 391.838 245.090,391.964 244.579,392.049 244.371 C 392.134 244.163,392.388 243.013,392.613 241.816 C 392.838 240.620,393.106 239.486,393.209 239.298 C 393.311 239.109,393.345 238.797,393.284 238.604 C 393.223 238.411,393.246 238.208,393.336 238.153 C 393.425 238.097,393.513 237.532,393.530 236.896 C 393.551 236.140,393.664 235.638,393.855 235.446 C 394.088 235.213,394.101 235.098,393.917 234.876 C 393.761 234.688,393.750 234.556,393.882 234.470 C 393.990 234.400,394.127 233.798,394.186 233.133 C 394.244 232.468,394.397 231.860,394.524 231.781 C 394.653 231.701,394.709 231.457,394.650 231.232 C 394.592 231.008,394.625 230.553,394.725 230.219 C 394.824 229.885,394.939 229.101,394.979 228.477 C 395.020 227.852,395.111 227.193,395.182 227.010 C 395.252 226.828,395.259 226.545,395.196 226.382 C 395.133 226.218,395.158 225.941,395.252 225.767 C 395.402 225.486,395.487 224.840,395.766 221.854 C 395.805 221.438,395.878 220.501,395.928 219.773 C 395.978 219.044,396.094 217.938,396.186 217.313 C 396.277 216.689,396.334 215.752,396.313 215.232 C 396.291 214.711,396.347 213.859,396.435 213.337 C 396.524 212.815,396.599 211.794,396.602 211.067 C 396.610 208.737,396.636 208.326,396.777 208.325 C 396.871 208.325,396.878 201.377,396.790 196.121 C 396.769 194.872,396.807 193.710,396.875 193.539 C 396.943 193.367,396.907 193.170,396.796 193.101 C 396.674 193.026,396.640 192.687,396.709 192.255 C 396.778 191.822,396.743 191.483,396.622 191.408 C 396.490 191.326,396.479 191.127,396.589 190.836 C 396.683 190.590,396.721 190.350,396.674 190.303 C 396.576 190.205,396.385 187.540,396.367 185.998 C 396.360 185.426,396.305 184.872,396.244 184.768 C 396.184 184.664,396.160 184.342,396.190 184.051 C 396.239 183.590,396.147 182.655,395.738 179.470 C 395.685 179.054,395.606 178.353,395.564 177.914 C 395.521 177.474,395.422 177.009,395.343 176.882 C 395.264 176.754,395.177 176.305,395.149 175.884 C 395.016 173.868,394.930 173.107,394.822 173.000 C 394.758 172.935,394.796 172.774,394.906 172.641 C 395.045 172.474,395.046 172.286,394.912 172.035 C 394.805 171.835,394.674 171.230,394.621 170.691 C 394.569 170.151,394.471 169.622,394.404 169.514 C 394.337 169.406,394.242 168.921,394.191 168.436 C 394.140 167.950,394.023 167.411,393.929 167.236 C 393.836 167.061,393.810 166.666,393.871 166.358 C 393.934 166.044,393.895 165.744,393.783 165.674 C 393.673 165.606,393.628 165.434,393.682 165.292 C 393.737 165.150,393.682 164.972,393.559 164.896 C 393.392 164.793,393.397 164.722,393.579 164.609 C 393.770 164.491,393.756 164.362,393.512 163.989 C 393.342 163.730,393.123 162.868,393.024 162.074 C 392.925 161.279,392.742 160.505,392.616 160.354 C 392.490 160.202,392.434 159.897,392.492 159.676 C 392.549 159.456,392.517 159.115,392.419 158.919 C 392.322 158.722,392.163 158.403,392.067 158.208 C 391.958 157.989,391.959 157.786,392.068 157.677 C 392.178 157.566,392.072 157.073,391.788 156.374 C 391.521 155.716,391.370 155.042,391.426 154.752 C 391.478 154.478,391.428 154.197,391.314 154.126 C 391.200 154.056,391.107 153.791,391.107 153.537 C 391.107 153.283,391.020 153.075,390.914 153.075 C 390.804 153.075,390.771 152.876,390.837 152.612 C 390.901 152.358,390.884 152.039,390.799 151.903 C 390.613 151.605,390.572 151.468,390.416 150.615 C 390.349 150.251,390.179 149.776,390.038 149.559 C 389.897 149.343,389.830 149.117,389.890 149.057 C 389.949 148.997,389.833 148.608,389.632 148.191 C 389.422 147.756,389.330 147.330,389.415 147.191 C 389.500 147.054,389.448 146.782,389.295 146.564 C 389.147 146.352,389.026 146.038,389.026 145.866 C 389.026 145.693,388.902 145.450,388.750 145.324 C 388.528 145.140,388.519 145.021,388.703 144.708 C 388.882 144.404,388.881 144.303,388.694 144.236 C 388.564 144.189,388.458 143.949,388.458 143.704 C 388.458 143.459,388.372 143.205,388.268 143.141 C 388.164 143.076,388.126 142.830,388.186 142.595 C 388.252 142.328,388.181 142.074,387.997 141.921 C 387.834 141.786,387.701 141.547,387.701 141.390 C 387.701 141.233,387.538 140.839,387.338 140.514 C 387.138 140.190,386.919 139.541,386.851 139.073 C 386.784 138.605,386.603 138.027,386.450 137.790 C 386.297 137.553,386.216 137.288,386.270 137.201 C 386.324 137.113,386.201 136.892,385.998 136.708 C 385.744 136.478,385.680 136.282,385.793 136.081 C 385.904 135.881,385.779 135.459,385.399 134.757 C 385.092 134.190,384.879 133.626,384.926 133.504 C 384.973 133.382,384.880 132.988,384.718 132.630 C 384.557 132.271,384.440 131.908,384.459 131.823 C 384.477 131.738,384.320 131.450,384.110 131.183 C 383.900 130.915,383.728 130.577,383.728 130.431 C 383.728 130.286,383.590 129.957,383.423 129.702 C 383.255 129.446,383.170 129.103,383.232 128.939 C 383.296 128.774,383.138 128.335,382.875 127.948 C 382.615 127.566,382.403 127.140,382.403 127.000 C 382.403 126.861,382.270 126.614,382.108 126.452 C 381.946 126.290,381.861 126.033,381.920 125.880 C 381.979 125.728,381.824 125.207,381.577 124.722 C 380.852 123.303,380.533 122.554,380.394 121.949 C 380.322 121.637,380.107 121.178,379.914 120.930 C 379.722 120.682,379.565 120.374,379.565 120.247 C 379.565 120.119,379.352 119.701,379.092 119.318 C 378.832 118.935,378.619 118.538,378.619 118.436 C 378.619 118.335,378.419 117.934,378.175 117.546 C 377.932 117.158,377.770 116.728,377.817 116.590 C 377.864 116.453,377.638 115.915,377.314 115.395 C 376.991 114.875,376.727 114.349,376.727 114.225 C 376.727 114.102,376.429 113.582,376.064 113.069 C 375.678 112.526,375.402 111.912,375.402 111.595 C 375.402 111.297,375.318 110.950,375.216 110.825 C 374.244 109.633,374.008 109.282,373.987 108.999 C 373.974 108.818,373.611 108.155,373.181 107.525 C 372.718 106.846,372.435 106.236,372.486 106.028 C 372.540 105.806,372.151 105.091,371.429 104.088 C 370.665 103.028,370.321 102.386,370.393 102.159 C 370.463 101.939,370.213 101.415,369.688 100.680 C 369.240 100.055,368.491 98.980,368.023 98.292 C 365.775 94.991,365.903 95.072,364.522 96.081 ",stroke:"none",fill:"#d1dc31","fill-rule":"evenodd"}),React.createElement("path",{id:"path10",d:"",stroke:"none",fill:"#99ff33","fill-rule":"evenodd"}),React.createElement("path",{id:"path11",d:"M85.380 215.516 C 85.380 215.880,85.419 216.029,85.466 215.847 C 85.514 215.665,85.514 215.367,85.466 215.184 C 85.419 215.002,85.380 215.151,85.380 215.516 ",stroke:"none",fill:"#ffff00","fill-rule":"evenodd"})));var f=u,d=wp.i18n.__,s=wp.element.RawHTML,p=wp.blocks.registerBlockType,h=wp.data.withSelect,y=lodash.omit,g=React.memo,b=h(function(C,e){return{Freeform:C("core/blocks").getBlockType("core/freeform")}})(g(function(C){C.isSelected=!0;var e=y(C,["Freeform"]),t=c(jQuery,C.Freeform.edit);return React.createElement(t,e)}));p("imagely/nextgen-gallery",{title:d("NextGEN Gallery"),desription:d("A block for adding NextGEN Galleries."),icon:f.nextgen,category:"common",attributes:{content:{type:"string",source:"html"}},supports:{className:!1,customClassName:!1},edit:b,save:function(C){var e=C.attributes.content;return React.createElement(s,null,e)}})}]); +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function a(e,t,n){return(a="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var r=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=l(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(n):o.value}})(e,t,n||e)}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function i(e,t){return(i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function c(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}n.r(t);wp.i18n.__;var f=(0,lodash.memoize)(function(e,t){return function(n){function f(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,f),(t=function(e,t){return!t||"object"!==r(t)&&"function"!=typeof t?c(e):t}(this,l(f).call(this,e))).openIGW=t.openIGW.bind(c(c(t))),t.updateContent=t.updateContent.bind(c(c(t))),t.hasGallery=t.hasGallery.bind(c(c(t))),t.toggleAddGalleryBtn=t.toggleAddGalleryBtn.bind(c(c(t))),t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&i(e,t)}(f,t),function(e,t,n){t&&o(e.prototype,t),n&&o(e,n)}(f,[{key:"hasGallery",value:function(){return this.props.attributes.content&&this.props.attributes.content.length>0}},{key:"componentDidMount",value:function(){a(l(f.prototype),"componentDidMount",this).call(this),e(this.ref).addClass("freeform-toolbar").addClass("ngg-freeform-toolbar"),this.toggleAddGalleryBtn()}},{key:"componentDidUpdate",value:function(){this.toggleAddGalleryBtn()}},{key:"toggleAddGalleryBtn",value:function(){this.props.attributes.content?(e(this.ref).addClass("hidden"),e(this.ref).siblings(".add-ngg-gallery-wrap").hide()):(e(this.ref).removeClass("hidden"),e(this.ref).siblings(".add-ngg-gallery-wrap").show())}},{key:"updateContent",value:function(e){this.props.setAttributes({content:e})}},{key:"onSetup",value:function(e){a(l(f.prototype),"onSetup",this).call(this,e);var t=this.updateContent.bind(this);e.on("ngg-removed",function(){return t("")}),e.on("ngg-inserted",function(e){var n=e.shortcode;return t(n)})}},{key:"openIGW",value:function(){this.editor.execCommand("ngg_attach_to_post")}},{key:"render",value:function(){return[a(l(f.prototype),"render",this).call(this),React.createElement("div",{className:"add-ngg-gallery-wrap"},React.createElement("div",{className:"add-ngg-gallery",onClick:this.openIGW},ngg_tinymce_plugin.i18n.button_label))]}}]),f}()}),u={};u.nextgen=React.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",version:"1.1",viewBox:"0 0 240 240",width:"240.0pt",height:"240.0pt"},React.createElement("path",{d:"M 0.00 0.00 L 240.00 0.00 L 240.00 240.00 L 0.00 240.00 L 0.00 0.00 Z",fill:"#ffffff"}),React.createElement("path",{d:"M 116.97 3.45 C 155.78 2.17 194.29 21.78 215.90 54.07 C 226.92 70.43 234.08 89.34 236.07 109.00 C 239.08 140.20 228.61 172.42 208.14 196.12 C 191.73 215.41 168.66 228.79 143.97 234.16 C 125.25 238.08 105.37 237.44 87.04 231.86 C 67.00 226.07 48.82 214.65 34.69 199.32 C 14.08 177.26 2.88 147.13 3.50 117.00 C 4.36 95.58 10.72 74.49 22.55 56.55 C 35.03 37.69 52.63 22.36 73.52 13.50 C 87.07 6.87 101.94 3.80 116.97 3.45 Z",fill:"#9fbb1a"}),React.createElement("path",{d:"M 69.17 61.47 C 70.78 61.56 72.37 61.91 73.97 62.05 C 80.30 62.27 86.66 62.04 93.00 62.14 C 96.81 62.23 100.65 61.35 104.18 62.75 C 108.45 64.30 111.62 68.44 111.67 73.03 C 111.78 81.35 111.66 89.68 111.72 98.00 C 111.65 101.03 111.87 104.65 110.30 107.35 C 108.22 110.91 104.17 113.41 100.02 113.40 C 90.68 113.43 81.33 113.42 71.99 113.40 C 65.66 113.41 59.85 108.54 59.66 102.04 C 59.55 92.36 59.70 82.67 59.58 72.99 C 59.41 67.44 63.60 62.15 69.17 61.47 Z",fill:"#ffffff"}),React.createElement("path",{d:"M 138.98 61.27 C 148.33 61.42 157.69 61.22 167.04 61.37 C 173.28 61.31 178.81 66.69 178.70 72.96 C 178.72 82.65 178.75 92.34 178.68 102.02 C 178.48 108.28 173.18 112.96 167.02 113.04 C 157.69 113.25 148.33 113.02 138.99 113.15 C 132.77 113.56 126.76 108.35 126.66 102.04 C 126.55 94.37 126.67 86.68 126.62 79.00 C 126.63 76.33 126.42 73.60 126.72 70.94 C 127.60 65.24 133.25 60.88 138.98 61.27 Z",fill:"#ffffff"}),React.createElement("path",{d:"M 70.97 72.97 C 80.41 72.70 89.87 72.92 99.31 72.86 C 99.39 82.36 99.34 91.87 99.34 101.38 C 89.85 101.36 80.36 101.42 70.87 101.35 C 70.90 91.90 70.70 82.42 70.97 72.97 Z",fill:"#9fbb1a"}),React.createElement("path",{d:"M 138.39 72.91 C 147.80 72.79 157.23 72.85 166.65 72.88 C 166.65 82.41 166.85 91.97 166.55 101.49 C 157.18 101.27 147.79 101.39 138.41 101.42 C 138.30 91.92 138.36 82.41 138.39 72.91 Z",fill:"#9fbb1a"}),React.createElement("path",{d:"M 69.96 128.72 C 77.95 128.35 86.00 128.68 94.00 128.66 C 97.84 128.75 101.40 128.12 104.93 129.93 C 109.12 131.86 111.63 136.43 111.39 141.00 C 111.31 150.34 111.48 159.70 111.31 169.04 C 111.25 175.45 105.33 180.72 99.01 180.44 C 90.00 180.43 81.00 180.42 71.99 180.44 C 67.16 180.64 62.37 177.99 60.28 173.57 C 59.04 171.04 59.32 167.76 59.27 165.00 C 59.38 156.70 59.15 148.39 59.37 140.10 C 59.59 134.25 64.10 129.27 69.96 128.72 Z",fill:"#ffffff"}),React.createElement("path",{d:"M 137.96 128.68 C 146.96 128.36 156.00 128.45 165.00 128.61 C 167.68 128.64 170.26 129.00 172.61 130.36 C 176.44 132.46 178.51 136.68 178.41 140.99 C 178.39 150.33 178.47 159.67 178.37 169.01 C 178.48 174.84 173.95 180.48 167.95 180.68 C 159.31 180.89 150.65 180.67 142.00 180.78 C 139.64 180.74 137.05 180.91 134.76 180.27 C 129.71 178.66 126.48 173.17 126.62 168.01 C 126.61 161.01 126.64 154.00 126.62 147.00 C 126.71 143.40 126.11 139.00 127.75 135.73 C 129.57 131.70 133.51 128.85 137.96 128.68 Z",fill:"#ffffff"}),React.createElement("path",{d:"M 70.98 140.01 C 80.41 139.71 89.87 139.94 99.31 139.89 C 99.40 149.41 99.33 158.93 99.35 168.45 C 89.85 168.43 80.36 168.47 70.86 168.42 C 70.91 158.96 70.69 149.47 70.98 140.01 Z",fill:"#9fbb1a"}),React.createElement("path",{d:"M 138.45 140.41 C 147.84 140.29 157.27 140.44 166.67 140.35 C 166.70 149.82 166.71 159.29 166.67 168.77 C 157.24 168.71 147.81 168.71 138.38 168.77 C 138.39 159.32 138.24 149.85 138.45 140.41 Z",fill:"#9fbb1a"}));var s=u;function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var d=wp.i18n.__,C=wp.element.RawHTML,y=wp.blocks.registerBlockType,b=wp.data.withSelect,g=lodash.omit,h=React.memo,m=b(function(e,t){return{Freeform:e("core/blocks").getBlockType("core/freeform")}})(h(function(e){var t=g(e,["Freeform"]),n=f(jQuery,e.Freeform.edit);return React.createElement(n,p({},t,{isSelected:!0}))}));y("imagely/nextgen-gallery",{title:d("NextGEN Gallery"),desription:d("A block for adding NextGEN Galleries."),icon:s.nextgen,category:"common",attributes:{content:{type:"string",source:"html"}},supports:{className:!1,customClassName:!1},edit:m,save:function(e){var t=e.attributes.content;return React.createElement(C,null,t)}})}]); //# sourceMappingURL=block.min.js.map \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/block.min.js.map b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/block.min.js.map index b3e5e3a96..08b6f7113 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/block.min.js.map +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/block.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/edit.min.js","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/icons.min.js","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/block.min.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","wp","i18n","__","createNggEditComponent","memoize","lodash","$","Freeform","_Freeform","NggEditor","props","_this","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","openIGW","_assertThisInitialized","updateContent","hasGallery","toggleAddGalleryBtn","_inherits","_createClass","attributes","content","length","_get","ref","addClass","siblings","hide","removeClass","show","setAttributes","editor","on","_ref","shortcode","execCommand","React","createElement","className","onClick","ngg_tinymce_plugin","button_label","icons","nextgen","id","version","width","height","viewBox","stroke","fill","fill-rule","RawHTML","element","registerBlockType","blocks","withSelect","data","omit","memo","edit","select","getBlockType","withFreeform","isSelected","editProps","NggEdit","jQuery","title","desription","icon","category","type","source","supports","customClassName","save"],"mappings":"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","file":"block.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","const { __ } = wp.i18n;\nconst { memoize } = lodash\n\n// Given jQuery and the Freeform block settings, creates the Ngg Editor Component\nexport const createNggEditComponent = memoize(($, Freeform) => {\n class NggEditor extends Freeform {\n constructor(props) {\n super(props)\n this.openIGW = this.openIGW.bind(this)\n this.updateContent = this.updateContent.bind(this)\n this.hasGallery = this.hasGallery.bind(this)\n this.toggleAddGalleryBtn= this.toggleAddGalleryBtn.bind(this)\n }\n\n hasGallery() {\n return this.props.attributes.content && this.props.attributes.content.length > 0\n }\n\n componentDidMount() {\n super.componentDidMount()\n $(this.ref).addClass('freeform-toolbar').addClass('ngg-freeform-toolbar')\n this.toggleAddGalleryBtn();\n\n }\n\n componentDidUpdate() {\n this.toggleAddGalleryBtn();\n }\n\n toggleAddGalleryBtn() {\n // Determine the UI state\n if (this.props.attributes.content) {\n $(this.ref).addClass('hidden');\n $(this.ref).siblings('.add-ngg-gallery-wrap').hide()\n }\n else {\n $(this.ref).removeClass('hidden');\n $(this.ref).siblings('.add-ngg-gallery-wrap').show()\n }\n }\n\n updateContent(content) {\n this.props.setAttributes({content}) \n }\n\n onSetup(editor){\n super.onSetup(editor);\n const updateContent = this.updateContent.bind(this)\n\n // When NGG is added or removed, we must set the classic \"content\" attribute, \n // which will re-render our component\n editor.on('ngg-removed', () => updateContent(\"\"))\n editor.on('ngg-inserted', ({shortcode}) => updateContent(shortcode))\n }\n\n openIGW() {\n this.editor.execCommand('ngg_attach_to_post')\n }\n\n render(){\n const classic = super.render()\n return [\n classic,\n <div className=\"add-ngg-gallery-wrap\">\n <div className=\"add-ngg-gallery\" onClick={this.openIGW}>\n {ngg_tinymce_plugin.i18n.button_label}\n </div>\n </div>\n ]\n }\n }\n\n return NggEditor\n})","const icons = {};\n\nicons.nextgen =\n<svg id=\"svg\" version=\"1.1\" width=\"400\" height=\"385.8088930936613\" viewBox=\"0 0 400 385.8088930936613\">\n<g id=\"svgg\"><path id=\"path0\" d=\"\" stroke=\"none\" fill=\"#000055\" fill-rule=\"evenodd\"></path><path id=\"path1\" d=\"\" stroke=\"none\" fill=\"#002424\" fill-rule=\"evenodd\"></path><path id=\"path2\" d=\"M194.418 152.698 C 154.152 157.677,135.139 203.873,160.388 235.383 C 179.730 259.522,217.168 260.458,237.772 237.316 C 261.954 210.156,250.860 167.167,216.592 155.239 C 210.224 153.023,200.657 151.926,194.418 152.698 \" stroke=\"none\" fill=\"#143650\" fill-rule=\"evenodd\"></path><path id=\"path3\" d=\"\" stroke=\"none\" fill=\"#555500\" fill-rule=\"evenodd\"></path><path id=\"path4\" d=\"M109.430 274.467 C 109.368 274.629,109.202 274.717,109.061 274.663 C 108.920 274.609,108.715 274.732,108.606 274.936 C 108.496 275.140,108.286 275.307,108.139 275.307 C 107.992 275.307,107.796 275.441,107.705 275.605 C 107.536 275.907,106.895 276.338,106.291 276.556 C 106.109 276.622,105.960 276.753,105.960 276.848 C 105.960 276.942,105.747 277.101,105.487 277.200 C 105.227 277.299,105.014 277.467,105.014 277.573 C 105.014 277.680,104.920 277.767,104.805 277.767 C 104.690 277.767,104.285 278.009,103.906 278.303 C 103.527 278.598,103.068 278.894,102.886 278.960 C 102.703 279.026,102.554 279.168,102.554 279.275 C 102.554 279.382,102.427 279.470,102.272 279.470 C 102.117 279.470,101.884 279.640,101.754 279.849 C 101.624 280.057,101.367 280.227,101.184 280.227 C 101.001 280.227,100.851 280.314,100.851 280.421 C 100.851 280.528,100.639 280.696,100.378 280.795 C 100.118 280.894,99.905 281.071,99.905 281.189 C 99.905 281.306,99.793 281.360,99.655 281.307 C 99.518 281.254,99.304 281.373,99.181 281.570 C 99.057 281.768,98.838 281.930,98.694 281.930 C 98.550 281.930,98.383 282.059,98.322 282.217 C 98.262 282.374,97.997 282.585,97.734 282.685 C 97.471 282.785,97.256 282.954,97.256 283.061 C 97.256 283.167,97.095 283.254,96.898 283.254 C 96.701 283.254,96.491 283.382,96.431 283.538 C 96.371 283.694,96.201 283.822,96.053 283.822 C 95.904 283.822,95.731 283.959,95.667 284.126 C 95.603 284.292,95.438 284.386,95.302 284.334 C 95.165 284.281,94.952 284.400,94.829 284.598 C 94.705 284.796,94.529 284.957,94.437 284.957 C 94.344 284.957,93.996 285.213,93.661 285.525 C 93.327 285.837,92.965 286.093,92.857 286.093 C 92.748 286.093,92.296 286.391,91.851 286.755 C 91.407 287.119,90.958 287.417,90.854 287.417 C 90.750 287.417,90.637 287.481,90.602 287.559 C 90.471 287.855,89.293 288.565,89.116 288.455 C 89.014 288.392,88.931 288.476,88.931 288.641 C 88.931 288.805,88.718 289.021,88.458 289.120 C 88.198 289.219,87.985 289.392,87.985 289.505 C 87.985 289.617,87.602 289.879,87.133 290.086 C 86.665 290.293,86.282 290.546,86.282 290.647 C 86.282 290.749,86.090 290.915,85.856 291.017 C 85.220 291.292,84.692 291.646,84.522 291.911 C 84.439 292.041,84.245 292.148,84.091 292.148 C 83.936 292.148,83.761 292.275,83.701 292.431 C 83.641 292.588,83.504 292.715,83.396 292.715 C 83.287 292.715,82.835 293.013,82.391 293.377 C 81.946 293.742,81.493 294.040,81.384 294.040 C 81.276 294.040,81.097 294.207,80.988 294.411 C 80.871 294.629,80.673 294.738,80.508 294.675 C 80.337 294.609,80.227 294.677,80.227 294.850 C 80.227 295.006,80.014 295.187,79.754 295.253 C 79.494 295.318,79.281 295.455,79.281 295.557 C 79.281 295.659,79.162 295.743,79.017 295.743 C 78.872 295.743,78.707 295.864,78.650 296.012 C 78.594 296.160,78.223 296.433,77.826 296.619 C 77.429 296.804,76.994 297.108,76.858 297.295 C 76.722 297.482,76.488 297.635,76.337 297.635 C 76.187 297.635,76.064 297.715,76.064 297.814 C 76.064 297.990,75.336 298.457,74.693 298.693 C 74.510 298.760,74.361 298.892,74.361 298.986 C 74.361 299.081,74.170 299.241,73.936 299.342 C 73.345 299.597,72.922 299.894,72.049 300.662 C 71.636 301.026,71.221 301.325,71.127 301.325 C 71.032 301.325,70.662 301.559,70.303 301.845 C 69.945 302.131,69.562 302.365,69.452 302.365 C 69.342 302.365,69.253 302.449,69.253 302.551 C 69.253 302.653,69.040 302.790,68.780 302.855 C 68.519 302.920,68.307 303.102,68.307 303.259 C 68.307 303.451,68.183 303.512,67.928 303.446 C 67.680 303.381,67.550 303.440,67.550 303.617 C 67.550 303.766,67.337 303.969,67.077 304.068 C 66.816 304.167,66.604 304.337,66.604 304.447 C 66.604 304.556,66.391 304.726,66.131 304.825 C 65.870 304.924,65.658 305.092,65.658 305.199 C 65.658 305.305,65.487 305.393,65.279 305.393 C 65.071 305.393,64.901 305.480,64.901 305.587 C 64.901 305.693,64.688 305.861,64.428 305.960 C 64.167 306.059,63.955 306.227,63.955 306.334 C 63.955 306.441,63.784 306.528,63.576 306.528 C 63.368 306.528,63.198 306.615,63.198 306.722 C 63.198 306.828,62.985 306.997,62.725 307.096 C 62.465 307.194,62.252 307.361,62.252 307.465 C 62.252 307.570,61.907 307.831,61.486 308.046 C 61.064 308.261,60.672 308.561,60.614 308.712 C 60.556 308.864,60.389 308.988,60.243 308.988 C 60.097 308.988,59.835 309.154,59.662 309.356 C 59.488 309.559,59.285 309.687,59.210 309.641 C 59.135 309.595,58.800 309.812,58.467 310.124 C 58.133 310.436,57.748 310.691,57.612 310.691 C 57.475 310.691,57.335 310.754,57.301 310.833 C 57.184 311.095,55.380 312.394,55.132 312.394 C 54.996 312.394,54.803 312.547,54.703 312.735 C 54.602 312.923,54.174 313.242,53.752 313.445 C 53.330 313.647,52.983 313.879,52.982 313.959 C 52.981 314.040,52.789 314.189,52.554 314.290 C 51.958 314.548,51.520 314.853,50.731 315.562 C 50.355 315.900,49.942 316.176,49.812 316.177 C 49.683 316.177,49.476 316.340,49.353 316.537 C 49.229 316.735,49.027 316.858,48.903 316.810 C 48.779 316.763,48.626 316.856,48.564 317.018 C 48.502 317.181,48.339 317.313,48.203 317.313 C 48.067 317.313,47.695 317.547,47.375 317.833 C 46.625 318.507,45.782 319.104,45.364 319.259 C 45.182 319.327,45.033 319.470,45.033 319.578 C 45.033 319.685,44.903 319.773,44.743 319.773 C 44.584 319.773,44.405 319.901,44.345 320.057 C 44.285 320.213,44.075 320.341,43.878 320.341 C 43.622 320.341,43.519 320.476,43.519 320.814 C 43.519 321.074,43.587 321.287,43.670 321.287 C 43.753 321.287,44.147 321.798,44.545 322.422 C 44.942 323.046,45.343 323.557,45.434 323.557 C 45.526 323.557,45.601 323.655,45.601 323.774 C 45.601 323.894,45.899 324.355,46.263 324.799 C 46.627 325.244,46.925 325.700,46.925 325.812 C 46.925 325.925,47.010 326.017,47.114 326.017 C 47.219 326.017,47.304 326.132,47.304 326.272 C 47.304 326.411,47.474 326.680,47.682 326.868 C 47.890 327.057,48.061 327.331,48.061 327.477 C 48.061 327.634,48.209 327.719,48.420 327.685 C 48.728 327.634,49.763 328.480,49.763 328.783 C 49.763 328.837,49.976 329.160,50.237 329.501 C 50.497 329.842,50.710 330.217,50.710 330.335 C 50.710 330.610,51.587 331.190,51.802 331.058 C 51.891 331.002,52.123 331.229,52.316 331.562 C 52.509 331.894,52.780 332.235,52.918 332.318 C 53.056 332.401,53.169 332.587,53.169 332.731 C 53.169 332.875,53.347 333.049,53.565 333.118 C 53.783 333.187,54.082 333.533,54.230 333.888 C 54.378 334.242,54.578 334.532,54.675 334.532 C 54.772 334.532,54.964 334.766,55.102 335.052 C 55.239 335.338,55.492 335.574,55.663 335.575 C 56.001 335.578,56.764 336.191,56.764 336.461 C 56.764 336.713,57.567 337.748,57.763 337.748 C 57.981 337.748,58.642 338.535,58.650 338.804 C 58.654 338.917,58.888 339.130,59.171 339.277 C 59.786 339.598,61.757 341.524,61.929 341.973 C 61.996 342.147,62.168 342.289,62.311 342.289 C 62.454 342.289,62.725 342.577,62.915 342.929 C 63.125 343.319,63.542 343.693,63.985 343.889 C 64.385 344.065,64.711 344.333,64.711 344.485 C 64.711 344.637,64.882 344.825,65.091 344.902 C 65.299 344.979,65.628 345.336,65.821 345.696 C 66.014 346.056,66.335 346.394,66.535 346.449 C 66.972 346.567,68.307 347.617,68.307 347.843 C 68.307 348.075,69.693 349.274,69.850 349.177 C 69.923 349.132,70.037 349.267,70.103 349.477 C 70.170 349.687,70.389 349.858,70.590 349.858 C 70.791 349.858,70.956 349.924,70.956 350.004 C 70.956 350.370,72.658 351.980,72.934 351.874 C 73.117 351.804,73.226 351.868,73.226 352.046 C 73.226 352.202,73.370 352.385,73.545 352.452 C 73.721 352.520,74.109 352.853,74.408 353.193 C 74.727 353.556,75.063 353.768,75.222 353.707 C 75.385 353.645,75.552 353.757,75.637 353.986 C 75.778 354.360,77.338 355.718,77.633 355.722 C 77.925 355.725,78.903 356.556,78.903 356.800 C 78.903 356.937,78.988 357.048,79.093 357.048 C 79.198 357.048,79.469 357.261,79.695 357.521 C 79.921 357.781,80.240 357.997,80.403 357.999 C 80.566 358.002,81.069 358.343,81.520 358.756 C 81.972 359.170,82.451 359.508,82.586 359.508 C 82.721 359.508,82.876 359.678,82.931 359.886 C 82.988 360.104,83.189 360.265,83.404 360.265 C 83.627 360.265,83.821 360.428,83.883 360.668 C 83.961 360.965,84.092 361.045,84.379 360.970 C 84.624 360.906,84.768 360.959,84.768 361.114 C 84.768 361.353,85.288 361.680,85.572 361.619 C 85.650 361.603,85.714 361.717,85.714 361.873 C 85.714 362.029,85.864 362.157,86.048 362.157 C 86.231 362.157,86.466 362.349,86.570 362.583 C 86.674 362.817,86.908 362.997,87.090 362.982 C 87.272 362.967,87.686 363.202,88.008 363.503 C 88.331 363.805,88.863 364.179,89.191 364.334 C 89.518 364.490,89.998 364.809,90.257 365.043 C 90.517 365.277,90.814 365.478,90.918 365.489 C 91.452 365.547,91.958 365.827,91.958 366.064 C 91.958 366.211,92.107 366.386,92.289 366.453 C 92.472 366.520,92.693 366.695,92.781 366.842 C 92.883 367.012,93.105 367.067,93.396 366.994 C 93.646 366.932,93.851 366.963,93.851 367.063 C 93.851 367.400,94.783 368.258,95.042 368.158 C 95.182 368.105,95.398 368.222,95.521 368.420 C 95.645 368.618,95.905 368.780,96.100 368.780 C 96.294 368.780,96.559 368.907,96.689 369.063 C 96.818 369.219,97.049 369.347,97.202 369.347 C 97.355 369.347,97.828 369.645,98.254 370.009 C 98.679 370.374,99.129 370.672,99.254 370.672 C 99.379 370.672,99.586 370.798,99.714 370.953 C 99.843 371.108,100.024 371.189,100.116 371.131 C 100.208 371.074,100.284 371.112,100.284 371.214 C 100.284 371.425,101.342 371.996,101.732 371.996 C 101.872 371.996,101.965 372.103,101.939 372.233 C 101.912 372.372,102.130 372.493,102.470 372.526 C 102.801 372.558,103.360 372.861,103.781 373.235 C 104.185 373.594,104.655 373.888,104.826 373.888 C 104.997 373.888,105.342 374.106,105.592 374.372 C 105.873 374.671,106.180 374.821,106.396 374.765 C 106.594 374.713,106.953 374.853,107.220 375.085 C 107.480 375.311,107.751 375.501,107.820 375.506 C 108.117 375.528,108.913 375.843,109.149 376.032 C 109.289 376.145,109.518 376.254,109.657 376.274 C 109.796 376.294,110.249 376.584,110.664 376.917 C 111.079 377.251,111.501 377.472,111.602 377.410 C 111.704 377.348,111.837 377.429,111.899 377.591 C 111.962 377.753,112.093 377.836,112.191 377.776 C 112.289 377.715,112.694 377.851,113.091 378.077 C 114.435 378.844,114.758 378.995,115.057 378.996 C 115.221 378.997,115.558 379.214,115.807 379.478 C 116.071 379.759,116.425 379.938,116.658 379.907 C 116.877 379.879,117.263 379.987,117.516 380.147 C 117.769 380.308,118.444 380.635,119.016 380.874 C 119.588 381.114,120.203 381.438,120.381 381.595 C 120.559 381.753,120.847 381.827,121.021 381.760 C 121.216 381.685,121.596 381.838,122.021 382.162 C 122.398 382.449,122.810 382.660,122.938 382.631 C 123.065 382.602,123.363 382.702,123.600 382.854 C 123.837 383.006,124.201 383.158,124.409 383.192 C 124.617 383.226,124.903 383.410,125.045 383.601 C 125.219 383.834,125.444 383.912,125.735 383.839 C 125.999 383.772,126.203 383.825,126.261 383.974 C 126.364 384.244,127.909 384.408,127.909 384.150 C 127.909 384.061,128.172 383.720,128.493 383.391 C 128.979 382.894,129.056 382.698,128.951 382.220 C 128.843 381.728,128.872 381.664,129.154 381.773 C 129.421 381.875,129.463 381.821,129.376 381.489 C 129.294 381.175,129.353 381.079,129.625 381.079 C 129.919 381.079,129.961 380.981,129.868 380.513 C 129.795 380.146,129.862 379.784,130.062 379.479 C 130.231 379.221,130.369 378.916,130.369 378.801 C 130.369 378.686,130.500 378.461,130.659 378.301 C 130.886 378.075,130.901 377.952,130.726 377.742 C 130.546 377.525,130.624 377.364,131.121 376.920 C 131.619 376.476,131.716 376.274,131.618 375.885 C 131.552 375.619,131.565 375.402,131.649 375.402 C 131.907 375.402,132.450 374.330,132.450 373.821 C 132.450 373.241,132.798 372.415,133.253 371.913 C 133.436 371.711,133.568 371.456,133.546 371.346 C 133.477 370.988,133.777 370.104,133.968 370.104 C 134.070 370.104,134.153 369.891,134.153 369.631 C 134.153 369.354,134.251 369.178,134.390 369.205 C 134.539 369.235,134.621 369.043,134.613 368.685 C 134.606 368.373,134.720 368.028,134.867 367.918 C 135.013 367.809,135.108 367.596,135.077 367.445 C 135.005 367.096,135.651 365.752,135.891 365.752 C 135.991 365.752,136.055 365.561,136.034 365.326 C 135.986 364.807,136.396 363.671,136.632 363.671 C 136.725 363.671,136.802 363.467,136.802 363.218 C 136.802 362.969,136.939 362.713,137.106 362.649 C 137.318 362.567,137.376 362.395,137.297 362.082 C 137.226 361.799,137.288 361.546,137.466 361.399 C 137.621 361.270,137.748 361.086,137.748 360.989 C 137.748 360.893,137.919 360.462,138.127 360.031 C 138.335 359.600,138.505 359.088,138.505 358.894 C 138.505 358.699,138.590 358.592,138.694 358.657 C 138.804 358.724,138.884 358.547,138.884 358.239 C 138.884 357.944,139.096 357.390,139.357 357.008 C 139.617 356.625,139.830 356.124,139.830 355.895 C 139.830 355.368,140.756 353.453,141.011 353.453 C 141.121 353.453,141.154 353.217,141.089 352.892 C 141.008 352.486,141.062 352.282,141.283 352.159 C 141.484 352.046,141.552 351.844,141.480 351.570 C 141.399 351.260,141.440 351.179,141.641 351.256 C 141.842 351.334,141.911 351.196,141.911 350.715 C 141.911 350.360,141.990 350.021,142.086 349.962 C 142.182 349.902,142.316 349.599,142.385 349.288 C 142.453 348.977,142.613 348.723,142.741 348.723 C 142.871 348.723,143.126 348.120,143.321 347.351 C 143.512 346.596,143.784 345.845,143.925 345.680 C 144.066 345.516,144.182 345.249,144.182 345.086 C 144.182 344.923,144.315 344.739,144.479 344.676 C 144.671 344.602,144.735 344.434,144.660 344.198 C 144.596 343.997,144.713 343.465,144.918 343.014 C 145.572 341.583,145.955 340.687,145.995 340.492 C 146.130 339.835,146.342 339.451,146.569 339.451 C 146.727 339.451,146.833 339.245,146.837 338.931 C 146.840 338.645,146.966 338.247,147.117 338.048 C 147.304 337.801,147.332 337.612,147.204 337.458 C 147.074 337.302,147.105 337.156,147.301 336.993 C 147.459 336.863,147.588 336.596,147.588 336.401 C 147.588 336.205,147.673 336.045,147.777 336.045 C 147.881 336.045,147.966 335.837,147.966 335.583 C 147.966 335.329,148.129 335.006,148.329 334.866 C 148.539 334.719,148.741 334.286,148.808 333.839 C 148.871 333.414,149.091 332.719,149.296 332.294 C 149.792 331.268,149.789 330.258,149.290 329.991 C 149.082 329.879,148.912 329.700,148.912 329.593 C 148.912 329.485,148.699 329.119,148.439 328.777 C 148.179 328.436,147.966 328.086,147.966 327.998 C 147.966 327.911,147.625 327.435,147.209 326.941 C 146.793 326.448,146.452 325.953,146.452 325.841 C 146.452 325.730,146.386 325.639,146.306 325.639 C 146.226 325.639,145.991 325.321,145.786 324.934 C 145.580 324.546,145.284 324.090,145.128 323.921 C 144.619 323.370,144.182 322.798,144.182 322.684 C 144.182 322.622,143.926 322.248,143.614 321.854 C 143.302 321.460,143.046 321.041,143.046 320.922 C 143.046 320.804,142.919 320.658,142.763 320.598 C 142.606 320.538,142.479 320.406,142.479 320.305 C 142.479 320.203,142.181 319.757,141.816 319.312 C 141.452 318.868,141.154 318.404,141.154 318.281 C 141.154 318.158,141.026 318.009,140.870 317.949 C 140.714 317.889,140.587 317.719,140.587 317.571 C 140.587 317.423,140.459 317.252,140.303 317.192 C 140.147 317.132,140.019 317.004,140.019 316.907 C 140.019 316.698,139.230 315.544,139.026 315.453 C 138.947 315.418,138.884 315.282,138.884 315.151 C 138.884 315.019,138.713 314.758,138.505 314.570 C 138.297 314.381,138.127 314.113,138.127 313.973 C 138.127 313.833,138.040 313.718,137.933 313.718 C 137.826 313.718,137.658 313.505,137.559 313.245 C 137.460 312.985,137.306 312.772,137.216 312.772 C 137.067 312.772,136.696 312.128,136.642 311.775 C 136.630 311.695,136.443 311.440,136.228 311.208 C 135.601 310.532,134.359 308.771,134.237 308.384 C 134.175 308.189,133.939 307.836,133.713 307.599 C 133.487 307.362,133.174 306.971,133.018 306.730 C 132.862 306.489,132.644 306.196,132.534 306.079 C 132.424 305.962,132.169 305.573,131.967 305.216 C 131.764 304.858,131.450 304.390,131.268 304.175 C 130.563 303.344,130.452 303.186,130.089 302.503 C 129.884 302.115,129.647 301.798,129.564 301.798 C 129.481 301.798,129.333 301.585,129.234 301.325 C 129.135 301.064,128.967 300.851,128.860 300.851 C 128.753 300.851,128.666 300.737,128.666 300.597 C 128.666 300.457,128.496 300.188,128.288 300.000 C 128.079 299.812,127.909 299.579,127.909 299.484 C 127.909 299.389,127.803 299.200,127.673 299.064 C 127.543 298.928,127.308 298.626,127.152 298.393 C 126.996 298.160,126.734 297.788,126.570 297.566 C 126.405 297.344,126.216 297.013,126.150 296.831 C 126.083 296.649,125.950 296.500,125.853 296.500 C 125.756 296.500,125.489 296.138,125.260 295.695 C 125.030 295.253,124.723 294.823,124.578 294.740 C 124.433 294.657,124.314 294.465,124.314 294.314 C 124.314 294.163,124.226 294.040,124.119 294.040 C 124.012 294.040,123.869 293.891,123.802 293.709 C 123.735 293.526,123.503 293.122,123.287 292.810 C 123.071 292.498,122.809 292.106,122.705 291.939 C 122.487 291.589,121.384 290.080,121.101 289.743 C 120.995 289.617,120.908 289.459,120.908 289.392 C 120.908 289.289,119.878 287.898,119.207 287.094 C 119.102 286.968,119.016 286.810,119.016 286.743 C 119.016 286.675,118.761 286.298,118.448 285.904 C 118.136 285.509,117.881 285.097,117.881 284.987 C 117.881 284.877,117.774 284.719,117.644 284.636 C 117.344 284.444,116.556 283.327,116.556 283.093 C 116.556 282.996,116.429 282.868,116.272 282.808 C 116.116 282.748,115.989 282.577,115.989 282.429 C 115.989 282.281,115.861 282.111,115.705 282.051 C 115.549 281.991,115.421 281.851,115.421 281.739 C 115.421 281.511,114.646 280.356,114.428 280.259 C 114.350 280.224,114.286 280.079,114.286 279.937 C 114.286 279.795,114.179 279.610,114.049 279.527 C 113.749 279.335,112.961 278.218,112.961 277.984 C 112.961 277.887,112.833 277.759,112.677 277.699 C 112.521 277.639,112.394 277.503,112.394 277.396 C 112.394 276.953,110.065 274.176,109.691 274.173 C 109.610 274.173,109.493 274.305,109.430 274.467 \" stroke=\"none\" fill=\"#8ca516\" fill-rule=\"evenodd\"></path><path id=\"path5\" d=\"\" stroke=\"none\" fill=\"#6db600\" fill-rule=\"evenodd\"></path><path id=\"path6\" d=\"M79.186 45.256 C 78.978 45.372,78.369 45.838,77.832 46.291 C 77.295 46.744,76.809 47.114,76.752 47.114 C 76.696 47.114,76.441 47.306,76.186 47.540 C 75.500 48.170,75.046 48.533,74.934 48.540 C 74.693 48.557,73.983 49.116,73.983 49.289 C 73.982 49.611,72.116 51.366,71.950 51.200 C 71.890 51.140,71.722 51.260,71.577 51.468 C 71.431 51.675,71.190 51.845,71.039 51.845 C 70.889 51.845,70.766 52.019,70.766 52.232 C 70.766 52.464,70.539 52.748,70.200 52.942 C 69.888 53.119,69.633 53.328,69.632 53.406 C 69.632 53.484,69.461 53.548,69.253 53.548 C 69.044 53.548,68.874 53.634,68.874 53.739 C 68.874 53.992,67.915 55.061,67.688 55.061 C 67.590 55.061,67.342 55.274,67.137 55.535 C 66.933 55.795,66.647 56.008,66.502 56.008 C 66.357 56.008,66.137 56.197,66.013 56.429 C 65.743 56.933,65.537 57.138,64.871 57.564 C 64.594 57.741,64.126 58.227,63.830 58.644 C 63.452 59.177,63.194 59.371,62.961 59.300 C 62.776 59.244,62.630 59.297,62.630 59.421 C 62.630 59.747,61.733 60.786,61.150 61.136 C 60.865 61.307,60.668 61.576,60.699 61.751 C 60.730 61.922,60.634 62.062,60.487 62.062 C 60.249 62.062,59.039 63.359,58.877 63.788 C 58.843 63.879,58.688 63.955,58.533 63.955 C 58.258 63.955,57.711 64.387,57.711 64.603 C 57.711 64.663,57.561 64.867,57.379 65.056 C 57.197 65.246,56.793 65.714,56.482 66.097 C 56.170 66.480,55.804 66.793,55.668 66.793 C 55.532 66.793,55.296 67.091,55.144 67.455 C 54.992 67.819,54.762 68.121,54.633 68.125 C 54.505 68.130,53.463 69.275,52.318 70.671 C 51.173 72.067,50.086 73.262,49.903 73.326 C 49.719 73.390,49.605 73.501,49.649 73.573 C 49.805 73.824,49.216 74.409,48.921 74.296 C 48.711 74.216,48.627 74.303,48.625 74.604 C 48.622 75.122,48.429 75.402,48.074 75.402 C 47.926 75.402,47.741 75.638,47.663 75.927 C 47.586 76.216,47.349 76.642,47.137 76.874 C 46.126 77.977,44.276 80.266,44.276 80.414 C 44.276 80.505,44.106 80.634,43.898 80.700 C 43.690 80.766,43.519 80.985,43.519 81.186 C 43.519 81.387,43.390 81.701,43.233 81.883 C 41.478 83.908,40.527 85.119,40.618 85.210 C 40.679 85.271,40.378 85.740,39.948 86.253 C 39.519 86.766,39.167 87.281,39.167 87.396 C 39.167 87.512,39.040 87.606,38.884 87.606 C 38.728 87.606,38.600 87.763,38.600 87.954 C 38.600 88.146,38.324 88.625,37.988 89.019 C 37.651 89.413,37.374 89.838,37.373 89.964 C 37.371 90.090,36.944 90.679,36.424 91.275 C 35.904 91.870,35.500 92.441,35.527 92.542 C 35.554 92.644,35.398 92.916,35.181 93.147 C 34.964 93.378,34.676 93.822,34.542 94.134 C 34.408 94.447,34.074 94.941,33.800 95.232 C 33.526 95.524,33.302 95.856,33.302 95.971 C 33.302 96.086,33.089 96.459,32.829 96.800 C 32.569 97.141,32.356 97.527,32.356 97.657 C 32.356 97.788,32.194 98.070,31.996 98.285 C 31.656 98.654,31.110 99.547,30.515 100.706 C 30.370 100.990,30.171 101.272,30.073 101.332 C 29.976 101.392,29.896 101.592,29.896 101.776 C 29.896 101.960,29.683 102.310,29.423 102.554 C 29.163 102.799,28.950 103.139,28.950 103.311 C 28.950 103.483,28.745 103.816,28.495 104.051 C 28.245 104.286,27.983 104.780,27.914 105.149 C 27.845 105.518,27.539 106.085,27.233 106.410 C 26.928 106.735,26.716 107.099,26.761 107.220 C 26.806 107.340,26.678 107.587,26.477 107.769 C 26.276 107.951,26.112 108.252,26.112 108.438 C 26.112 108.624,26.032 108.825,25.934 108.886 C 25.725 109.015,25.166 110.097,25.166 110.374 C 25.166 110.480,25.049 110.701,24.908 110.865 C 24.766 111.029,24.497 111.573,24.310 112.072 C 24.124 112.572,23.805 113.098,23.602 113.240 C 23.388 113.390,23.291 113.594,23.372 113.724 C 23.448 113.848,23.409 114.012,23.285 114.089 C 23.161 114.166,23.040 114.357,23.017 114.513 C 22.994 114.669,22.842 115.001,22.679 115.251 C 22.516 115.500,22.320 115.918,22.245 116.178 C 22.005 117.008,21.524 117.971,21.276 118.117 C 21.144 118.196,20.979 118.600,20.908 119.016 C 20.838 119.432,20.703 119.773,20.608 119.773 C 20.513 119.773,20.435 119.909,20.435 120.075 C 20.435 120.390,19.954 121.350,19.531 121.878 C 19.395 122.047,19.304 122.260,19.328 122.351 C 19.423 122.710,19.048 123.830,18.710 124.192 C 18.514 124.402,18.354 124.722,18.354 124.902 C 18.354 125.081,18.265 125.258,18.156 125.294 C 18.048 125.331,17.934 125.593,17.904 125.878 C 17.874 126.163,17.792 126.453,17.723 126.522 C 17.654 126.591,17.597 126.800,17.597 126.985 C 17.597 127.171,17.456 127.402,17.284 127.498 C 17.104 127.598,17.019 127.797,17.083 127.965 C 17.148 128.134,17.072 128.303,16.903 128.368 C 16.743 128.430,16.659 128.604,16.718 128.756 C 16.776 128.908,16.742 129.083,16.643 129.144 C 16.543 129.206,16.462 129.496,16.462 129.789 C 16.462 130.083,16.337 130.426,16.184 130.553 C 16.031 130.680,15.913 130.839,15.922 130.907 C 15.975 131.306,15.854 131.666,15.559 131.989 C 15.375 132.191,15.231 132.483,15.240 132.640 C 15.254 132.898,14.806 134.251,14.394 135.194 C 14.034 136.017,13.441 137.881,13.325 138.555 C 13.257 138.946,13.127 139.313,13.034 139.370 C 12.942 139.427,12.867 139.724,12.867 140.030 C 12.867 140.336,12.781 140.587,12.677 140.587 C 12.573 140.587,12.488 140.752,12.488 140.954 C 12.488 141.156,12.403 141.374,12.299 141.438 C 12.195 141.502,12.108 141.784,12.106 142.064 C 12.103 142.344,11.940 142.928,11.743 143.362 C 11.546 143.796,11.432 144.198,11.489 144.255 C 11.547 144.312,11.412 144.782,11.189 145.299 C 10.967 145.816,10.785 146.405,10.785 146.608 C 10.785 146.811,10.658 147.220,10.503 147.519 C 10.347 147.817,10.219 148.290,10.219 148.570 C 10.218 148.850,10.144 149.124,10.054 149.180 C 9.964 149.236,9.832 149.645,9.760 150.090 C 9.514 151.625,8.933 154.114,8.690 154.683 C 8.531 155.055,8.445 155.436,7.841 158.467 C 7.675 159.300,7.457 160.135,7.357 160.323 C 7.256 160.510,7.122 161.216,7.060 161.890 C 6.997 162.564,6.873 163.160,6.784 163.215 C 6.695 163.270,6.621 163.586,6.620 163.918 C 6.618 164.251,6.490 165.061,6.335 165.719 C 6.180 166.377,6.010 167.271,5.957 167.706 C 5.904 168.140,5.815 168.794,5.757 169.158 C 5.700 169.522,5.628 170.076,5.597 170.388 C 5.566 170.700,5.489 171.083,5.425 171.239 C 5.361 171.395,5.221 172.247,5.113 173.132 C 5.006 174.016,4.874 174.995,4.821 175.307 C 4.767 175.620,4.675 176.471,4.616 177.200 C 4.557 177.928,4.436 178.612,4.347 178.719 C 4.258 178.827,4.184 179.337,4.182 179.854 C 4.180 180.372,4.133 181.306,4.077 181.930 C 4.021 182.554,3.937 183.576,3.890 184.201 C 3.843 184.825,3.790 185.336,3.772 185.336 C 3.711 185.336,3.445 190.033,3.343 192.917 C 3.310 193.860,3.223 194.729,3.149 194.847 C 3.017 195.060,3.058 195.456,3.313 196.452 C 3.388 196.743,3.369 196.973,3.271 196.973 C 2.976 196.973,3.139 207.939,3.515 213.434 C 3.575 214.319,3.650 215.511,3.680 216.083 C 3.711 216.656,3.841 218.188,3.969 219.489 C 4.098 220.790,4.193 222.138,4.181 222.485 C 4.170 222.833,4.219 223.211,4.291 223.327 C 4.449 223.584,4.491 223.880,4.653 225.875 C 4.722 226.734,4.832 227.436,4.897 227.436 C 4.961 227.436,5.029 227.670,5.047 227.956 C 5.081 228.509,5.332 230.268,5.686 232.450 C 5.804 233.179,5.892 234.009,5.880 234.295 C 5.869 234.581,5.927 234.816,6.010 234.816 C 6.092 234.816,6.155 235.163,6.149 235.587 C 6.144 236.012,6.205 236.400,6.286 236.450 C 6.367 236.500,6.433 236.797,6.433 237.110 C 6.433 237.423,6.516 237.833,6.617 238.023 C 6.719 238.212,6.898 238.994,7.016 239.760 C 7.134 240.527,7.282 241.239,7.344 241.342 C 7.407 241.445,7.471 241.785,7.488 242.099 C 7.504 242.412,7.616 243.024,7.736 243.460 C 7.857 243.896,7.937 244.321,7.916 244.406 C 7.894 244.491,8.052 245.128,8.267 245.821 C 8.482 246.515,8.615 247.303,8.564 247.572 C 8.511 247.851,8.557 248.061,8.673 248.061 C 8.785 248.061,8.929 248.380,8.994 248.770 C 9.059 249.160,9.162 249.607,9.224 249.763 C 9.286 249.920,9.352 250.218,9.370 250.426 C 9.389 250.634,9.502 251.044,9.622 251.337 C 9.741 251.630,9.839 252.027,9.839 252.220 C 9.839 252.413,9.929 252.600,10.040 252.637 C 10.150 252.674,10.245 253.071,10.251 253.519 C 10.258 254.029,10.360 254.371,10.524 254.434 C 10.668 254.489,10.785 254.736,10.785 254.982 C 10.785 255.505,11.579 258.598,11.996 259.697 C 12.153 260.114,12.286 260.593,12.291 260.764 C 12.295 260.934,12.426 261.317,12.582 261.615 C 12.737 261.913,12.865 262.292,12.865 262.457 C 12.866 262.621,12.926 262.815,12.998 262.888 C 13.071 262.960,13.152 263.123,13.179 263.251 C 13.404 264.299,13.720 265.234,13.934 265.483 C 14.076 265.648,14.191 265.999,14.191 266.264 C 14.191 266.529,14.319 266.852,14.475 266.982 C 14.631 267.112,14.759 267.458,14.759 267.751 C 14.759 268.044,14.838 268.333,14.936 268.393 C 15.033 268.454,15.252 268.991,15.423 269.587 C 15.594 270.184,15.898 270.953,16.098 271.297 C 16.298 271.642,16.462 272.082,16.462 272.275 C 16.462 272.469,16.558 272.659,16.675 272.698 C 16.792 272.737,16.907 272.936,16.929 273.139 C 17.027 274.010,17.279 274.723,17.524 274.816 C 17.668 274.872,17.786 275.128,17.786 275.385 C 17.786 275.642,17.871 275.905,17.975 275.970 C 18.079 276.034,18.165 276.232,18.165 276.409 C 18.165 276.587,18.335 277.050,18.543 277.438 C 18.751 277.827,18.925 278.294,18.928 278.476 C 18.932 278.659,19.137 279.055,19.384 279.357 C 19.631 279.659,19.788 280.024,19.733 280.169 C 19.678 280.313,19.771 280.583,19.940 280.770 C 20.109 280.957,20.375 281.538,20.530 282.062 C 20.686 282.585,20.983 283.230,21.192 283.495 C 21.400 283.760,21.570 284.084,21.570 284.216 C 21.570 284.347,21.687 284.589,21.830 284.753 C 21.973 284.918,22.233 285.494,22.409 286.035 C 22.585 286.575,22.882 287.214,23.070 287.454 C 23.257 287.694,23.476 288.103,23.555 288.363 C 23.635 288.623,23.944 289.172,24.243 289.583 C 24.542 289.994,24.787 290.569,24.787 290.860 C 24.787 291.152,24.852 291.391,24.931 291.391 C 25.093 291.391,25.194 291.562,26.053 293.295 C 26.385 293.965,26.875 294.806,27.141 295.164 C 27.407 295.523,27.625 295.999,27.625 296.223 C 27.625 296.447,27.796 296.784,28.004 296.973 C 28.212 297.161,28.382 297.402,28.382 297.507 C 28.382 297.613,28.501 297.834,28.647 297.998 C 29.249 298.678,29.679 299.668,29.465 299.882 C 29.311 300.036,29.391 300.234,29.765 300.624 C 30.045 300.917,30.274 301.258,30.274 301.382 C 30.274 301.507,30.346 301.608,30.433 301.608 C 30.521 301.608,30.692 301.800,30.815 302.034 C 30.937 302.268,31.289 302.800,31.596 303.217 C 31.903 303.633,32.157 304.086,32.160 304.224 C 32.164 304.361,32.273 304.592,32.403 304.737 C 32.948 305.345,33.113 305.575,33.113 305.728 C 33.113 305.817,33.367 306.133,33.678 306.431 C 34.339 307.065,34.665 306.968,36.013 305.736 C 36.434 305.351,36.848 305.079,36.934 305.132 C 37.019 305.184,37.140 305.094,37.202 304.932 C 37.265 304.769,37.430 304.636,37.569 304.636 C 37.708 304.636,37.940 304.466,38.086 304.259 C 38.231 304.051,38.408 303.939,38.479 304.011 C 38.550 304.082,38.739 303.953,38.899 303.726 C 39.058 303.498,39.308 303.311,39.453 303.311 C 39.598 303.311,39.784 303.205,39.868 303.075 C 39.951 302.945,40.307 302.677,40.660 302.481 C 41.013 302.284,41.460 301.986,41.653 301.819 C 41.847 301.651,42.169 301.372,42.368 301.198 C 42.568 301.025,42.783 300.935,42.846 300.998 C 42.909 301.061,43.091 300.926,43.251 300.698 C 43.410 300.470,43.655 300.284,43.794 300.284 C 43.933 300.284,44.098 300.151,44.160 299.988 C 44.222 299.825,44.350 299.739,44.443 299.797 C 44.536 299.854,44.941 299.597,45.343 299.225 C 45.745 298.853,46.383 298.390,46.760 298.195 C 47.137 298.000,47.497 297.709,47.558 297.548 C 47.620 297.388,47.790 297.256,47.937 297.256 C 48.083 297.256,48.309 297.130,48.437 296.975 C 48.566 296.820,48.747 296.740,48.840 296.797 C 48.933 296.855,49.061 296.768,49.123 296.605 C 49.186 296.442,49.544 296.163,49.920 295.985 C 50.295 295.806,50.746 295.530,50.921 295.371 C 51.096 295.211,51.463 294.877,51.737 294.629 C 52.011 294.381,52.289 294.231,52.354 294.297 C 52.420 294.362,52.593 294.245,52.740 294.035 C 52.886 293.826,53.080 293.701,53.171 293.757 C 53.261 293.813,53.404 293.750,53.489 293.618 C 53.635 293.389,54.125 293.034,54.633 292.790 C 54.761 292.728,55.229 292.345,55.673 291.939 C 56.117 291.534,56.558 291.202,56.652 291.202 C 56.746 291.202,57.129 290.968,57.503 290.682 C 57.877 290.396,58.245 290.182,58.320 290.207 C 58.395 290.232,58.547 290.082,58.658 289.875 C 58.768 289.668,58.987 289.499,59.142 289.499 C 59.298 289.499,59.476 289.366,59.538 289.204 C 59.601 289.042,59.753 288.948,59.877 288.996 C 60.001 289.043,60.204 288.921,60.327 288.723 C 60.451 288.525,60.636 288.363,60.740 288.363 C 60.843 288.363,61.097 288.214,61.306 288.032 C 61.514 287.850,61.861 287.545,62.078 287.354 C 62.295 287.163,62.515 287.050,62.567 287.102 C 62.619 287.154,62.825 287.055,63.024 286.881 C 63.224 286.708,63.550 286.424,63.750 286.250 C 63.949 286.077,64.164 285.987,64.227 286.050 C 64.290 286.113,64.472 285.978,64.632 285.750 C 64.792 285.522,65.025 285.336,65.150 285.336 C 65.275 285.336,65.484 285.166,65.614 284.957 C 65.744 284.749,65.950 284.579,66.073 284.579 C 66.196 284.579,66.784 284.196,67.380 283.728 C 67.976 283.259,68.556 282.876,68.669 282.876 C 68.782 282.876,68.874 282.801,68.874 282.709 C 68.874 282.617,69.023 282.488,69.205 282.422 C 69.809 282.204,70.450 281.773,70.619 281.471 C 70.710 281.307,70.904 281.173,71.050 281.173 C 71.196 281.173,71.383 281.056,71.466 280.912 C 71.550 280.769,71.919 280.491,72.286 280.296 C 72.944 279.946,73.261 279.714,74.012 279.029 C 74.222 278.838,74.434 278.722,74.483 278.772 C 74.533 278.822,74.773 278.680,75.017 278.457 C 75.752 277.784,76.020 277.596,76.111 277.688 C 76.159 277.735,76.572 277.432,77.030 277.014 C 77.487 276.596,77.959 276.254,78.078 276.254 C 78.197 276.254,78.347 276.117,78.411 275.950 C 78.475 275.783,78.639 275.690,78.776 275.742 C 78.912 275.794,79.127 275.672,79.253 275.470 C 79.379 275.269,79.561 275.152,79.656 275.211 C 79.752 275.270,79.922 275.145,80.035 274.934 C 80.148 274.723,80.356 274.551,80.497 274.551 C 80.639 274.551,80.803 274.423,80.863 274.267 C 80.923 274.111,81.092 273.983,81.239 273.983 C 81.385 273.983,81.609 273.858,81.736 273.705 C 81.863 273.552,82.022 273.446,82.090 273.469 C 82.158 273.491,82.405 273.340,82.640 273.132 C 82.874 272.923,83.243 272.597,83.459 272.406 C 83.676 272.215,83.903 272.108,83.963 272.168 C 84.023 272.229,84.191 272.108,84.336 271.900 C 84.482 271.693,84.723 271.523,84.874 271.523 C 85.024 271.523,85.147 271.438,85.147 271.334 C 85.147 271.230,85.296 271.145,85.480 271.145 C 85.663 271.145,85.921 270.971,86.053 270.759 C 86.186 270.547,86.367 270.418,86.457 270.474 C 86.546 270.529,86.758 270.362,86.928 270.102 C 87.098 269.843,87.362 269.631,87.516 269.631 C 87.670 269.631,87.796 269.554,87.796 269.461 C 87.796 269.367,88.158 269.103,88.600 268.874 C 89.042 268.644,89.472 268.337,89.555 268.192 C 89.639 268.047,89.830 267.928,89.981 267.928 C 90.132 267.928,90.255 267.841,90.255 267.734 C 90.255 267.628,90.468 267.459,90.728 267.360 C 90.989 267.262,91.202 267.113,91.202 267.030 C 91.202 266.947,91.521 266.713,91.911 266.511 C 92.632 266.138,92.857 265.977,93.614 265.288 C 93.848 265.075,94.105 264.922,94.185 264.948 C 94.328 264.994,94.626 264.780,95.394 264.081 C 95.603 263.890,95.823 263.783,95.883 263.843 C 95.943 263.903,96.111 263.782,96.257 263.575 C 96.402 263.367,96.641 263.198,96.787 263.198 C 96.934 263.198,97.145 263.027,97.256 262.819 C 97.368 262.611,97.566 262.441,97.696 262.441 C 97.826 262.441,98.228 262.189,98.588 261.881 C 98.948 261.573,99.345 261.318,99.470 261.313 C 99.595 261.309,99.765 261.199,99.849 261.069 C 99.932 260.939,100.170 260.738,100.378 260.623 C 100.865 260.354,100.977 259.783,100.587 259.564 C 100.420 259.471,100.284 259.324,100.284 259.238 C 100.284 259.151,99.986 258.586,99.622 257.981 C 99.257 257.376,98.959 256.766,98.959 256.626 C 98.959 256.485,98.803 256.202,98.612 255.997 C 98.421 255.792,97.979 255.051,97.629 254.350 C 97.279 253.648,96.927 253.047,96.847 253.014 C 96.766 252.980,96.644 252.639,96.575 252.257 C 96.507 251.874,96.369 251.458,96.270 251.333 C 95.977 250.964,95.364 249.702,95.364 249.469 C 95.364 249.350,95.194 249.057,94.986 248.817 C 94.778 248.577,94.607 248.192,94.607 247.960 C 94.607 247.729,94.480 247.433,94.324 247.304 C 94.167 247.174,94.039 246.972,94.039 246.855 C 94.038 246.737,93.928 246.429,93.794 246.168 C 93.659 245.908,93.364 245.142,93.137 244.465 C 92.909 243.789,92.551 242.898,92.341 242.486 C 92.131 242.074,91.958 241.551,91.958 241.324 C 91.958 241.097,91.831 240.862,91.675 240.802 C 91.518 240.742,91.391 240.480,91.391 240.219 C 91.391 239.959,91.175 239.258,90.912 238.663 C 90.648 238.067,90.474 237.471,90.525 237.339 C 90.576 237.207,90.536 237.048,90.436 236.986 C 90.337 236.925,90.255 236.743,90.255 236.583 C 90.255 236.423,90.138 236.024,89.994 235.696 C 89.633 234.873,89.405 234.170,89.035 232.734 C 88.860 232.058,88.638 231.243,88.540 230.923 C 88.443 230.604,88.363 230.199,88.363 230.024 C 88.363 229.850,88.269 229.707,88.154 229.707 C 88.038 229.707,87.997 229.569,88.062 229.399 C 88.127 229.230,88.106 228.995,88.014 228.879 C 87.923 228.762,87.793 228.249,87.727 227.739 C 87.660 227.229,87.529 226.718,87.435 226.604 C 87.341 226.489,87.205 225.885,87.133 225.260 C 87.061 224.636,86.875 223.674,86.720 223.122 C 86.565 222.570,86.365 221.506,86.276 220.757 C 86.039 218.777,85.722 216.991,85.531 216.556 C 85.440 216.348,85.312 215.241,85.247 214.096 C 85.073 211.034,84.952 209.437,84.844 208.798 C 84.589 207.284,84.477 198.358,84.678 195.553 C 84.730 194.825,84.809 193.718,84.853 193.094 C 84.897 192.469,85.030 190.851,85.149 189.499 C 85.269 188.146,85.391 186.729,85.421 186.350 C 85.452 185.972,85.521 185.588,85.574 185.499 C 85.628 185.409,85.733 184.697,85.808 183.917 C 85.884 183.136,86.031 182.392,86.135 182.264 C 86.239 182.135,86.272 181.893,86.208 181.726 C 86.144 181.559,86.155 181.324,86.233 181.203 C 86.311 181.083,86.476 180.345,86.598 179.565 C 86.721 178.784,86.878 177.933,86.947 177.673 C 87.017 177.412,87.119 176.753,87.174 176.206 C 87.230 175.660,87.347 175.213,87.434 175.213 C 87.522 175.213,87.650 174.785,87.719 174.263 C 87.789 173.740,87.916 173.269,88.001 173.216 C 88.087 173.163,88.214 172.612,88.284 171.990 C 88.355 171.369,88.477 170.861,88.556 170.861 C 88.679 170.861,88.867 170.215,89.051 169.158 C 89.178 168.428,89.542 167.132,89.766 166.612 C 90.345 165.264,90.429 164.986,90.334 164.738 C 90.279 164.594,90.375 164.422,90.548 164.356 C 90.726 164.287,90.816 164.116,90.756 163.959 C 90.698 163.807,90.732 163.633,90.831 163.571 C 90.931 163.510,91.012 163.214,91.012 162.914 C 91.012 162.614,91.097 162.316,91.202 162.252 C 91.306 162.187,91.391 161.991,91.392 161.815 C 91.393 161.639,91.520 161.251,91.676 160.953 C 91.831 160.655,91.958 160.303,91.958 160.172 C 91.958 160.040,92.086 159.827,92.242 159.697 C 92.398 159.568,92.526 159.217,92.526 158.917 C 92.526 158.618,92.611 158.373,92.715 158.373 C 92.819 158.373,92.904 158.207,92.904 158.005 C 92.904 157.803,92.990 157.586,93.094 157.521 C 93.198 157.457,93.283 157.239,93.283 157.037 C 93.283 156.835,93.368 156.670,93.472 156.670 C 93.576 156.670,93.661 156.457,93.661 156.197 C 93.661 155.937,93.746 155.724,93.851 155.724 C 93.955 155.724,94.040 155.558,94.040 155.356 C 94.040 155.154,94.114 154.943,94.205 154.887 C 94.295 154.831,94.424 154.513,94.491 154.179 C 94.557 153.846,94.732 153.439,94.879 153.276 C 95.025 153.113,95.173 152.854,95.207 152.701 C 95.242 152.547,95.372 152.311,95.498 152.175 C 95.624 152.039,95.683 151.814,95.629 151.675 C 95.576 151.535,95.668 151.368,95.835 151.304 C 96.002 151.240,96.122 151.080,96.101 150.949 C 96.052 150.643,96.622 149.354,96.875 149.198 C 96.981 149.132,97.067 148.918,97.067 148.722 C 97.067 148.526,97.247 148.240,97.466 148.086 C 97.686 147.933,97.814 147.725,97.753 147.625 C 97.691 147.525,97.809 147.228,98.016 146.965 C 98.223 146.702,98.392 146.357,98.392 146.197 C 98.392 146.037,98.472 145.857,98.570 145.797 C 98.668 145.736,98.936 145.310,99.166 144.849 C 99.396 144.389,99.678 144.029,99.792 144.049 C 99.907 144.070,99.973 143.930,99.940 143.737 C 99.907 143.545,99.992 143.247,100.129 143.075 C 100.434 142.693,100.816 142.036,101.254 141.139 C 101.437 140.767,101.719 140.352,101.881 140.218 C 102.043 140.083,102.176 139.856,102.176 139.712 C 102.176 139.569,102.472 139.124,102.835 138.723 C 103.197 138.322,103.444 137.944,103.382 137.883 C 103.256 137.756,104.837 135.667,105.059 135.667 C 105.138 135.667,105.203 135.517,105.203 135.334 C 105.203 135.151,105.500 134.661,105.862 134.246 C 106.224 133.831,106.522 133.385,106.524 133.254 C 106.526 133.124,106.627 133.039,106.748 133.065 C 106.869 133.091,107.018 132.927,107.079 132.700 C 107.192 132.281,107.820 131.433,108.930 130.202 C 109.269 129.825,109.549 129.414,109.551 129.288 C 109.553 129.161,109.726 128.967,109.934 128.855 C 110.142 128.744,110.312 128.528,110.312 128.376 C 110.312 128.223,110.405 128.098,110.518 128.098 C 110.815 128.098,111.434 127.306,111.441 126.916 C 111.445 126.717,111.593 126.585,111.813 126.585 C 112.072 126.585,112.197 126.432,112.239 126.064 C 112.280 125.705,112.401 125.552,112.630 125.570 C 112.812 125.585,112.961 125.521,112.961 125.429 C 112.961 125.337,113.259 124.931,113.623 124.528 C 113.988 124.125,114.286 123.699,114.286 123.582 C 114.286 123.464,114.413 123.368,114.570 123.368 C 114.726 123.368,114.854 123.304,114.854 123.226 C 114.855 122.992,116.210 121.476,116.417 121.476 C 116.688 121.476,117.111 120.877,117.118 120.482 C 117.121 120.297,117.270 120.149,117.455 120.147 C 117.637 120.144,118.031 119.811,118.331 119.405 C 118.654 118.970,118.982 118.709,119.135 118.768 C 119.278 118.823,119.395 118.791,119.395 118.698 C 119.395 118.605,119.733 118.149,120.146 117.685 C 120.559 117.220,120.900 116.776,120.903 116.698 C 120.906 116.620,121.026 116.556,121.170 116.556 C 121.313 116.556,121.656 116.262,121.930 115.901 C 122.243 115.491,122.534 115.287,122.710 115.354 C 122.884 115.421,122.990 115.348,122.990 115.161 C 122.990 114.996,123.181 114.810,123.415 114.748 C 123.649 114.687,124.120 114.259,124.462 113.799 C 124.804 113.338,125.169 112.961,125.275 112.961 C 125.625 112.961,126.383 111.929,126.388 111.447 C 126.391 111.052,125.869 110.217,124.884 109.043 C 124.779 108.917,124.689 108.747,124.685 108.665 C 124.681 108.582,124.425 108.220,124.117 107.860 C 123.809 107.499,123.557 107.123,123.557 107.024 C 123.557 106.925,123.427 106.709,123.269 106.544 C 122.761 106.017,121.665 104.476,121.665 104.289 C 121.665 104.190,121.537 104.060,121.381 104.000 C 121.225 103.940,121.097 103.790,121.097 103.668 C 121.097 103.545,120.799 103.081,120.435 102.637 C 120.071 102.192,119.773 101.736,119.773 101.624 C 119.773 101.511,119.688 101.419,119.584 101.419 C 119.480 101.419,119.395 101.305,119.395 101.165 C 119.395 101.025,119.224 100.756,119.016 100.568 C 118.808 100.379,118.638 100.120,118.638 99.991 C 118.638 99.862,118.510 99.708,118.354 99.648 C 118.198 99.588,118.070 99.413,118.070 99.258 C 118.070 99.104,117.959 98.910,117.823 98.827 C 117.687 98.744,117.373 98.335,117.124 97.919 C 116.875 97.502,116.561 97.094,116.425 97.010 C 116.289 96.927,116.178 96.766,116.178 96.652 C 116.178 96.537,115.880 96.080,115.516 95.636 C 115.151 95.191,114.853 94.753,114.853 94.663 C 114.853 94.573,114.601 94.204,114.293 93.843 C 113.985 93.483,113.730 93.121,113.726 93.038 C 113.722 92.956,113.632 92.786,113.527 92.660 C 112.772 91.760,112.204 90.922,112.204 90.709 C 112.204 90.571,112.034 90.367,111.826 90.255 C 111.618 90.144,111.447 89.926,111.447 89.770 C 111.447 89.614,111.320 89.438,111.164 89.378 C 111.008 89.318,110.880 89.189,110.880 89.092 C 110.880 88.883,110.091 87.729,109.886 87.638 C 109.808 87.603,109.745 87.459,109.745 87.316 C 109.745 87.174,109.638 86.990,109.508 86.906 C 109.195 86.706,108.420 85.593,108.420 85.344 C 108.420 85.235,108.333 85.147,108.226 85.147 C 108.120 85.147,107.951 84.934,107.852 84.674 C 107.753 84.413,107.585 84.201,107.479 84.201 C 107.372 84.201,107.285 84.112,107.285 84.004 C 107.285 83.795,106.542 82.672,106.274 82.476 C 106.086 82.338,105.636 81.589,105.472 81.139 C 105.408 80.964,105.236 80.775,105.090 80.719 C 104.944 80.663,104.825 80.496,104.825 80.348 C 104.825 80.200,104.697 80.029,104.541 79.969 C 104.385 79.910,104.257 79.743,104.257 79.600 C 104.257 79.457,104.087 79.186,103.879 78.997 C 103.671 78.809,103.500 78.582,103.500 78.493 C 103.500 78.404,103.032 77.698,102.460 76.924 C 101.887 76.150,101.419 75.467,101.419 75.407 C 101.419 75.346,101.100 74.885,100.710 74.382 C 100.319 73.879,99.872 73.278,99.716 73.046 C 99.560 72.815,99.262 72.431,99.054 72.193 C 98.846 71.956,98.505 71.477,98.297 71.129 C 98.089 70.781,97.769 70.280,97.585 70.016 C 97.402 69.752,97.200 69.387,97.138 69.205 C 97.075 69.023,96.946 68.874,96.851 68.874 C 96.757 68.874,96.598 68.661,96.500 68.401 C 96.401 68.141,96.232 67.928,96.126 67.928 C 96.019 67.928,95.932 67.836,95.932 67.723 C 95.932 67.611,95.634 67.155,95.270 66.711 C 94.905 66.266,94.607 65.805,94.607 65.685 C 94.607 65.566,94.520 65.468,94.413 65.468 C 94.307 65.468,94.137 65.277,94.036 65.043 C 93.750 64.382,93.408 63.889,93.046 63.616 C 92.864 63.478,92.715 63.261,92.715 63.133 C 92.715 63.004,92.463 62.605,92.155 62.245 C 91.847 61.884,91.592 61.522,91.588 61.440 C 91.583 61.357,91.494 61.187,91.389 61.061 C 90.740 60.285,89.688 58.868,89.688 58.772 C 89.688 58.668,88.254 56.616,87.796 56.063 C 87.692 55.937,87.606 55.776,87.606 55.704 C 87.606 55.632,87.308 55.210,86.944 54.765 C 86.580 54.321,86.282 53.872,86.282 53.768 C 86.282 53.664,86.218 53.551,86.140 53.516 C 85.977 53.444,85.147 52.290,85.147 52.136 C 85.147 52.080,84.998 51.870,84.816 51.669 C 84.309 51.111,84.132 50.868,83.637 50.047 C 83.386 49.631,83.070 49.222,82.934 49.139 C 82.798 49.056,82.687 48.894,82.687 48.780 C 82.687 48.666,82.389 48.209,82.025 47.764 C 81.660 47.320,81.362 46.864,81.362 46.752 C 81.362 46.639,81.277 46.547,81.173 46.547 C 81.069 46.547,80.984 46.433,80.984 46.294 C 80.984 46.033,79.963 45.029,79.708 45.039 C 79.629 45.042,79.395 45.140,79.186 45.256 \" stroke=\"none\" fill=\"#9fbb1a\" fill-rule=\"evenodd\"></path><path id=\"path7\" d=\"M190.728 4.092 C 190.364 4.223,189.799 4.285,189.473 4.229 C 189.135 4.172,188.824 4.219,188.750 4.338 C 188.679 4.453,188.530 4.491,188.419 4.423 C 188.117 4.236,186.136 4.191,185.800 4.363 C 185.639 4.446,184.674 4.555,183.655 4.606 C 182.637 4.658,181.757 4.746,181.700 4.803 C 181.643 4.860,181.445 4.825,181.260 4.726 C 181.028 4.602,180.702 4.639,180.211 4.844 C 179.819 5.008,179.236 5.103,178.916 5.056 C 178.597 5.009,178.153 5.054,177.930 5.155 C 177.665 5.276,177.408 5.275,177.188 5.151 C 176.939 5.012,176.677 5.060,176.193 5.332 C 175.705 5.606,175.498 5.643,175.395 5.476 C 175.317 5.350,175.150 5.315,175.018 5.396 C 174.731 5.574,173.781 5.731,173.132 5.709 C 172.871 5.700,172.531 5.745,172.375 5.809 C 172.219 5.872,171.835 5.942,171.523 5.964 C 171.211 5.986,170.805 6.068,170.621 6.145 C 170.437 6.223,170.057 6.243,169.775 6.189 C 169.494 6.135,168.963 6.205,168.596 6.343 C 168.229 6.481,167.673 6.577,167.360 6.556 C 167.048 6.534,166.553 6.631,166.259 6.771 C 165.966 6.910,165.540 7.007,165.313 6.985 C 165.086 6.963,164.773 6.996,164.617 7.059 C 164.461 7.122,163.936 7.213,163.450 7.261 C 162.965 7.310,162.403 7.437,162.203 7.544 C 162.003 7.651,161.464 7.761,161.005 7.788 C 160.547 7.815,159.865 7.985,159.491 8.166 C 159.117 8.347,158.627 8.447,158.401 8.388 C 158.176 8.329,157.886 8.367,157.757 8.472 C 157.627 8.576,157.223 8.661,156.859 8.658 C 156.495 8.656,155.899 8.785,155.535 8.945 C 155.170 9.104,154.532 9.288,154.115 9.354 C 153.699 9.419,153.018 9.570,152.602 9.689 C 152.185 9.809,151.771 9.888,151.680 9.865 C 151.589 9.842,151.079 9.974,150.545 10.156 C 150.011 10.339,149.404 10.494,149.196 10.501 C 148.988 10.508,148.711 10.580,148.582 10.660 C 148.452 10.741,148.160 10.842,147.933 10.886 C 147.706 10.930,147.466 11.054,147.399 11.162 C 147.333 11.270,146.854 11.388,146.337 11.424 C 145.819 11.460,145.229 11.581,145.025 11.691 C 144.416 12.023,143.918 12.170,143.561 12.126 C 143.375 12.103,142.854 12.291,142.402 12.543 C 141.806 12.877,141.492 12.953,141.259 12.823 C 141.031 12.696,140.841 12.731,140.605 12.944 C 140.423 13.110,140.221 13.245,140.158 13.245 C 140.095 13.245,139.804 13.342,139.511 13.461 C 139.218 13.580,138.851 13.703,138.694 13.735 C 137.405 14.000,136.837 14.157,136.471 14.348 C 135.438 14.886,135.267 14.948,134.805 14.948 C 134.536 14.948,134.188 15.076,134.032 15.232 C 133.876 15.388,133.551 15.516,133.311 15.516 C 133.071 15.516,132.768 15.644,132.638 15.802 C 132.460 16.015,132.336 16.035,132.148 15.879 C 131.958 15.721,131.744 15.777,131.277 16.110 C 130.937 16.353,130.518 16.527,130.348 16.498 C 130.177 16.469,129.991 16.567,129.934 16.715 C 129.877 16.863,129.210 17.172,128.451 17.403 C 127.692 17.633,126.900 17.942,126.691 18.088 C 126.482 18.234,126.171 18.354,126.000 18.354 C 125.829 18.354,125.479 18.520,125.221 18.722 C 124.961 18.927,124.590 19.048,124.387 18.995 C 124.177 18.940,123.727 19.099,123.331 19.367 C 122.952 19.625,122.597 19.791,122.543 19.736 C 122.488 19.682,122.192 19.817,121.883 20.036 C 121.575 20.256,121.143 20.435,120.923 20.435 C 120.702 20.435,120.185 20.648,119.773 20.908 C 119.361 21.168,118.958 21.383,118.878 21.385 C 118.798 21.387,117.966 21.769,117.029 22.235 C 116.093 22.701,115.172 23.082,114.983 23.083 C 114.794 23.084,114.368 23.289,114.037 23.539 C 113.705 23.789,113.117 24.124,112.729 24.284 C 112.341 24.444,111.836 24.750,111.605 24.965 C 111.172 25.369,111.017 25.422,110.449 25.364 C 110.263 25.345,109.604 25.675,108.984 26.099 C 108.364 26.522,107.767 26.868,107.657 26.868 C 107.548 26.868,106.986 27.217,106.409 27.643 C 105.732 28.143,105.231 28.384,104.995 28.322 C 104.763 28.262,104.208 28.515,103.479 29.014 C 102.847 29.447,102.189 29.886,102.016 29.991 C 101.844 30.095,101.650 30.253,101.585 30.342 C 101.520 30.431,101.290 30.448,101.075 30.380 C 100.804 30.294,100.435 30.433,99.869 30.835 C 99.421 31.154,98.845 31.562,98.591 31.743 C 98.336 31.924,97.760 32.349,97.312 32.687 C 96.863 33.025,96.412 33.302,96.309 33.302 C 96.206 33.302,96.121 33.387,96.121 33.491 C 96.121 33.595,96.032 33.680,95.924 33.680 C 95.815 33.680,95.624 33.763,95.498 33.865 C 95.372 33.966,95.019 34.252,94.713 34.501 L 94.157 34.952 94.848 35.972 C 95.229 36.533,96.117 37.818,96.824 38.829 C 97.530 39.840,98.482 41.202,98.939 41.857 C 99.396 42.511,100.152 43.600,100.618 44.276 C 101.085 44.953,101.626 45.682,101.821 45.897 C 102.016 46.112,102.176 46.351,102.176 46.428 C 102.176 46.506,102.474 46.969,102.838 47.457 C 103.690 48.598,103.846 48.816,104.594 49.902 C 105.327 50.967,108.212 55.098,108.792 55.913 C 109.014 56.225,109.932 57.545,110.832 58.846 C 111.732 60.147,112.515 61.254,112.573 61.306 C 112.631 61.358,112.934 61.783,113.246 62.252 C 113.557 62.720,113.878 63.188,113.957 63.292 C 114.786 64.376,115.421 65.277,115.421 65.371 C 115.421 65.434,115.825 66.032,116.320 66.700 C 117.956 68.911,118.920 70.264,119.016 70.484 C 119.068 70.604,119.648 71.461,120.305 72.390 C 124.511 78.336,125.354 79.540,126.329 80.984 C 126.926 81.868,127.674 82.929,127.993 83.340 C 128.311 83.751,128.657 84.236,128.761 84.418 C 128.933 84.718,130.457 86.906,132.027 89.106 C 132.367 89.582,133.022 90.525,133.484 91.202 C 133.945 91.878,134.716 92.985,135.198 93.661 C 135.680 94.338,136.301 95.232,136.580 95.648 C 136.858 96.064,137.171 96.501,137.275 96.618 C 137.379 96.736,137.574 96.991,137.707 97.186 C 137.840 97.381,138.421 98.221,138.998 99.054 C 139.575 99.886,140.190 100.801,140.364 101.087 C 140.778 101.764,141.053 101.743,142.264 100.946 C 142.817 100.581,143.341 100.326,143.427 100.380 C 143.513 100.433,143.697 100.366,143.835 100.231 C 144.299 99.780,145.901 98.770,146.152 98.770 C 146.289 98.770,146.618 98.600,146.882 98.392 C 147.147 98.184,147.483 98.013,147.628 98.013 C 147.774 98.013,148.059 97.888,148.261 97.735 C 148.463 97.583,148.726 97.455,148.846 97.452 C 148.965 97.448,149.509 97.145,150.055 96.778 C 150.600 96.411,151.089 96.153,151.140 96.205 C 151.192 96.257,151.483 96.122,151.786 95.906 C 152.118 95.670,152.519 95.548,152.792 95.600 C 153.102 95.659,153.457 95.512,153.915 95.135 C 154.284 94.831,154.661 94.630,154.754 94.687 C 154.846 94.744,155.137 94.622,155.400 94.416 C 155.663 94.209,156.064 94.040,156.292 94.040 C 156.699 94.040,156.919 93.949,158.510 93.124 C 158.950 92.896,159.546 92.677,159.835 92.638 C 160.332 92.572,161.122 92.273,162.479 91.639 C 162.812 91.484,163.157 91.402,163.247 91.457 C 163.337 91.513,163.916 91.315,164.534 91.018 C 165.152 90.721,165.730 90.547,165.818 90.631 C 165.907 90.716,166.439 90.574,167.002 90.317 C 167.565 90.059,168.344 89.809,168.733 89.762 C 169.521 89.665,170.644 89.319,170.995 89.064 C 171.120 88.973,171.298 88.945,171.391 89.002 C 171.483 89.059,171.986 88.944,172.508 88.746 C 173.207 88.480,173.512 88.441,173.668 88.597 C 173.824 88.753,173.972 88.725,174.230 88.491 C 174.423 88.317,174.760 88.174,174.980 88.174 C 175.200 88.174,175.429 88.095,175.489 87.997 C 175.549 87.900,175.894 87.869,176.255 87.927 C 176.638 87.989,177.025 87.941,177.181 87.811 C 177.329 87.688,177.822 87.566,178.277 87.539 C 178.732 87.512,179.217 87.420,179.356 87.335 C 179.494 87.249,180.025 87.157,180.536 87.129 C 181.047 87.102,181.577 86.986,181.715 86.871 C 181.852 86.757,182.016 86.715,182.079 86.778 C 182.142 86.841,182.631 86.787,183.166 86.659 C 183.701 86.530,184.664 86.406,185.305 86.382 C 185.946 86.358,186.641 86.288,186.850 86.226 C 187.397 86.063,191.399 85.731,194.229 85.613 C 198.932 85.416,201.514 85.397,201.514 85.558 C 201.514 85.654,201.635 85.665,201.783 85.582 C 201.992 85.464,204.170 85.524,206.339 85.706 C 206.505 85.720,207.806 85.733,209.555 85.737 C 209.868 85.738,210.251 85.786,210.407 85.844 C 210.703 85.954,211.110 86.005,212.895 86.157 C 213.483 86.207,214.121 86.329,214.314 86.429 C 214.507 86.528,214.771 86.571,214.901 86.524 C 215.032 86.477,216.032 86.579,217.124 86.751 C 218.216 86.922,219.182 87.017,219.271 86.962 C 219.360 86.907,219.595 86.980,219.792 87.124 C 220.057 87.317,220.216 87.331,220.402 87.177 C 220.589 87.022,220.696 87.038,220.821 87.240 C 220.913 87.390,221.141 87.528,221.327 87.547 C 221.513 87.566,222.067 87.623,222.558 87.674 C 223.049 87.725,223.519 87.808,223.603 87.860 C 223.686 87.911,224.136 88.011,224.602 88.080 C 225.068 88.150,225.542 88.284,225.656 88.378 C 225.770 88.472,225.910 88.502,225.967 88.445 C 226.024 88.388,226.570 88.486,227.179 88.664 C 227.789 88.841,228.415 89.001,228.571 89.019 C 228.728 89.037,229.111 89.160,229.423 89.293 C 229.735 89.426,230.309 89.547,230.699 89.564 C 231.089 89.580,231.408 89.657,231.409 89.735 C 231.409 89.813,231.527 89.877,231.669 89.877 C 231.812 89.877,232.329 90.054,232.818 90.270 C 233.308 90.487,233.820 90.621,233.956 90.568 C 234.093 90.516,234.380 90.596,234.594 90.746 C 234.809 90.896,235.053 90.997,235.136 90.971 C 235.220 90.944,235.544 91.016,235.856 91.130 C 236.168 91.244,236.764 91.446,237.181 91.578 C 237.597 91.710,238.273 91.977,238.683 92.172 C 239.092 92.367,239.620 92.526,239.854 92.526 C 240.089 92.526,240.333 92.611,240.397 92.715 C 240.462 92.819,240.672 92.904,240.866 92.904 C 241.059 92.904,241.246 92.970,241.280 93.049 C 241.315 93.129,242.092 93.441,243.007 93.742 C 243.922 94.043,244.740 94.414,244.825 94.566 C 244.910 94.718,245.209 94.868,245.491 94.899 C 245.772 94.930,246.657 95.268,247.457 95.650 C 248.834 96.308,249.689 96.696,250.331 96.956 C 250.487 97.020,250.870 97.234,251.183 97.434 C 251.495 97.633,251.870 97.803,252.016 97.810 C 252.162 97.818,252.561 98.037,252.902 98.297 C 253.243 98.557,253.630 98.770,253.762 98.770 C 253.893 98.770,254.317 98.989,254.704 99.257 C 255.091 99.526,255.524 99.762,255.666 99.783 C 255.808 99.804,256.191 100.010,256.516 100.242 C 256.841 100.473,257.206 100.662,257.327 100.662 C 257.449 100.662,257.667 100.769,257.812 100.899 C 258.456 101.477,258.653 101.600,259.113 101.716 C 259.382 101.783,259.603 101.966,259.603 102.122 C 259.603 102.289,259.713 102.363,259.871 102.303 C 260.018 102.246,260.183 102.314,260.236 102.453 C 260.289 102.592,260.632 102.804,260.996 102.924 C 261.361 103.045,261.982 103.439,262.376 103.799 C 262.770 104.160,263.182 104.421,263.291 104.379 C 263.401 104.336,263.783 104.590,264.139 104.942 C 264.496 105.294,264.924 105.582,265.091 105.582 C 265.258 105.582,265.962 106.050,266.656 106.623 C 267.350 107.195,268.005 107.663,268.112 107.663 C 268.219 107.663,268.307 107.748,268.307 107.852 C 268.307 107.956,268.436 108.042,268.594 108.042 C 268.753 108.042,268.979 108.254,269.098 108.515 C 269.221 108.785,269.472 108.988,269.684 108.988 C 269.887 108.988,270.385 109.329,270.790 109.746 C 271.194 110.163,271.706 110.532,271.926 110.565 C 272.147 110.599,272.441 110.832,272.581 111.084 C 272.720 111.336,272.837 111.460,272.841 111.360 C 272.845 111.261,273.167 111.516,273.557 111.928 C 274.300 112.712,274.800 113.086,275.355 113.273 C 275.537 113.334,275.686 113.449,275.686 113.528 C 275.686 113.825,277.572 115.636,277.760 115.520 C 277.868 115.453,278.135 115.702,278.353 116.072 C 278.572 116.442,278.827 116.698,278.921 116.640 C 279.015 116.582,279.258 116.817,279.462 117.162 C 279.665 117.507,280.105 117.951,280.439 118.148 C 281.049 118.508,282.687 120.109,282.687 120.345 C 282.687 120.579,283.386 121.281,283.503 121.164 C 283.567 121.101,283.720 121.271,283.844 121.542 C 283.968 121.814,284.213 122.082,284.388 122.138 C 284.564 122.193,284.820 122.449,284.957 122.706 C 285.095 122.962,285.369 123.224,285.567 123.287 C 285.765 123.349,286.020 123.606,286.135 123.857 C 286.249 124.109,286.414 124.314,286.502 124.314 C 286.589 124.314,286.660 124.442,286.660 124.598 C 286.660 124.754,286.740 124.882,286.837 124.882 C 286.934 124.882,287.066 125.048,287.130 125.250 C 287.195 125.453,287.395 125.666,287.575 125.723 C 287.755 125.781,288.042 126.062,288.213 126.348 C 288.945 127.577,289.576 128.101,289.881 127.732 C 290.035 127.546,290.416 127.253,290.728 127.080 C 291.041 126.907,291.807 126.381,292.431 125.911 C 293.056 125.441,293.716 125.007,293.898 124.947 C 294.080 124.887,294.229 124.767,294.229 124.681 C 294.229 124.595,294.437 124.413,294.691 124.277 C 295.220 123.994,297.304 122.597,297.446 122.430 C 297.498 122.369,297.753 122.176,298.013 122.002 C 298.273 121.828,298.912 121.380,299.432 121.007 C 299.953 120.634,300.712 120.108,301.120 119.839 C 301.529 119.569,302.034 119.189,302.244 118.993 C 302.454 118.798,302.730 118.638,302.858 118.638 C 302.986 118.638,303.119 118.570,303.154 118.487 C 303.188 118.404,303.898 117.873,304.730 117.306 C 305.563 116.740,306.287 116.225,306.339 116.161 C 306.391 116.097,306.807 115.798,307.263 115.497 C 308.823 114.465,309.129 114.251,310.763 113.052 C 311.192 112.738,312.053 112.146,312.677 111.736 C 313.302 111.326,313.898 110.924,314.002 110.843 C 314.520 110.440,315.959 109.416,316.457 109.096 C 316.766 108.897,317.187 108.578,317.391 108.388 C 317.596 108.197,317.848 108.042,317.952 108.042 C 318.055 108.042,318.334 107.859,318.571 107.637 C 318.808 107.414,319.161 107.138,319.356 107.022 C 319.885 106.708,321.547 105.551,323.463 104.163 C 324.399 103.484,325.302 102.866,325.469 102.789 C 325.636 102.712,326.019 102.458,326.321 102.224 C 326.622 101.991,327.252 101.502,327.720 101.138 C 328.188 100.774,328.644 100.476,328.733 100.475 C 328.822 100.474,329.163 100.259,329.490 99.997 C 329.817 99.735,330.177 99.448,330.289 99.358 C 330.401 99.268,330.860 98.950,331.308 98.651 C 331.756 98.352,332.440 97.895,332.829 97.635 C 333.217 97.375,333.902 96.917,334.350 96.619 C 334.798 96.320,335.256 95.996,335.368 95.900 C 335.608 95.694,337.379 94.421,338.282 93.806 C 338.627 93.570,339.150 93.186,339.444 92.952 C 339.738 92.718,340.066 92.526,340.172 92.526 C 340.279 92.526,340.394 92.456,340.429 92.371 C 340.488 92.225,340.999 91.856,343.992 89.798 C 344.669 89.333,345.310 88.877,345.416 88.785 C 345.523 88.692,345.864 88.454,346.173 88.255 C 346.483 88.057,347.086 87.638,347.515 87.324 C 349.323 86.002,351.509 84.476,352.195 84.057 C 352.492 83.876,353.295 83.314,353.981 82.808 C 354.667 82.303,355.425 81.799,355.665 81.690 C 356.209 81.442,356.225 80.909,355.707 80.361 C 355.489 80.131,354.905 79.342,354.408 78.606 C 351.941 74.954,351.625 74.551,351.234 74.551 C 350.972 74.551,350.426 74.114,350.426 73.903 C 350.426 73.567,348.578 71.305,348.232 71.218 C 348.005 71.161,347.506 70.660,347.123 70.104 C 346.740 69.549,346.319 69.053,346.186 69.002 C 346.053 68.951,345.633 68.440,345.253 67.866 C 344.872 67.293,344.262 66.640,343.898 66.415 C 343.534 66.189,343.236 65.944,343.236 65.869 C 343.236 65.795,342.767 65.243,342.195 64.642 C 341.623 64.042,341.154 63.478,341.154 63.389 C 341.154 63.301,340.835 63.035,340.445 62.798 C 340.054 62.561,339.661 62.246,339.571 62.098 C 339.481 61.950,339.077 61.488,338.672 61.071 C 338.268 60.655,337.938 60.245,337.938 60.160 C 337.938 60.076,337.773 59.954,337.573 59.891 C 337.372 59.827,337.035 59.481,336.822 59.121 C 336.610 58.762,336.306 58.467,336.146 58.467 C 335.987 58.467,335.856 58.382,335.856 58.278 C 335.856 58.174,335.772 58.089,335.669 58.089 C 335.566 58.089,335.162 57.736,334.771 57.304 C 333.770 56.200,332.960 55.440,332.783 55.440 C 332.588 55.440,330.937 53.717,330.937 53.514 C 330.937 53.428,330.824 53.359,330.687 53.359 C 330.550 53.359,330.151 53.103,329.801 52.791 C 329.452 52.479,329.114 52.223,329.051 52.223 C 328.988 52.223,328.786 51.968,328.602 51.656 C 328.417 51.343,328.149 51.088,328.006 51.088 C 327.863 51.088,327.691 50.918,327.625 50.710 C 327.510 50.348,327.323 50.254,326.836 50.314 C 326.713 50.329,326.559 50.169,326.492 49.958 C 326.425 49.747,326.254 49.574,326.112 49.574 C 325.970 49.574,325.676 49.325,325.458 49.019 C 325.241 48.714,324.873 48.437,324.641 48.404 C 324.409 48.371,324.135 48.153,324.033 47.919 C 323.930 47.684,323.743 47.493,323.616 47.493 C 323.490 47.493,323.319 47.380,323.236 47.242 C 323.152 47.103,322.807 46.830,322.469 46.633 C 322.131 46.437,321.854 46.209,321.854 46.128 C 321.854 46.046,321.764 45.979,321.654 45.979 C 321.544 45.979,321.037 45.543,320.526 45.010 C 319.887 44.344,319.501 44.078,319.289 44.160 C 319.083 44.239,318.950 44.158,318.886 43.916 C 318.834 43.717,318.629 43.512,318.431 43.460 C 318.232 43.408,318.070 43.239,318.070 43.084 C 318.070 42.779,317.569 42.510,317.304 42.673 C 317.214 42.729,316.817 42.432,316.422 42.012 C 316.028 41.593,315.573 41.249,315.411 41.249 C 315.250 41.249,314.654 40.842,314.087 40.345 C 313.520 39.847,312.822 39.338,312.535 39.213 C 312.249 39.089,312.015 38.899,312.015 38.793 C 312.015 38.687,311.890 38.600,311.738 38.600 C 311.586 38.600,311.366 38.423,311.250 38.207 C 311.135 37.990,310.932 37.855,310.799 37.906 C 310.667 37.957,310.232 37.708,309.834 37.353 C 309.435 36.998,308.961 36.708,308.781 36.708 C 308.601 36.708,308.243 36.457,307.985 36.151 C 307.727 35.844,307.476 35.633,307.427 35.682 C 307.379 35.731,307.231 35.641,307.099 35.482 C 306.968 35.324,306.714 35.194,306.536 35.194 C 306.358 35.194,305.964 34.941,305.661 34.632 C 305.357 34.322,304.965 34.067,304.789 34.064 C 304.614 34.061,304.200 33.812,303.870 33.510 C 303.540 33.209,303.030 32.914,302.737 32.856 C 302.443 32.797,301.882 32.427,301.488 32.034 C 301.079 31.625,300.628 31.343,300.434 31.376 C 300.247 31.408,300.095 31.343,300.095 31.232 C 300.095 31.122,299.971 31.031,299.820 31.031 C 299.669 31.031,299.463 30.883,299.361 30.702 C 299.260 30.520,299.116 30.433,299.042 30.507 C 298.890 30.659,297.824 30.087,297.824 29.855 C 297.824 29.774,297.695 29.707,297.538 29.707 C 297.142 29.707,296.529 29.332,295.890 28.700 C 295.593 28.406,295.247 28.204,295.121 28.250 C 294.995 28.296,294.636 28.145,294.324 27.915 C 294.011 27.685,293.511 27.436,293.213 27.362 C 292.914 27.289,292.546 27.105,292.395 26.954 C 292.244 26.803,291.961 26.679,291.767 26.679 C 291.572 26.679,291.360 26.593,291.295 26.488 C 291.230 26.383,290.629 26.040,289.959 25.727 C 289.290 25.414,288.742 25.075,288.742 24.973 C 288.742 24.871,288.593 24.785,288.411 24.783 C 288.228 24.781,287.867 24.612,287.606 24.409 C 287.346 24.205,286.989 24.037,286.813 24.034 C 286.637 24.032,286.440 23.944,286.375 23.838 C 286.309 23.732,286.189 23.687,286.108 23.737 C 286.027 23.787,285.775 23.655,285.547 23.443 C 285.320 23.231,285.030 23.092,284.903 23.136 C 284.777 23.179,284.546 23.071,284.390 22.896 C 284.148 22.624,283.364 22.302,282.814 22.248 C 282.727 22.240,282.540 22.073,282.397 21.878 C 282.246 21.672,282.014 21.570,281.844 21.635 C 281.683 21.697,281.552 21.665,281.552 21.565 C 281.552 21.464,281.432 21.381,281.287 21.381 C 281.141 21.381,280.537 21.126,279.943 20.814 C 279.350 20.501,278.738 20.246,278.583 20.246 C 278.429 20.246,277.698 19.948,276.958 19.584 C 276.219 19.219,275.457 18.921,275.266 18.921 C 275.074 18.921,274.868 18.794,274.808 18.638 C 274.748 18.482,274.494 18.354,274.244 18.354 C 273.994 18.354,273.641 18.279,273.460 18.187 C 273.279 18.095,272.876 17.913,272.564 17.783 C 272.252 17.653,271.826 17.473,271.618 17.383 C 271.410 17.293,271.068 17.196,270.859 17.167 C 270.650 17.138,270.269 16.968,270.013 16.788 C 269.757 16.609,269.370 16.462,269.154 16.462 C 268.938 16.462,268.680 16.394,268.581 16.312 C 268.482 16.230,267.763 15.953,266.982 15.697 C 266.202 15.441,265.535 15.168,265.500 15.090 C 265.465 15.012,265.230 14.948,264.977 14.948 C 264.724 14.948,264.369 14.873,264.189 14.781 C 263.474 14.417,262.885 14.167,262.622 14.114 C 262.470 14.084,262.219 14.011,262.062 13.952 C 261.906 13.893,261.523 13.780,261.211 13.702 C 260.899 13.624,260.601 13.546,260.549 13.529 C 260.497 13.512,260.199 13.434,259.886 13.357 C 259.310 13.213,258.639 12.958,258.044 12.655 C 257.863 12.563,257.549 12.488,257.346 12.488 C 257.142 12.488,256.929 12.413,256.873 12.321 C 256.816 12.229,256.214 12.049,255.535 11.921 C 254.856 11.792,254.253 11.611,254.195 11.517 C 254.137 11.423,254.013 11.394,253.919 11.452 C 253.825 11.510,253.494 11.426,253.184 11.266 C 252.874 11.106,252.408 10.974,252.149 10.974 C 251.890 10.974,251.632 10.901,251.577 10.811 C 251.490 10.670,251.059 10.569,249.571 10.339 C 249.413 10.314,249.194 10.239,249.085 10.171 C 248.975 10.104,248.679 10.009,248.426 9.962 C 247.537 9.795,246.829 9.596,246.641 9.460 C 246.537 9.385,246.325 9.320,246.168 9.316 C 246.012 9.312,245.246 9.168,244.465 8.996 C 243.685 8.824,242.833 8.654,242.573 8.617 C 242.313 8.581,241.845 8.451,241.533 8.330 C 241.220 8.209,240.922 8.121,240.870 8.134 C 240.596 8.206,238.851 7.878,238.653 7.718 C 238.526 7.615,237.917 7.515,237.300 7.494 C 236.683 7.474,236.043 7.345,235.878 7.208 C 235.712 7.071,235.441 7.011,235.274 7.075 C 235.107 7.139,234.872 7.128,234.751 7.051 C 234.630 6.974,234.149 6.900,233.680 6.887 C 233.212 6.874,232.573 6.753,232.261 6.618 C 231.949 6.483,231.626 6.387,231.543 6.406 C 231.460 6.424,230.524 6.303,229.462 6.136 C 228.400 5.969,227.190 5.798,226.774 5.755 C 226.358 5.713,225.634 5.632,225.166 5.576 C 224.697 5.520,223.974 5.439,223.557 5.396 C 223.141 5.354,222.800 5.309,222.800 5.296 C 222.800 5.284,222.460 5.239,222.044 5.196 C 220.557 5.042,219.570 4.935,218.638 4.825 C 217.114 4.646,215.912 4.545,214.096 4.444 C 211.620 4.306,210.155 4.179,209.893 4.078 C 209.766 4.030,209.610 4.075,209.545 4.179 C 209.481 4.282,209.244 4.308,209.019 4.235 C 208.606 4.101,206.004 4.009,202.176 3.994 C 201.031 3.989,199.924 3.983,199.716 3.979 C 198.221 3.955,194.042 3.995,193.188 4.042 C 192.616 4.074,191.977 4.044,191.769 3.977 C 191.561 3.910,191.093 3.962,190.728 4.092 \" stroke=\"none\" fill=\"#b5cb2b\" fill-rule=\"evenodd\"></path><path id=\"path8\" d=\"\" stroke=\"none\" fill=\"#55ff00\" fill-rule=\"evenodd\"></path><path id=\"path9\" d=\"M364.522 96.081 C 363.619 96.742,362.897 97.244,359.648 99.478 C 358.854 100.024,357.583 100.938,356.822 101.509 C 356.062 102.080,355.333 102.549,355.203 102.551 C 355.073 102.553,354.967 102.627,354.967 102.715 C 354.967 102.851,354.376 103.279,352.707 104.352 C 352.545 104.456,351.944 104.889,351.372 105.314 C 350.799 105.740,350.024 106.293,349.648 106.544 C 347.578 107.929,346.136 108.917,345.885 109.122 C 345.631 109.330,344.163 110.365,341.471 112.233 C 340.970 112.582,340.270 113.079,339.916 113.340 C 339.562 113.600,338.581 114.281,337.736 114.853 C 336.890 115.426,335.705 116.256,335.103 116.698 C 334.500 117.140,333.921 117.502,333.816 117.502 C 333.712 117.502,333.577 117.631,333.516 117.789 C 333.456 117.947,333.212 118.162,332.976 118.267 C 332.595 118.436,331.562 119.112,331.031 119.541 C 330.927 119.624,330.118 120.192,329.234 120.801 C 328.349 121.410,327.597 121.981,327.562 122.071 C 327.528 122.160,327.408 122.233,327.296 122.233 C 327.185 122.233,326.787 122.467,326.413 122.752 C 326.039 123.038,325.180 123.649,324.503 124.109 C 323.827 124.570,323.231 124.997,323.179 125.058 C 323.127 125.119,322.709 125.424,322.250 125.735 C 321.792 126.046,321.229 126.429,320.999 126.585 C 320.769 126.741,320.047 127.252,319.395 127.720 C 318.742 128.188,318.015 128.699,317.780 128.855 C 316.016 130.025,314.359 131.179,313.150 132.081 C 312.370 132.663,311.582 133.194,311.400 133.262 C 311.218 133.329,311.069 133.472,311.069 133.580 C 311.069 133.687,310.971 133.775,310.851 133.775 C 310.731 133.775,310.284 134.034,309.858 134.351 C 308.177 135.600,305.993 137.141,304.778 137.938 C 304.075 138.398,303.500 138.831,303.500 138.901 C 303.500 138.970,303.253 139.129,302.952 139.254 C 302.650 139.379,302.209 139.688,301.972 139.940 C 301.736 140.191,301.463 140.397,301.366 140.397 C 301.269 140.397,300.879 140.639,300.500 140.934 C 300.121 141.228,299.662 141.524,299.480 141.590 C 299.001 141.764,299.066 142.077,299.811 143.183 C 300.175 143.724,300.473 144.297,300.473 144.456 C 300.473 144.615,300.856 145.249,301.325 145.865 C 301.793 146.480,302.176 147.071,302.176 147.178 C 302.176 147.284,302.473 147.940,302.836 148.637 C 303.199 149.333,303.455 149.967,303.406 150.046 C 303.358 150.125,303.615 150.580,303.979 151.057 C 304.343 151.534,304.627 151.991,304.609 152.073 C 304.592 152.156,304.718 152.540,304.890 152.927 C 305.063 153.314,305.203 153.766,305.203 153.933 C 305.203 154.099,305.416 154.514,305.676 154.855 C 305.937 155.197,306.149 155.646,306.149 155.854 C 306.149 156.062,306.308 156.376,306.501 156.551 C 306.726 156.754,306.820 157.034,306.764 157.328 C 306.709 157.616,306.825 157.978,307.075 158.295 C 307.294 158.574,307.474 158.951,307.474 159.132 C 307.474 159.313,307.592 159.560,307.737 159.680 C 307.882 159.800,308.057 160.277,308.127 160.740 C 308.196 161.202,308.339 161.634,308.444 161.699 C 308.549 161.764,308.592 161.928,308.540 162.064 C 308.488 162.200,308.604 162.454,308.798 162.630 C 308.993 162.806,309.105 163.070,309.048 163.218 C 308.992 163.366,309.060 163.625,309.201 163.794 C 309.341 163.963,309.431 164.295,309.400 164.530 C 309.369 164.766,309.434 165.015,309.544 165.083 C 309.654 165.151,309.745 165.404,309.745 165.646 C 309.745 165.887,309.860 166.180,310.002 166.298 C 310.147 166.418,310.220 166.715,310.170 166.976 C 310.117 167.253,310.205 167.564,310.386 167.745 C 310.554 167.913,310.691 168.251,310.691 168.498 C 310.691 168.745,310.776 168.999,310.880 169.063 C 310.984 169.128,311.069 169.388,311.069 169.641 C 311.069 169.895,311.232 170.592,311.432 171.191 C 311.631 171.790,311.849 172.682,311.916 173.174 C 311.982 173.666,312.109 174.113,312.198 174.168 C 312.286 174.223,312.313 174.438,312.259 174.646 C 312.204 174.855,312.254 175.139,312.370 175.279 C 312.485 175.418,312.526 175.585,312.460 175.651 C 312.394 175.717,312.456 175.912,312.599 176.084 C 312.742 176.256,312.881 176.748,312.909 177.177 C 312.958 177.938,313.431 180.323,313.646 180.889 C 313.705 181.045,313.785 181.514,313.822 181.930 C 313.981 183.680,314.099 184.354,314.286 184.579 C 314.413 184.733,314.421 184.979,314.309 185.275 C 314.203 185.553,314.203 185.856,314.307 186.044 C 314.403 186.214,314.514 186.720,314.554 187.169 C 314.594 187.618,314.680 188.453,314.744 189.026 C 315.128 192.434,315.238 194.787,315.312 201.135 C 315.348 204.241,315.301 206.811,315.207 206.929 C 315.114 207.045,315.068 207.746,315.106 208.487 C 315.143 209.228,315.123 209.885,315.061 209.947 C 314.999 210.009,314.935 210.627,314.919 211.321 C 314.894 212.420,314.508 215.779,314.177 217.786 C 314.117 218.150,314.070 218.615,314.073 218.818 C 314.076 219.021,313.991 219.294,313.883 219.424 C 313.775 219.554,313.743 219.839,313.813 220.057 C 313.882 220.275,313.846 220.565,313.734 220.700 C 313.621 220.836,313.534 221.151,313.540 221.401 C 313.558 222.105,312.777 225.972,312.566 226.227 C 312.462 226.352,312.433 226.675,312.501 226.945 C 312.574 227.240,312.544 227.436,312.426 227.436 C 312.317 227.436,312.170 227.841,312.100 228.335 C 311.917 229.615,311.490 231.225,311.260 231.503 C 311.151 231.633,311.112 231.869,311.172 232.026 C 311.233 232.183,311.029 232.869,310.720 233.550 C 310.412 234.231,310.201 234.831,310.253 234.882 C 310.359 234.989,309.875 236.529,308.877 239.262 C 308.801 239.470,308.752 239.704,308.768 239.782 C 308.785 239.860,308.719 239.924,308.621 239.924 C 308.523 239.924,308.442 240.073,308.439 240.255 C 308.431 240.809,307.965 242.384,307.809 242.384 C 307.729 242.384,307.663 242.549,307.663 242.751 C 307.663 242.953,307.578 243.171,307.474 243.236 C 307.370 243.300,307.285 243.551,307.285 243.794 C 307.285 244.037,307.147 244.288,306.979 244.353 C 306.794 244.424,306.710 244.609,306.767 244.825 C 306.820 245.029,306.672 245.410,306.417 245.721 C 306.173 246.019,305.971 246.415,305.967 246.601 C 305.963 246.787,305.828 247.140,305.667 247.385 C 305.506 247.631,305.331 248.075,305.278 248.372 C 305.224 248.669,305.101 248.993,305.003 249.092 C 304.905 249.191,304.825 249.418,304.825 249.596 C 304.825 249.775,304.758 249.950,304.677 249.984 C 304.596 250.019,304.257 250.622,303.924 251.325 C 303.592 252.027,303.232 252.602,303.126 252.602 C 303.020 252.602,302.930 252.793,302.927 253.027 C 302.924 253.262,302.796 253.618,302.643 253.820 C 302.490 254.022,302.365 254.364,302.365 254.579 C 302.365 254.795,302.069 255.311,301.707 255.726 C 301.344 256.141,301.046 256.600,301.044 256.747 C 301.042 256.893,300.828 257.292,300.568 257.633 C 300.307 257.974,300.095 258.386,300.095 258.548 C 300.095 258.710,299.906 259.059,299.676 259.324 C 299.446 259.589,299.169 260.077,299.061 260.409 C 298.953 260.740,298.668 261.110,298.427 261.229 C 298.186 261.349,297.995 261.500,298.001 261.565 C 298.060 262.145,297.957 262.497,297.635 262.819 C 297.427 263.027,297.256 263.277,297.256 263.374 C 297.256 263.471,297.078 263.607,296.861 263.676 C 296.594 263.761,296.495 263.915,296.556 264.148 C 296.612 264.366,296.408 264.755,296.005 265.195 C 295.653 265.579,295.364 266.007,295.364 266.145 C 295.364 266.474,294.426 267.471,294.183 267.400 C 294.079 267.370,294.040 267.466,294.097 267.615 C 294.241 267.992,293.752 268.691,292.337 270.133 C 292.077 270.398,291.862 270.718,291.861 270.843 C 291.859 270.968,291.518 271.416,291.104 271.839 C 290.689 272.261,290.326 272.742,290.297 272.907 C 290.267 273.073,289.926 273.542,289.540 273.950 C 288.536 275.010,287.803 275.939,287.799 276.159 C 287.796 276.263,287.540 276.518,287.228 276.727 C 286.916 276.935,286.661 277.198,286.661 277.312 C 286.661 277.425,286.362 277.679,285.998 277.875 C 285.594 278.093,285.336 278.374,285.336 278.596 C 285.336 278.965,283.437 280.984,283.090 280.984 C 282.987 280.984,282.843 281.167,282.773 281.390 C 282.593 281.958,280.226 284.201,279.808 284.201 C 279.726 284.201,279.659 284.330,279.659 284.489 C 279.659 284.648,279.447 284.859,279.186 284.957 C 278.910 285.062,278.713 285.287,278.713 285.497 C 278.713 285.719,278.495 285.948,278.146 286.093 C 277.833 286.222,277.578 286.446,277.578 286.591 C 277.578 286.736,277.131 287.143,276.585 287.497 C 276.038 287.850,275.367 288.381,275.093 288.677 C 274.558 289.254,274.365 289.412,273.557 289.930 C 272.807 290.412,272.879 290.641,274.487 292.876 C 275.285 293.984,276.285 295.402,276.710 296.026 C 277.135 296.651,277.532 297.204,277.592 297.256 C 277.651 297.308,277.757 297.479,277.825 297.635 C 277.894 297.791,278.418 298.557,278.989 299.338 C 279.561 300.118,280.409 301.310,280.875 301.987 C 281.340 302.663,282.300 304.043,283.008 305.054 C 283.716 306.065,284.551 307.256,284.863 307.702 C 285.175 308.148,286.147 309.535,287.022 310.784 C 288.475 312.858,289.115 313.775,290.954 316.414 C 291.298 316.909,291.895 317.760,292.279 318.307 C 292.664 318.853,294.253 321.131,295.810 323.368 C 297.367 325.605,298.805 327.649,299.004 327.909 C 299.363 328.377,302.341 332.638,303.542 334.403 C 303.883 334.905,304.253 335.415,304.364 335.538 C 304.474 335.661,305.113 336.564,305.783 337.545 C 306.977 339.294,307.255 339.694,309.416 342.763 C 310.003 343.595,310.973 345.000,311.573 345.885 C 312.173 346.769,312.714 347.535,312.775 347.588 C 312.836 347.640,313.265 348.236,313.728 348.912 C 314.191 349.588,314.616 350.184,314.672 350.237 C 314.729 350.289,315.155 350.893,315.618 351.580 C 318.330 355.596,319.517 357.226,319.734 357.232 C 319.869 357.235,320.961 356.535,322.162 355.676 C 323.363 354.818,324.573 353.969,324.850 353.790 C 325.894 353.117,326.206 352.823,326.206 352.517 C 326.206 352.225,327.371 351.257,328.471 350.635 C 329.111 350.273,329.423 349.937,329.423 349.610 C 329.423 349.458,329.820 349.048,330.304 348.698 C 330.789 348.347,331.449 347.799,331.771 347.479 C 332.092 347.159,332.654 346.694,333.018 346.445 C 333.921 345.827,334.153 345.582,334.153 345.249 C 334.153 345.092,334.430 344.773,334.768 344.539 C 335.106 344.306,335.649 343.853,335.973 343.533 C 336.298 343.213,336.809 342.735,337.109 342.470 C 337.408 342.205,337.872 341.737,338.138 341.430 C 338.404 341.122,339.149 340.384,339.793 339.790 C 340.438 339.196,340.965 338.621,340.965 338.513 C 340.965 338.405,341.071 338.313,341.202 338.310 C 341.585 338.300,342.523 337.379,342.421 337.113 C 342.367 336.972,342.600 336.721,342.970 336.522 C 343.324 336.331,343.614 336.062,343.614 335.924 C 343.614 335.785,343.950 335.450,344.360 335.179 C 344.772 334.906,345.132 334.502,345.164 334.277 C 345.196 334.053,345.413 333.786,345.646 333.683 C 345.879 333.581,346.050 333.373,346.025 333.221 C 346.000 333.069,346.173 332.845,346.410 332.725 C 346.647 332.604,347.158 332.085,347.545 331.571 C 348.386 330.457,349.674 329.157,350.232 328.858 C 350.489 328.720,350.614 328.496,350.578 328.236 C 350.539 327.966,350.667 327.757,350.958 327.610 C 351.199 327.489,351.390 327.336,351.384 327.271 C 351.350 326.931,351.406 326.848,351.791 326.677 C 352.022 326.574,352.256 326.300,352.312 326.069 C 352.367 325.837,352.843 325.198,353.370 324.648 C 353.896 324.099,354.449 323.372,354.599 323.034 C 354.749 322.695,355.021 322.370,355.203 322.312 C 355.385 322.255,355.535 322.127,355.535 322.030 C 355.535 321.932,355.747 321.667,356.008 321.441 C 356.268 321.214,356.481 320.872,356.481 320.679 C 356.481 320.486,356.608 320.280,356.764 320.220 C 356.921 320.160,357.048 320.011,357.048 319.888 C 357.048 319.766,357.307 319.512,357.624 319.325 C 358.051 319.073,358.170 318.892,358.084 318.621 C 358.009 318.386,358.073 318.217,358.265 318.143 C 358.428 318.081,358.562 317.917,358.562 317.779 C 358.562 317.641,358.720 317.478,358.914 317.416 C 359.107 317.355,359.423 316.956,359.615 316.529 C 359.807 316.103,360.330 315.378,360.777 314.918 C 361.224 314.458,361.589 313.922,361.589 313.727 C 361.589 313.532,361.845 313.131,362.157 312.836 C 362.469 312.541,362.725 312.190,362.725 312.055 C 362.725 311.813,362.908 311.546,363.503 310.918 C 363.672 310.741,363.959 310.274,364.143 309.880 C 364.326 309.487,364.721 308.903,365.020 308.583 C 365.319 308.263,365.563 307.924,365.563 307.830 C 365.563 307.543,366.016 306.832,366.367 306.567 C 366.549 306.430,366.698 306.159,366.698 305.966 C 366.698 305.772,366.954 305.373,367.266 305.078 C 367.578 304.783,367.833 304.398,367.833 304.222 C 367.833 304.045,367.920 303.848,368.026 303.782 C 368.132 303.717,368.169 303.584,368.108 303.486 C 368.048 303.388,368.132 303.258,368.295 303.195 C 368.457 303.133,368.590 302.972,368.590 302.838 C 368.590 302.704,368.718 302.546,368.874 302.486 C 369.030 302.426,369.158 302.213,369.158 302.013 C 369.158 301.812,369.413 301.375,369.726 301.041 C 370.038 300.706,370.293 300.272,370.293 300.075 C 370.293 299.877,370.442 299.565,370.624 299.379 C 370.807 299.194,371.104 298.747,371.285 298.386 C 371.758 297.447,372.058 296.994,372.319 296.826 C 372.445 296.745,372.498 296.547,372.436 296.386 C 372.374 296.225,372.485 295.866,372.683 295.587 C 372.881 295.308,373.169 294.825,373.323 294.513 C 373.478 294.201,373.710 293.877,373.841 293.794 C 373.971 293.711,374.078 293.537,374.078 293.408 C 374.078 293.138,374.697 291.879,375.024 291.485 C 375.146 291.338,375.191 291.129,375.123 291.021 C 375.056 290.912,375.091 290.823,375.202 290.823 C 375.312 290.823,375.402 290.716,375.402 290.585 C 375.402 290.454,375.577 290.237,375.791 290.104 C 376.054 289.939,376.142 289.744,376.064 289.498 C 375.989 289.261,376.084 289.019,376.338 288.801 C 376.552 288.618,376.727 288.251,376.727 287.985 C 376.727 287.712,376.974 287.231,377.294 286.880 C 377.606 286.538,377.862 286.092,377.862 285.889 C 377.862 285.686,377.943 285.372,378.041 285.191 C 378.477 284.394,379.453 282.202,379.422 282.090 C 379.403 282.022,379.513 281.863,379.665 281.736 C 379.818 281.609,379.943 281.345,379.943 281.149 C 379.943 280.954,380.114 280.476,380.322 280.087 C 380.530 279.699,380.700 279.274,380.700 279.142 C 380.700 279.010,380.785 278.903,380.889 278.903 C 380.993 278.903,381.079 278.724,381.079 278.506 C 381.079 278.047,381.647 277.010,381.898 277.010 C 381.992 277.010,382.028 276.853,381.977 276.660 C 381.927 276.468,382.036 276.111,382.219 275.868 C 382.403 275.624,382.512 275.318,382.462 275.187 C 382.411 275.056,382.499 274.710,382.657 274.419 C 383.245 273.334,383.996 271.427,384.282 270.293 C 384.361 269.981,384.652 269.249,384.928 268.667 C 385.204 268.084,385.430 267.429,385.430 267.211 C 385.430 266.993,385.516 266.763,385.620 266.698 C 385.724 266.634,385.809 266.415,385.809 266.211 C 385.809 266.008,385.886 265.694,385.980 265.513 C 386.074 265.332,386.258 264.823,386.388 264.380 C 386.519 263.938,386.707 263.576,386.805 263.576 C 386.904 263.576,386.940 263.459,386.885 263.316 C 386.830 263.173,386.906 262.822,387.054 262.537 C 387.202 262.252,387.323 261.826,387.323 261.591 C 387.323 261.355,387.454 261.054,387.614 260.920 C 387.801 260.766,387.841 260.613,387.725 260.497 C 387.609 260.381,387.674 260.082,387.906 259.669 C 388.105 259.314,388.269 258.813,388.269 258.556 C 388.269 258.299,388.343 258.089,388.434 258.089 C 388.591 258.089,388.868 256.944,388.922 256.065 C 388.937 255.837,389.103 255.478,389.293 255.269 C 389.530 255.007,389.600 254.737,389.517 254.407 C 389.451 254.143,389.466 253.926,389.550 253.926 C 389.723 253.926,390.211 252.364,390.249 251.690 C 390.262 251.449,390.385 251.183,390.521 251.099 C 390.677 251.003,390.720 250.793,390.638 250.535 C 390.567 250.309,390.592 250.021,390.695 249.896 C 390.798 249.771,390.944 249.243,391.020 248.723 C 391.096 248.202,391.244 247.564,391.349 247.304 C 391.548 246.809,391.566 246.732,391.769 245.506 C 391.838 245.090,391.964 244.579,392.049 244.371 C 392.134 244.163,392.388 243.013,392.613 241.816 C 392.838 240.620,393.106 239.486,393.209 239.298 C 393.311 239.109,393.345 238.797,393.284 238.604 C 393.223 238.411,393.246 238.208,393.336 238.153 C 393.425 238.097,393.513 237.532,393.530 236.896 C 393.551 236.140,393.664 235.638,393.855 235.446 C 394.088 235.213,394.101 235.098,393.917 234.876 C 393.761 234.688,393.750 234.556,393.882 234.470 C 393.990 234.400,394.127 233.798,394.186 233.133 C 394.244 232.468,394.397 231.860,394.524 231.781 C 394.653 231.701,394.709 231.457,394.650 231.232 C 394.592 231.008,394.625 230.553,394.725 230.219 C 394.824 229.885,394.939 229.101,394.979 228.477 C 395.020 227.852,395.111 227.193,395.182 227.010 C 395.252 226.828,395.259 226.545,395.196 226.382 C 395.133 226.218,395.158 225.941,395.252 225.767 C 395.402 225.486,395.487 224.840,395.766 221.854 C 395.805 221.438,395.878 220.501,395.928 219.773 C 395.978 219.044,396.094 217.938,396.186 217.313 C 396.277 216.689,396.334 215.752,396.313 215.232 C 396.291 214.711,396.347 213.859,396.435 213.337 C 396.524 212.815,396.599 211.794,396.602 211.067 C 396.610 208.737,396.636 208.326,396.777 208.325 C 396.871 208.325,396.878 201.377,396.790 196.121 C 396.769 194.872,396.807 193.710,396.875 193.539 C 396.943 193.367,396.907 193.170,396.796 193.101 C 396.674 193.026,396.640 192.687,396.709 192.255 C 396.778 191.822,396.743 191.483,396.622 191.408 C 396.490 191.326,396.479 191.127,396.589 190.836 C 396.683 190.590,396.721 190.350,396.674 190.303 C 396.576 190.205,396.385 187.540,396.367 185.998 C 396.360 185.426,396.305 184.872,396.244 184.768 C 396.184 184.664,396.160 184.342,396.190 184.051 C 396.239 183.590,396.147 182.655,395.738 179.470 C 395.685 179.054,395.606 178.353,395.564 177.914 C 395.521 177.474,395.422 177.009,395.343 176.882 C 395.264 176.754,395.177 176.305,395.149 175.884 C 395.016 173.868,394.930 173.107,394.822 173.000 C 394.758 172.935,394.796 172.774,394.906 172.641 C 395.045 172.474,395.046 172.286,394.912 172.035 C 394.805 171.835,394.674 171.230,394.621 170.691 C 394.569 170.151,394.471 169.622,394.404 169.514 C 394.337 169.406,394.242 168.921,394.191 168.436 C 394.140 167.950,394.023 167.411,393.929 167.236 C 393.836 167.061,393.810 166.666,393.871 166.358 C 393.934 166.044,393.895 165.744,393.783 165.674 C 393.673 165.606,393.628 165.434,393.682 165.292 C 393.737 165.150,393.682 164.972,393.559 164.896 C 393.392 164.793,393.397 164.722,393.579 164.609 C 393.770 164.491,393.756 164.362,393.512 163.989 C 393.342 163.730,393.123 162.868,393.024 162.074 C 392.925 161.279,392.742 160.505,392.616 160.354 C 392.490 160.202,392.434 159.897,392.492 159.676 C 392.549 159.456,392.517 159.115,392.419 158.919 C 392.322 158.722,392.163 158.403,392.067 158.208 C 391.958 157.989,391.959 157.786,392.068 157.677 C 392.178 157.566,392.072 157.073,391.788 156.374 C 391.521 155.716,391.370 155.042,391.426 154.752 C 391.478 154.478,391.428 154.197,391.314 154.126 C 391.200 154.056,391.107 153.791,391.107 153.537 C 391.107 153.283,391.020 153.075,390.914 153.075 C 390.804 153.075,390.771 152.876,390.837 152.612 C 390.901 152.358,390.884 152.039,390.799 151.903 C 390.613 151.605,390.572 151.468,390.416 150.615 C 390.349 150.251,390.179 149.776,390.038 149.559 C 389.897 149.343,389.830 149.117,389.890 149.057 C 389.949 148.997,389.833 148.608,389.632 148.191 C 389.422 147.756,389.330 147.330,389.415 147.191 C 389.500 147.054,389.448 146.782,389.295 146.564 C 389.147 146.352,389.026 146.038,389.026 145.866 C 389.026 145.693,388.902 145.450,388.750 145.324 C 388.528 145.140,388.519 145.021,388.703 144.708 C 388.882 144.404,388.881 144.303,388.694 144.236 C 388.564 144.189,388.458 143.949,388.458 143.704 C 388.458 143.459,388.372 143.205,388.268 143.141 C 388.164 143.076,388.126 142.830,388.186 142.595 C 388.252 142.328,388.181 142.074,387.997 141.921 C 387.834 141.786,387.701 141.547,387.701 141.390 C 387.701 141.233,387.538 140.839,387.338 140.514 C 387.138 140.190,386.919 139.541,386.851 139.073 C 386.784 138.605,386.603 138.027,386.450 137.790 C 386.297 137.553,386.216 137.288,386.270 137.201 C 386.324 137.113,386.201 136.892,385.998 136.708 C 385.744 136.478,385.680 136.282,385.793 136.081 C 385.904 135.881,385.779 135.459,385.399 134.757 C 385.092 134.190,384.879 133.626,384.926 133.504 C 384.973 133.382,384.880 132.988,384.718 132.630 C 384.557 132.271,384.440 131.908,384.459 131.823 C 384.477 131.738,384.320 131.450,384.110 131.183 C 383.900 130.915,383.728 130.577,383.728 130.431 C 383.728 130.286,383.590 129.957,383.423 129.702 C 383.255 129.446,383.170 129.103,383.232 128.939 C 383.296 128.774,383.138 128.335,382.875 127.948 C 382.615 127.566,382.403 127.140,382.403 127.000 C 382.403 126.861,382.270 126.614,382.108 126.452 C 381.946 126.290,381.861 126.033,381.920 125.880 C 381.979 125.728,381.824 125.207,381.577 124.722 C 380.852 123.303,380.533 122.554,380.394 121.949 C 380.322 121.637,380.107 121.178,379.914 120.930 C 379.722 120.682,379.565 120.374,379.565 120.247 C 379.565 120.119,379.352 119.701,379.092 119.318 C 378.832 118.935,378.619 118.538,378.619 118.436 C 378.619 118.335,378.419 117.934,378.175 117.546 C 377.932 117.158,377.770 116.728,377.817 116.590 C 377.864 116.453,377.638 115.915,377.314 115.395 C 376.991 114.875,376.727 114.349,376.727 114.225 C 376.727 114.102,376.429 113.582,376.064 113.069 C 375.678 112.526,375.402 111.912,375.402 111.595 C 375.402 111.297,375.318 110.950,375.216 110.825 C 374.244 109.633,374.008 109.282,373.987 108.999 C 373.974 108.818,373.611 108.155,373.181 107.525 C 372.718 106.846,372.435 106.236,372.486 106.028 C 372.540 105.806,372.151 105.091,371.429 104.088 C 370.665 103.028,370.321 102.386,370.393 102.159 C 370.463 101.939,370.213 101.415,369.688 100.680 C 369.240 100.055,368.491 98.980,368.023 98.292 C 365.775 94.991,365.903 95.072,364.522 96.081 \" stroke=\"none\" fill=\"#d1dc31\" fill-rule=\"evenodd\"></path><path id=\"path10\" d=\"\" stroke=\"none\" fill=\"#99ff33\" fill-rule=\"evenodd\"></path><path id=\"path11\" d=\"M85.380 215.516 C 85.380 215.880,85.419 216.029,85.466 215.847 C 85.514 215.665,85.514 215.367,85.466 215.184 C 85.419 215.002,85.380 215.151,85.380 215.516 \" stroke=\"none\" fill=\"#ffff00\" fill-rule=\"evenodd\"></path></g>\n</svg>;\n\nexport default icons;","// Dependencies\nimport { createNggEditComponent } from './edit.min'\nimport icons from './icons.min';\n\nconst { __ } \t\t\t\t\t = wp.i18n\nconst { RawHTML } \t = wp.element\nconst { registerBlockType } = wp.blocks\nconst { withSelect} = wp.data\nconst { omit } = lodash\nconst { memo } = React\n\n// Provides a higher order component that is aware when the freeform block becomes available\nconst withFreeform = withSelect((select, props) => {\n return {\n Freeform: select('core/blocks').getBlockType('core/freeform')\n }\n})\n\n// When the freeform block is available, we create our edit component for NGG and render it\nconst edit = withFreeform(memo(props => {\n props.isSelected = true\n const editProps = omit(props, ['Freeform'])\n const NggEdit = createNggEditComponent(jQuery, props.Freeform.edit)\n return <NggEdit {...editProps}/>\n}))\n\n// Register our block\nregisterBlockType('imagely/nextgen-gallery', {\n\n title: __('NextGEN Gallery'),\n\n desription: __('A block for adding NextGEN Galleries.'),\n\n icon: icons.nextgen,\n\n category: 'common',\n\n attributes: {\n content: {\n type: 'string',\n source: 'html',\n },\n },\n\n supports: {\n className: false,\n customClassName: false,\n },\n\n edit,\n\n save( { attributes } ) {\n const { content } = attributes;\n return <RawHTML>{ content }</RawHTML>\n },\n});\n\n\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/edit.min.js","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/icons.min.js","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/block.min.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","wp","i18n","__","createNggEditComponent","memoize","lodash","$","Freeform","_Freeform","NggEditor","props","_this","_classCallCheck","this","_possibleConstructorReturn","_getPrototypeOf","openIGW","_assertThisInitialized","updateContent","hasGallery","toggleAddGalleryBtn","_inherits","_createClass","attributes","content","length","_get","ref","addClass","siblings","hide","removeClass","show","setAttributes","editor","on","_ref","shortcode","execCommand","React","createElement","className","onClick","ngg_tinymce_plugin","button_label","icons","nextgen","xmlns","version","viewBox","width","height","fill","RawHTML","element","registerBlockType","blocks","withSelect","data","omit","memo","edit","select","getBlockType","withFreeform","editProps","NggEdit","jQuery","_extends","isSelected","title","desription","icon","category","type","source","supports","customClassName","save"],"mappings":"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","file":"block.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","const { __ } = wp.i18n;\nconst { memoize } = lodash\n\n// Given jQuery and the Freeform block settings, creates the Ngg Editor Component\nexport const createNggEditComponent = memoize(($, Freeform) => {\n class NggEditor extends Freeform {\n constructor(props) {\n super(props)\n this.openIGW = this.openIGW.bind(this)\n this.updateContent = this.updateContent.bind(this)\n this.hasGallery = this.hasGallery.bind(this)\n this.toggleAddGalleryBtn= this.toggleAddGalleryBtn.bind(this)\n }\n\n hasGallery() {\n return this.props.attributes.content && this.props.attributes.content.length > 0\n }\n\n componentDidMount() {\n super.componentDidMount()\n $(this.ref).addClass('freeform-toolbar').addClass('ngg-freeform-toolbar')\n this.toggleAddGalleryBtn();\n\n }\n\n componentDidUpdate() {\n this.toggleAddGalleryBtn();\n }\n\n toggleAddGalleryBtn() {\n // Determine the UI state\n if (this.props.attributes.content) {\n $(this.ref).addClass('hidden');\n $(this.ref).siblings('.add-ngg-gallery-wrap').hide()\n }\n else {\n $(this.ref).removeClass('hidden');\n $(this.ref).siblings('.add-ngg-gallery-wrap').show()\n }\n }\n\n updateContent(content) {\n this.props.setAttributes({content}) \n }\n\n onSetup(editor){\n super.onSetup(editor);\n const updateContent = this.updateContent.bind(this)\n\n // When NGG is added or removed, we must set the classic \"content\" attribute, \n // which will re-render our component\n editor.on('ngg-removed', () => updateContent(\"\"))\n editor.on('ngg-inserted', ({shortcode}) => updateContent(shortcode))\n }\n\n openIGW() {\n this.editor.execCommand('ngg_attach_to_post')\n }\n\n render(){\n const classic = super.render()\n return [\n classic,\n <div className=\"add-ngg-gallery-wrap\">\n <div className=\"add-ngg-gallery\" onClick={this.openIGW}>\n {ngg_tinymce_plugin.i18n.button_label}\n </div>\n </div>\n ]\n }\n }\n\n return NggEditor\n})","const icons = {};\n\nicons.nextgen =\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" viewBox=\"0 0 240 240\" width=\"240.0pt\" height=\"240.0pt\">\n<path d=\"M 0.00 0.00 L 240.00 0.00 L 240.00 240.00 L 0.00 240.00 L 0.00 0.00 Z\" fill=\"#ffffff\" />\n<path d=\"M 116.97 3.45 C 155.78 2.17 194.29 21.78 215.90 54.07 C 226.92 70.43 234.08 89.34 236.07 109.00 C 239.08 140.20 228.61 172.42 208.14 196.12 C 191.73 215.41 168.66 228.79 143.97 234.16 C 125.25 238.08 105.37 237.44 87.04 231.86 C 67.00 226.07 48.82 214.65 34.69 199.32 C 14.08 177.26 2.88 147.13 3.50 117.00 C 4.36 95.58 10.72 74.49 22.55 56.55 C 35.03 37.69 52.63 22.36 73.52 13.50 C 87.07 6.87 101.94 3.80 116.97 3.45 Z\" fill=\"#9fbb1a\" />\n<path d=\"M 69.17 61.47 C 70.78 61.56 72.37 61.91 73.97 62.05 C 80.30 62.27 86.66 62.04 93.00 62.14 C 96.81 62.23 100.65 61.35 104.18 62.75 C 108.45 64.30 111.62 68.44 111.67 73.03 C 111.78 81.35 111.66 89.68 111.72 98.00 C 111.65 101.03 111.87 104.65 110.30 107.35 C 108.22 110.91 104.17 113.41 100.02 113.40 C 90.68 113.43 81.33 113.42 71.99 113.40 C 65.66 113.41 59.85 108.54 59.66 102.04 C 59.55 92.36 59.70 82.67 59.58 72.99 C 59.41 67.44 63.60 62.15 69.17 61.47 Z\" fill=\"#ffffff\" />\n<path d=\"M 138.98 61.27 C 148.33 61.42 157.69 61.22 167.04 61.37 C 173.28 61.31 178.81 66.69 178.70 72.96 C 178.72 82.65 178.75 92.34 178.68 102.02 C 178.48 108.28 173.18 112.96 167.02 113.04 C 157.69 113.25 148.33 113.02 138.99 113.15 C 132.77 113.56 126.76 108.35 126.66 102.04 C 126.55 94.37 126.67 86.68 126.62 79.00 C 126.63 76.33 126.42 73.60 126.72 70.94 C 127.60 65.24 133.25 60.88 138.98 61.27 Z\" fill=\"#ffffff\" />\n<path d=\"M 70.97 72.97 C 80.41 72.70 89.87 72.92 99.31 72.86 C 99.39 82.36 99.34 91.87 99.34 101.38 C 89.85 101.36 80.36 101.42 70.87 101.35 C 70.90 91.90 70.70 82.42 70.97 72.97 Z\" fill=\"#9fbb1a\" />\n<path d=\"M 138.39 72.91 C 147.80 72.79 157.23 72.85 166.65 72.88 C 166.65 82.41 166.85 91.97 166.55 101.49 C 157.18 101.27 147.79 101.39 138.41 101.42 C 138.30 91.92 138.36 82.41 138.39 72.91 Z\" fill=\"#9fbb1a\" />\n<path d=\"M 69.96 128.72 C 77.95 128.35 86.00 128.68 94.00 128.66 C 97.84 128.75 101.40 128.12 104.93 129.93 C 109.12 131.86 111.63 136.43 111.39 141.00 C 111.31 150.34 111.48 159.70 111.31 169.04 C 111.25 175.45 105.33 180.72 99.01 180.44 C 90.00 180.43 81.00 180.42 71.99 180.44 C 67.16 180.64 62.37 177.99 60.28 173.57 C 59.04 171.04 59.32 167.76 59.27 165.00 C 59.38 156.70 59.15 148.39 59.37 140.10 C 59.59 134.25 64.10 129.27 69.96 128.72 Z\" fill=\"#ffffff\" />\n<path d=\"M 137.96 128.68 C 146.96 128.36 156.00 128.45 165.00 128.61 C 167.68 128.64 170.26 129.00 172.61 130.36 C 176.44 132.46 178.51 136.68 178.41 140.99 C 178.39 150.33 178.47 159.67 178.37 169.01 C 178.48 174.84 173.95 180.48 167.95 180.68 C 159.31 180.89 150.65 180.67 142.00 180.78 C 139.64 180.74 137.05 180.91 134.76 180.27 C 129.71 178.66 126.48 173.17 126.62 168.01 C 126.61 161.01 126.64 154.00 126.62 147.00 C 126.71 143.40 126.11 139.00 127.75 135.73 C 129.57 131.70 133.51 128.85 137.96 128.68 Z\" fill=\"#ffffff\" />\n<path d=\"M 70.98 140.01 C 80.41 139.71 89.87 139.94 99.31 139.89 C 99.40 149.41 99.33 158.93 99.35 168.45 C 89.85 168.43 80.36 168.47 70.86 168.42 C 70.91 158.96 70.69 149.47 70.98 140.01 Z\" fill=\"#9fbb1a\" />\n<path d=\"M 138.45 140.41 C 147.84 140.29 157.27 140.44 166.67 140.35 C 166.70 149.82 166.71 159.29 166.67 168.77 C 157.24 168.71 147.81 168.71 138.38 168.77 C 138.39 159.32 138.24 149.85 138.45 140.41 Z\" fill=\"#9fbb1a\" />\n</svg>\n\nexport default icons;","// Dependencies\nimport { createNggEditComponent } from './edit.min'\nimport icons from './icons.min';\n\nconst { __ } \t\t\t\t\t = wp.i18n\nconst { RawHTML } \t = wp.element\nconst { registerBlockType } = wp.blocks\nconst { withSelect} = wp.data\nconst { omit } = lodash\nconst { memo } = React\n\n// Provides a higher order component that is aware when the freeform block becomes available\nconst withFreeform = withSelect((select, props) => {\n return {\n Freeform: select('core/blocks').getBlockType('core/freeform')\n }\n})\n\n// When the freeform block is available, we create our edit component for NGG and render it\nconst edit = withFreeform(memo(props => {\n const editProps = omit(props, ['Freeform'])\n const NggEdit = createNggEditComponent(jQuery, props.Freeform.edit)\n return <NggEdit {...editProps} isSelected={true}/>\n}))\n\n// Register our block\nregisterBlockType('imagely/nextgen-gallery', {\n\n title: __('NextGEN Gallery'),\n\n desription: __('A block for adding NextGEN Galleries.'),\n\n icon: icons.nextgen,\n\n category: 'common',\n\n attributes: {\n content: {\n type: 'string',\n source: 'html',\n },\n },\n\n supports: {\n className: false,\n customClassName: false,\n },\n\n edit,\n\n save( { attributes } ) {\n const { content } = attributes;\n return <RawHTML>{ content }</RawHTML>\n },\n});\n\n\n"],"sourceRoot":""} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/post-thumbnail.min.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/post-thumbnail.min.js index 79a6c1070..3529438a1 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/post-thumbnail.min.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/post-thumbnail.min.js @@ -1,2 +1,2 @@ -!function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=3)}([function(t,e,r){(function(t){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=function(t){function e(){this.fetch=!1}return e.prototype=t,new e}("undefined"!=typeof self?self:this);(function(t){!function(t){if(!t.fetch){var e={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};if(e.arrayBuffer)var r=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],n=function(t){return t&&DataView.prototype.isPrototypeOf(t)},o=ArrayBuffer.isView||function(t){return t&&r.indexOf(Object.prototype.toString.call(t))>-1};f.prototype.append=function(t,e){t=s(t),e=u(e);var r=this.map[t];this.map[t]=r?r+","+e:e},f.prototype.delete=function(t){delete this.map[s(t)]},f.prototype.get=function(t){return t=s(t),this.has(t)?this.map[t]:null},f.prototype.has=function(t){return this.map.hasOwnProperty(s(t))},f.prototype.set=function(t,e){this.map[s(t)]=u(e)},f.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},f.prototype.keys=function(){var t=[];return this.forEach(function(e,r){t.push(r)}),c(t)},f.prototype.values=function(){var t=[];return this.forEach(function(e){t.push(e)}),c(t)},f.prototype.entries=function(){var t=[];return this.forEach(function(e,r){t.push([r,e])}),c(t)},e.iterable&&(f.prototype[Symbol.iterator]=f.prototype.entries);var i=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];m.prototype.clone=function(){return new m(this,{body:this._bodyInit})},y.call(m.prototype),y.call(g.prototype),g.prototype.clone=function(){return new g(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new f(this.headers),url:this.url})},g.error=function(){var t=new g(null,{status:0,statusText:""});return t.type="error",t};var a=[301,302,303,307,308];g.redirect=function(t,e){if(-1===a.indexOf(e))throw new RangeError("Invalid status code");return new g(null,{status:e,headers:{location:t}})},t.Headers=f,t.Request=m,t.Response=g,t.fetch=function(t,r){return new Promise(function(n,o){var i=new m(t,r),a=new XMLHttpRequest;a.onload=function(){var t={status:a.status,statusText:a.statusText,headers:function(t){var e=new f;return t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var r=t.split(":"),n=r.shift().trim();if(n){var o=r.join(":").trim();e.append(n,o)}}),e}(a.getAllResponseHeaders()||"")};t.url="responseURL"in a?a.responseURL:t.headers.get("X-Request-URL");var e="response"in a?a.response:a.responseText;n(new g(e,t))},a.onerror=function(){o(new TypeError("Network request failed"))},a.ontimeout=function(){o(new TypeError("Network request failed"))},a.open(i.method,i.url,!0),"include"===i.credentials?a.withCredentials=!0:"omit"===i.credentials&&(a.withCredentials=!1),"responseType"in a&&e.blob&&(a.responseType="blob"),i.headers.forEach(function(t,e){a.setRequestHeader(e,t)}),a.send(void 0===i._bodyInit?null:i._bodyInit)})},t.fetch.polyfill=!0}function s(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function u(t){return"string"!=typeof t&&(t=String(t)),t}function c(t){var r={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return e.iterable&&(r[Symbol.iterator]=function(){return r}),r}function f(t){this.map={},t instanceof f?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function l(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function p(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function d(t){var e=new FileReader,r=p(e);return e.readAsArrayBuffer(t),r}function h(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function y(){return this.bodyUsed=!1,this._initBody=function(t){if(this._bodyInit=t,t)if("string"==typeof t)this._bodyText=t;else if(e.blob&&Blob.prototype.isPrototypeOf(t))this._bodyBlob=t;else if(e.formData&&FormData.prototype.isPrototypeOf(t))this._bodyFormData=t;else if(e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t))this._bodyText=t.toString();else if(e.arrayBuffer&&e.blob&&n(t))this._bodyArrayBuffer=h(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!e.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(t)&&!o(t))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=h(t)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},e.blob&&(this.blob=function(){var t=l(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?l(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(d)}),this.text=function(){var t=l(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,r=p(e);return e.readAsText(t),r}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n<e.length;n++)r[n]=String.fromCharCode(e[n]);return r.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},e.formData&&(this.formData=function(){return this.text().then(b)}),this.json=function(){return this.text().then(JSON.parse)},this}function m(t,e){var r=(e=e||{}).body;if(t instanceof m){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new f(t.headers)),this.method=t.method,this.mode=t.mode,r||null==t._bodyInit||(r=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||"omit",!e.headers&&this.headers||(this.headers=new f(e.headers)),this.method=function(t){var e=t.toUpperCase();return i.indexOf(e)>-1?e:t}(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function b(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),o=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function g(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new f(e.headers),this.url=e.url||"",this._initBody(t)}}(void 0!==t?t:this)}).call(r,void 0);var n=r.fetch;n.Response=r.Response,n.Request=r.Request,n.Headers=r.Headers;"object"===e(t)&&t.exports&&(t.exports=n,t.exports.default=n)}).call(this,r(2)(t))},function(t,e){function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports="object"==("undefined"==typeof self?"undefined":r(self))?self.FormData:window.FormData},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,r){"use strict";r.r(e);var n=r(0),o=r.n(n),i=r(1),a=r.n(i);function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),n.forEach(function(e){g(t,e,r[e])})}return t}function c(){return(c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t}).apply(this,arguments)}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function p(t,e,r){return e&&l(t.prototype,e),r&&l(t,r),t}function d(t,e){return!e||"object"!==s(e)&&"function"!=typeof e?b(t):e}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function y(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}function m(t,e){return(m=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function b(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function g(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var w=wp.element,v=w.Fragment,_=w.Component,P=wp.data,O=P.withSelect,E=P.withDispatch,x=wp.compose.compose,T=wp.components.Button,S=wp.i18n.__,j=lodash.property,A=function(t){function e(){var t,r;f(this,e);for(var n=arguments.length,i=new Array(n),s=0;s<n;s++)i[s]=arguments[s];return g(b(b(r=d(this,(t=h(e)).call.apply(t,[this].concat(i))))),"state",{image_url:null,msg:S("Loading...")}),g(b(b(r)),"updateImageUrl",function(){r.getImageUrl(r.props.image_id).then(function(t){return r.setState({image_url:t})}).catch(function(t){return console.log(t)&&r.setState({msg:S("Could not load image")})})}),g(b(b(r)),"getImageUrl",function(t){var e=new a.a;return e.append("action","get_image"),e.append("image_id",t),o()(photocrati_ajax.url,{method:"POST",body:e,headers:{Accept:"application/json"}}).then(function(t){return t.json()}).then(j("image.image_url"))}),r}return y(e,_),p(e,[{key:"componentDidUpdate",value:function(t){this.props.image_id!=t.image_id&&this.updateImageUrl()}},{key:"componentDidMount",value:function(){this.updateImageUrl()}},{key:"render",value:function(){var t=this.state.msg,e=this.state.image_url?React.createElement("img",{src:this.state.image_url}):React.createElement("span",null,t);return React.createElement("div",{style:{paddingTop:"5px",paddingBottom:"5px"}},e)}}]),e}(),B=function(t){function e(){var t,r;f(this,e);for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];return g(b(b(r=d(this,(t=h(e)).call.apply(t,[this].concat(o))))),"handleOpenClick",function(t){var e=r.props.currentPostId;top.set_ngg_post_thumbnail=r.onUpdatePostThumbnail,tb_show("Set NextGEN Featured Image",ngg_featured_image.modal_url.replace(/%post_id%/,e))}),g(b(b(r)),"handleRemoveClick",function(t){r.props.onRemoveNggPostThumbnail()}),g(b(b(r)),"onUpdatePostThumbnail",function(t){tb_remove(),r.props.onSetNggPostThumbnail(parseInt(t))}),r}return y(e,_),p(e,[{key:"render",value:function(){var t=this.props,e=t.PostFeaturedImage,r=t.nggPostThumbnailId;return React.createElement(v,null,!r&&React.createElement(e,this.props),React.createElement(T,{style:{marginTop:"10px"},onClick:this.handleOpenClick,className:"editor-post-featured-image__toggle"},S("Set NextGEN Featured Image")),r>0&&React.createElement("div",null,React.createElement(A,{image_id:r}),React.createElement(T,{onClick:this.handleRemoveClick,className:"is-link is-destructive"},S("Remove featured image"))))}}]),e}(),R=O(function(t){var e=t("core/editor"),r=e.getCurrentPostId,n=e.getEditedPostAttribute,o=n("featured_media"),i=n("meta").ngg_post_thumbnail;return{currentPostId:r(),featuredImageId:o,nggPostThumbnailId:i}}),I=E(function(t){var e=t("core/editor").editPost;return{onSetNggPostThumbnail:function(t){var r=wp.data.select("core/editor").getEditedPostAttribute("meta");r.ngg_post_thumbnail=t,e(u({},r,{meta:r}))},onRemoveNggPostThumbnail:function(){var t=wp.data.select("core/editor").getEditedPostAttribute("meta");t.ngg_post_thumbnail=0,t.featured_media=0,e(u({},t,{meta:t}))}}}),U=function(t){return x(R,I)(function(t){return function(e){return React.createElement(B,c({PostFeaturedImage:t},e))}}(t))},D=lodash.memoize,F={get:function(t,e){return"isProxy"==e||("PostFeaturedImage"==e?U(function(t){return D(function(e){return t[e]})}(t)(e)):t[e])}},k={get:function(t,e){return"editor"==e&&(console.log(t[e]),t[e]&&!t[e].isProxy&&(t[e]=new Proxy(t[e],F))),t[e]},set:function(t,e,r){return"editor"!=e||r.isProxy||(r=new Proxy(r,F)),t[e]=r,r}};window.wp=new Proxy(wp,k)}]); +!function(t){var e={};function r(n){if(e[n])return e[n].exports;var o=e[n]={i:n,l:!1,exports:{}};return t[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=3)}([function(t,e,r){(function(t){function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var r=function(t){function e(){this.fetch=!1}return e.prototype=t,new e}("undefined"!=typeof self?self:this);(function(t){!function(t){if(!t.fetch){var e={searchParams:"URLSearchParams"in t,iterable:"Symbol"in t&&"iterator"in Symbol,blob:"FileReader"in t&&"Blob"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),formData:"FormData"in t,arrayBuffer:"ArrayBuffer"in t};if(e.arrayBuffer)var r=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],n=function(t){return t&&DataView.prototype.isPrototypeOf(t)},o=ArrayBuffer.isView||function(t){return t&&r.indexOf(Object.prototype.toString.call(t))>-1};f.prototype.append=function(t,e){t=s(t),e=u(e);var r=this.map[t];this.map[t]=r?r+","+e:e},f.prototype.delete=function(t){delete this.map[s(t)]},f.prototype.get=function(t){return t=s(t),this.has(t)?this.map[t]:null},f.prototype.has=function(t){return this.map.hasOwnProperty(s(t))},f.prototype.set=function(t,e){this.map[s(t)]=u(e)},f.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},f.prototype.keys=function(){var t=[];return this.forEach(function(e,r){t.push(r)}),c(t)},f.prototype.values=function(){var t=[];return this.forEach(function(e){t.push(e)}),c(t)},f.prototype.entries=function(){var t=[];return this.forEach(function(e,r){t.push([r,e])}),c(t)},e.iterable&&(f.prototype[Symbol.iterator]=f.prototype.entries);var i=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];m.prototype.clone=function(){return new m(this,{body:this._bodyInit})},y.call(m.prototype),y.call(g.prototype),g.prototype.clone=function(){return new g(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new f(this.headers),url:this.url})},g.error=function(){var t=new g(null,{status:0,statusText:""});return t.type="error",t};var a=[301,302,303,307,308];g.redirect=function(t,e){if(-1===a.indexOf(e))throw new RangeError("Invalid status code");return new g(null,{status:e,headers:{location:t}})},t.Headers=f,t.Request=m,t.Response=g,t.fetch=function(t,r){return new Promise(function(n,o){var i=new m(t,r),a=new XMLHttpRequest;a.onload=function(){var t={status:a.status,statusText:a.statusText,headers:function(t){var e=new f;return t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var r=t.split(":"),n=r.shift().trim();if(n){var o=r.join(":").trim();e.append(n,o)}}),e}(a.getAllResponseHeaders()||"")};t.url="responseURL"in a?a.responseURL:t.headers.get("X-Request-URL");var e="response"in a?a.response:a.responseText;n(new g(e,t))},a.onerror=function(){o(new TypeError("Network request failed"))},a.ontimeout=function(){o(new TypeError("Network request failed"))},a.open(i.method,i.url,!0),"include"===i.credentials?a.withCredentials=!0:"omit"===i.credentials&&(a.withCredentials=!1),"responseType"in a&&e.blob&&(a.responseType="blob"),i.headers.forEach(function(t,e){a.setRequestHeader(e,t)}),a.send(void 0===i._bodyInit?null:i._bodyInit)})},t.fetch.polyfill=!0}function s(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function u(t){return"string"!=typeof t&&(t=String(t)),t}function c(t){var r={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return e.iterable&&(r[Symbol.iterator]=function(){return r}),r}function f(t){this.map={},t instanceof f?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function l(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function p(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function d(t){var e=new FileReader,r=p(e);return e.readAsArrayBuffer(t),r}function h(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function y(){return this.bodyUsed=!1,this._initBody=function(t){if(this._bodyInit=t,t)if("string"==typeof t)this._bodyText=t;else if(e.blob&&Blob.prototype.isPrototypeOf(t))this._bodyBlob=t;else if(e.formData&&FormData.prototype.isPrototypeOf(t))this._bodyFormData=t;else if(e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t))this._bodyText=t.toString();else if(e.arrayBuffer&&e.blob&&n(t))this._bodyArrayBuffer=h(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer]);else{if(!e.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(t)&&!o(t))throw new Error("unsupported BodyInit type");this._bodyArrayBuffer=h(t)}else this._bodyText="";this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):e.searchParams&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},e.blob&&(this.blob=function(){var t=l(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?l(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(d)}),this.text=function(){var t=l(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,r=p(e);return e.readAsText(t),r}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n<e.length;n++)r[n]=String.fromCharCode(e[n]);return r.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},e.formData&&(this.formData=function(){return this.text().then(b)}),this.json=function(){return this.text().then(JSON.parse)},this}function m(t,e){var r=(e=e||{}).body;if(t instanceof m){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,e.headers||(this.headers=new f(t.headers)),this.method=t.method,this.mode=t.mode,r||null==t._bodyInit||(r=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=e.credentials||this.credentials||"omit",!e.headers&&this.headers||(this.headers=new f(e.headers)),this.method=function(t){var e=t.toUpperCase();return i.indexOf(e)>-1?e:t}(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function b(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),o=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function g(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new f(e.headers),this.url=e.url||"",this._initBody(t)}}(void 0!==t?t:this)}).call(r,void 0);var n=r.fetch;n.Response=r.Response,n.Request=r.Request,n.Headers=r.Headers;"object"===e(t)&&t.exports&&(t.exports=n,t.exports.default=n)}).call(this,r(2)(t))},function(t,e){function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}t.exports="object"==("undefined"==typeof self?"undefined":r(self))?self.FormData:window.FormData},function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},function(t,e,r){"use strict";r.r(e);var n=r(0),o=r.n(n),i=r(1),a=r.n(i);function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{},n=Object.keys(r);"function"==typeof Object.getOwnPropertySymbols&&(n=n.concat(Object.getOwnPropertySymbols(r).filter(function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),n.forEach(function(e){g(t,e,r[e])})}return t}function c(){return(c=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t}).apply(this,arguments)}function f(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function l(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function p(t,e,r){return e&&l(t.prototype,e),r&&l(t,r),t}function d(t,e){return!e||"object"!==s(e)&&"function"!=typeof e?b(t):e}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function y(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}function m(t,e){return(m=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function b(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function g(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var w=wp.element,v=w.Fragment,_=w.Component,P=wp.data,O=P.withSelect,E=P.withDispatch,x=wp.compose.compose,T=wp.components.Button,S=wp.i18n.__,j=lodash.property,A=function(t){function e(){var t,r;f(this,e);for(var n=arguments.length,i=new Array(n),s=0;s<n;s++)i[s]=arguments[s];return g(b(b(r=d(this,(t=h(e)).call.apply(t,[this].concat(i))))),"state",{image_url:null,msg:S("Loading...")}),g(b(b(r)),"updateImageUrl",function(){r.getImageUrl(r.props.image_id).then(function(t){return r.setState({image_url:t})}).catch(function(t){return console.log(t)&&r.setState({msg:S("Could not load image")})})}),g(b(b(r)),"getImageUrl",function(t){var e=new a.a;return e.append("action","get_image"),e.append("image_id",t),o()(photocrati_ajax.url,{method:"POST",body:e,headers:{Accept:"application/json"}}).then(function(t){return t.json()}).then(j("image.image_url"))}),r}return y(e,_),p(e,[{key:"componentDidUpdate",value:function(t){this.props.image_id!=t.image_id&&this.updateImageUrl()}},{key:"componentDidMount",value:function(){this.updateImageUrl()}},{key:"render",value:function(){var t=this.state.msg,e=this.state.image_url?React.createElement("img",{src:this.state.image_url}):React.createElement("span",null,t);return React.createElement("div",{style:{paddingTop:"5px",paddingBottom:"5px"}},e)}}]),e}(),B=function(t){function e(){var t,r;f(this,e);for(var n=arguments.length,o=new Array(n),i=0;i<n;i++)o[i]=arguments[i];return g(b(b(r=d(this,(t=h(e)).call.apply(t,[this].concat(o))))),"handleOpenClick",function(t){var e=r.props.currentPostId;top.set_ngg_post_thumbnail=r.onUpdatePostThumbnail,tb_show("Set NextGEN Featured Image",ngg_featured_image.modal_url.replace(/%post_id%/,e))}),g(b(b(r)),"handleRemoveClick",function(t){r.props.onRemoveNggPostThumbnail()}),g(b(b(r)),"onUpdatePostThumbnail",function(t){tb_remove(),r.props.onSetNggPostThumbnail(parseInt(t))}),r}return y(e,_),p(e,[{key:"render",value:function(){var t=this.props,e=t.PostFeaturedImage,r=t.nggPostThumbnailId;return React.createElement(v,null,!r&&React.createElement(e,this.props),React.createElement(T,{style:{marginTop:"10px"},onClick:this.handleOpenClick,className:"editor-post-featured-image__toggle"},S("Set NextGEN Featured Image")),r>0&&React.createElement("div",null,React.createElement(A,{image_id:r}),React.createElement(T,{onClick:this.handleRemoveClick,className:"is-link is-destructive"},S("Remove featured image"))))}}]),e}(),R=O(function(t){var e=t("core/editor"),r=e.getCurrentPostId,n=e.getEditedPostAttribute,o=n("featured_media"),i=n("meta").ngg_post_thumbnail;return{currentPostId:r(),featuredImageId:o,nggPostThumbnailId:i}}),I=E(function(t){var e=t("core/editor").editPost;return{onSetNggPostThumbnail:function(t){var r=wp.data.select("core/editor").getEditedPostAttribute("meta");r.ngg_post_thumbnail=t,e(u({},r,{meta:r}))},onRemoveNggPostThumbnail:function(){var t=wp.data.select("core/editor").getEditedPostAttribute("meta");t.ngg_post_thumbnail=0,t.featured_media=0,e(u({},t,{meta:t}))}}}),U=function(t){return x(R,I)(function(t){return function(e){return React.createElement(B,c({PostFeaturedImage:t},e))}}(t))},D=lodash.memoize,F={get:function(t,e){return"isProxy"==e||("PostFeaturedImage"==e?U(function(t){return D(function(e){return t[e]})}(t)(e)):t[e])}},k={get:function(t,e){return"editor"==e&&t[e]&&!t[e].isProxy&&(t[e]=new Proxy(t[e],F)),t[e]},set:function(t,e,r){return"editor"!=e||r.isProxy||(r=new Proxy(r,F)),t[e]=r,r}};window.wp=new Proxy(wp,k)}]); //# sourceMappingURL=post-thumbnail.min.js.map \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/post-thumbnail.min.js.map b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/post-thumbnail.min.js.map index 418a0a1b2..e084acee5 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/post-thumbnail.min.js.map +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/build/post-thumbnail.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack:///./node_modules/form-data/lib/browser.js","webpack:///(webpack)/buildin/module.js","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/components/ngg-post-thumbnail.min.js","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/post-thumbnail.min.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__root__","root","F","this","fetch","self","support","searchParams","iterable","blob","Blob","e","formData","arrayBuffer","viewClasses","isDataView","obj","DataView","isPrototypeOf","isArrayBufferView","ArrayBuffer","isView","indexOf","toString","Headers","append","normalizeName","normalizeValue","oldValue","map","has","set","forEach","callback","thisArg","keys","items","push","iteratorFor","values","entries","iterator","methods","Request","clone","body","_bodyInit","Body","Response","status","statusText","headers","url","error","response","type","redirectStatuses","redirect","RangeError","location","input","init","Promise","resolve","reject","request","xhr","XMLHttpRequest","onload","options","rawHeaders","replace","split","line","parts","shift","trim","join","parseHeaders","getAllResponseHeaders","responseURL","responseText","onerror","TypeError","ontimeout","open","method","credentials","withCredentials","responseType","setRequestHeader","send","polyfill","String","test","toLowerCase","next","done","undefined","Array","isArray","header","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","result","readBlobAsArrayBuffer","FileReader","promise","readAsArrayBuffer","bufferClone","buf","slice","view","Uint8Array","byteLength","buffer","_initBody","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","Error","rejected","then","text","readAsText","readBlobAsText","chars","length","fromCharCode","readArrayBufferAsText","decode","json","JSON","parse","upcased","toUpperCase","normalizeMethod","referrer","form","bytes","decodeURIComponent","bodyInit","ok","_typeof","default","window","webpackPolyfill","deprecate","paths","children","wp","element","Fragment","Component","data","withSelect","withDispatch","compose","Button","components","__","i18n","lodash","NggThumbnail","_Component","_getPrototypeOf2","_this","_classCallCheck","_len","arguments","args","_key","_defineProperty","_assertThisInitialized","_possibleConstructorReturn","_getPrototypeOf","apply","concat","image_url","msg","getImageUrl","props","image_id","setState","catch","err","console","log","photocrati_ajax","Accept","res","_inherits","_createClass","prevProps","updateImageUrl","state","el","React","createElement","src","style","paddingTop","paddingBottom","PostThumbnail","currentPostId","_this2","top","set_ngg_post_thumbnail","onUpdatePostThumbnail","tb_show","ngg_featured_image","modal_url","onRemoveNggPostThumbnail","ngg_image_id","tb_remove","onSetNggPostThumbnail","parseInt","_this$props","PostFeaturedImage","nggPostThumbnailId","marginTop","onClick","handleOpenClick","className","ngg_post_thumbnail_min_NggThumbnail","handleRemoveClick","applyWithSelect","select","_select","getCurrentPostId","getEditedPostAttribute","featuredImageId","ngg_post_thumbnail","applyWithDispatch","dispatch","editPost","meta","_objectSpread","featured_media","ngg_post_thumbnail_min","_extends","nggPostThumbnail","memoize","wpEditorProxy","prop","NggPostThumbnail","getOriginalComponent","wpProxy","isProxy","Proxy"],"mappings":"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","file":"post-thumbnail.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","var __root__ = (function (root) {\nfunction F() { this.fetch = false; }\nF.prototype = root;\nreturn new F();\n})(typeof self !== 'undefined' ? self : this);\n(function(self) {\n\n(function(self) {\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob();\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n };\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue+','+value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) { items.push(name); });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) { items.push(value); });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) { items.push([name, value]); });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'omit';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n };\n\n function decode(body) {\n var form = new FormData();\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n var xhr = new XMLHttpRequest();\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n };\n self.fetch.polyfill = true;\n})(typeof self !== 'undefined' ? self : this);\n}).call(__root__, void(0));\nvar fetch = __root__.fetch;\nvar Response = fetch.Response = __root__.Response;\nvar Request = fetch.Request = __root__.Request;\nvar Headers = fetch.Headers = __root__.Headers;\nif (typeof module === 'object' && module.exports) {\nmodule.exports = fetch;\n// Needed for TypeScript consumers without esModuleInterop.\nmodule.exports.default = fetch;\n}\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import fetch from 'cross-fetch'\nimport FormData from 'form-data'\n\nconst {Fragment, Component} = wp.element\nconst {withSelect, withDispatch} = wp.data\nconst {compose} = wp.compose\nconst {Button}\t\t\t\t\t\t= wp.components\nconst {__}\t\t\t\t\t\t\t= wp.i18n\nconst {property}\t\t\t\t\t= lodash\n\n/**\n * Renders a NGG thumbnail\n */\nexport class NggThumbnail extends Component {\n\tstate = {\n\t\timage_url: null,\n\t\tmsg: __('Loading...')\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (this.props.image_id != prevProps.image_id) {\n\t\t\tthis.updateImageUrl()\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.updateImageUrl()\n\t}\n\n\tupdateImageUrl = () => {\n\t\tthis.getImageUrl(this.props.image_id)\n\t\t\t.then(image_url => this.setState({image_url}))\n\t\t\t.catch((err) => console.log(err) && this.setState({msg: __(\"Could not load image\")}))\t\t\n\t}\n\n\tgetImageUrl = image_id => {\n\t\tconst data = new FormData()\n\n\t\tdata.append('action', 'get_image')\n\t\tdata.append('image_id', image_id)\t\n\n\t\treturn fetch(photocrati_ajax.url, {method: 'POST', body: data, headers: {'Accept': 'application/json'}})\n\t\t\t.then(res => res.json())\n\t\t\t.then(property('image.image_url'))\n\t}\n\n\trender() {\n\t\tconst {msg} \t\t= this.state\n\n\t\tconst style = {\n\t\t\tpaddingTop: '5px',\n\t\t\tpaddingBottom: '5px'\n\t\t}\n\n\t\tconst el = this.state.image_url\n\t\t\t? <img src={this.state.image_url}/>\n\t\t\t: <span>{msg}</span>\n\t\t\n\t\treturn (\n\t\t\t<div style={style}>{el}</div>\n\t\t)\n\t}\n}\n\n/**\n * Displays the NGG Post Thumbnail component, which is a wrapper\n * around the PostFeaturedImage component.\n * \n * This exponent expects the following props:\n * \n * @param PostFeaturedImage PostFeaturedImage\n * @param Function onUpdatePostThumbnail\n * @param Integer nggPostThumbnailId\n */\nclass PostThumbnail extends Component {\n\n\t// Open the modal window to select a Featured Image\n\thandleOpenClick = e => {\n\t\tconst {currentPostId} = this.props\n\t\ttop.set_ngg_post_thumbnail = this.onUpdatePostThumbnail\n\t\ttb_show(\"Set NextGEN Featured Image\", ngg_featured_image.modal_url.replace(/%post_id%/, currentPostId))\n\t}\n\n\t// Remove the post thumbnail\n\thandleRemoveClick = e => {\n\t\tthis.props.onRemoveNggPostThumbnail()\n\t}\n\n\t// Close the modal window and set the ngg_post_thumbnail post meta field\n\tonUpdatePostThumbnail = ngg_image_id => {\n\t\ttb_remove()\n\t\tthis.props.onSetNggPostThumbnail(parseInt(ngg_image_id))\n\t}\n\n\trender() {\n\t\tconst {PostFeaturedImage, nggPostThumbnailId} = this.props\n\t\tconst buttonStyle = {marginTop: '10px'}\n\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t{! nggPostThumbnailId && <PostFeaturedImage {...this.props}/>}\n\n\t\t\t\t<Button style={buttonStyle} onClick={this.handleOpenClick} className=\"editor-post-featured-image__toggle\">\n\t\t\t\t\t{__('Set NextGEN Featured Image')}\n\t\t\t\t</Button>\n\n\t\t\t\t{nggPostThumbnailId > 0 && \n\t\t\t\t\t<div>\n\t\t\t\t\t\t<NggThumbnail image_id={nggPostThumbnailId}/>\n\t\t\t\t\t\t<Button onClick={this.handleRemoveClick} className=\"is-link is-destructive\">\n\t\t\t\t\t\t\t{__('Remove featured image')}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</Fragment>\n\t\t)\n\t\t\n\t}\n}\n\n/**\n * A higher-order component used to provide the PostFeaturedImage prop\n * to the PostThumbnail component\n * @param PostFeaturedImage PostFeaturedImage \n */\nconst nggPostThumbnail = PostFeaturedImage => props => (\n\t<PostThumbnail PostFeaturedImage={PostFeaturedImage} {...props}/>\n)\n\n/**\n * A higher-order component using the core/editor store which provides the following props\n * to the PostThumbnail component:\n * \n * @param integer currentPostId\t\t\tthe id of the current post\n * @param integer nggPostThumbnailId\tthe NGG image id used as a post thumbnail for the post/page\n * @param integer featuredImageId\t\tthe media library image id used as a post thumbnail for the post/page \t\n */\nconst applyWithSelect = withSelect( ( select ) => {\n\tconst { getCurrentPostId, getEditedPostAttribute } = select( 'core/editor' );\n\tconst featuredImageId = getEditedPostAttribute( 'featured_media' );\n\tconst meta = getEditedPostAttribute('meta')\n\tconst nggPostThumbnailId = meta.ngg_post_thumbnail\n\t\n\treturn {\n\t\tcurrentPostId: getCurrentPostId(),\n\t\tfeaturedImageId,\n\t\tnggPostThumbnailId\n\t};\n} );\n\n\n/**\n * A higher-order component using the core/editor store which provides the following props\n * to the PostThumbnail component:\n * \n * @param function onSetPostThumbnail\n */\nconst applyWithDispatch = withDispatch( ( dispatch ) => {\n\tconst { editPost } = dispatch( 'core/editor' );\n\treturn {\n\t\tonSetNggPostThumbnail(image_id) {\n\t\t\tconst meta = wp.data.select('core/editor').getEditedPostAttribute('meta')\n\t\t\tmeta.ngg_post_thumbnail = image_id\n\t\t\teditPost({\n\t\t\t\t...meta,\n\t\t\t\tmeta\t\n\t\t\t})\n\t\t},\n\t\t\n\t\tonRemoveNggPostThumbnail() {\n\t\t\tconst meta = wp.data.select('core/editor').getEditedPostAttribute('meta')\n\t\t\tmeta.ngg_post_thumbnail = 0\n\t\t\tmeta.featured_media = 0\n\t\t\teditPost({\n\t\t\t\t...meta,\n\t\t\t\tmeta\n\t\t\t})\n\t\t},\n\t};\t\n} );\n\n/** Export a composed component **/\nexport default PostFeaturedImage => compose(\n\tapplyWithSelect,\n\tapplyWithDispatch\n)(nggPostThumbnail(PostFeaturedImage))\n","import NggPostThumbnail from './components/ngg-post-thumbnail.min'\nconst {memoize} = lodash\n\n// Gets the original component which we will wrap\nconst getOriginalComponent = obj => memoize(prop => {\n return obj[prop]\n})\n\n// Wrap wp && wp.editor in a Proxy. We can then override the wp.editor.PostFeaturedImage component\n// TODO: All of this logic should be encapsulated into a utility of some kind.\nconst wpEditorProxy = {\n get(obj, prop) {\n if (prop == 'isProxy') return true\n else if (prop == 'PostFeaturedImage') {\n return NggPostThumbnail(getOriginalComponent(obj)(prop))\n }\n return obj[prop]\n }\n }\nconst wpProxy = {\n get(obj, prop) {\n if (prop == 'editor') {\n console.log(obj[prop])\n if (obj[prop] && !obj[prop].isProxy) {\n obj[prop] = new Proxy(obj[prop], wpEditorProxy) \n }\n }\n return obj[prop]\n },\n\n set(obj, prop, value) {\n if (prop == 'editor' && !value.isProxy) {\n value = new Proxy(value, wpEditorProxy)\n }\n obj[prop] = value\n return value\n }\n}\n\nwindow.wp = new Proxy(wp, wpProxy)"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/cross-fetch/dist/browser-ponyfill.js","webpack:///./node_modules/form-data/lib/browser.js","webpack:///(webpack)/buildin/module.js","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/components/ngg-post-thumbnail.min.js","webpack:///./build/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/post-thumbnail.min.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__root__","root","F","this","fetch","self","support","searchParams","iterable","blob","Blob","e","formData","arrayBuffer","viewClasses","isDataView","obj","DataView","isPrototypeOf","isArrayBufferView","ArrayBuffer","isView","indexOf","toString","Headers","append","normalizeName","normalizeValue","oldValue","map","has","set","forEach","callback","thisArg","keys","items","push","iteratorFor","values","entries","iterator","methods","Request","clone","body","_bodyInit","Body","Response","status","statusText","headers","url","error","response","type","redirectStatuses","redirect","RangeError","location","input","init","Promise","resolve","reject","request","xhr","XMLHttpRequest","onload","options","rawHeaders","replace","split","line","parts","shift","trim","join","parseHeaders","getAllResponseHeaders","responseURL","responseText","onerror","TypeError","ontimeout","open","method","credentials","withCredentials","responseType","setRequestHeader","send","polyfill","String","test","toLowerCase","next","done","undefined","Array","isArray","header","getOwnPropertyNames","consumed","bodyUsed","fileReaderReady","reader","result","readBlobAsArrayBuffer","FileReader","promise","readAsArrayBuffer","bufferClone","buf","slice","view","Uint8Array","byteLength","buffer","_initBody","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","Error","rejected","then","text","readAsText","readBlobAsText","chars","length","fromCharCode","readArrayBufferAsText","decode","json","JSON","parse","upcased","toUpperCase","normalizeMethod","referrer","form","bytes","decodeURIComponent","bodyInit","ok","_typeof","default","window","webpackPolyfill","deprecate","paths","children","wp","element","Fragment","Component","data","withSelect","withDispatch","compose","Button","components","__","i18n","lodash","NggThumbnail","_Component","_getPrototypeOf2","_this","_classCallCheck","_len","arguments","args","_key","_defineProperty","_assertThisInitialized","_possibleConstructorReturn","_getPrototypeOf","apply","concat","image_url","msg","getImageUrl","props","image_id","setState","catch","err","console","log","photocrati_ajax","Accept","res","_inherits","_createClass","prevProps","updateImageUrl","state","el","React","createElement","src","style","paddingTop","paddingBottom","PostThumbnail","currentPostId","_this2","top","set_ngg_post_thumbnail","onUpdatePostThumbnail","tb_show","ngg_featured_image","modal_url","onRemoveNggPostThumbnail","ngg_image_id","tb_remove","onSetNggPostThumbnail","parseInt","_this$props","PostFeaturedImage","nggPostThumbnailId","marginTop","onClick","handleOpenClick","className","ngg_post_thumbnail_min_NggThumbnail","handleRemoveClick","applyWithSelect","select","_select","getCurrentPostId","getEditedPostAttribute","featuredImageId","ngg_post_thumbnail","applyWithDispatch","dispatch","editPost","meta","_objectSpread","featured_media","ngg_post_thumbnail_min","_extends","nggPostThumbnail","memoize","wpEditorProxy","prop","NggPostThumbnail","getOriginalComponent","wpProxy","isProxy","Proxy"],"mappings":"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","file":"post-thumbnail.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","var __root__ = (function (root) {\nfunction F() { this.fetch = false; }\nF.prototype = root;\nreturn new F();\n})(typeof self !== 'undefined' ? self : this);\n(function(self) {\n\n(function(self) {\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob();\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n };\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue+','+value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) { items.push(name); });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) { items.push(value); });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) { items.push([name, value]); });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n throw new Error('unsupported BodyInit type')\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'omit';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n };\n\n function decode(body) {\n var form = new FormData();\n body.trim().split('&').forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n var xhr = new XMLHttpRequest();\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n };\n self.fetch.polyfill = true;\n})(typeof self !== 'undefined' ? self : this);\n}).call(__root__, void(0));\nvar fetch = __root__.fetch;\nvar Response = fetch.Response = __root__.Response;\nvar Request = fetch.Request = __root__.Request;\nvar Headers = fetch.Headers = __root__.Headers;\nif (typeof module === 'object' && module.exports) {\nmodule.exports = fetch;\n// Needed for TypeScript consumers without esModuleInterop.\nmodule.exports.default = fetch;\n}\n","/* eslint-env browser */\nmodule.exports = typeof self == 'object' ? self.FormData : window.FormData;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","import fetch from 'cross-fetch'\nimport FormData from 'form-data'\n\nconst {Fragment, Component} = wp.element\nconst {withSelect, withDispatch} = wp.data\nconst {compose} = wp.compose\nconst {Button}\t\t\t\t\t\t= wp.components\nconst {__}\t\t\t\t\t\t\t= wp.i18n\nconst {property}\t\t\t\t\t= lodash\n\n/**\n * Renders a NGG thumbnail\n */\nexport class NggThumbnail extends Component {\n\tstate = {\n\t\timage_url: null,\n\t\tmsg: __('Loading...')\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (this.props.image_id != prevProps.image_id) {\n\t\t\tthis.updateImageUrl()\n\t\t}\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.updateImageUrl()\n\t}\n\n\tupdateImageUrl = () => {\n\t\tthis.getImageUrl(this.props.image_id)\n\t\t\t.then(image_url => this.setState({image_url}))\n\t\t\t.catch((err) => console.log(err) && this.setState({msg: __(\"Could not load image\")}))\t\t\n\t}\n\n\tgetImageUrl = image_id => {\n\t\tconst data = new FormData()\n\n\t\tdata.append('action', 'get_image')\n\t\tdata.append('image_id', image_id)\t\n\n\t\treturn fetch(photocrati_ajax.url, {method: 'POST', body: data, headers: {'Accept': 'application/json'}})\n\t\t\t.then(res => res.json())\n\t\t\t.then(property('image.image_url'))\n\t}\n\n\trender() {\n\t\tconst {msg} \t\t= this.state\n\n\t\tconst style = {\n\t\t\tpaddingTop: '5px',\n\t\t\tpaddingBottom: '5px'\n\t\t}\n\n\t\tconst el = this.state.image_url\n\t\t\t? <img src={this.state.image_url}/>\n\t\t\t: <span>{msg}</span>\n\t\t\n\t\treturn (\n\t\t\t<div style={style}>{el}</div>\n\t\t)\n\t}\n}\n\n/**\n * Displays the NGG Post Thumbnail component, which is a wrapper\n * around the PostFeaturedImage component.\n * \n * This exponent expects the following props:\n * \n * @param PostFeaturedImage PostFeaturedImage\n * @param Function onUpdatePostThumbnail\n * @param Integer nggPostThumbnailId\n */\nclass PostThumbnail extends Component {\n\n\t// Open the modal window to select a Featured Image\n\thandleOpenClick = e => {\n\t\tconst {currentPostId} = this.props\n\t\ttop.set_ngg_post_thumbnail = this.onUpdatePostThumbnail\n\t\ttb_show(\"Set NextGEN Featured Image\", ngg_featured_image.modal_url.replace(/%post_id%/, currentPostId))\n\t}\n\n\t// Remove the post thumbnail\n\thandleRemoveClick = e => {\n\t\tthis.props.onRemoveNggPostThumbnail()\n\t}\n\n\t// Close the modal window and set the ngg_post_thumbnail post meta field\n\tonUpdatePostThumbnail = ngg_image_id => {\n\t\ttb_remove()\n\t\tthis.props.onSetNggPostThumbnail(parseInt(ngg_image_id))\n\t}\n\n\trender() {\n\t\tconst {PostFeaturedImage, nggPostThumbnailId} = this.props\n\t\tconst buttonStyle = {marginTop: '10px'}\n\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t{! nggPostThumbnailId && <PostFeaturedImage {...this.props}/>}\n\n\t\t\t\t<Button style={buttonStyle} onClick={this.handleOpenClick} className=\"editor-post-featured-image__toggle\">\n\t\t\t\t\t{__('Set NextGEN Featured Image')}\n\t\t\t\t</Button>\n\n\t\t\t\t{nggPostThumbnailId > 0 && \n\t\t\t\t\t<div>\n\t\t\t\t\t\t<NggThumbnail image_id={nggPostThumbnailId}/>\n\t\t\t\t\t\t<Button onClick={this.handleRemoveClick} className=\"is-link is-destructive\">\n\t\t\t\t\t\t\t{__('Remove featured image')}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t</Fragment>\n\t\t)\n\t\t\n\t}\n}\n\n/**\n * A higher-order component used to provide the PostFeaturedImage prop\n * to the PostThumbnail component\n * @param PostFeaturedImage PostFeaturedImage \n */\nconst nggPostThumbnail = PostFeaturedImage => props => (\n\t<PostThumbnail PostFeaturedImage={PostFeaturedImage} {...props}/>\n)\n\n/**\n * A higher-order component using the core/editor store which provides the following props\n * to the PostThumbnail component:\n * \n * @param integer currentPostId\t\t\tthe id of the current post\n * @param integer nggPostThumbnailId\tthe NGG image id used as a post thumbnail for the post/page\n * @param integer featuredImageId\t\tthe media library image id used as a post thumbnail for the post/page \t\n */\nconst applyWithSelect = withSelect( ( select ) => {\n\tconst { getCurrentPostId, getEditedPostAttribute } = select( 'core/editor' );\n\tconst featuredImageId = getEditedPostAttribute( 'featured_media' );\n\tconst meta = getEditedPostAttribute('meta')\n\tconst nggPostThumbnailId = meta.ngg_post_thumbnail\n\t\n\treturn {\n\t\tcurrentPostId: getCurrentPostId(),\n\t\tfeaturedImageId,\n\t\tnggPostThumbnailId\n\t};\n} );\n\n\n/**\n * A higher-order component using the core/editor store which provides the following props\n * to the PostThumbnail component:\n * \n * @param function onSetPostThumbnail\n */\nconst applyWithDispatch = withDispatch( ( dispatch ) => {\n\tconst { editPost } = dispatch( 'core/editor' );\n\treturn {\n\t\tonSetNggPostThumbnail(image_id) {\n\t\t\tconst meta = wp.data.select('core/editor').getEditedPostAttribute('meta')\n\t\t\tmeta.ngg_post_thumbnail = image_id\n\t\t\teditPost({\n\t\t\t\t...meta,\n\t\t\t\tmeta\t\n\t\t\t})\n\t\t},\n\t\t\n\t\tonRemoveNggPostThumbnail() {\n\t\t\tconst meta = wp.data.select('core/editor').getEditedPostAttribute('meta')\n\t\t\tmeta.ngg_post_thumbnail = 0\n\t\t\tmeta.featured_media = 0\n\t\t\teditPost({\n\t\t\t\t...meta,\n\t\t\t\tmeta\n\t\t\t})\n\t\t},\n\t};\t\n} );\n\n/** Export a composed component **/\nexport default PostFeaturedImage => compose(\n\tapplyWithSelect,\n\tapplyWithDispatch\n)(nggPostThumbnail(PostFeaturedImage))\n","import NggPostThumbnail from './components/ngg-post-thumbnail.min'\nconst {memoize} = lodash\n\n// Gets the original component which we will wrap\nconst getOriginalComponent = obj => memoize(prop => {\n return obj[prop]\n})\n\n// Wrap wp && wp.editor in a Proxy. We can then override the wp.editor.PostFeaturedImage component\n// TODO: All of this logic should be encapsulated into a utility of some kind.\nconst wpEditorProxy = {\n get(obj, prop) {\n if (prop == 'isProxy') return true\n else if (prop == 'PostFeaturedImage') {\n return NggPostThumbnail(getOriginalComponent(obj)(prop))\n }\n return obj[prop]\n }\n }\nconst wpProxy = {\n get(obj, prop) {\n if (prop == 'editor') {\n if (obj[prop] && !obj[prop].isProxy) {\n obj[prop] = new Proxy(obj[prop], wpEditorProxy) \n }\n }\n return obj[prop]\n },\n\n set(obj, prop, value) {\n if (prop == 'editor' && !value.isProxy) {\n value = new Proxy(value, wpEditorProxy)\n }\n obj[prop] = value\n return value\n }\n}\n\nwindow.wp = new Proxy(wp, wpProxy)\n"],"sourceRoot":""} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/editor.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/editor.css index 76813cea2..f77043afb 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/editor.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/editor.css @@ -23,18 +23,18 @@ div[data-type="imagely/nextgen-gallery"] .ngg-freeform-toolbar { /* Styling for Add NextGEN Gallery button */ div[data-type="imagely/nextgen-gallery"] .add-ngg-gallery-wrap { - background-color: #143650; - border: none; - border-top: 5px solid #b8d330; - border-radius: 2px; - display: none; - min-height: 150px; - margin: 0 0 -50px !important; - padding: 46px 20px; + min-height: 210px; + margin: 0 !important; + padding: 80px; position: relative; - top: -40px; + top: -32px; width: 100%; z-index: 1; + background: #fff; + border: 1px solid #eee; + border-top: 4px solid #b8d330; + box-shadow: 0 0 4px 2px rgba(0,0,0,.03); + background: #fcfcfc; } div[data-type="imagely/nextgen-gallery"] .add-ngg-gallery { @@ -44,7 +44,7 @@ div[data-type="imagely/nextgen-gallery"] .add-ngg-gallery { font-family: Lato,sans-serif; font-weight: 900; color: #fff; - background-color: #9fbb1a; + background-color: black; border: none; box-shadow: none; padding: 12px 24px; @@ -55,6 +55,10 @@ div[data-type="imagely/nextgen-gallery"] .add-ngg-gallery { cursor: pointer; } +div[data-type="imagely/nextgen-gallery"] .add-ngg-gallery:hover { + background: #383838; +} + /* Customize the tinymce editor area */ div[data-type="imagely/nextgen-gallery"] .wp-block-freeform.block-library-rich-text__tinymce { @@ -68,23 +72,21 @@ div[data-type="imagely/nextgen-gallery"] .mce-drag-container { /* Customize the NextGEN Gallery placeholder */ div[data-type="imagely/nextgen-gallery"] .nggPlaceholder { - background-color: #143650; + background-color: #ffffff; border-radius: 2px; - box-shadow: 0 0 4px 1px rgba(0,0,0,.05); - box-sizing: border-box; + box-shadow: 0 0 4px 2px rgba(0,0,0,.05); + box-sizing: border-box; border-top: 5px solid #b8d330; - color: #fff; - color: #9fbb1a; - font-family: sans-serif; - font-size: 20px; - margin-bottom: -25px !important; + color: #fff; + font-family: sans-serif; + font-size: 20px; outline: none !important; - padding: 30px 30px 65px 30px; position: relative; text-align: center; - top: -15px; width: 100%; z-index: 2; + min-height: 210px; + padding: 60px 60px 70px; } div[data-type="imagely/nextgen-gallery"] .wp-block-freeform.blocks-rich-text__tinymce > .nggPlaceholder { @@ -99,19 +101,19 @@ div[data-type="imagely/nextgen-gallery"] .wp-block-freeform.blocks-rich-text__ti } div[data-type="imagely/nextgen-gallery"] .nggPlaceholder h3 { - color: #fff !important; - margin-bottom: 8px; + color: black !important; text-transform: uppercase; - font-size: 20px; + font-size: 21px; font-family: Lato, sans-serif !important; - font-weight: 900 !important; - letter-spacing: 1.5px !important; + font-weight: 700 !important; + letter-spacing: 3px !important; margin-bottom: 0; + margin-top: 0; } div[data-type="imagely/nextgen-gallery"] .nggPlaceholderButton { - background: #9ebd00 !important; - border-radius: 2px; + background: black !important; + border-radius: 0; border: none !important; box-shadow: none !important; color: #fff !important; @@ -122,15 +124,15 @@ div[data-type="imagely/nextgen-gallery"] .nggPlaceholderButton { height: 36px !important; line-height: 36px !important; letter-spacing: 1.2px; - margin: 0px 4px 2px; + margin: 0px 4px 2px 0; padding: 0; - width: 105px; - text-align: center; - text-transform: uppercase !important; + width: 121px; + text-align: center; + text-transform: uppercase !important; text-shadow: none !important; cursor: pointer; } div[data-type="imagely/nextgen-gallery"] .nggPlaceholderButton:hover { - background: #a5c31a !important; + background: #383838 !important; } \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/editor.min.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/editor.min.css index 0b73b1832..2b8b754bd 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/editor.min.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/editor.min.css @@ -1 +1 @@ -div[data-type="imagely/nextgen-gallery"].is-hovered>.editor-block-list__block-edit:before,div[data-type="imagely/nextgen-gallery"].is-selected>.editor-block-list__block-edit:before{outline:0!important}div[data-type="imagely/nextgen-gallery"] .editor-block-list__breadcrumb,div[data-type="imagely/nextgen-gallery"] .ngg-freeform-toolbar{display:none!important}div[data-type="imagely/nextgen-gallery"] .add-ngg-gallery-wrap{background-color:#143650;border:none;border-top:5px solid #b8d330;border-radius:2px;display:none;min-height:150px;margin:0 0 -50px!important;padding:46px 20px;position:relative;top:-40px;width:100%;z-index:1}div[data-type="imagely/nextgen-gallery"] .add-ngg-gallery{font-size:14px;letter-spacing:1.2px;line-height:20px;font-family:Lato,sans-serif;font-weight:900;color:#fff;background-color:#9fbb1a;border:none;box-shadow:none;padding:12px 24px;margin:0 auto;text-transform:uppercase;width:260px;text-align:center;cursor:pointer}div[data-type="imagely/nextgen-gallery"] .wp-block-freeform.block-library-rich-text__tinymce{overflow:visible}div[data-type="imagely/nextgen-gallery"] .mce-drag-container{left:0!important}div[data-type="imagely/nextgen-gallery"] .nggPlaceholder{background-color:#143650;border-radius:2px;box-shadow:0 0 4px 1px rgba(0,0,0,.05);box-sizing:border-box;border-top:5px solid #b8d330;color:#9fbb1a;font-family:sans-serif;font-size:20px;margin-bottom:-25px!important;outline:0!important;padding:30px 30px 65px;position:relative;text-align:center;top:-15px;width:100%;z-index:2}div[data-type="imagely/nextgen-gallery"] .wp-block-freeform.blocks-rich-text__tinymce>.nggPlaceholder{z-index:2;display:block;position:relative;margin-top:-135px}div[data-type="imagely/nextgen-gallery"] .nggPlaceholder h3{color:#fff!important;text-transform:uppercase;font-size:20px;font-family:Lato,sans-serif!important;font-weight:900!important;letter-spacing:1.5px!important;margin-bottom:0}div[data-type="imagely/nextgen-gallery"] .nggPlaceholderButton{background:#9ebd00!important;border-radius:2px;border:none!important;box-shadow:none!important;color:#fff!important;display:inline-block!important;font-size:12px;font-weight:700;font-family:Lato,sans-serif!important;height:36px!important;line-height:36px!important;letter-spacing:1.2px;margin:0 4px 2px;padding:0;width:105px;text-align:center;text-transform:uppercase!important;text-shadow:none!important;cursor:pointer}div[data-type="imagely/nextgen-gallery"] .nggPlaceholderButton:hover{background:#a5c31a!important} \ No newline at end of file +div[data-type="imagely/nextgen-gallery"].is-hovered>.editor-block-list__block-edit:before,div[data-type="imagely/nextgen-gallery"].is-selected>.editor-block-list__block-edit:before{outline:0!important}div[data-type="imagely/nextgen-gallery"] .editor-block-list__breadcrumb,div[data-type="imagely/nextgen-gallery"] .ngg-freeform-toolbar{display:none!important}div[data-type="imagely/nextgen-gallery"] .add-ngg-gallery-wrap{min-height:210px;margin:0!important;padding:80px;position:relative;top:-32px;width:100%;z-index:1;border:1px solid #eee;border-top:4px solid #b8d330;box-shadow:0 0 4px 2px rgba(0,0,0,.03);background:#fcfcfc}div[data-type="imagely/nextgen-gallery"] .add-ngg-gallery{font-size:14px;letter-spacing:1.2px;line-height:20px;font-family:Lato,sans-serif;font-weight:900;color:#fff;background-color:#000;border:none;box-shadow:none;padding:12px 24px;margin:0 auto;text-transform:uppercase;width:260px;text-align:center;cursor:pointer}div[data-type="imagely/nextgen-gallery"] .add-ngg-gallery:hover{background:#383838}div[data-type="imagely/nextgen-gallery"] .wp-block-freeform.block-library-rich-text__tinymce{overflow:visible}div[data-type="imagely/nextgen-gallery"] .mce-drag-container{left:0!important}div[data-type="imagely/nextgen-gallery"] .nggPlaceholder{background-color:#fff;border-radius:2px;box-shadow:0 0 4px 2px rgba(0,0,0,.05);box-sizing:border-box;border-top:5px solid #b8d330;color:#fff;font-family:sans-serif;font-size:20px;outline:0!important;position:relative;text-align:center;width:100%;z-index:2;min-height:210px;padding:60px 60px 70px}div[data-type="imagely/nextgen-gallery"] .wp-block-freeform.blocks-rich-text__tinymce>.nggPlaceholder{z-index:2;display:block;position:relative;margin-top:-135px}div[data-type="imagely/nextgen-gallery"] .nggPlaceholder h3{color:#000!important;text-transform:uppercase;font-size:21px;font-family:Lato,sans-serif!important;font-weight:700!important;letter-spacing:3px!important;margin-bottom:0;margin-top:0}div[data-type="imagely/nextgen-gallery"] .nggPlaceholderButton{background:#000!important;border-radius:0;border:none!important;box-shadow:none!important;color:#fff!important;display:inline-block!important;font-size:12px;font-weight:700;font-family:Lato,sans-serif!important;height:36px!important;line-height:36px!important;letter-spacing:1.2px;margin:0 4px 2px 0;padding:0;width:121px;text-align:center;text-transform:uppercase!important;text-shadow:none!important;cursor:pointer}div[data-type="imagely/nextgen-gallery"] .nggPlaceholderButton:hover{background:#383838!important} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/block.min.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/block.min.js index 991d00279..1b3ca9273 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/block.min.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/block.min.js @@ -18,10 +18,9 @@ const withFreeform = withSelect((select, props) => { // When the freeform block is available, we create our edit component for NGG and render it const edit = withFreeform(memo(props => { - props.isSelected = true const editProps = omit(props, ['Freeform']) const NggEdit = createNggEditComponent(jQuery, props.Freeform.edit) - return <NggEdit {...editProps}/> + return <NggEdit {...editProps} isSelected={true}/> })) // Register our block diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/icons.min.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/icons.min.js index 6f754b33b..abea3c4c1 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/icons.min.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/icons.min.js @@ -1,8 +1,17 @@ const icons = {}; icons.nextgen = -<svg id="svg" version="1.1" width="400" height="385.8088930936613" viewBox="0 0 400 385.8088930936613"> -<g id="svgg"><path id="path0" d="" stroke="none" fill="#000055" fill-rule="evenodd"></path><path id="path1" d="" stroke="none" fill="#002424" fill-rule="evenodd"></path><path id="path2" d="M194.418 152.698 C 154.152 157.677,135.139 203.873,160.388 235.383 C 179.730 259.522,217.168 260.458,237.772 237.316 C 261.954 210.156,250.860 167.167,216.592 155.239 C 210.224 153.023,200.657 151.926,194.418 152.698 " stroke="none" fill="#143650" fill-rule="evenodd"></path><path id="path3" d="" stroke="none" fill="#555500" fill-rule="evenodd"></path><path id="path4" d="M109.430 274.467 C 109.368 274.629,109.202 274.717,109.061 274.663 C 108.920 274.609,108.715 274.732,108.606 274.936 C 108.496 275.140,108.286 275.307,108.139 275.307 C 107.992 275.307,107.796 275.441,107.705 275.605 C 107.536 275.907,106.895 276.338,106.291 276.556 C 106.109 276.622,105.960 276.753,105.960 276.848 C 105.960 276.942,105.747 277.101,105.487 277.200 C 105.227 277.299,105.014 277.467,105.014 277.573 C 105.014 277.680,104.920 277.767,104.805 277.767 C 104.690 277.767,104.285 278.009,103.906 278.303 C 103.527 278.598,103.068 278.894,102.886 278.960 C 102.703 279.026,102.554 279.168,102.554 279.275 C 102.554 279.382,102.427 279.470,102.272 279.470 C 102.117 279.470,101.884 279.640,101.754 279.849 C 101.624 280.057,101.367 280.227,101.184 280.227 C 101.001 280.227,100.851 280.314,100.851 280.421 C 100.851 280.528,100.639 280.696,100.378 280.795 C 100.118 280.894,99.905 281.071,99.905 281.189 C 99.905 281.306,99.793 281.360,99.655 281.307 C 99.518 281.254,99.304 281.373,99.181 281.570 C 99.057 281.768,98.838 281.930,98.694 281.930 C 98.550 281.930,98.383 282.059,98.322 282.217 C 98.262 282.374,97.997 282.585,97.734 282.685 C 97.471 282.785,97.256 282.954,97.256 283.061 C 97.256 283.167,97.095 283.254,96.898 283.254 C 96.701 283.254,96.491 283.382,96.431 283.538 C 96.371 283.694,96.201 283.822,96.053 283.822 C 95.904 283.822,95.731 283.959,95.667 284.126 C 95.603 284.292,95.438 284.386,95.302 284.334 C 95.165 284.281,94.952 284.400,94.829 284.598 C 94.705 284.796,94.529 284.957,94.437 284.957 C 94.344 284.957,93.996 285.213,93.661 285.525 C 93.327 285.837,92.965 286.093,92.857 286.093 C 92.748 286.093,92.296 286.391,91.851 286.755 C 91.407 287.119,90.958 287.417,90.854 287.417 C 90.750 287.417,90.637 287.481,90.602 287.559 C 90.471 287.855,89.293 288.565,89.116 288.455 C 89.014 288.392,88.931 288.476,88.931 288.641 C 88.931 288.805,88.718 289.021,88.458 289.120 C 88.198 289.219,87.985 289.392,87.985 289.505 C 87.985 289.617,87.602 289.879,87.133 290.086 C 86.665 290.293,86.282 290.546,86.282 290.647 C 86.282 290.749,86.090 290.915,85.856 291.017 C 85.220 291.292,84.692 291.646,84.522 291.911 C 84.439 292.041,84.245 292.148,84.091 292.148 C 83.936 292.148,83.761 292.275,83.701 292.431 C 83.641 292.588,83.504 292.715,83.396 292.715 C 83.287 292.715,82.835 293.013,82.391 293.377 C 81.946 293.742,81.493 294.040,81.384 294.040 C 81.276 294.040,81.097 294.207,80.988 294.411 C 80.871 294.629,80.673 294.738,80.508 294.675 C 80.337 294.609,80.227 294.677,80.227 294.850 C 80.227 295.006,80.014 295.187,79.754 295.253 C 79.494 295.318,79.281 295.455,79.281 295.557 C 79.281 295.659,79.162 295.743,79.017 295.743 C 78.872 295.743,78.707 295.864,78.650 296.012 C 78.594 296.160,78.223 296.433,77.826 296.619 C 77.429 296.804,76.994 297.108,76.858 297.295 C 76.722 297.482,76.488 297.635,76.337 297.635 C 76.187 297.635,76.064 297.715,76.064 297.814 C 76.064 297.990,75.336 298.457,74.693 298.693 C 74.510 298.760,74.361 298.892,74.361 298.986 C 74.361 299.081,74.170 299.241,73.936 299.342 C 73.345 299.597,72.922 299.894,72.049 300.662 C 71.636 301.026,71.221 301.325,71.127 301.325 C 71.032 301.325,70.662 301.559,70.303 301.845 C 69.945 302.131,69.562 302.365,69.452 302.365 C 69.342 302.365,69.253 302.449,69.253 302.551 C 69.253 302.653,69.040 302.790,68.780 302.855 C 68.519 302.920,68.307 303.102,68.307 303.259 C 68.307 303.451,68.183 303.512,67.928 303.446 C 67.680 303.381,67.550 303.440,67.550 303.617 C 67.550 303.766,67.337 303.969,67.077 304.068 C 66.816 304.167,66.604 304.337,66.604 304.447 C 66.604 304.556,66.391 304.726,66.131 304.825 C 65.870 304.924,65.658 305.092,65.658 305.199 C 65.658 305.305,65.487 305.393,65.279 305.393 C 65.071 305.393,64.901 305.480,64.901 305.587 C 64.901 305.693,64.688 305.861,64.428 305.960 C 64.167 306.059,63.955 306.227,63.955 306.334 C 63.955 306.441,63.784 306.528,63.576 306.528 C 63.368 306.528,63.198 306.615,63.198 306.722 C 63.198 306.828,62.985 306.997,62.725 307.096 C 62.465 307.194,62.252 307.361,62.252 307.465 C 62.252 307.570,61.907 307.831,61.486 308.046 C 61.064 308.261,60.672 308.561,60.614 308.712 C 60.556 308.864,60.389 308.988,60.243 308.988 C 60.097 308.988,59.835 309.154,59.662 309.356 C 59.488 309.559,59.285 309.687,59.210 309.641 C 59.135 309.595,58.800 309.812,58.467 310.124 C 58.133 310.436,57.748 310.691,57.612 310.691 C 57.475 310.691,57.335 310.754,57.301 310.833 C 57.184 311.095,55.380 312.394,55.132 312.394 C 54.996 312.394,54.803 312.547,54.703 312.735 C 54.602 312.923,54.174 313.242,53.752 313.445 C 53.330 313.647,52.983 313.879,52.982 313.959 C 52.981 314.040,52.789 314.189,52.554 314.290 C 51.958 314.548,51.520 314.853,50.731 315.562 C 50.355 315.900,49.942 316.176,49.812 316.177 C 49.683 316.177,49.476 316.340,49.353 316.537 C 49.229 316.735,49.027 316.858,48.903 316.810 C 48.779 316.763,48.626 316.856,48.564 317.018 C 48.502 317.181,48.339 317.313,48.203 317.313 C 48.067 317.313,47.695 317.547,47.375 317.833 C 46.625 318.507,45.782 319.104,45.364 319.259 C 45.182 319.327,45.033 319.470,45.033 319.578 C 45.033 319.685,44.903 319.773,44.743 319.773 C 44.584 319.773,44.405 319.901,44.345 320.057 C 44.285 320.213,44.075 320.341,43.878 320.341 C 43.622 320.341,43.519 320.476,43.519 320.814 C 43.519 321.074,43.587 321.287,43.670 321.287 C 43.753 321.287,44.147 321.798,44.545 322.422 C 44.942 323.046,45.343 323.557,45.434 323.557 C 45.526 323.557,45.601 323.655,45.601 323.774 C 45.601 323.894,45.899 324.355,46.263 324.799 C 46.627 325.244,46.925 325.700,46.925 325.812 C 46.925 325.925,47.010 326.017,47.114 326.017 C 47.219 326.017,47.304 326.132,47.304 326.272 C 47.304 326.411,47.474 326.680,47.682 326.868 C 47.890 327.057,48.061 327.331,48.061 327.477 C 48.061 327.634,48.209 327.719,48.420 327.685 C 48.728 327.634,49.763 328.480,49.763 328.783 C 49.763 328.837,49.976 329.160,50.237 329.501 C 50.497 329.842,50.710 330.217,50.710 330.335 C 50.710 330.610,51.587 331.190,51.802 331.058 C 51.891 331.002,52.123 331.229,52.316 331.562 C 52.509 331.894,52.780 332.235,52.918 332.318 C 53.056 332.401,53.169 332.587,53.169 332.731 C 53.169 332.875,53.347 333.049,53.565 333.118 C 53.783 333.187,54.082 333.533,54.230 333.888 C 54.378 334.242,54.578 334.532,54.675 334.532 C 54.772 334.532,54.964 334.766,55.102 335.052 C 55.239 335.338,55.492 335.574,55.663 335.575 C 56.001 335.578,56.764 336.191,56.764 336.461 C 56.764 336.713,57.567 337.748,57.763 337.748 C 57.981 337.748,58.642 338.535,58.650 338.804 C 58.654 338.917,58.888 339.130,59.171 339.277 C 59.786 339.598,61.757 341.524,61.929 341.973 C 61.996 342.147,62.168 342.289,62.311 342.289 C 62.454 342.289,62.725 342.577,62.915 342.929 C 63.125 343.319,63.542 343.693,63.985 343.889 C 64.385 344.065,64.711 344.333,64.711 344.485 C 64.711 344.637,64.882 344.825,65.091 344.902 C 65.299 344.979,65.628 345.336,65.821 345.696 C 66.014 346.056,66.335 346.394,66.535 346.449 C 66.972 346.567,68.307 347.617,68.307 347.843 C 68.307 348.075,69.693 349.274,69.850 349.177 C 69.923 349.132,70.037 349.267,70.103 349.477 C 70.170 349.687,70.389 349.858,70.590 349.858 C 70.791 349.858,70.956 349.924,70.956 350.004 C 70.956 350.370,72.658 351.980,72.934 351.874 C 73.117 351.804,73.226 351.868,73.226 352.046 C 73.226 352.202,73.370 352.385,73.545 352.452 C 73.721 352.520,74.109 352.853,74.408 353.193 C 74.727 353.556,75.063 353.768,75.222 353.707 C 75.385 353.645,75.552 353.757,75.637 353.986 C 75.778 354.360,77.338 355.718,77.633 355.722 C 77.925 355.725,78.903 356.556,78.903 356.800 C 78.903 356.937,78.988 357.048,79.093 357.048 C 79.198 357.048,79.469 357.261,79.695 357.521 C 79.921 357.781,80.240 357.997,80.403 357.999 C 80.566 358.002,81.069 358.343,81.520 358.756 C 81.972 359.170,82.451 359.508,82.586 359.508 C 82.721 359.508,82.876 359.678,82.931 359.886 C 82.988 360.104,83.189 360.265,83.404 360.265 C 83.627 360.265,83.821 360.428,83.883 360.668 C 83.961 360.965,84.092 361.045,84.379 360.970 C 84.624 360.906,84.768 360.959,84.768 361.114 C 84.768 361.353,85.288 361.680,85.572 361.619 C 85.650 361.603,85.714 361.717,85.714 361.873 C 85.714 362.029,85.864 362.157,86.048 362.157 C 86.231 362.157,86.466 362.349,86.570 362.583 C 86.674 362.817,86.908 362.997,87.090 362.982 C 87.272 362.967,87.686 363.202,88.008 363.503 C 88.331 363.805,88.863 364.179,89.191 364.334 C 89.518 364.490,89.998 364.809,90.257 365.043 C 90.517 365.277,90.814 365.478,90.918 365.489 C 91.452 365.547,91.958 365.827,91.958 366.064 C 91.958 366.211,92.107 366.386,92.289 366.453 C 92.472 366.520,92.693 366.695,92.781 366.842 C 92.883 367.012,93.105 367.067,93.396 366.994 C 93.646 366.932,93.851 366.963,93.851 367.063 C 93.851 367.400,94.783 368.258,95.042 368.158 C 95.182 368.105,95.398 368.222,95.521 368.420 C 95.645 368.618,95.905 368.780,96.100 368.780 C 96.294 368.780,96.559 368.907,96.689 369.063 C 96.818 369.219,97.049 369.347,97.202 369.347 C 97.355 369.347,97.828 369.645,98.254 370.009 C 98.679 370.374,99.129 370.672,99.254 370.672 C 99.379 370.672,99.586 370.798,99.714 370.953 C 99.843 371.108,100.024 371.189,100.116 371.131 C 100.208 371.074,100.284 371.112,100.284 371.214 C 100.284 371.425,101.342 371.996,101.732 371.996 C 101.872 371.996,101.965 372.103,101.939 372.233 C 101.912 372.372,102.130 372.493,102.470 372.526 C 102.801 372.558,103.360 372.861,103.781 373.235 C 104.185 373.594,104.655 373.888,104.826 373.888 C 104.997 373.888,105.342 374.106,105.592 374.372 C 105.873 374.671,106.180 374.821,106.396 374.765 C 106.594 374.713,106.953 374.853,107.220 375.085 C 107.480 375.311,107.751 375.501,107.820 375.506 C 108.117 375.528,108.913 375.843,109.149 376.032 C 109.289 376.145,109.518 376.254,109.657 376.274 C 109.796 376.294,110.249 376.584,110.664 376.917 C 111.079 377.251,111.501 377.472,111.602 377.410 C 111.704 377.348,111.837 377.429,111.899 377.591 C 111.962 377.753,112.093 377.836,112.191 377.776 C 112.289 377.715,112.694 377.851,113.091 378.077 C 114.435 378.844,114.758 378.995,115.057 378.996 C 115.221 378.997,115.558 379.214,115.807 379.478 C 116.071 379.759,116.425 379.938,116.658 379.907 C 116.877 379.879,117.263 379.987,117.516 380.147 C 117.769 380.308,118.444 380.635,119.016 380.874 C 119.588 381.114,120.203 381.438,120.381 381.595 C 120.559 381.753,120.847 381.827,121.021 381.760 C 121.216 381.685,121.596 381.838,122.021 382.162 C 122.398 382.449,122.810 382.660,122.938 382.631 C 123.065 382.602,123.363 382.702,123.600 382.854 C 123.837 383.006,124.201 383.158,124.409 383.192 C 124.617 383.226,124.903 383.410,125.045 383.601 C 125.219 383.834,125.444 383.912,125.735 383.839 C 125.999 383.772,126.203 383.825,126.261 383.974 C 126.364 384.244,127.909 384.408,127.909 384.150 C 127.909 384.061,128.172 383.720,128.493 383.391 C 128.979 382.894,129.056 382.698,128.951 382.220 C 128.843 381.728,128.872 381.664,129.154 381.773 C 129.421 381.875,129.463 381.821,129.376 381.489 C 129.294 381.175,129.353 381.079,129.625 381.079 C 129.919 381.079,129.961 380.981,129.868 380.513 C 129.795 380.146,129.862 379.784,130.062 379.479 C 130.231 379.221,130.369 378.916,130.369 378.801 C 130.369 378.686,130.500 378.461,130.659 378.301 C 130.886 378.075,130.901 377.952,130.726 377.742 C 130.546 377.525,130.624 377.364,131.121 376.920 C 131.619 376.476,131.716 376.274,131.618 375.885 C 131.552 375.619,131.565 375.402,131.649 375.402 C 131.907 375.402,132.450 374.330,132.450 373.821 C 132.450 373.241,132.798 372.415,133.253 371.913 C 133.436 371.711,133.568 371.456,133.546 371.346 C 133.477 370.988,133.777 370.104,133.968 370.104 C 134.070 370.104,134.153 369.891,134.153 369.631 C 134.153 369.354,134.251 369.178,134.390 369.205 C 134.539 369.235,134.621 369.043,134.613 368.685 C 134.606 368.373,134.720 368.028,134.867 367.918 C 135.013 367.809,135.108 367.596,135.077 367.445 C 135.005 367.096,135.651 365.752,135.891 365.752 C 135.991 365.752,136.055 365.561,136.034 365.326 C 135.986 364.807,136.396 363.671,136.632 363.671 C 136.725 363.671,136.802 363.467,136.802 363.218 C 136.802 362.969,136.939 362.713,137.106 362.649 C 137.318 362.567,137.376 362.395,137.297 362.082 C 137.226 361.799,137.288 361.546,137.466 361.399 C 137.621 361.270,137.748 361.086,137.748 360.989 C 137.748 360.893,137.919 360.462,138.127 360.031 C 138.335 359.600,138.505 359.088,138.505 358.894 C 138.505 358.699,138.590 358.592,138.694 358.657 C 138.804 358.724,138.884 358.547,138.884 358.239 C 138.884 357.944,139.096 357.390,139.357 357.008 C 139.617 356.625,139.830 356.124,139.830 355.895 C 139.830 355.368,140.756 353.453,141.011 353.453 C 141.121 353.453,141.154 353.217,141.089 352.892 C 141.008 352.486,141.062 352.282,141.283 352.159 C 141.484 352.046,141.552 351.844,141.480 351.570 C 141.399 351.260,141.440 351.179,141.641 351.256 C 141.842 351.334,141.911 351.196,141.911 350.715 C 141.911 350.360,141.990 350.021,142.086 349.962 C 142.182 349.902,142.316 349.599,142.385 349.288 C 142.453 348.977,142.613 348.723,142.741 348.723 C 142.871 348.723,143.126 348.120,143.321 347.351 C 143.512 346.596,143.784 345.845,143.925 345.680 C 144.066 345.516,144.182 345.249,144.182 345.086 C 144.182 344.923,144.315 344.739,144.479 344.676 C 144.671 344.602,144.735 344.434,144.660 344.198 C 144.596 343.997,144.713 343.465,144.918 343.014 C 145.572 341.583,145.955 340.687,145.995 340.492 C 146.130 339.835,146.342 339.451,146.569 339.451 C 146.727 339.451,146.833 339.245,146.837 338.931 C 146.840 338.645,146.966 338.247,147.117 338.048 C 147.304 337.801,147.332 337.612,147.204 337.458 C 147.074 337.302,147.105 337.156,147.301 336.993 C 147.459 336.863,147.588 336.596,147.588 336.401 C 147.588 336.205,147.673 336.045,147.777 336.045 C 147.881 336.045,147.966 335.837,147.966 335.583 C 147.966 335.329,148.129 335.006,148.329 334.866 C 148.539 334.719,148.741 334.286,148.808 333.839 C 148.871 333.414,149.091 332.719,149.296 332.294 C 149.792 331.268,149.789 330.258,149.290 329.991 C 149.082 329.879,148.912 329.700,148.912 329.593 C 148.912 329.485,148.699 329.119,148.439 328.777 C 148.179 328.436,147.966 328.086,147.966 327.998 C 147.966 327.911,147.625 327.435,147.209 326.941 C 146.793 326.448,146.452 325.953,146.452 325.841 C 146.452 325.730,146.386 325.639,146.306 325.639 C 146.226 325.639,145.991 325.321,145.786 324.934 C 145.580 324.546,145.284 324.090,145.128 323.921 C 144.619 323.370,144.182 322.798,144.182 322.684 C 144.182 322.622,143.926 322.248,143.614 321.854 C 143.302 321.460,143.046 321.041,143.046 320.922 C 143.046 320.804,142.919 320.658,142.763 320.598 C 142.606 320.538,142.479 320.406,142.479 320.305 C 142.479 320.203,142.181 319.757,141.816 319.312 C 141.452 318.868,141.154 318.404,141.154 318.281 C 141.154 318.158,141.026 318.009,140.870 317.949 C 140.714 317.889,140.587 317.719,140.587 317.571 C 140.587 317.423,140.459 317.252,140.303 317.192 C 140.147 317.132,140.019 317.004,140.019 316.907 C 140.019 316.698,139.230 315.544,139.026 315.453 C 138.947 315.418,138.884 315.282,138.884 315.151 C 138.884 315.019,138.713 314.758,138.505 314.570 C 138.297 314.381,138.127 314.113,138.127 313.973 C 138.127 313.833,138.040 313.718,137.933 313.718 C 137.826 313.718,137.658 313.505,137.559 313.245 C 137.460 312.985,137.306 312.772,137.216 312.772 C 137.067 312.772,136.696 312.128,136.642 311.775 C 136.630 311.695,136.443 311.440,136.228 311.208 C 135.601 310.532,134.359 308.771,134.237 308.384 C 134.175 308.189,133.939 307.836,133.713 307.599 C 133.487 307.362,133.174 306.971,133.018 306.730 C 132.862 306.489,132.644 306.196,132.534 306.079 C 132.424 305.962,132.169 305.573,131.967 305.216 C 131.764 304.858,131.450 304.390,131.268 304.175 C 130.563 303.344,130.452 303.186,130.089 302.503 C 129.884 302.115,129.647 301.798,129.564 301.798 C 129.481 301.798,129.333 301.585,129.234 301.325 C 129.135 301.064,128.967 300.851,128.860 300.851 C 128.753 300.851,128.666 300.737,128.666 300.597 C 128.666 300.457,128.496 300.188,128.288 300.000 C 128.079 299.812,127.909 299.579,127.909 299.484 C 127.909 299.389,127.803 299.200,127.673 299.064 C 127.543 298.928,127.308 298.626,127.152 298.393 C 126.996 298.160,126.734 297.788,126.570 297.566 C 126.405 297.344,126.216 297.013,126.150 296.831 C 126.083 296.649,125.950 296.500,125.853 296.500 C 125.756 296.500,125.489 296.138,125.260 295.695 C 125.030 295.253,124.723 294.823,124.578 294.740 C 124.433 294.657,124.314 294.465,124.314 294.314 C 124.314 294.163,124.226 294.040,124.119 294.040 C 124.012 294.040,123.869 293.891,123.802 293.709 C 123.735 293.526,123.503 293.122,123.287 292.810 C 123.071 292.498,122.809 292.106,122.705 291.939 C 122.487 291.589,121.384 290.080,121.101 289.743 C 120.995 289.617,120.908 289.459,120.908 289.392 C 120.908 289.289,119.878 287.898,119.207 287.094 C 119.102 286.968,119.016 286.810,119.016 286.743 C 119.016 286.675,118.761 286.298,118.448 285.904 C 118.136 285.509,117.881 285.097,117.881 284.987 C 117.881 284.877,117.774 284.719,117.644 284.636 C 117.344 284.444,116.556 283.327,116.556 283.093 C 116.556 282.996,116.429 282.868,116.272 282.808 C 116.116 282.748,115.989 282.577,115.989 282.429 C 115.989 282.281,115.861 282.111,115.705 282.051 C 115.549 281.991,115.421 281.851,115.421 281.739 C 115.421 281.511,114.646 280.356,114.428 280.259 C 114.350 280.224,114.286 280.079,114.286 279.937 C 114.286 279.795,114.179 279.610,114.049 279.527 C 113.749 279.335,112.961 278.218,112.961 277.984 C 112.961 277.887,112.833 277.759,112.677 277.699 C 112.521 277.639,112.394 277.503,112.394 277.396 C 112.394 276.953,110.065 274.176,109.691 274.173 C 109.610 274.173,109.493 274.305,109.430 274.467 " stroke="none" fill="#8ca516" fill-rule="evenodd"></path><path id="path5" d="" stroke="none" fill="#6db600" fill-rule="evenodd"></path><path id="path6" d="M79.186 45.256 C 78.978 45.372,78.369 45.838,77.832 46.291 C 77.295 46.744,76.809 47.114,76.752 47.114 C 76.696 47.114,76.441 47.306,76.186 47.540 C 75.500 48.170,75.046 48.533,74.934 48.540 C 74.693 48.557,73.983 49.116,73.983 49.289 C 73.982 49.611,72.116 51.366,71.950 51.200 C 71.890 51.140,71.722 51.260,71.577 51.468 C 71.431 51.675,71.190 51.845,71.039 51.845 C 70.889 51.845,70.766 52.019,70.766 52.232 C 70.766 52.464,70.539 52.748,70.200 52.942 C 69.888 53.119,69.633 53.328,69.632 53.406 C 69.632 53.484,69.461 53.548,69.253 53.548 C 69.044 53.548,68.874 53.634,68.874 53.739 C 68.874 53.992,67.915 55.061,67.688 55.061 C 67.590 55.061,67.342 55.274,67.137 55.535 C 66.933 55.795,66.647 56.008,66.502 56.008 C 66.357 56.008,66.137 56.197,66.013 56.429 C 65.743 56.933,65.537 57.138,64.871 57.564 C 64.594 57.741,64.126 58.227,63.830 58.644 C 63.452 59.177,63.194 59.371,62.961 59.300 C 62.776 59.244,62.630 59.297,62.630 59.421 C 62.630 59.747,61.733 60.786,61.150 61.136 C 60.865 61.307,60.668 61.576,60.699 61.751 C 60.730 61.922,60.634 62.062,60.487 62.062 C 60.249 62.062,59.039 63.359,58.877 63.788 C 58.843 63.879,58.688 63.955,58.533 63.955 C 58.258 63.955,57.711 64.387,57.711 64.603 C 57.711 64.663,57.561 64.867,57.379 65.056 C 57.197 65.246,56.793 65.714,56.482 66.097 C 56.170 66.480,55.804 66.793,55.668 66.793 C 55.532 66.793,55.296 67.091,55.144 67.455 C 54.992 67.819,54.762 68.121,54.633 68.125 C 54.505 68.130,53.463 69.275,52.318 70.671 C 51.173 72.067,50.086 73.262,49.903 73.326 C 49.719 73.390,49.605 73.501,49.649 73.573 C 49.805 73.824,49.216 74.409,48.921 74.296 C 48.711 74.216,48.627 74.303,48.625 74.604 C 48.622 75.122,48.429 75.402,48.074 75.402 C 47.926 75.402,47.741 75.638,47.663 75.927 C 47.586 76.216,47.349 76.642,47.137 76.874 C 46.126 77.977,44.276 80.266,44.276 80.414 C 44.276 80.505,44.106 80.634,43.898 80.700 C 43.690 80.766,43.519 80.985,43.519 81.186 C 43.519 81.387,43.390 81.701,43.233 81.883 C 41.478 83.908,40.527 85.119,40.618 85.210 C 40.679 85.271,40.378 85.740,39.948 86.253 C 39.519 86.766,39.167 87.281,39.167 87.396 C 39.167 87.512,39.040 87.606,38.884 87.606 C 38.728 87.606,38.600 87.763,38.600 87.954 C 38.600 88.146,38.324 88.625,37.988 89.019 C 37.651 89.413,37.374 89.838,37.373 89.964 C 37.371 90.090,36.944 90.679,36.424 91.275 C 35.904 91.870,35.500 92.441,35.527 92.542 C 35.554 92.644,35.398 92.916,35.181 93.147 C 34.964 93.378,34.676 93.822,34.542 94.134 C 34.408 94.447,34.074 94.941,33.800 95.232 C 33.526 95.524,33.302 95.856,33.302 95.971 C 33.302 96.086,33.089 96.459,32.829 96.800 C 32.569 97.141,32.356 97.527,32.356 97.657 C 32.356 97.788,32.194 98.070,31.996 98.285 C 31.656 98.654,31.110 99.547,30.515 100.706 C 30.370 100.990,30.171 101.272,30.073 101.332 C 29.976 101.392,29.896 101.592,29.896 101.776 C 29.896 101.960,29.683 102.310,29.423 102.554 C 29.163 102.799,28.950 103.139,28.950 103.311 C 28.950 103.483,28.745 103.816,28.495 104.051 C 28.245 104.286,27.983 104.780,27.914 105.149 C 27.845 105.518,27.539 106.085,27.233 106.410 C 26.928 106.735,26.716 107.099,26.761 107.220 C 26.806 107.340,26.678 107.587,26.477 107.769 C 26.276 107.951,26.112 108.252,26.112 108.438 C 26.112 108.624,26.032 108.825,25.934 108.886 C 25.725 109.015,25.166 110.097,25.166 110.374 C 25.166 110.480,25.049 110.701,24.908 110.865 C 24.766 111.029,24.497 111.573,24.310 112.072 C 24.124 112.572,23.805 113.098,23.602 113.240 C 23.388 113.390,23.291 113.594,23.372 113.724 C 23.448 113.848,23.409 114.012,23.285 114.089 C 23.161 114.166,23.040 114.357,23.017 114.513 C 22.994 114.669,22.842 115.001,22.679 115.251 C 22.516 115.500,22.320 115.918,22.245 116.178 C 22.005 117.008,21.524 117.971,21.276 118.117 C 21.144 118.196,20.979 118.600,20.908 119.016 C 20.838 119.432,20.703 119.773,20.608 119.773 C 20.513 119.773,20.435 119.909,20.435 120.075 C 20.435 120.390,19.954 121.350,19.531 121.878 C 19.395 122.047,19.304 122.260,19.328 122.351 C 19.423 122.710,19.048 123.830,18.710 124.192 C 18.514 124.402,18.354 124.722,18.354 124.902 C 18.354 125.081,18.265 125.258,18.156 125.294 C 18.048 125.331,17.934 125.593,17.904 125.878 C 17.874 126.163,17.792 126.453,17.723 126.522 C 17.654 126.591,17.597 126.800,17.597 126.985 C 17.597 127.171,17.456 127.402,17.284 127.498 C 17.104 127.598,17.019 127.797,17.083 127.965 C 17.148 128.134,17.072 128.303,16.903 128.368 C 16.743 128.430,16.659 128.604,16.718 128.756 C 16.776 128.908,16.742 129.083,16.643 129.144 C 16.543 129.206,16.462 129.496,16.462 129.789 C 16.462 130.083,16.337 130.426,16.184 130.553 C 16.031 130.680,15.913 130.839,15.922 130.907 C 15.975 131.306,15.854 131.666,15.559 131.989 C 15.375 132.191,15.231 132.483,15.240 132.640 C 15.254 132.898,14.806 134.251,14.394 135.194 C 14.034 136.017,13.441 137.881,13.325 138.555 C 13.257 138.946,13.127 139.313,13.034 139.370 C 12.942 139.427,12.867 139.724,12.867 140.030 C 12.867 140.336,12.781 140.587,12.677 140.587 C 12.573 140.587,12.488 140.752,12.488 140.954 C 12.488 141.156,12.403 141.374,12.299 141.438 C 12.195 141.502,12.108 141.784,12.106 142.064 C 12.103 142.344,11.940 142.928,11.743 143.362 C 11.546 143.796,11.432 144.198,11.489 144.255 C 11.547 144.312,11.412 144.782,11.189 145.299 C 10.967 145.816,10.785 146.405,10.785 146.608 C 10.785 146.811,10.658 147.220,10.503 147.519 C 10.347 147.817,10.219 148.290,10.219 148.570 C 10.218 148.850,10.144 149.124,10.054 149.180 C 9.964 149.236,9.832 149.645,9.760 150.090 C 9.514 151.625,8.933 154.114,8.690 154.683 C 8.531 155.055,8.445 155.436,7.841 158.467 C 7.675 159.300,7.457 160.135,7.357 160.323 C 7.256 160.510,7.122 161.216,7.060 161.890 C 6.997 162.564,6.873 163.160,6.784 163.215 C 6.695 163.270,6.621 163.586,6.620 163.918 C 6.618 164.251,6.490 165.061,6.335 165.719 C 6.180 166.377,6.010 167.271,5.957 167.706 C 5.904 168.140,5.815 168.794,5.757 169.158 C 5.700 169.522,5.628 170.076,5.597 170.388 C 5.566 170.700,5.489 171.083,5.425 171.239 C 5.361 171.395,5.221 172.247,5.113 173.132 C 5.006 174.016,4.874 174.995,4.821 175.307 C 4.767 175.620,4.675 176.471,4.616 177.200 C 4.557 177.928,4.436 178.612,4.347 178.719 C 4.258 178.827,4.184 179.337,4.182 179.854 C 4.180 180.372,4.133 181.306,4.077 181.930 C 4.021 182.554,3.937 183.576,3.890 184.201 C 3.843 184.825,3.790 185.336,3.772 185.336 C 3.711 185.336,3.445 190.033,3.343 192.917 C 3.310 193.860,3.223 194.729,3.149 194.847 C 3.017 195.060,3.058 195.456,3.313 196.452 C 3.388 196.743,3.369 196.973,3.271 196.973 C 2.976 196.973,3.139 207.939,3.515 213.434 C 3.575 214.319,3.650 215.511,3.680 216.083 C 3.711 216.656,3.841 218.188,3.969 219.489 C 4.098 220.790,4.193 222.138,4.181 222.485 C 4.170 222.833,4.219 223.211,4.291 223.327 C 4.449 223.584,4.491 223.880,4.653 225.875 C 4.722 226.734,4.832 227.436,4.897 227.436 C 4.961 227.436,5.029 227.670,5.047 227.956 C 5.081 228.509,5.332 230.268,5.686 232.450 C 5.804 233.179,5.892 234.009,5.880 234.295 C 5.869 234.581,5.927 234.816,6.010 234.816 C 6.092 234.816,6.155 235.163,6.149 235.587 C 6.144 236.012,6.205 236.400,6.286 236.450 C 6.367 236.500,6.433 236.797,6.433 237.110 C 6.433 237.423,6.516 237.833,6.617 238.023 C 6.719 238.212,6.898 238.994,7.016 239.760 C 7.134 240.527,7.282 241.239,7.344 241.342 C 7.407 241.445,7.471 241.785,7.488 242.099 C 7.504 242.412,7.616 243.024,7.736 243.460 C 7.857 243.896,7.937 244.321,7.916 244.406 C 7.894 244.491,8.052 245.128,8.267 245.821 C 8.482 246.515,8.615 247.303,8.564 247.572 C 8.511 247.851,8.557 248.061,8.673 248.061 C 8.785 248.061,8.929 248.380,8.994 248.770 C 9.059 249.160,9.162 249.607,9.224 249.763 C 9.286 249.920,9.352 250.218,9.370 250.426 C 9.389 250.634,9.502 251.044,9.622 251.337 C 9.741 251.630,9.839 252.027,9.839 252.220 C 9.839 252.413,9.929 252.600,10.040 252.637 C 10.150 252.674,10.245 253.071,10.251 253.519 C 10.258 254.029,10.360 254.371,10.524 254.434 C 10.668 254.489,10.785 254.736,10.785 254.982 C 10.785 255.505,11.579 258.598,11.996 259.697 C 12.153 260.114,12.286 260.593,12.291 260.764 C 12.295 260.934,12.426 261.317,12.582 261.615 C 12.737 261.913,12.865 262.292,12.865 262.457 C 12.866 262.621,12.926 262.815,12.998 262.888 C 13.071 262.960,13.152 263.123,13.179 263.251 C 13.404 264.299,13.720 265.234,13.934 265.483 C 14.076 265.648,14.191 265.999,14.191 266.264 C 14.191 266.529,14.319 266.852,14.475 266.982 C 14.631 267.112,14.759 267.458,14.759 267.751 C 14.759 268.044,14.838 268.333,14.936 268.393 C 15.033 268.454,15.252 268.991,15.423 269.587 C 15.594 270.184,15.898 270.953,16.098 271.297 C 16.298 271.642,16.462 272.082,16.462 272.275 C 16.462 272.469,16.558 272.659,16.675 272.698 C 16.792 272.737,16.907 272.936,16.929 273.139 C 17.027 274.010,17.279 274.723,17.524 274.816 C 17.668 274.872,17.786 275.128,17.786 275.385 C 17.786 275.642,17.871 275.905,17.975 275.970 C 18.079 276.034,18.165 276.232,18.165 276.409 C 18.165 276.587,18.335 277.050,18.543 277.438 C 18.751 277.827,18.925 278.294,18.928 278.476 C 18.932 278.659,19.137 279.055,19.384 279.357 C 19.631 279.659,19.788 280.024,19.733 280.169 C 19.678 280.313,19.771 280.583,19.940 280.770 C 20.109 280.957,20.375 281.538,20.530 282.062 C 20.686 282.585,20.983 283.230,21.192 283.495 C 21.400 283.760,21.570 284.084,21.570 284.216 C 21.570 284.347,21.687 284.589,21.830 284.753 C 21.973 284.918,22.233 285.494,22.409 286.035 C 22.585 286.575,22.882 287.214,23.070 287.454 C 23.257 287.694,23.476 288.103,23.555 288.363 C 23.635 288.623,23.944 289.172,24.243 289.583 C 24.542 289.994,24.787 290.569,24.787 290.860 C 24.787 291.152,24.852 291.391,24.931 291.391 C 25.093 291.391,25.194 291.562,26.053 293.295 C 26.385 293.965,26.875 294.806,27.141 295.164 C 27.407 295.523,27.625 295.999,27.625 296.223 C 27.625 296.447,27.796 296.784,28.004 296.973 C 28.212 297.161,28.382 297.402,28.382 297.507 C 28.382 297.613,28.501 297.834,28.647 297.998 C 29.249 298.678,29.679 299.668,29.465 299.882 C 29.311 300.036,29.391 300.234,29.765 300.624 C 30.045 300.917,30.274 301.258,30.274 301.382 C 30.274 301.507,30.346 301.608,30.433 301.608 C 30.521 301.608,30.692 301.800,30.815 302.034 C 30.937 302.268,31.289 302.800,31.596 303.217 C 31.903 303.633,32.157 304.086,32.160 304.224 C 32.164 304.361,32.273 304.592,32.403 304.737 C 32.948 305.345,33.113 305.575,33.113 305.728 C 33.113 305.817,33.367 306.133,33.678 306.431 C 34.339 307.065,34.665 306.968,36.013 305.736 C 36.434 305.351,36.848 305.079,36.934 305.132 C 37.019 305.184,37.140 305.094,37.202 304.932 C 37.265 304.769,37.430 304.636,37.569 304.636 C 37.708 304.636,37.940 304.466,38.086 304.259 C 38.231 304.051,38.408 303.939,38.479 304.011 C 38.550 304.082,38.739 303.953,38.899 303.726 C 39.058 303.498,39.308 303.311,39.453 303.311 C 39.598 303.311,39.784 303.205,39.868 303.075 C 39.951 302.945,40.307 302.677,40.660 302.481 C 41.013 302.284,41.460 301.986,41.653 301.819 C 41.847 301.651,42.169 301.372,42.368 301.198 C 42.568 301.025,42.783 300.935,42.846 300.998 C 42.909 301.061,43.091 300.926,43.251 300.698 C 43.410 300.470,43.655 300.284,43.794 300.284 C 43.933 300.284,44.098 300.151,44.160 299.988 C 44.222 299.825,44.350 299.739,44.443 299.797 C 44.536 299.854,44.941 299.597,45.343 299.225 C 45.745 298.853,46.383 298.390,46.760 298.195 C 47.137 298.000,47.497 297.709,47.558 297.548 C 47.620 297.388,47.790 297.256,47.937 297.256 C 48.083 297.256,48.309 297.130,48.437 296.975 C 48.566 296.820,48.747 296.740,48.840 296.797 C 48.933 296.855,49.061 296.768,49.123 296.605 C 49.186 296.442,49.544 296.163,49.920 295.985 C 50.295 295.806,50.746 295.530,50.921 295.371 C 51.096 295.211,51.463 294.877,51.737 294.629 C 52.011 294.381,52.289 294.231,52.354 294.297 C 52.420 294.362,52.593 294.245,52.740 294.035 C 52.886 293.826,53.080 293.701,53.171 293.757 C 53.261 293.813,53.404 293.750,53.489 293.618 C 53.635 293.389,54.125 293.034,54.633 292.790 C 54.761 292.728,55.229 292.345,55.673 291.939 C 56.117 291.534,56.558 291.202,56.652 291.202 C 56.746 291.202,57.129 290.968,57.503 290.682 C 57.877 290.396,58.245 290.182,58.320 290.207 C 58.395 290.232,58.547 290.082,58.658 289.875 C 58.768 289.668,58.987 289.499,59.142 289.499 C 59.298 289.499,59.476 289.366,59.538 289.204 C 59.601 289.042,59.753 288.948,59.877 288.996 C 60.001 289.043,60.204 288.921,60.327 288.723 C 60.451 288.525,60.636 288.363,60.740 288.363 C 60.843 288.363,61.097 288.214,61.306 288.032 C 61.514 287.850,61.861 287.545,62.078 287.354 C 62.295 287.163,62.515 287.050,62.567 287.102 C 62.619 287.154,62.825 287.055,63.024 286.881 C 63.224 286.708,63.550 286.424,63.750 286.250 C 63.949 286.077,64.164 285.987,64.227 286.050 C 64.290 286.113,64.472 285.978,64.632 285.750 C 64.792 285.522,65.025 285.336,65.150 285.336 C 65.275 285.336,65.484 285.166,65.614 284.957 C 65.744 284.749,65.950 284.579,66.073 284.579 C 66.196 284.579,66.784 284.196,67.380 283.728 C 67.976 283.259,68.556 282.876,68.669 282.876 C 68.782 282.876,68.874 282.801,68.874 282.709 C 68.874 282.617,69.023 282.488,69.205 282.422 C 69.809 282.204,70.450 281.773,70.619 281.471 C 70.710 281.307,70.904 281.173,71.050 281.173 C 71.196 281.173,71.383 281.056,71.466 280.912 C 71.550 280.769,71.919 280.491,72.286 280.296 C 72.944 279.946,73.261 279.714,74.012 279.029 C 74.222 278.838,74.434 278.722,74.483 278.772 C 74.533 278.822,74.773 278.680,75.017 278.457 C 75.752 277.784,76.020 277.596,76.111 277.688 C 76.159 277.735,76.572 277.432,77.030 277.014 C 77.487 276.596,77.959 276.254,78.078 276.254 C 78.197 276.254,78.347 276.117,78.411 275.950 C 78.475 275.783,78.639 275.690,78.776 275.742 C 78.912 275.794,79.127 275.672,79.253 275.470 C 79.379 275.269,79.561 275.152,79.656 275.211 C 79.752 275.270,79.922 275.145,80.035 274.934 C 80.148 274.723,80.356 274.551,80.497 274.551 C 80.639 274.551,80.803 274.423,80.863 274.267 C 80.923 274.111,81.092 273.983,81.239 273.983 C 81.385 273.983,81.609 273.858,81.736 273.705 C 81.863 273.552,82.022 273.446,82.090 273.469 C 82.158 273.491,82.405 273.340,82.640 273.132 C 82.874 272.923,83.243 272.597,83.459 272.406 C 83.676 272.215,83.903 272.108,83.963 272.168 C 84.023 272.229,84.191 272.108,84.336 271.900 C 84.482 271.693,84.723 271.523,84.874 271.523 C 85.024 271.523,85.147 271.438,85.147 271.334 C 85.147 271.230,85.296 271.145,85.480 271.145 C 85.663 271.145,85.921 270.971,86.053 270.759 C 86.186 270.547,86.367 270.418,86.457 270.474 C 86.546 270.529,86.758 270.362,86.928 270.102 C 87.098 269.843,87.362 269.631,87.516 269.631 C 87.670 269.631,87.796 269.554,87.796 269.461 C 87.796 269.367,88.158 269.103,88.600 268.874 C 89.042 268.644,89.472 268.337,89.555 268.192 C 89.639 268.047,89.830 267.928,89.981 267.928 C 90.132 267.928,90.255 267.841,90.255 267.734 C 90.255 267.628,90.468 267.459,90.728 267.360 C 90.989 267.262,91.202 267.113,91.202 267.030 C 91.202 266.947,91.521 266.713,91.911 266.511 C 92.632 266.138,92.857 265.977,93.614 265.288 C 93.848 265.075,94.105 264.922,94.185 264.948 C 94.328 264.994,94.626 264.780,95.394 264.081 C 95.603 263.890,95.823 263.783,95.883 263.843 C 95.943 263.903,96.111 263.782,96.257 263.575 C 96.402 263.367,96.641 263.198,96.787 263.198 C 96.934 263.198,97.145 263.027,97.256 262.819 C 97.368 262.611,97.566 262.441,97.696 262.441 C 97.826 262.441,98.228 262.189,98.588 261.881 C 98.948 261.573,99.345 261.318,99.470 261.313 C 99.595 261.309,99.765 261.199,99.849 261.069 C 99.932 260.939,100.170 260.738,100.378 260.623 C 100.865 260.354,100.977 259.783,100.587 259.564 C 100.420 259.471,100.284 259.324,100.284 259.238 C 100.284 259.151,99.986 258.586,99.622 257.981 C 99.257 257.376,98.959 256.766,98.959 256.626 C 98.959 256.485,98.803 256.202,98.612 255.997 C 98.421 255.792,97.979 255.051,97.629 254.350 C 97.279 253.648,96.927 253.047,96.847 253.014 C 96.766 252.980,96.644 252.639,96.575 252.257 C 96.507 251.874,96.369 251.458,96.270 251.333 C 95.977 250.964,95.364 249.702,95.364 249.469 C 95.364 249.350,95.194 249.057,94.986 248.817 C 94.778 248.577,94.607 248.192,94.607 247.960 C 94.607 247.729,94.480 247.433,94.324 247.304 C 94.167 247.174,94.039 246.972,94.039 246.855 C 94.038 246.737,93.928 246.429,93.794 246.168 C 93.659 245.908,93.364 245.142,93.137 244.465 C 92.909 243.789,92.551 242.898,92.341 242.486 C 92.131 242.074,91.958 241.551,91.958 241.324 C 91.958 241.097,91.831 240.862,91.675 240.802 C 91.518 240.742,91.391 240.480,91.391 240.219 C 91.391 239.959,91.175 239.258,90.912 238.663 C 90.648 238.067,90.474 237.471,90.525 237.339 C 90.576 237.207,90.536 237.048,90.436 236.986 C 90.337 236.925,90.255 236.743,90.255 236.583 C 90.255 236.423,90.138 236.024,89.994 235.696 C 89.633 234.873,89.405 234.170,89.035 232.734 C 88.860 232.058,88.638 231.243,88.540 230.923 C 88.443 230.604,88.363 230.199,88.363 230.024 C 88.363 229.850,88.269 229.707,88.154 229.707 C 88.038 229.707,87.997 229.569,88.062 229.399 C 88.127 229.230,88.106 228.995,88.014 228.879 C 87.923 228.762,87.793 228.249,87.727 227.739 C 87.660 227.229,87.529 226.718,87.435 226.604 C 87.341 226.489,87.205 225.885,87.133 225.260 C 87.061 224.636,86.875 223.674,86.720 223.122 C 86.565 222.570,86.365 221.506,86.276 220.757 C 86.039 218.777,85.722 216.991,85.531 216.556 C 85.440 216.348,85.312 215.241,85.247 214.096 C 85.073 211.034,84.952 209.437,84.844 208.798 C 84.589 207.284,84.477 198.358,84.678 195.553 C 84.730 194.825,84.809 193.718,84.853 193.094 C 84.897 192.469,85.030 190.851,85.149 189.499 C 85.269 188.146,85.391 186.729,85.421 186.350 C 85.452 185.972,85.521 185.588,85.574 185.499 C 85.628 185.409,85.733 184.697,85.808 183.917 C 85.884 183.136,86.031 182.392,86.135 182.264 C 86.239 182.135,86.272 181.893,86.208 181.726 C 86.144 181.559,86.155 181.324,86.233 181.203 C 86.311 181.083,86.476 180.345,86.598 179.565 C 86.721 178.784,86.878 177.933,86.947 177.673 C 87.017 177.412,87.119 176.753,87.174 176.206 C 87.230 175.660,87.347 175.213,87.434 175.213 C 87.522 175.213,87.650 174.785,87.719 174.263 C 87.789 173.740,87.916 173.269,88.001 173.216 C 88.087 173.163,88.214 172.612,88.284 171.990 C 88.355 171.369,88.477 170.861,88.556 170.861 C 88.679 170.861,88.867 170.215,89.051 169.158 C 89.178 168.428,89.542 167.132,89.766 166.612 C 90.345 165.264,90.429 164.986,90.334 164.738 C 90.279 164.594,90.375 164.422,90.548 164.356 C 90.726 164.287,90.816 164.116,90.756 163.959 C 90.698 163.807,90.732 163.633,90.831 163.571 C 90.931 163.510,91.012 163.214,91.012 162.914 C 91.012 162.614,91.097 162.316,91.202 162.252 C 91.306 162.187,91.391 161.991,91.392 161.815 C 91.393 161.639,91.520 161.251,91.676 160.953 C 91.831 160.655,91.958 160.303,91.958 160.172 C 91.958 160.040,92.086 159.827,92.242 159.697 C 92.398 159.568,92.526 159.217,92.526 158.917 C 92.526 158.618,92.611 158.373,92.715 158.373 C 92.819 158.373,92.904 158.207,92.904 158.005 C 92.904 157.803,92.990 157.586,93.094 157.521 C 93.198 157.457,93.283 157.239,93.283 157.037 C 93.283 156.835,93.368 156.670,93.472 156.670 C 93.576 156.670,93.661 156.457,93.661 156.197 C 93.661 155.937,93.746 155.724,93.851 155.724 C 93.955 155.724,94.040 155.558,94.040 155.356 C 94.040 155.154,94.114 154.943,94.205 154.887 C 94.295 154.831,94.424 154.513,94.491 154.179 C 94.557 153.846,94.732 153.439,94.879 153.276 C 95.025 153.113,95.173 152.854,95.207 152.701 C 95.242 152.547,95.372 152.311,95.498 152.175 C 95.624 152.039,95.683 151.814,95.629 151.675 C 95.576 151.535,95.668 151.368,95.835 151.304 C 96.002 151.240,96.122 151.080,96.101 150.949 C 96.052 150.643,96.622 149.354,96.875 149.198 C 96.981 149.132,97.067 148.918,97.067 148.722 C 97.067 148.526,97.247 148.240,97.466 148.086 C 97.686 147.933,97.814 147.725,97.753 147.625 C 97.691 147.525,97.809 147.228,98.016 146.965 C 98.223 146.702,98.392 146.357,98.392 146.197 C 98.392 146.037,98.472 145.857,98.570 145.797 C 98.668 145.736,98.936 145.310,99.166 144.849 C 99.396 144.389,99.678 144.029,99.792 144.049 C 99.907 144.070,99.973 143.930,99.940 143.737 C 99.907 143.545,99.992 143.247,100.129 143.075 C 100.434 142.693,100.816 142.036,101.254 141.139 C 101.437 140.767,101.719 140.352,101.881 140.218 C 102.043 140.083,102.176 139.856,102.176 139.712 C 102.176 139.569,102.472 139.124,102.835 138.723 C 103.197 138.322,103.444 137.944,103.382 137.883 C 103.256 137.756,104.837 135.667,105.059 135.667 C 105.138 135.667,105.203 135.517,105.203 135.334 C 105.203 135.151,105.500 134.661,105.862 134.246 C 106.224 133.831,106.522 133.385,106.524 133.254 C 106.526 133.124,106.627 133.039,106.748 133.065 C 106.869 133.091,107.018 132.927,107.079 132.700 C 107.192 132.281,107.820 131.433,108.930 130.202 C 109.269 129.825,109.549 129.414,109.551 129.288 C 109.553 129.161,109.726 128.967,109.934 128.855 C 110.142 128.744,110.312 128.528,110.312 128.376 C 110.312 128.223,110.405 128.098,110.518 128.098 C 110.815 128.098,111.434 127.306,111.441 126.916 C 111.445 126.717,111.593 126.585,111.813 126.585 C 112.072 126.585,112.197 126.432,112.239 126.064 C 112.280 125.705,112.401 125.552,112.630 125.570 C 112.812 125.585,112.961 125.521,112.961 125.429 C 112.961 125.337,113.259 124.931,113.623 124.528 C 113.988 124.125,114.286 123.699,114.286 123.582 C 114.286 123.464,114.413 123.368,114.570 123.368 C 114.726 123.368,114.854 123.304,114.854 123.226 C 114.855 122.992,116.210 121.476,116.417 121.476 C 116.688 121.476,117.111 120.877,117.118 120.482 C 117.121 120.297,117.270 120.149,117.455 120.147 C 117.637 120.144,118.031 119.811,118.331 119.405 C 118.654 118.970,118.982 118.709,119.135 118.768 C 119.278 118.823,119.395 118.791,119.395 118.698 C 119.395 118.605,119.733 118.149,120.146 117.685 C 120.559 117.220,120.900 116.776,120.903 116.698 C 120.906 116.620,121.026 116.556,121.170 116.556 C 121.313 116.556,121.656 116.262,121.930 115.901 C 122.243 115.491,122.534 115.287,122.710 115.354 C 122.884 115.421,122.990 115.348,122.990 115.161 C 122.990 114.996,123.181 114.810,123.415 114.748 C 123.649 114.687,124.120 114.259,124.462 113.799 C 124.804 113.338,125.169 112.961,125.275 112.961 C 125.625 112.961,126.383 111.929,126.388 111.447 C 126.391 111.052,125.869 110.217,124.884 109.043 C 124.779 108.917,124.689 108.747,124.685 108.665 C 124.681 108.582,124.425 108.220,124.117 107.860 C 123.809 107.499,123.557 107.123,123.557 107.024 C 123.557 106.925,123.427 106.709,123.269 106.544 C 122.761 106.017,121.665 104.476,121.665 104.289 C 121.665 104.190,121.537 104.060,121.381 104.000 C 121.225 103.940,121.097 103.790,121.097 103.668 C 121.097 103.545,120.799 103.081,120.435 102.637 C 120.071 102.192,119.773 101.736,119.773 101.624 C 119.773 101.511,119.688 101.419,119.584 101.419 C 119.480 101.419,119.395 101.305,119.395 101.165 C 119.395 101.025,119.224 100.756,119.016 100.568 C 118.808 100.379,118.638 100.120,118.638 99.991 C 118.638 99.862,118.510 99.708,118.354 99.648 C 118.198 99.588,118.070 99.413,118.070 99.258 C 118.070 99.104,117.959 98.910,117.823 98.827 C 117.687 98.744,117.373 98.335,117.124 97.919 C 116.875 97.502,116.561 97.094,116.425 97.010 C 116.289 96.927,116.178 96.766,116.178 96.652 C 116.178 96.537,115.880 96.080,115.516 95.636 C 115.151 95.191,114.853 94.753,114.853 94.663 C 114.853 94.573,114.601 94.204,114.293 93.843 C 113.985 93.483,113.730 93.121,113.726 93.038 C 113.722 92.956,113.632 92.786,113.527 92.660 C 112.772 91.760,112.204 90.922,112.204 90.709 C 112.204 90.571,112.034 90.367,111.826 90.255 C 111.618 90.144,111.447 89.926,111.447 89.770 C 111.447 89.614,111.320 89.438,111.164 89.378 C 111.008 89.318,110.880 89.189,110.880 89.092 C 110.880 88.883,110.091 87.729,109.886 87.638 C 109.808 87.603,109.745 87.459,109.745 87.316 C 109.745 87.174,109.638 86.990,109.508 86.906 C 109.195 86.706,108.420 85.593,108.420 85.344 C 108.420 85.235,108.333 85.147,108.226 85.147 C 108.120 85.147,107.951 84.934,107.852 84.674 C 107.753 84.413,107.585 84.201,107.479 84.201 C 107.372 84.201,107.285 84.112,107.285 84.004 C 107.285 83.795,106.542 82.672,106.274 82.476 C 106.086 82.338,105.636 81.589,105.472 81.139 C 105.408 80.964,105.236 80.775,105.090 80.719 C 104.944 80.663,104.825 80.496,104.825 80.348 C 104.825 80.200,104.697 80.029,104.541 79.969 C 104.385 79.910,104.257 79.743,104.257 79.600 C 104.257 79.457,104.087 79.186,103.879 78.997 C 103.671 78.809,103.500 78.582,103.500 78.493 C 103.500 78.404,103.032 77.698,102.460 76.924 C 101.887 76.150,101.419 75.467,101.419 75.407 C 101.419 75.346,101.100 74.885,100.710 74.382 C 100.319 73.879,99.872 73.278,99.716 73.046 C 99.560 72.815,99.262 72.431,99.054 72.193 C 98.846 71.956,98.505 71.477,98.297 71.129 C 98.089 70.781,97.769 70.280,97.585 70.016 C 97.402 69.752,97.200 69.387,97.138 69.205 C 97.075 69.023,96.946 68.874,96.851 68.874 C 96.757 68.874,96.598 68.661,96.500 68.401 C 96.401 68.141,96.232 67.928,96.126 67.928 C 96.019 67.928,95.932 67.836,95.932 67.723 C 95.932 67.611,95.634 67.155,95.270 66.711 C 94.905 66.266,94.607 65.805,94.607 65.685 C 94.607 65.566,94.520 65.468,94.413 65.468 C 94.307 65.468,94.137 65.277,94.036 65.043 C 93.750 64.382,93.408 63.889,93.046 63.616 C 92.864 63.478,92.715 63.261,92.715 63.133 C 92.715 63.004,92.463 62.605,92.155 62.245 C 91.847 61.884,91.592 61.522,91.588 61.440 C 91.583 61.357,91.494 61.187,91.389 61.061 C 90.740 60.285,89.688 58.868,89.688 58.772 C 89.688 58.668,88.254 56.616,87.796 56.063 C 87.692 55.937,87.606 55.776,87.606 55.704 C 87.606 55.632,87.308 55.210,86.944 54.765 C 86.580 54.321,86.282 53.872,86.282 53.768 C 86.282 53.664,86.218 53.551,86.140 53.516 C 85.977 53.444,85.147 52.290,85.147 52.136 C 85.147 52.080,84.998 51.870,84.816 51.669 C 84.309 51.111,84.132 50.868,83.637 50.047 C 83.386 49.631,83.070 49.222,82.934 49.139 C 82.798 49.056,82.687 48.894,82.687 48.780 C 82.687 48.666,82.389 48.209,82.025 47.764 C 81.660 47.320,81.362 46.864,81.362 46.752 C 81.362 46.639,81.277 46.547,81.173 46.547 C 81.069 46.547,80.984 46.433,80.984 46.294 C 80.984 46.033,79.963 45.029,79.708 45.039 C 79.629 45.042,79.395 45.140,79.186 45.256 " stroke="none" fill="#9fbb1a" fill-rule="evenodd"></path><path id="path7" d="M190.728 4.092 C 190.364 4.223,189.799 4.285,189.473 4.229 C 189.135 4.172,188.824 4.219,188.750 4.338 C 188.679 4.453,188.530 4.491,188.419 4.423 C 188.117 4.236,186.136 4.191,185.800 4.363 C 185.639 4.446,184.674 4.555,183.655 4.606 C 182.637 4.658,181.757 4.746,181.700 4.803 C 181.643 4.860,181.445 4.825,181.260 4.726 C 181.028 4.602,180.702 4.639,180.211 4.844 C 179.819 5.008,179.236 5.103,178.916 5.056 C 178.597 5.009,178.153 5.054,177.930 5.155 C 177.665 5.276,177.408 5.275,177.188 5.151 C 176.939 5.012,176.677 5.060,176.193 5.332 C 175.705 5.606,175.498 5.643,175.395 5.476 C 175.317 5.350,175.150 5.315,175.018 5.396 C 174.731 5.574,173.781 5.731,173.132 5.709 C 172.871 5.700,172.531 5.745,172.375 5.809 C 172.219 5.872,171.835 5.942,171.523 5.964 C 171.211 5.986,170.805 6.068,170.621 6.145 C 170.437 6.223,170.057 6.243,169.775 6.189 C 169.494 6.135,168.963 6.205,168.596 6.343 C 168.229 6.481,167.673 6.577,167.360 6.556 C 167.048 6.534,166.553 6.631,166.259 6.771 C 165.966 6.910,165.540 7.007,165.313 6.985 C 165.086 6.963,164.773 6.996,164.617 7.059 C 164.461 7.122,163.936 7.213,163.450 7.261 C 162.965 7.310,162.403 7.437,162.203 7.544 C 162.003 7.651,161.464 7.761,161.005 7.788 C 160.547 7.815,159.865 7.985,159.491 8.166 C 159.117 8.347,158.627 8.447,158.401 8.388 C 158.176 8.329,157.886 8.367,157.757 8.472 C 157.627 8.576,157.223 8.661,156.859 8.658 C 156.495 8.656,155.899 8.785,155.535 8.945 C 155.170 9.104,154.532 9.288,154.115 9.354 C 153.699 9.419,153.018 9.570,152.602 9.689 C 152.185 9.809,151.771 9.888,151.680 9.865 C 151.589 9.842,151.079 9.974,150.545 10.156 C 150.011 10.339,149.404 10.494,149.196 10.501 C 148.988 10.508,148.711 10.580,148.582 10.660 C 148.452 10.741,148.160 10.842,147.933 10.886 C 147.706 10.930,147.466 11.054,147.399 11.162 C 147.333 11.270,146.854 11.388,146.337 11.424 C 145.819 11.460,145.229 11.581,145.025 11.691 C 144.416 12.023,143.918 12.170,143.561 12.126 C 143.375 12.103,142.854 12.291,142.402 12.543 C 141.806 12.877,141.492 12.953,141.259 12.823 C 141.031 12.696,140.841 12.731,140.605 12.944 C 140.423 13.110,140.221 13.245,140.158 13.245 C 140.095 13.245,139.804 13.342,139.511 13.461 C 139.218 13.580,138.851 13.703,138.694 13.735 C 137.405 14.000,136.837 14.157,136.471 14.348 C 135.438 14.886,135.267 14.948,134.805 14.948 C 134.536 14.948,134.188 15.076,134.032 15.232 C 133.876 15.388,133.551 15.516,133.311 15.516 C 133.071 15.516,132.768 15.644,132.638 15.802 C 132.460 16.015,132.336 16.035,132.148 15.879 C 131.958 15.721,131.744 15.777,131.277 16.110 C 130.937 16.353,130.518 16.527,130.348 16.498 C 130.177 16.469,129.991 16.567,129.934 16.715 C 129.877 16.863,129.210 17.172,128.451 17.403 C 127.692 17.633,126.900 17.942,126.691 18.088 C 126.482 18.234,126.171 18.354,126.000 18.354 C 125.829 18.354,125.479 18.520,125.221 18.722 C 124.961 18.927,124.590 19.048,124.387 18.995 C 124.177 18.940,123.727 19.099,123.331 19.367 C 122.952 19.625,122.597 19.791,122.543 19.736 C 122.488 19.682,122.192 19.817,121.883 20.036 C 121.575 20.256,121.143 20.435,120.923 20.435 C 120.702 20.435,120.185 20.648,119.773 20.908 C 119.361 21.168,118.958 21.383,118.878 21.385 C 118.798 21.387,117.966 21.769,117.029 22.235 C 116.093 22.701,115.172 23.082,114.983 23.083 C 114.794 23.084,114.368 23.289,114.037 23.539 C 113.705 23.789,113.117 24.124,112.729 24.284 C 112.341 24.444,111.836 24.750,111.605 24.965 C 111.172 25.369,111.017 25.422,110.449 25.364 C 110.263 25.345,109.604 25.675,108.984 26.099 C 108.364 26.522,107.767 26.868,107.657 26.868 C 107.548 26.868,106.986 27.217,106.409 27.643 C 105.732 28.143,105.231 28.384,104.995 28.322 C 104.763 28.262,104.208 28.515,103.479 29.014 C 102.847 29.447,102.189 29.886,102.016 29.991 C 101.844 30.095,101.650 30.253,101.585 30.342 C 101.520 30.431,101.290 30.448,101.075 30.380 C 100.804 30.294,100.435 30.433,99.869 30.835 C 99.421 31.154,98.845 31.562,98.591 31.743 C 98.336 31.924,97.760 32.349,97.312 32.687 C 96.863 33.025,96.412 33.302,96.309 33.302 C 96.206 33.302,96.121 33.387,96.121 33.491 C 96.121 33.595,96.032 33.680,95.924 33.680 C 95.815 33.680,95.624 33.763,95.498 33.865 C 95.372 33.966,95.019 34.252,94.713 34.501 L 94.157 34.952 94.848 35.972 C 95.229 36.533,96.117 37.818,96.824 38.829 C 97.530 39.840,98.482 41.202,98.939 41.857 C 99.396 42.511,100.152 43.600,100.618 44.276 C 101.085 44.953,101.626 45.682,101.821 45.897 C 102.016 46.112,102.176 46.351,102.176 46.428 C 102.176 46.506,102.474 46.969,102.838 47.457 C 103.690 48.598,103.846 48.816,104.594 49.902 C 105.327 50.967,108.212 55.098,108.792 55.913 C 109.014 56.225,109.932 57.545,110.832 58.846 C 111.732 60.147,112.515 61.254,112.573 61.306 C 112.631 61.358,112.934 61.783,113.246 62.252 C 113.557 62.720,113.878 63.188,113.957 63.292 C 114.786 64.376,115.421 65.277,115.421 65.371 C 115.421 65.434,115.825 66.032,116.320 66.700 C 117.956 68.911,118.920 70.264,119.016 70.484 C 119.068 70.604,119.648 71.461,120.305 72.390 C 124.511 78.336,125.354 79.540,126.329 80.984 C 126.926 81.868,127.674 82.929,127.993 83.340 C 128.311 83.751,128.657 84.236,128.761 84.418 C 128.933 84.718,130.457 86.906,132.027 89.106 C 132.367 89.582,133.022 90.525,133.484 91.202 C 133.945 91.878,134.716 92.985,135.198 93.661 C 135.680 94.338,136.301 95.232,136.580 95.648 C 136.858 96.064,137.171 96.501,137.275 96.618 C 137.379 96.736,137.574 96.991,137.707 97.186 C 137.840 97.381,138.421 98.221,138.998 99.054 C 139.575 99.886,140.190 100.801,140.364 101.087 C 140.778 101.764,141.053 101.743,142.264 100.946 C 142.817 100.581,143.341 100.326,143.427 100.380 C 143.513 100.433,143.697 100.366,143.835 100.231 C 144.299 99.780,145.901 98.770,146.152 98.770 C 146.289 98.770,146.618 98.600,146.882 98.392 C 147.147 98.184,147.483 98.013,147.628 98.013 C 147.774 98.013,148.059 97.888,148.261 97.735 C 148.463 97.583,148.726 97.455,148.846 97.452 C 148.965 97.448,149.509 97.145,150.055 96.778 C 150.600 96.411,151.089 96.153,151.140 96.205 C 151.192 96.257,151.483 96.122,151.786 95.906 C 152.118 95.670,152.519 95.548,152.792 95.600 C 153.102 95.659,153.457 95.512,153.915 95.135 C 154.284 94.831,154.661 94.630,154.754 94.687 C 154.846 94.744,155.137 94.622,155.400 94.416 C 155.663 94.209,156.064 94.040,156.292 94.040 C 156.699 94.040,156.919 93.949,158.510 93.124 C 158.950 92.896,159.546 92.677,159.835 92.638 C 160.332 92.572,161.122 92.273,162.479 91.639 C 162.812 91.484,163.157 91.402,163.247 91.457 C 163.337 91.513,163.916 91.315,164.534 91.018 C 165.152 90.721,165.730 90.547,165.818 90.631 C 165.907 90.716,166.439 90.574,167.002 90.317 C 167.565 90.059,168.344 89.809,168.733 89.762 C 169.521 89.665,170.644 89.319,170.995 89.064 C 171.120 88.973,171.298 88.945,171.391 89.002 C 171.483 89.059,171.986 88.944,172.508 88.746 C 173.207 88.480,173.512 88.441,173.668 88.597 C 173.824 88.753,173.972 88.725,174.230 88.491 C 174.423 88.317,174.760 88.174,174.980 88.174 C 175.200 88.174,175.429 88.095,175.489 87.997 C 175.549 87.900,175.894 87.869,176.255 87.927 C 176.638 87.989,177.025 87.941,177.181 87.811 C 177.329 87.688,177.822 87.566,178.277 87.539 C 178.732 87.512,179.217 87.420,179.356 87.335 C 179.494 87.249,180.025 87.157,180.536 87.129 C 181.047 87.102,181.577 86.986,181.715 86.871 C 181.852 86.757,182.016 86.715,182.079 86.778 C 182.142 86.841,182.631 86.787,183.166 86.659 C 183.701 86.530,184.664 86.406,185.305 86.382 C 185.946 86.358,186.641 86.288,186.850 86.226 C 187.397 86.063,191.399 85.731,194.229 85.613 C 198.932 85.416,201.514 85.397,201.514 85.558 C 201.514 85.654,201.635 85.665,201.783 85.582 C 201.992 85.464,204.170 85.524,206.339 85.706 C 206.505 85.720,207.806 85.733,209.555 85.737 C 209.868 85.738,210.251 85.786,210.407 85.844 C 210.703 85.954,211.110 86.005,212.895 86.157 C 213.483 86.207,214.121 86.329,214.314 86.429 C 214.507 86.528,214.771 86.571,214.901 86.524 C 215.032 86.477,216.032 86.579,217.124 86.751 C 218.216 86.922,219.182 87.017,219.271 86.962 C 219.360 86.907,219.595 86.980,219.792 87.124 C 220.057 87.317,220.216 87.331,220.402 87.177 C 220.589 87.022,220.696 87.038,220.821 87.240 C 220.913 87.390,221.141 87.528,221.327 87.547 C 221.513 87.566,222.067 87.623,222.558 87.674 C 223.049 87.725,223.519 87.808,223.603 87.860 C 223.686 87.911,224.136 88.011,224.602 88.080 C 225.068 88.150,225.542 88.284,225.656 88.378 C 225.770 88.472,225.910 88.502,225.967 88.445 C 226.024 88.388,226.570 88.486,227.179 88.664 C 227.789 88.841,228.415 89.001,228.571 89.019 C 228.728 89.037,229.111 89.160,229.423 89.293 C 229.735 89.426,230.309 89.547,230.699 89.564 C 231.089 89.580,231.408 89.657,231.409 89.735 C 231.409 89.813,231.527 89.877,231.669 89.877 C 231.812 89.877,232.329 90.054,232.818 90.270 C 233.308 90.487,233.820 90.621,233.956 90.568 C 234.093 90.516,234.380 90.596,234.594 90.746 C 234.809 90.896,235.053 90.997,235.136 90.971 C 235.220 90.944,235.544 91.016,235.856 91.130 C 236.168 91.244,236.764 91.446,237.181 91.578 C 237.597 91.710,238.273 91.977,238.683 92.172 C 239.092 92.367,239.620 92.526,239.854 92.526 C 240.089 92.526,240.333 92.611,240.397 92.715 C 240.462 92.819,240.672 92.904,240.866 92.904 C 241.059 92.904,241.246 92.970,241.280 93.049 C 241.315 93.129,242.092 93.441,243.007 93.742 C 243.922 94.043,244.740 94.414,244.825 94.566 C 244.910 94.718,245.209 94.868,245.491 94.899 C 245.772 94.930,246.657 95.268,247.457 95.650 C 248.834 96.308,249.689 96.696,250.331 96.956 C 250.487 97.020,250.870 97.234,251.183 97.434 C 251.495 97.633,251.870 97.803,252.016 97.810 C 252.162 97.818,252.561 98.037,252.902 98.297 C 253.243 98.557,253.630 98.770,253.762 98.770 C 253.893 98.770,254.317 98.989,254.704 99.257 C 255.091 99.526,255.524 99.762,255.666 99.783 C 255.808 99.804,256.191 100.010,256.516 100.242 C 256.841 100.473,257.206 100.662,257.327 100.662 C 257.449 100.662,257.667 100.769,257.812 100.899 C 258.456 101.477,258.653 101.600,259.113 101.716 C 259.382 101.783,259.603 101.966,259.603 102.122 C 259.603 102.289,259.713 102.363,259.871 102.303 C 260.018 102.246,260.183 102.314,260.236 102.453 C 260.289 102.592,260.632 102.804,260.996 102.924 C 261.361 103.045,261.982 103.439,262.376 103.799 C 262.770 104.160,263.182 104.421,263.291 104.379 C 263.401 104.336,263.783 104.590,264.139 104.942 C 264.496 105.294,264.924 105.582,265.091 105.582 C 265.258 105.582,265.962 106.050,266.656 106.623 C 267.350 107.195,268.005 107.663,268.112 107.663 C 268.219 107.663,268.307 107.748,268.307 107.852 C 268.307 107.956,268.436 108.042,268.594 108.042 C 268.753 108.042,268.979 108.254,269.098 108.515 C 269.221 108.785,269.472 108.988,269.684 108.988 C 269.887 108.988,270.385 109.329,270.790 109.746 C 271.194 110.163,271.706 110.532,271.926 110.565 C 272.147 110.599,272.441 110.832,272.581 111.084 C 272.720 111.336,272.837 111.460,272.841 111.360 C 272.845 111.261,273.167 111.516,273.557 111.928 C 274.300 112.712,274.800 113.086,275.355 113.273 C 275.537 113.334,275.686 113.449,275.686 113.528 C 275.686 113.825,277.572 115.636,277.760 115.520 C 277.868 115.453,278.135 115.702,278.353 116.072 C 278.572 116.442,278.827 116.698,278.921 116.640 C 279.015 116.582,279.258 116.817,279.462 117.162 C 279.665 117.507,280.105 117.951,280.439 118.148 C 281.049 118.508,282.687 120.109,282.687 120.345 C 282.687 120.579,283.386 121.281,283.503 121.164 C 283.567 121.101,283.720 121.271,283.844 121.542 C 283.968 121.814,284.213 122.082,284.388 122.138 C 284.564 122.193,284.820 122.449,284.957 122.706 C 285.095 122.962,285.369 123.224,285.567 123.287 C 285.765 123.349,286.020 123.606,286.135 123.857 C 286.249 124.109,286.414 124.314,286.502 124.314 C 286.589 124.314,286.660 124.442,286.660 124.598 C 286.660 124.754,286.740 124.882,286.837 124.882 C 286.934 124.882,287.066 125.048,287.130 125.250 C 287.195 125.453,287.395 125.666,287.575 125.723 C 287.755 125.781,288.042 126.062,288.213 126.348 C 288.945 127.577,289.576 128.101,289.881 127.732 C 290.035 127.546,290.416 127.253,290.728 127.080 C 291.041 126.907,291.807 126.381,292.431 125.911 C 293.056 125.441,293.716 125.007,293.898 124.947 C 294.080 124.887,294.229 124.767,294.229 124.681 C 294.229 124.595,294.437 124.413,294.691 124.277 C 295.220 123.994,297.304 122.597,297.446 122.430 C 297.498 122.369,297.753 122.176,298.013 122.002 C 298.273 121.828,298.912 121.380,299.432 121.007 C 299.953 120.634,300.712 120.108,301.120 119.839 C 301.529 119.569,302.034 119.189,302.244 118.993 C 302.454 118.798,302.730 118.638,302.858 118.638 C 302.986 118.638,303.119 118.570,303.154 118.487 C 303.188 118.404,303.898 117.873,304.730 117.306 C 305.563 116.740,306.287 116.225,306.339 116.161 C 306.391 116.097,306.807 115.798,307.263 115.497 C 308.823 114.465,309.129 114.251,310.763 113.052 C 311.192 112.738,312.053 112.146,312.677 111.736 C 313.302 111.326,313.898 110.924,314.002 110.843 C 314.520 110.440,315.959 109.416,316.457 109.096 C 316.766 108.897,317.187 108.578,317.391 108.388 C 317.596 108.197,317.848 108.042,317.952 108.042 C 318.055 108.042,318.334 107.859,318.571 107.637 C 318.808 107.414,319.161 107.138,319.356 107.022 C 319.885 106.708,321.547 105.551,323.463 104.163 C 324.399 103.484,325.302 102.866,325.469 102.789 C 325.636 102.712,326.019 102.458,326.321 102.224 C 326.622 101.991,327.252 101.502,327.720 101.138 C 328.188 100.774,328.644 100.476,328.733 100.475 C 328.822 100.474,329.163 100.259,329.490 99.997 C 329.817 99.735,330.177 99.448,330.289 99.358 C 330.401 99.268,330.860 98.950,331.308 98.651 C 331.756 98.352,332.440 97.895,332.829 97.635 C 333.217 97.375,333.902 96.917,334.350 96.619 C 334.798 96.320,335.256 95.996,335.368 95.900 C 335.608 95.694,337.379 94.421,338.282 93.806 C 338.627 93.570,339.150 93.186,339.444 92.952 C 339.738 92.718,340.066 92.526,340.172 92.526 C 340.279 92.526,340.394 92.456,340.429 92.371 C 340.488 92.225,340.999 91.856,343.992 89.798 C 344.669 89.333,345.310 88.877,345.416 88.785 C 345.523 88.692,345.864 88.454,346.173 88.255 C 346.483 88.057,347.086 87.638,347.515 87.324 C 349.323 86.002,351.509 84.476,352.195 84.057 C 352.492 83.876,353.295 83.314,353.981 82.808 C 354.667 82.303,355.425 81.799,355.665 81.690 C 356.209 81.442,356.225 80.909,355.707 80.361 C 355.489 80.131,354.905 79.342,354.408 78.606 C 351.941 74.954,351.625 74.551,351.234 74.551 C 350.972 74.551,350.426 74.114,350.426 73.903 C 350.426 73.567,348.578 71.305,348.232 71.218 C 348.005 71.161,347.506 70.660,347.123 70.104 C 346.740 69.549,346.319 69.053,346.186 69.002 C 346.053 68.951,345.633 68.440,345.253 67.866 C 344.872 67.293,344.262 66.640,343.898 66.415 C 343.534 66.189,343.236 65.944,343.236 65.869 C 343.236 65.795,342.767 65.243,342.195 64.642 C 341.623 64.042,341.154 63.478,341.154 63.389 C 341.154 63.301,340.835 63.035,340.445 62.798 C 340.054 62.561,339.661 62.246,339.571 62.098 C 339.481 61.950,339.077 61.488,338.672 61.071 C 338.268 60.655,337.938 60.245,337.938 60.160 C 337.938 60.076,337.773 59.954,337.573 59.891 C 337.372 59.827,337.035 59.481,336.822 59.121 C 336.610 58.762,336.306 58.467,336.146 58.467 C 335.987 58.467,335.856 58.382,335.856 58.278 C 335.856 58.174,335.772 58.089,335.669 58.089 C 335.566 58.089,335.162 57.736,334.771 57.304 C 333.770 56.200,332.960 55.440,332.783 55.440 C 332.588 55.440,330.937 53.717,330.937 53.514 C 330.937 53.428,330.824 53.359,330.687 53.359 C 330.550 53.359,330.151 53.103,329.801 52.791 C 329.452 52.479,329.114 52.223,329.051 52.223 C 328.988 52.223,328.786 51.968,328.602 51.656 C 328.417 51.343,328.149 51.088,328.006 51.088 C 327.863 51.088,327.691 50.918,327.625 50.710 C 327.510 50.348,327.323 50.254,326.836 50.314 C 326.713 50.329,326.559 50.169,326.492 49.958 C 326.425 49.747,326.254 49.574,326.112 49.574 C 325.970 49.574,325.676 49.325,325.458 49.019 C 325.241 48.714,324.873 48.437,324.641 48.404 C 324.409 48.371,324.135 48.153,324.033 47.919 C 323.930 47.684,323.743 47.493,323.616 47.493 C 323.490 47.493,323.319 47.380,323.236 47.242 C 323.152 47.103,322.807 46.830,322.469 46.633 C 322.131 46.437,321.854 46.209,321.854 46.128 C 321.854 46.046,321.764 45.979,321.654 45.979 C 321.544 45.979,321.037 45.543,320.526 45.010 C 319.887 44.344,319.501 44.078,319.289 44.160 C 319.083 44.239,318.950 44.158,318.886 43.916 C 318.834 43.717,318.629 43.512,318.431 43.460 C 318.232 43.408,318.070 43.239,318.070 43.084 C 318.070 42.779,317.569 42.510,317.304 42.673 C 317.214 42.729,316.817 42.432,316.422 42.012 C 316.028 41.593,315.573 41.249,315.411 41.249 C 315.250 41.249,314.654 40.842,314.087 40.345 C 313.520 39.847,312.822 39.338,312.535 39.213 C 312.249 39.089,312.015 38.899,312.015 38.793 C 312.015 38.687,311.890 38.600,311.738 38.600 C 311.586 38.600,311.366 38.423,311.250 38.207 C 311.135 37.990,310.932 37.855,310.799 37.906 C 310.667 37.957,310.232 37.708,309.834 37.353 C 309.435 36.998,308.961 36.708,308.781 36.708 C 308.601 36.708,308.243 36.457,307.985 36.151 C 307.727 35.844,307.476 35.633,307.427 35.682 C 307.379 35.731,307.231 35.641,307.099 35.482 C 306.968 35.324,306.714 35.194,306.536 35.194 C 306.358 35.194,305.964 34.941,305.661 34.632 C 305.357 34.322,304.965 34.067,304.789 34.064 C 304.614 34.061,304.200 33.812,303.870 33.510 C 303.540 33.209,303.030 32.914,302.737 32.856 C 302.443 32.797,301.882 32.427,301.488 32.034 C 301.079 31.625,300.628 31.343,300.434 31.376 C 300.247 31.408,300.095 31.343,300.095 31.232 C 300.095 31.122,299.971 31.031,299.820 31.031 C 299.669 31.031,299.463 30.883,299.361 30.702 C 299.260 30.520,299.116 30.433,299.042 30.507 C 298.890 30.659,297.824 30.087,297.824 29.855 C 297.824 29.774,297.695 29.707,297.538 29.707 C 297.142 29.707,296.529 29.332,295.890 28.700 C 295.593 28.406,295.247 28.204,295.121 28.250 C 294.995 28.296,294.636 28.145,294.324 27.915 C 294.011 27.685,293.511 27.436,293.213 27.362 C 292.914 27.289,292.546 27.105,292.395 26.954 C 292.244 26.803,291.961 26.679,291.767 26.679 C 291.572 26.679,291.360 26.593,291.295 26.488 C 291.230 26.383,290.629 26.040,289.959 25.727 C 289.290 25.414,288.742 25.075,288.742 24.973 C 288.742 24.871,288.593 24.785,288.411 24.783 C 288.228 24.781,287.867 24.612,287.606 24.409 C 287.346 24.205,286.989 24.037,286.813 24.034 C 286.637 24.032,286.440 23.944,286.375 23.838 C 286.309 23.732,286.189 23.687,286.108 23.737 C 286.027 23.787,285.775 23.655,285.547 23.443 C 285.320 23.231,285.030 23.092,284.903 23.136 C 284.777 23.179,284.546 23.071,284.390 22.896 C 284.148 22.624,283.364 22.302,282.814 22.248 C 282.727 22.240,282.540 22.073,282.397 21.878 C 282.246 21.672,282.014 21.570,281.844 21.635 C 281.683 21.697,281.552 21.665,281.552 21.565 C 281.552 21.464,281.432 21.381,281.287 21.381 C 281.141 21.381,280.537 21.126,279.943 20.814 C 279.350 20.501,278.738 20.246,278.583 20.246 C 278.429 20.246,277.698 19.948,276.958 19.584 C 276.219 19.219,275.457 18.921,275.266 18.921 C 275.074 18.921,274.868 18.794,274.808 18.638 C 274.748 18.482,274.494 18.354,274.244 18.354 C 273.994 18.354,273.641 18.279,273.460 18.187 C 273.279 18.095,272.876 17.913,272.564 17.783 C 272.252 17.653,271.826 17.473,271.618 17.383 C 271.410 17.293,271.068 17.196,270.859 17.167 C 270.650 17.138,270.269 16.968,270.013 16.788 C 269.757 16.609,269.370 16.462,269.154 16.462 C 268.938 16.462,268.680 16.394,268.581 16.312 C 268.482 16.230,267.763 15.953,266.982 15.697 C 266.202 15.441,265.535 15.168,265.500 15.090 C 265.465 15.012,265.230 14.948,264.977 14.948 C 264.724 14.948,264.369 14.873,264.189 14.781 C 263.474 14.417,262.885 14.167,262.622 14.114 C 262.470 14.084,262.219 14.011,262.062 13.952 C 261.906 13.893,261.523 13.780,261.211 13.702 C 260.899 13.624,260.601 13.546,260.549 13.529 C 260.497 13.512,260.199 13.434,259.886 13.357 C 259.310 13.213,258.639 12.958,258.044 12.655 C 257.863 12.563,257.549 12.488,257.346 12.488 C 257.142 12.488,256.929 12.413,256.873 12.321 C 256.816 12.229,256.214 12.049,255.535 11.921 C 254.856 11.792,254.253 11.611,254.195 11.517 C 254.137 11.423,254.013 11.394,253.919 11.452 C 253.825 11.510,253.494 11.426,253.184 11.266 C 252.874 11.106,252.408 10.974,252.149 10.974 C 251.890 10.974,251.632 10.901,251.577 10.811 C 251.490 10.670,251.059 10.569,249.571 10.339 C 249.413 10.314,249.194 10.239,249.085 10.171 C 248.975 10.104,248.679 10.009,248.426 9.962 C 247.537 9.795,246.829 9.596,246.641 9.460 C 246.537 9.385,246.325 9.320,246.168 9.316 C 246.012 9.312,245.246 9.168,244.465 8.996 C 243.685 8.824,242.833 8.654,242.573 8.617 C 242.313 8.581,241.845 8.451,241.533 8.330 C 241.220 8.209,240.922 8.121,240.870 8.134 C 240.596 8.206,238.851 7.878,238.653 7.718 C 238.526 7.615,237.917 7.515,237.300 7.494 C 236.683 7.474,236.043 7.345,235.878 7.208 C 235.712 7.071,235.441 7.011,235.274 7.075 C 235.107 7.139,234.872 7.128,234.751 7.051 C 234.630 6.974,234.149 6.900,233.680 6.887 C 233.212 6.874,232.573 6.753,232.261 6.618 C 231.949 6.483,231.626 6.387,231.543 6.406 C 231.460 6.424,230.524 6.303,229.462 6.136 C 228.400 5.969,227.190 5.798,226.774 5.755 C 226.358 5.713,225.634 5.632,225.166 5.576 C 224.697 5.520,223.974 5.439,223.557 5.396 C 223.141 5.354,222.800 5.309,222.800 5.296 C 222.800 5.284,222.460 5.239,222.044 5.196 C 220.557 5.042,219.570 4.935,218.638 4.825 C 217.114 4.646,215.912 4.545,214.096 4.444 C 211.620 4.306,210.155 4.179,209.893 4.078 C 209.766 4.030,209.610 4.075,209.545 4.179 C 209.481 4.282,209.244 4.308,209.019 4.235 C 208.606 4.101,206.004 4.009,202.176 3.994 C 201.031 3.989,199.924 3.983,199.716 3.979 C 198.221 3.955,194.042 3.995,193.188 4.042 C 192.616 4.074,191.977 4.044,191.769 3.977 C 191.561 3.910,191.093 3.962,190.728 4.092 " stroke="none" fill="#b5cb2b" fill-rule="evenodd"></path><path id="path8" d="" stroke="none" fill="#55ff00" fill-rule="evenodd"></path><path id="path9" d="M364.522 96.081 C 363.619 96.742,362.897 97.244,359.648 99.478 C 358.854 100.024,357.583 100.938,356.822 101.509 C 356.062 102.080,355.333 102.549,355.203 102.551 C 355.073 102.553,354.967 102.627,354.967 102.715 C 354.967 102.851,354.376 103.279,352.707 104.352 C 352.545 104.456,351.944 104.889,351.372 105.314 C 350.799 105.740,350.024 106.293,349.648 106.544 C 347.578 107.929,346.136 108.917,345.885 109.122 C 345.631 109.330,344.163 110.365,341.471 112.233 C 340.970 112.582,340.270 113.079,339.916 113.340 C 339.562 113.600,338.581 114.281,337.736 114.853 C 336.890 115.426,335.705 116.256,335.103 116.698 C 334.500 117.140,333.921 117.502,333.816 117.502 C 333.712 117.502,333.577 117.631,333.516 117.789 C 333.456 117.947,333.212 118.162,332.976 118.267 C 332.595 118.436,331.562 119.112,331.031 119.541 C 330.927 119.624,330.118 120.192,329.234 120.801 C 328.349 121.410,327.597 121.981,327.562 122.071 C 327.528 122.160,327.408 122.233,327.296 122.233 C 327.185 122.233,326.787 122.467,326.413 122.752 C 326.039 123.038,325.180 123.649,324.503 124.109 C 323.827 124.570,323.231 124.997,323.179 125.058 C 323.127 125.119,322.709 125.424,322.250 125.735 C 321.792 126.046,321.229 126.429,320.999 126.585 C 320.769 126.741,320.047 127.252,319.395 127.720 C 318.742 128.188,318.015 128.699,317.780 128.855 C 316.016 130.025,314.359 131.179,313.150 132.081 C 312.370 132.663,311.582 133.194,311.400 133.262 C 311.218 133.329,311.069 133.472,311.069 133.580 C 311.069 133.687,310.971 133.775,310.851 133.775 C 310.731 133.775,310.284 134.034,309.858 134.351 C 308.177 135.600,305.993 137.141,304.778 137.938 C 304.075 138.398,303.500 138.831,303.500 138.901 C 303.500 138.970,303.253 139.129,302.952 139.254 C 302.650 139.379,302.209 139.688,301.972 139.940 C 301.736 140.191,301.463 140.397,301.366 140.397 C 301.269 140.397,300.879 140.639,300.500 140.934 C 300.121 141.228,299.662 141.524,299.480 141.590 C 299.001 141.764,299.066 142.077,299.811 143.183 C 300.175 143.724,300.473 144.297,300.473 144.456 C 300.473 144.615,300.856 145.249,301.325 145.865 C 301.793 146.480,302.176 147.071,302.176 147.178 C 302.176 147.284,302.473 147.940,302.836 148.637 C 303.199 149.333,303.455 149.967,303.406 150.046 C 303.358 150.125,303.615 150.580,303.979 151.057 C 304.343 151.534,304.627 151.991,304.609 152.073 C 304.592 152.156,304.718 152.540,304.890 152.927 C 305.063 153.314,305.203 153.766,305.203 153.933 C 305.203 154.099,305.416 154.514,305.676 154.855 C 305.937 155.197,306.149 155.646,306.149 155.854 C 306.149 156.062,306.308 156.376,306.501 156.551 C 306.726 156.754,306.820 157.034,306.764 157.328 C 306.709 157.616,306.825 157.978,307.075 158.295 C 307.294 158.574,307.474 158.951,307.474 159.132 C 307.474 159.313,307.592 159.560,307.737 159.680 C 307.882 159.800,308.057 160.277,308.127 160.740 C 308.196 161.202,308.339 161.634,308.444 161.699 C 308.549 161.764,308.592 161.928,308.540 162.064 C 308.488 162.200,308.604 162.454,308.798 162.630 C 308.993 162.806,309.105 163.070,309.048 163.218 C 308.992 163.366,309.060 163.625,309.201 163.794 C 309.341 163.963,309.431 164.295,309.400 164.530 C 309.369 164.766,309.434 165.015,309.544 165.083 C 309.654 165.151,309.745 165.404,309.745 165.646 C 309.745 165.887,309.860 166.180,310.002 166.298 C 310.147 166.418,310.220 166.715,310.170 166.976 C 310.117 167.253,310.205 167.564,310.386 167.745 C 310.554 167.913,310.691 168.251,310.691 168.498 C 310.691 168.745,310.776 168.999,310.880 169.063 C 310.984 169.128,311.069 169.388,311.069 169.641 C 311.069 169.895,311.232 170.592,311.432 171.191 C 311.631 171.790,311.849 172.682,311.916 173.174 C 311.982 173.666,312.109 174.113,312.198 174.168 C 312.286 174.223,312.313 174.438,312.259 174.646 C 312.204 174.855,312.254 175.139,312.370 175.279 C 312.485 175.418,312.526 175.585,312.460 175.651 C 312.394 175.717,312.456 175.912,312.599 176.084 C 312.742 176.256,312.881 176.748,312.909 177.177 C 312.958 177.938,313.431 180.323,313.646 180.889 C 313.705 181.045,313.785 181.514,313.822 181.930 C 313.981 183.680,314.099 184.354,314.286 184.579 C 314.413 184.733,314.421 184.979,314.309 185.275 C 314.203 185.553,314.203 185.856,314.307 186.044 C 314.403 186.214,314.514 186.720,314.554 187.169 C 314.594 187.618,314.680 188.453,314.744 189.026 C 315.128 192.434,315.238 194.787,315.312 201.135 C 315.348 204.241,315.301 206.811,315.207 206.929 C 315.114 207.045,315.068 207.746,315.106 208.487 C 315.143 209.228,315.123 209.885,315.061 209.947 C 314.999 210.009,314.935 210.627,314.919 211.321 C 314.894 212.420,314.508 215.779,314.177 217.786 C 314.117 218.150,314.070 218.615,314.073 218.818 C 314.076 219.021,313.991 219.294,313.883 219.424 C 313.775 219.554,313.743 219.839,313.813 220.057 C 313.882 220.275,313.846 220.565,313.734 220.700 C 313.621 220.836,313.534 221.151,313.540 221.401 C 313.558 222.105,312.777 225.972,312.566 226.227 C 312.462 226.352,312.433 226.675,312.501 226.945 C 312.574 227.240,312.544 227.436,312.426 227.436 C 312.317 227.436,312.170 227.841,312.100 228.335 C 311.917 229.615,311.490 231.225,311.260 231.503 C 311.151 231.633,311.112 231.869,311.172 232.026 C 311.233 232.183,311.029 232.869,310.720 233.550 C 310.412 234.231,310.201 234.831,310.253 234.882 C 310.359 234.989,309.875 236.529,308.877 239.262 C 308.801 239.470,308.752 239.704,308.768 239.782 C 308.785 239.860,308.719 239.924,308.621 239.924 C 308.523 239.924,308.442 240.073,308.439 240.255 C 308.431 240.809,307.965 242.384,307.809 242.384 C 307.729 242.384,307.663 242.549,307.663 242.751 C 307.663 242.953,307.578 243.171,307.474 243.236 C 307.370 243.300,307.285 243.551,307.285 243.794 C 307.285 244.037,307.147 244.288,306.979 244.353 C 306.794 244.424,306.710 244.609,306.767 244.825 C 306.820 245.029,306.672 245.410,306.417 245.721 C 306.173 246.019,305.971 246.415,305.967 246.601 C 305.963 246.787,305.828 247.140,305.667 247.385 C 305.506 247.631,305.331 248.075,305.278 248.372 C 305.224 248.669,305.101 248.993,305.003 249.092 C 304.905 249.191,304.825 249.418,304.825 249.596 C 304.825 249.775,304.758 249.950,304.677 249.984 C 304.596 250.019,304.257 250.622,303.924 251.325 C 303.592 252.027,303.232 252.602,303.126 252.602 C 303.020 252.602,302.930 252.793,302.927 253.027 C 302.924 253.262,302.796 253.618,302.643 253.820 C 302.490 254.022,302.365 254.364,302.365 254.579 C 302.365 254.795,302.069 255.311,301.707 255.726 C 301.344 256.141,301.046 256.600,301.044 256.747 C 301.042 256.893,300.828 257.292,300.568 257.633 C 300.307 257.974,300.095 258.386,300.095 258.548 C 300.095 258.710,299.906 259.059,299.676 259.324 C 299.446 259.589,299.169 260.077,299.061 260.409 C 298.953 260.740,298.668 261.110,298.427 261.229 C 298.186 261.349,297.995 261.500,298.001 261.565 C 298.060 262.145,297.957 262.497,297.635 262.819 C 297.427 263.027,297.256 263.277,297.256 263.374 C 297.256 263.471,297.078 263.607,296.861 263.676 C 296.594 263.761,296.495 263.915,296.556 264.148 C 296.612 264.366,296.408 264.755,296.005 265.195 C 295.653 265.579,295.364 266.007,295.364 266.145 C 295.364 266.474,294.426 267.471,294.183 267.400 C 294.079 267.370,294.040 267.466,294.097 267.615 C 294.241 267.992,293.752 268.691,292.337 270.133 C 292.077 270.398,291.862 270.718,291.861 270.843 C 291.859 270.968,291.518 271.416,291.104 271.839 C 290.689 272.261,290.326 272.742,290.297 272.907 C 290.267 273.073,289.926 273.542,289.540 273.950 C 288.536 275.010,287.803 275.939,287.799 276.159 C 287.796 276.263,287.540 276.518,287.228 276.727 C 286.916 276.935,286.661 277.198,286.661 277.312 C 286.661 277.425,286.362 277.679,285.998 277.875 C 285.594 278.093,285.336 278.374,285.336 278.596 C 285.336 278.965,283.437 280.984,283.090 280.984 C 282.987 280.984,282.843 281.167,282.773 281.390 C 282.593 281.958,280.226 284.201,279.808 284.201 C 279.726 284.201,279.659 284.330,279.659 284.489 C 279.659 284.648,279.447 284.859,279.186 284.957 C 278.910 285.062,278.713 285.287,278.713 285.497 C 278.713 285.719,278.495 285.948,278.146 286.093 C 277.833 286.222,277.578 286.446,277.578 286.591 C 277.578 286.736,277.131 287.143,276.585 287.497 C 276.038 287.850,275.367 288.381,275.093 288.677 C 274.558 289.254,274.365 289.412,273.557 289.930 C 272.807 290.412,272.879 290.641,274.487 292.876 C 275.285 293.984,276.285 295.402,276.710 296.026 C 277.135 296.651,277.532 297.204,277.592 297.256 C 277.651 297.308,277.757 297.479,277.825 297.635 C 277.894 297.791,278.418 298.557,278.989 299.338 C 279.561 300.118,280.409 301.310,280.875 301.987 C 281.340 302.663,282.300 304.043,283.008 305.054 C 283.716 306.065,284.551 307.256,284.863 307.702 C 285.175 308.148,286.147 309.535,287.022 310.784 C 288.475 312.858,289.115 313.775,290.954 316.414 C 291.298 316.909,291.895 317.760,292.279 318.307 C 292.664 318.853,294.253 321.131,295.810 323.368 C 297.367 325.605,298.805 327.649,299.004 327.909 C 299.363 328.377,302.341 332.638,303.542 334.403 C 303.883 334.905,304.253 335.415,304.364 335.538 C 304.474 335.661,305.113 336.564,305.783 337.545 C 306.977 339.294,307.255 339.694,309.416 342.763 C 310.003 343.595,310.973 345.000,311.573 345.885 C 312.173 346.769,312.714 347.535,312.775 347.588 C 312.836 347.640,313.265 348.236,313.728 348.912 C 314.191 349.588,314.616 350.184,314.672 350.237 C 314.729 350.289,315.155 350.893,315.618 351.580 C 318.330 355.596,319.517 357.226,319.734 357.232 C 319.869 357.235,320.961 356.535,322.162 355.676 C 323.363 354.818,324.573 353.969,324.850 353.790 C 325.894 353.117,326.206 352.823,326.206 352.517 C 326.206 352.225,327.371 351.257,328.471 350.635 C 329.111 350.273,329.423 349.937,329.423 349.610 C 329.423 349.458,329.820 349.048,330.304 348.698 C 330.789 348.347,331.449 347.799,331.771 347.479 C 332.092 347.159,332.654 346.694,333.018 346.445 C 333.921 345.827,334.153 345.582,334.153 345.249 C 334.153 345.092,334.430 344.773,334.768 344.539 C 335.106 344.306,335.649 343.853,335.973 343.533 C 336.298 343.213,336.809 342.735,337.109 342.470 C 337.408 342.205,337.872 341.737,338.138 341.430 C 338.404 341.122,339.149 340.384,339.793 339.790 C 340.438 339.196,340.965 338.621,340.965 338.513 C 340.965 338.405,341.071 338.313,341.202 338.310 C 341.585 338.300,342.523 337.379,342.421 337.113 C 342.367 336.972,342.600 336.721,342.970 336.522 C 343.324 336.331,343.614 336.062,343.614 335.924 C 343.614 335.785,343.950 335.450,344.360 335.179 C 344.772 334.906,345.132 334.502,345.164 334.277 C 345.196 334.053,345.413 333.786,345.646 333.683 C 345.879 333.581,346.050 333.373,346.025 333.221 C 346.000 333.069,346.173 332.845,346.410 332.725 C 346.647 332.604,347.158 332.085,347.545 331.571 C 348.386 330.457,349.674 329.157,350.232 328.858 C 350.489 328.720,350.614 328.496,350.578 328.236 C 350.539 327.966,350.667 327.757,350.958 327.610 C 351.199 327.489,351.390 327.336,351.384 327.271 C 351.350 326.931,351.406 326.848,351.791 326.677 C 352.022 326.574,352.256 326.300,352.312 326.069 C 352.367 325.837,352.843 325.198,353.370 324.648 C 353.896 324.099,354.449 323.372,354.599 323.034 C 354.749 322.695,355.021 322.370,355.203 322.312 C 355.385 322.255,355.535 322.127,355.535 322.030 C 355.535 321.932,355.747 321.667,356.008 321.441 C 356.268 321.214,356.481 320.872,356.481 320.679 C 356.481 320.486,356.608 320.280,356.764 320.220 C 356.921 320.160,357.048 320.011,357.048 319.888 C 357.048 319.766,357.307 319.512,357.624 319.325 C 358.051 319.073,358.170 318.892,358.084 318.621 C 358.009 318.386,358.073 318.217,358.265 318.143 C 358.428 318.081,358.562 317.917,358.562 317.779 C 358.562 317.641,358.720 317.478,358.914 317.416 C 359.107 317.355,359.423 316.956,359.615 316.529 C 359.807 316.103,360.330 315.378,360.777 314.918 C 361.224 314.458,361.589 313.922,361.589 313.727 C 361.589 313.532,361.845 313.131,362.157 312.836 C 362.469 312.541,362.725 312.190,362.725 312.055 C 362.725 311.813,362.908 311.546,363.503 310.918 C 363.672 310.741,363.959 310.274,364.143 309.880 C 364.326 309.487,364.721 308.903,365.020 308.583 C 365.319 308.263,365.563 307.924,365.563 307.830 C 365.563 307.543,366.016 306.832,366.367 306.567 C 366.549 306.430,366.698 306.159,366.698 305.966 C 366.698 305.772,366.954 305.373,367.266 305.078 C 367.578 304.783,367.833 304.398,367.833 304.222 C 367.833 304.045,367.920 303.848,368.026 303.782 C 368.132 303.717,368.169 303.584,368.108 303.486 C 368.048 303.388,368.132 303.258,368.295 303.195 C 368.457 303.133,368.590 302.972,368.590 302.838 C 368.590 302.704,368.718 302.546,368.874 302.486 C 369.030 302.426,369.158 302.213,369.158 302.013 C 369.158 301.812,369.413 301.375,369.726 301.041 C 370.038 300.706,370.293 300.272,370.293 300.075 C 370.293 299.877,370.442 299.565,370.624 299.379 C 370.807 299.194,371.104 298.747,371.285 298.386 C 371.758 297.447,372.058 296.994,372.319 296.826 C 372.445 296.745,372.498 296.547,372.436 296.386 C 372.374 296.225,372.485 295.866,372.683 295.587 C 372.881 295.308,373.169 294.825,373.323 294.513 C 373.478 294.201,373.710 293.877,373.841 293.794 C 373.971 293.711,374.078 293.537,374.078 293.408 C 374.078 293.138,374.697 291.879,375.024 291.485 C 375.146 291.338,375.191 291.129,375.123 291.021 C 375.056 290.912,375.091 290.823,375.202 290.823 C 375.312 290.823,375.402 290.716,375.402 290.585 C 375.402 290.454,375.577 290.237,375.791 290.104 C 376.054 289.939,376.142 289.744,376.064 289.498 C 375.989 289.261,376.084 289.019,376.338 288.801 C 376.552 288.618,376.727 288.251,376.727 287.985 C 376.727 287.712,376.974 287.231,377.294 286.880 C 377.606 286.538,377.862 286.092,377.862 285.889 C 377.862 285.686,377.943 285.372,378.041 285.191 C 378.477 284.394,379.453 282.202,379.422 282.090 C 379.403 282.022,379.513 281.863,379.665 281.736 C 379.818 281.609,379.943 281.345,379.943 281.149 C 379.943 280.954,380.114 280.476,380.322 280.087 C 380.530 279.699,380.700 279.274,380.700 279.142 C 380.700 279.010,380.785 278.903,380.889 278.903 C 380.993 278.903,381.079 278.724,381.079 278.506 C 381.079 278.047,381.647 277.010,381.898 277.010 C 381.992 277.010,382.028 276.853,381.977 276.660 C 381.927 276.468,382.036 276.111,382.219 275.868 C 382.403 275.624,382.512 275.318,382.462 275.187 C 382.411 275.056,382.499 274.710,382.657 274.419 C 383.245 273.334,383.996 271.427,384.282 270.293 C 384.361 269.981,384.652 269.249,384.928 268.667 C 385.204 268.084,385.430 267.429,385.430 267.211 C 385.430 266.993,385.516 266.763,385.620 266.698 C 385.724 266.634,385.809 266.415,385.809 266.211 C 385.809 266.008,385.886 265.694,385.980 265.513 C 386.074 265.332,386.258 264.823,386.388 264.380 C 386.519 263.938,386.707 263.576,386.805 263.576 C 386.904 263.576,386.940 263.459,386.885 263.316 C 386.830 263.173,386.906 262.822,387.054 262.537 C 387.202 262.252,387.323 261.826,387.323 261.591 C 387.323 261.355,387.454 261.054,387.614 260.920 C 387.801 260.766,387.841 260.613,387.725 260.497 C 387.609 260.381,387.674 260.082,387.906 259.669 C 388.105 259.314,388.269 258.813,388.269 258.556 C 388.269 258.299,388.343 258.089,388.434 258.089 C 388.591 258.089,388.868 256.944,388.922 256.065 C 388.937 255.837,389.103 255.478,389.293 255.269 C 389.530 255.007,389.600 254.737,389.517 254.407 C 389.451 254.143,389.466 253.926,389.550 253.926 C 389.723 253.926,390.211 252.364,390.249 251.690 C 390.262 251.449,390.385 251.183,390.521 251.099 C 390.677 251.003,390.720 250.793,390.638 250.535 C 390.567 250.309,390.592 250.021,390.695 249.896 C 390.798 249.771,390.944 249.243,391.020 248.723 C 391.096 248.202,391.244 247.564,391.349 247.304 C 391.548 246.809,391.566 246.732,391.769 245.506 C 391.838 245.090,391.964 244.579,392.049 244.371 C 392.134 244.163,392.388 243.013,392.613 241.816 C 392.838 240.620,393.106 239.486,393.209 239.298 C 393.311 239.109,393.345 238.797,393.284 238.604 C 393.223 238.411,393.246 238.208,393.336 238.153 C 393.425 238.097,393.513 237.532,393.530 236.896 C 393.551 236.140,393.664 235.638,393.855 235.446 C 394.088 235.213,394.101 235.098,393.917 234.876 C 393.761 234.688,393.750 234.556,393.882 234.470 C 393.990 234.400,394.127 233.798,394.186 233.133 C 394.244 232.468,394.397 231.860,394.524 231.781 C 394.653 231.701,394.709 231.457,394.650 231.232 C 394.592 231.008,394.625 230.553,394.725 230.219 C 394.824 229.885,394.939 229.101,394.979 228.477 C 395.020 227.852,395.111 227.193,395.182 227.010 C 395.252 226.828,395.259 226.545,395.196 226.382 C 395.133 226.218,395.158 225.941,395.252 225.767 C 395.402 225.486,395.487 224.840,395.766 221.854 C 395.805 221.438,395.878 220.501,395.928 219.773 C 395.978 219.044,396.094 217.938,396.186 217.313 C 396.277 216.689,396.334 215.752,396.313 215.232 C 396.291 214.711,396.347 213.859,396.435 213.337 C 396.524 212.815,396.599 211.794,396.602 211.067 C 396.610 208.737,396.636 208.326,396.777 208.325 C 396.871 208.325,396.878 201.377,396.790 196.121 C 396.769 194.872,396.807 193.710,396.875 193.539 C 396.943 193.367,396.907 193.170,396.796 193.101 C 396.674 193.026,396.640 192.687,396.709 192.255 C 396.778 191.822,396.743 191.483,396.622 191.408 C 396.490 191.326,396.479 191.127,396.589 190.836 C 396.683 190.590,396.721 190.350,396.674 190.303 C 396.576 190.205,396.385 187.540,396.367 185.998 C 396.360 185.426,396.305 184.872,396.244 184.768 C 396.184 184.664,396.160 184.342,396.190 184.051 C 396.239 183.590,396.147 182.655,395.738 179.470 C 395.685 179.054,395.606 178.353,395.564 177.914 C 395.521 177.474,395.422 177.009,395.343 176.882 C 395.264 176.754,395.177 176.305,395.149 175.884 C 395.016 173.868,394.930 173.107,394.822 173.000 C 394.758 172.935,394.796 172.774,394.906 172.641 C 395.045 172.474,395.046 172.286,394.912 172.035 C 394.805 171.835,394.674 171.230,394.621 170.691 C 394.569 170.151,394.471 169.622,394.404 169.514 C 394.337 169.406,394.242 168.921,394.191 168.436 C 394.140 167.950,394.023 167.411,393.929 167.236 C 393.836 167.061,393.810 166.666,393.871 166.358 C 393.934 166.044,393.895 165.744,393.783 165.674 C 393.673 165.606,393.628 165.434,393.682 165.292 C 393.737 165.150,393.682 164.972,393.559 164.896 C 393.392 164.793,393.397 164.722,393.579 164.609 C 393.770 164.491,393.756 164.362,393.512 163.989 C 393.342 163.730,393.123 162.868,393.024 162.074 C 392.925 161.279,392.742 160.505,392.616 160.354 C 392.490 160.202,392.434 159.897,392.492 159.676 C 392.549 159.456,392.517 159.115,392.419 158.919 C 392.322 158.722,392.163 158.403,392.067 158.208 C 391.958 157.989,391.959 157.786,392.068 157.677 C 392.178 157.566,392.072 157.073,391.788 156.374 C 391.521 155.716,391.370 155.042,391.426 154.752 C 391.478 154.478,391.428 154.197,391.314 154.126 C 391.200 154.056,391.107 153.791,391.107 153.537 C 391.107 153.283,391.020 153.075,390.914 153.075 C 390.804 153.075,390.771 152.876,390.837 152.612 C 390.901 152.358,390.884 152.039,390.799 151.903 C 390.613 151.605,390.572 151.468,390.416 150.615 C 390.349 150.251,390.179 149.776,390.038 149.559 C 389.897 149.343,389.830 149.117,389.890 149.057 C 389.949 148.997,389.833 148.608,389.632 148.191 C 389.422 147.756,389.330 147.330,389.415 147.191 C 389.500 147.054,389.448 146.782,389.295 146.564 C 389.147 146.352,389.026 146.038,389.026 145.866 C 389.026 145.693,388.902 145.450,388.750 145.324 C 388.528 145.140,388.519 145.021,388.703 144.708 C 388.882 144.404,388.881 144.303,388.694 144.236 C 388.564 144.189,388.458 143.949,388.458 143.704 C 388.458 143.459,388.372 143.205,388.268 143.141 C 388.164 143.076,388.126 142.830,388.186 142.595 C 388.252 142.328,388.181 142.074,387.997 141.921 C 387.834 141.786,387.701 141.547,387.701 141.390 C 387.701 141.233,387.538 140.839,387.338 140.514 C 387.138 140.190,386.919 139.541,386.851 139.073 C 386.784 138.605,386.603 138.027,386.450 137.790 C 386.297 137.553,386.216 137.288,386.270 137.201 C 386.324 137.113,386.201 136.892,385.998 136.708 C 385.744 136.478,385.680 136.282,385.793 136.081 C 385.904 135.881,385.779 135.459,385.399 134.757 C 385.092 134.190,384.879 133.626,384.926 133.504 C 384.973 133.382,384.880 132.988,384.718 132.630 C 384.557 132.271,384.440 131.908,384.459 131.823 C 384.477 131.738,384.320 131.450,384.110 131.183 C 383.900 130.915,383.728 130.577,383.728 130.431 C 383.728 130.286,383.590 129.957,383.423 129.702 C 383.255 129.446,383.170 129.103,383.232 128.939 C 383.296 128.774,383.138 128.335,382.875 127.948 C 382.615 127.566,382.403 127.140,382.403 127.000 C 382.403 126.861,382.270 126.614,382.108 126.452 C 381.946 126.290,381.861 126.033,381.920 125.880 C 381.979 125.728,381.824 125.207,381.577 124.722 C 380.852 123.303,380.533 122.554,380.394 121.949 C 380.322 121.637,380.107 121.178,379.914 120.930 C 379.722 120.682,379.565 120.374,379.565 120.247 C 379.565 120.119,379.352 119.701,379.092 119.318 C 378.832 118.935,378.619 118.538,378.619 118.436 C 378.619 118.335,378.419 117.934,378.175 117.546 C 377.932 117.158,377.770 116.728,377.817 116.590 C 377.864 116.453,377.638 115.915,377.314 115.395 C 376.991 114.875,376.727 114.349,376.727 114.225 C 376.727 114.102,376.429 113.582,376.064 113.069 C 375.678 112.526,375.402 111.912,375.402 111.595 C 375.402 111.297,375.318 110.950,375.216 110.825 C 374.244 109.633,374.008 109.282,373.987 108.999 C 373.974 108.818,373.611 108.155,373.181 107.525 C 372.718 106.846,372.435 106.236,372.486 106.028 C 372.540 105.806,372.151 105.091,371.429 104.088 C 370.665 103.028,370.321 102.386,370.393 102.159 C 370.463 101.939,370.213 101.415,369.688 100.680 C 369.240 100.055,368.491 98.980,368.023 98.292 C 365.775 94.991,365.903 95.072,364.522 96.081 " stroke="none" fill="#d1dc31" fill-rule="evenodd"></path><path id="path10" d="" stroke="none" fill="#99ff33" fill-rule="evenodd"></path><path id="path11" d="M85.380 215.516 C 85.380 215.880,85.419 216.029,85.466 215.847 C 85.514 215.665,85.514 215.367,85.466 215.184 C 85.419 215.002,85.380 215.151,85.380 215.516 " stroke="none" fill="#ffff00" fill-rule="evenodd"></path></g> -</svg>; +<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 240 240" width="240.0pt" height="240.0pt"> +<path d="M 0.00 0.00 L 240.00 0.00 L 240.00 240.00 L 0.00 240.00 L 0.00 0.00 Z" fill="#ffffff" /> +<path d="M 116.97 3.45 C 155.78 2.17 194.29 21.78 215.90 54.07 C 226.92 70.43 234.08 89.34 236.07 109.00 C 239.08 140.20 228.61 172.42 208.14 196.12 C 191.73 215.41 168.66 228.79 143.97 234.16 C 125.25 238.08 105.37 237.44 87.04 231.86 C 67.00 226.07 48.82 214.65 34.69 199.32 C 14.08 177.26 2.88 147.13 3.50 117.00 C 4.36 95.58 10.72 74.49 22.55 56.55 C 35.03 37.69 52.63 22.36 73.52 13.50 C 87.07 6.87 101.94 3.80 116.97 3.45 Z" fill="#9fbb1a" /> +<path d="M 69.17 61.47 C 70.78 61.56 72.37 61.91 73.97 62.05 C 80.30 62.27 86.66 62.04 93.00 62.14 C 96.81 62.23 100.65 61.35 104.18 62.75 C 108.45 64.30 111.62 68.44 111.67 73.03 C 111.78 81.35 111.66 89.68 111.72 98.00 C 111.65 101.03 111.87 104.65 110.30 107.35 C 108.22 110.91 104.17 113.41 100.02 113.40 C 90.68 113.43 81.33 113.42 71.99 113.40 C 65.66 113.41 59.85 108.54 59.66 102.04 C 59.55 92.36 59.70 82.67 59.58 72.99 C 59.41 67.44 63.60 62.15 69.17 61.47 Z" fill="#ffffff" /> +<path d="M 138.98 61.27 C 148.33 61.42 157.69 61.22 167.04 61.37 C 173.28 61.31 178.81 66.69 178.70 72.96 C 178.72 82.65 178.75 92.34 178.68 102.02 C 178.48 108.28 173.18 112.96 167.02 113.04 C 157.69 113.25 148.33 113.02 138.99 113.15 C 132.77 113.56 126.76 108.35 126.66 102.04 C 126.55 94.37 126.67 86.68 126.62 79.00 C 126.63 76.33 126.42 73.60 126.72 70.94 C 127.60 65.24 133.25 60.88 138.98 61.27 Z" fill="#ffffff" /> +<path d="M 70.97 72.97 C 80.41 72.70 89.87 72.92 99.31 72.86 C 99.39 82.36 99.34 91.87 99.34 101.38 C 89.85 101.36 80.36 101.42 70.87 101.35 C 70.90 91.90 70.70 82.42 70.97 72.97 Z" fill="#9fbb1a" /> +<path d="M 138.39 72.91 C 147.80 72.79 157.23 72.85 166.65 72.88 C 166.65 82.41 166.85 91.97 166.55 101.49 C 157.18 101.27 147.79 101.39 138.41 101.42 C 138.30 91.92 138.36 82.41 138.39 72.91 Z" fill="#9fbb1a" /> +<path d="M 69.96 128.72 C 77.95 128.35 86.00 128.68 94.00 128.66 C 97.84 128.75 101.40 128.12 104.93 129.93 C 109.12 131.86 111.63 136.43 111.39 141.00 C 111.31 150.34 111.48 159.70 111.31 169.04 C 111.25 175.45 105.33 180.72 99.01 180.44 C 90.00 180.43 81.00 180.42 71.99 180.44 C 67.16 180.64 62.37 177.99 60.28 173.57 C 59.04 171.04 59.32 167.76 59.27 165.00 C 59.38 156.70 59.15 148.39 59.37 140.10 C 59.59 134.25 64.10 129.27 69.96 128.72 Z" fill="#ffffff" /> +<path d="M 137.96 128.68 C 146.96 128.36 156.00 128.45 165.00 128.61 C 167.68 128.64 170.26 129.00 172.61 130.36 C 176.44 132.46 178.51 136.68 178.41 140.99 C 178.39 150.33 178.47 159.67 178.37 169.01 C 178.48 174.84 173.95 180.48 167.95 180.68 C 159.31 180.89 150.65 180.67 142.00 180.78 C 139.64 180.74 137.05 180.91 134.76 180.27 C 129.71 178.66 126.48 173.17 126.62 168.01 C 126.61 161.01 126.64 154.00 126.62 147.00 C 126.71 143.40 126.11 139.00 127.75 135.73 C 129.57 131.70 133.51 128.85 137.96 128.68 Z" fill="#ffffff" /> +<path d="M 70.98 140.01 C 80.41 139.71 89.87 139.94 99.31 139.89 C 99.40 149.41 99.33 158.93 99.35 168.45 C 89.85 168.43 80.36 168.47 70.86 168.42 C 70.91 158.96 70.69 149.47 70.98 140.01 Z" fill="#9fbb1a" /> +<path d="M 138.45 140.41 C 147.84 140.29 157.27 140.44 166.67 140.35 C 166.70 149.82 166.71 159.29 166.67 168.77 C 157.24 168.71 147.81 168.71 138.38 168.77 C 138.39 159.32 138.24 149.85 138.45 140.41 Z" fill="#9fbb1a" /> +</svg> export default icons; \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/post-thumbnail.min.js b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/post-thumbnail.min.js index 7eb8a4f8f..bb7dc1190 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/post-thumbnail.min.js +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_block/static/src/post-thumbnail.min.js @@ -20,7 +20,6 @@ const wpEditorProxy = { const wpProxy = { get(obj, prop) { if (prop == 'editor') { - console.log(obj[prop]) if (obj[prop] && !obj[prop].isProxy) { obj[prop] = new Proxy(obj[prop], wpEditorProxy) } @@ -37,4 +36,4 @@ const wpProxy = { } } -window.wp = new Proxy(wp, wpProxy) \ No newline at end of file +window.wp = new Proxy(wp, wpProxy) diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_data/module.nextgen_data.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_data/module.nextgen_data.php index 23fefa105..e3eb74387 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_data/module.nextgen_data.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_data/module.nextgen_data.php @@ -22,7 +22,7 @@ class M_NextGen_Data extends C_Base_Module 'photocrati-nextgen-data', 'NextGEN Data Tier', "Provides a data tier for NextGEN gallery based on the DataMapper module", - '3.1.6', + '3.1.19', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' @@ -165,6 +165,9 @@ class M_NextGen_Data extends C_Base_Module // Remove disallowed elements and content if ($data instanceof DOMElement) { foreach ($data->getElementsByTagName('script') as $deleteme) { + /** + * @var DOMNode $deleteme + */ $data->removeChild($deleteme); } } @@ -196,7 +199,7 @@ class M_NextGen_Data extends C_Base_Module } } else { - $dom = new DOMDocument(); + $dom = new DOMDocument('1.0', 'UTF-8'); if (!empty($data)) { @@ -259,18 +262,22 @@ class M_NextGen_Data extends C_Base_Module 'C_Gallery' => 'class.gallery.php', 'C_Gallery_Mapper' => 'class.gallery_mapper.php', 'C_Gallery_Storage' => 'class.gallery_storage.php', - 'C_Gallerystorage_Base' => 'class.gallerystorage_base.php', - 'C_Gallerystorage_Driver_Base' => 'class.gallerystorage_driver_base.php', 'C_Image' => 'class.image.php', 'C_Image_Mapper' => 'class.image_mapper.php', 'C_Image_Wrapper' => 'class.image_wrapper.php', 'C_Image_Wrapper_Collection' => 'class.image_wrapper_collection.php', 'C_NextGen_Data_Installer' => 'class.nextgen_data_installer.php', 'C_Nextgen_Metadata' => 'class.nextgen_metadata.php', - 'C_Ngglegacy_Gallerystorage_Driver' => 'class.ngglegacy_gallerystorage_driver.php', - 'C_Ngglegacy_Thumbnail' => 'class.ngglegacy_thumbnail.php', - 'C_Wordpress_Gallerystorage_Driver' => 'class.wordpress_gallerystorage_driver.php', - 'Mixin_NextGen_Table_Extras' => 'mixin.nextgen_table_extras.php' + 'C_Ngglegacy_Thumbnail' => 'class.ngglegacy_thumbnail.php', + 'C_Dynamic_Thumbnails_Manager' => 'class.dynamic_thumbnails_manager.php', + 'Mixin_NextGen_Table_Extras' => 'mixin.nextgen_table_extras.php', + 'Mixin_GalleryStorage_Base' => 'mixin.gallerystorage_base.php', + 'Mixin_GalleryStorage_Base_Dynamic' => 'mixin.gallerystorage_base_dynamic.php', + 'Mixin_GalleryStorage_Base_Getters' => 'mixin.gallerystorage_base_getters.php', + 'Mixin_GalleryStorage_Base_Management' => 'mixin.gallerystorage_base_management.php', + 'Mixin_GalleryStorage_Base_MediaLibrary' => 'mixin.gallerystorage_base_medialibrary.php', + 'Mixin_GalleryStorage_Base_Upload' => 'mixin.gallerystorage_base_upload.php' + ); } } diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_data/package.module.nextgen_data.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_data/package.module.nextgen_data.php index cf3dc471c..28aae3804 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_data/package.module.nextgen_data.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_data/package.module.nextgen_data.php @@ -70,14 +70,6 @@ class A_NextGen_Data_Factory extends Mixin { return new C_Album($properties, $mapper, $context); } - function ngglegacy_gallery_storage($context = FALSE) - { - return new C_NggLegacy_GalleryStorage_Driver($context); - } - function wordpress_gallery_storage($context = FALSE) - { - return new C_WordPress_GalleryStorage_Driver($context); - } function gallery_storage($context = FALSE) { return new C_Gallery_Storage($context); @@ -236,6 +228,371 @@ class Mixin_Album_Mapper extends Mixin } } } +class Mixin_Dynamic_Thumbnails_Manager extends Mixin +{ + function get_route_name() + { + return C_NextGen_Settings::get_instance()->get('dynamic_thumbnail_slug'); + } + function _get_params_sanitized($params) + { + if (isset($params['rotation'])) { + $rotation = intval($params['rotation']); + if ($rotation && in_array(abs($rotation), array(90, 180, 270))) { + $rotation = $rotation % 360; + if ($rotation < 0) { + $rotation = 360 - $rotation; + } + $params['rotation'] = $rotation; + } else { + unset($params['rotation']); + } + } + if (isset($params['flip'])) { + $flip = strtolower($params['flip']); + if (in_array($flip, array('h', 'v', 'hv'))) { + $params['flip'] = $flip; + } else { + unset($params['flip']); + } + } + return $params; + } + function get_uri_from_params($params) + { + $params = $this->object->_get_params_sanitized($params); + $image = isset($params['image']) ? $params['image'] : null; + $image_id = is_scalar($image) || is_null($image) ? (int) $image : $image->pid; + $image_width = isset($params['width']) ? $params['width'] : null; + $image_height = isset($params['height']) ? $params['height'] : null; + $image_quality = isset($params['quality']) ? $params['quality'] : null; + $image_type = isset($params['type']) ? $params['type'] : null; + $image_crop = isset($params['crop']) ? $params['crop'] : null; + $image_watermark = isset($params['watermark']) ? $params['watermark'] : null; + $image_rotation = isset($params['rotation']) ? $params['rotation'] : null; + $image_flip = isset($params['flip']) ? $params['flip'] : null; + $image_reflection = isset($params['reflection']) ? $params['reflection'] : null; + $uri = null; + $uri .= '/'; + $uri .= $this->object->get_route_name() . '/'; + $uri .= strval($image_id) . '/'; + $uri .= strval($image_width) . 'x' . strval($image_height); + if ($image_quality != null) { + $uri .= 'x' . strval($image_quality); + } + $uri .= '/'; + if ($image_type != null) { + $uri .= $image_type . '/'; + } + if ($image_crop) { + $uri .= 'crop/'; + } + if ($image_watermark) { + $uri .= 'watermark/'; + } + if ($image_rotation) { + $uri .= 'rotation-' . $image_rotation . '/'; + } + if ($image_flip) { + $uri .= 'flip-' . $image_flip . '/'; + } + if ($image_reflection) { + $uri .= 'reflection/'; + } + return $uri; + } + function get_image_uri($image, $params) + { + $params['image'] = $image; + $uri = $this->object->get_uri_from_params($params); + if (substr($uri, -1) != '/') { + $uri .= '/'; + } + $uri .= wp_hash($uri) . '/'; + return $uri; + } + function get_image_url($image, $params) + { + return C_Router::get_instance()->get_url($this->object->get_image_uri($image, $params), FALSE, 'root'); + } + function get_params_from_uri($uri) + { + $regex = '/\\/?' . $this->object->get_route_name() . '\\/(\\d+)(?:\\/(.*))?/'; + $match = null; + // XXX move this URL clean up to I_Router? + $uri = preg_replace('/\\/index.php\\//', '/', $uri, 1); + $uri = trim($uri, '/'); + if (@preg_match($regex, $uri, $match) > 0) { + $image_id = $match[1]; + $uri_args = isset($match[2]) ? explode('/', $match[2]) : array(); + $params = array('image' => $image_id); + foreach ($uri_args as $uri_arg) { + $uri_arg_set = explode('-', $uri_arg); + $uri_arg_name = array_shift($uri_arg_set); + $uri_arg_value = $uri_arg_set ? array_shift($uri_arg_set) : null; + $size_match = null; + if ($uri_arg == 'watermark') { + $params['watermark'] = true; + } else { + if ($uri_arg_name == 'rotation') { + $params['rotation'] = $uri_arg_value; + } else { + if ($uri_arg_name == 'flip') { + $params['flip'] = $uri_arg_value; + } else { + if ($uri_arg == 'reflection') { + $params['reflection'] = true; + } else { + if ($uri_arg == 'crop') { + $params['crop'] = true; + } else { + if (in_array(strtolower($uri_arg), array('gif', 'jpg', 'png'))) { + $params['type'] = $uri_arg; + } else { + if (preg_match('/(\\d+)x(\\d+)(?:x(\\d+))?/i', $uri_arg, $size_match) > 0) { + $params['width'] = $size_match[1]; + $params['height'] = $size_match[2]; + if (isset($size_match[3])) { + $params['quality'] = $size_match[3]; + } + } + } + } + } + } + } + } + } + return $this->object->_get_params_sanitized($params); + } + return null; + } + function _get_name_prefix_list() + { + return array('id' => 'nggid0', 'size' => 'ngg0dyn-', 'flags' => '00f0', 'flag' => array('w0' => 'watermark', 'c0' => 'crop', 'r1' => 'rotation', 'f1' => 'flip', 'r0' => 'reflection', 't0' => 'type'), 'flag_len' => 2, 'max_value_length' => 15); + } + function get_name_from_params($params, $only_size_name = false, $id_in_name = true) + { + $prefix_list = $this->object->_get_name_prefix_list(); + $id_prefix = $prefix_list['id']; + $size_prefix = $prefix_list['size']; + $flags_prefix = $prefix_list['flags']; + $flags = $prefix_list['flag']; + $max_value_length = $prefix_list['max_value_length']; + $params = $this->object->_get_params_sanitized($params); + $image = isset($params['image']) ? $params['image'] : null; + $image_width = isset($params['width']) ? $params['width'] : null; + $image_height = isset($params['height']) ? $params['height'] : null; + $image_quality = isset($params['quality']) ? $params['quality'] : null; + $extension = null; + $name = null; + // if $only_size_name is false then we include the file name and image id for the image + if (!$only_size_name) { + if (is_int($image)) { + $imap = C_Image_Mapper::get_instance(); + $image = $imap->find($image); + } + if ($image != null) { + // this is used to remove the extension and then add it back at the end of the name + $extension = M_I18n::mb_pathinfo($image->filename, PATHINFO_EXTENSION); + if ($extension != null) { + $extension = '.' . $extension; + } + $name .= M_I18n::mb_basename($image->filename); + $name .= '-'; + if ($id_in_name) { + $image_id = strval($image->pid); + $id_len = min($max_value_length, strlen($image_id)); + $id_len_hex = dechex($id_len); + // sanity check, should never occurr if $max_value_length is not messed up, ensure only 1 character is used to encode length or else skip parameter + if (strlen($id_len_hex) == 1) { + $name .= $id_prefix . $id_len . substr($image_id, 0, $id_len); + $name .= '-'; + } + } + } + } + $name .= $size_prefix; + $name .= strval($image_width) . 'x' . strval($image_height); + if ($image_quality != null) { + $name .= 'x' . $image_quality; + } + $name .= '-'; + $name .= $flags_prefix; + foreach ($flags as $flag_prefix => $flag_name) { + $flag_value = 0; + if (isset($params[$flag_name])) { + $flag_value = $params[$flag_name]; + if (!is_string($flag_value)) { + // only strings or ints allowed, sprintf is required because intval(0) returns '' and not '0' + $flag_value = intval($flag_value); + $flag_value = sprintf('%d', $flag_value); + } + } + $flag_value = strval($flag_value); + $flag_len = min($max_value_length, strlen($flag_value)); + $flag_len_hex = dechex($flag_len); + // sanity check, should never occurr if $max_value_length is not messed up, ensure only 1 character is used to encode length or else skip parameter + if (strlen($flag_len_hex) == 1) { + $name .= $flag_prefix . $flag_len . substr($flag_value, 0, $flag_len); + } + } + $name .= $extension; + return $name; + } + function get_size_name($params) + { + $name = $this->object->get_name_from_params($params, true); + return $name; + } + function get_image_name($image, $params) + { + $params['image'] = $image; + $name = $this->object->get_name_from_params($params); + return $name; + } + function get_params_from_name($name, $is_only_size_name = false) + { + $prefix_list = $this->object->_get_name_prefix_list(); + $id_prefix = $prefix_list['id']; + $size_prefix = $prefix_list['size']; + $flags_prefix = $prefix_list['flags']; + $max_value_length = $prefix_list['max_value_length']; + $size_name = null; + $id_name = null; + $params = array(); + if (!$is_only_size_name) { + $extension = M_I18n::mb_pathinfo($name, PATHINFO_EXTENSION); + if ($extension != null) { + $extension = '.' . $extension; + } + $name = M_I18n::mb_basename($name); + } + $size_index = strrpos($name, $size_prefix); + if ($size_index > 0 || $size_index === 0) { + // check if name contains dynamic size/params info by looking for prefix + $size_name = substr($name, $size_index); + } + if (!$is_only_size_name) { + // name should contain the image id, search for prefix + $id_index = strrpos($name, $id_prefix); + if ($id_index > 0 || $id_index === 0) { + if ($size_index > 0 && $size_index > $id_index) { + $id_name = substr($name, $id_index, $size_index - $id_index); + } else { + $id_name = substr($name, $id_index); + } + } + } + // Double check we got a correct dynamic size/params string + if (substr($size_name, 0, strlen($size_prefix)) == $size_prefix) { + $flags = $prefix_list['flag']; + // get the length of the flag id (the key in the $flags array) in the string (how many characters to consume) + $flag_id_len = $prefix_list['flag_len']; + $params_str = substr($size_name, strlen($size_prefix)); + $params_parts = explode('-', $params_str); + // $param_part is a single param, separated by '-' + foreach ($params_parts as $param_part) { + // Parse WxHxQ - Q=quality + $param_size = explode('x', $param_part); + $param_size_count = count($param_size); + if (substr($param_part, 0, strlen($flags_prefix)) == $flags_prefix) { + /* Set flags, using $flags keys as prefixes */ + // move string pointer up (after the main flags prefix) + $param_flags = substr($param_part, strlen($flags_prefix)); + $param_flags_len = strlen($param_flags); + $flags_todo = $flags; + while (true) { + // ensure we don't run into an infinite loop ;) + if (count($flags_todo) == 0 || strlen($param_flags) == 0) { + break; + } + // get the flag prefix (a key in the $flags array) using flag id length + $flag_prefix = substr($param_flags, 0, $flag_id_len); + // move string pointer up (after the single flag prefix) + $param_flags = substr($param_flags, $flag_id_len); + // get the length of the flag value in the string (how many characters to consume) + // flag value length is stored in a single hexadecimal character next to the flag prefix + $flag_value_len = min(hexdec(substr($param_flags, 0, 1)), min($max_value_length, strlen($param_flags) - 1)); + // get the flag value + $flag_value = substr($param_flags, 1, $flag_value_len); + // move string pointer up (after the entire flag) + $param_flags = substr($param_flags, $flag_value_len + 1); + // make sure the flag is supported + if (isset($flags[$flag_prefix])) { + $flag_name = $flags[$flag_prefix]; + if (is_numeric($flag_value)) { + // convert numerical flags to integers + $flag_value = intval($flag_value); + } + $params[$flag_name] = $flag_value; + if (isset($flags_todo[$flag_prefix])) { + unset($flags_todo[$flag_prefix]); + } + } else { + // XXX unknown flag? + } + } + } else { + if ($param_size_count == 2 || $param_size_count == 3) { + // Set W H Q + $params['width'] = intval($param_size[0]); + $params['height'] = intval($param_size[1]); + if (isset($param_size[2]) && intval($param_size[2]) > 0) { + $params['quality'] = intval($param_size[2]); + } + } + } + } + } + // Double check we got a correct id string + if (substr($id_name, 0, strlen($id_prefix)) == $id_prefix) { + // move string pointer up (after the prefix) + $id_name = substr($id_name, strlen($id_prefix)); + // get the length of the image id in the string (how many characters to consume) + $id_len = min(hexdec(substr($id_name, 0, 1)), min($max_value_length, strlen($id_name) - 1)); + // get the id based on old position and id length + $image_id = intval(substr($id_name, 1, $id_len)); + if ($image_id > 0) { + $params['image'] = $image_id; + } + } + return $this->object->_get_params_sanitized($params); + } + function is_size_dynamic($name, $is_only_size_name = false) + { + $params = $this->object->get_params_from_name($name, $is_only_size_name); + if (isset($params['width']) && isset($params['height'])) { + return true; + } + return false; + } +} +/** + * Class C_Dynamic_Thumbnails_Manager + * @mixin Mixin_Dynamic_Thumbnails_Manager + */ +class C_Dynamic_Thumbnails_Manager extends C_Component +{ + static $_instances = array(); + function define($context = FALSE) + { + parent::define($context); + $this->implement('I_Dynamic_Thumbnails_Manager'); + $this->add_mixin('Mixin_Dynamic_Thumbnails_Manager'); + } + /** + * @param bool|string $context + * @return C_Dynamic_Thumbnails_Manager + */ + static function get_instance($context = False) + { + if (!isset(self::$_instances[$context])) { + self::$_instances[$context] = new C_Dynamic_Thumbnails_Manager($context); + } + return self::$_instances[$context]; + } +} class C_Exif_Writer_Wrapper { // Because our C_Exif_Writer class relies on PEL (a library which uses namespaces) we wrap @@ -265,6 +622,18 @@ class C_Exif_Writer_Wrapper self::load_pel(); return @C_Exif_Writer::read_metadata($filename); } + /** + * @param array $exif + * @return array + */ + public static function reset_orientation($exif = array()) + { + if (!M_NextGen_Data::check_pel_min_php_requirement()) { + return array(); + } + self::load_pel(); + return @C_Exif_Writer::reset_orientation($exif); + } /** * @param $filename * @param $metadata @@ -309,22 +678,15 @@ class Mixin_NextGen_Gallery_Validation } } // Set what will be the path to the gallery + $storage = C_Gallery_Storage::get_instance(); if (!$this->object->path) { - $storage = C_Gallery_Storage::get_instance(); - $this->object->path = $storage->get_upload_relpath($this->object); - unset($storage); - } else { - $this->object->path = M_NextGen_Data::strip_html($this->object->path); - $this->object->path = str_replace(array('"', "''", ">", "<"), array('', '', '', ''), $this->object->path); + $this->object->path = $storage->get_gallery_relpath($this->object); } // Ensure that the gallery path is restricted to $fs->get_document_root('galleries') $fs = C_Fs::get_instance(); $root = $fs->get_document_root('galleries'); - $gallery_abspath = $fs->get_absolute_path($fs->join_paths($root, $this->object->path)); - $storage = C_Gallery_Storage::get_instance(); - if ($gallery_abspath[0] != DIRECTORY_SEPARATOR) { - $gallery_abspath = DIRECTORY_SEPARATOR . $gallery_abspath; - } + $storage->flush_gallery_path_cache($this->object); + $gallery_abspath = $storage->get_gallery_abspath($this->object); if (strpos($gallery_abspath, $root) === FALSE) { $this->object->add_error(sprintf(__("Gallery path must be located in %s", 'nggallery'), $root), 'gallerypath'); $this->object->path = $storage->get_upload_relpath($this->object); @@ -338,7 +700,7 @@ class Mixin_NextGen_Gallery_Validation // Establish some rules on where galleries can go $abspath = $storage->get_gallery_abspath($this->object); // Galleries should at least be a sub-folder, not directly in WP_CONTENT - $not_directly_in = array('content' => WP_CONTENT_DIR, 'wordpress root' => $fs->get_document_root()); + $not_directly_in = array('content' => wp_normalize_path(WP_CONTENT_DIR), 'wordpress root' => $fs->get_document_root()); if (!empty($_SERVER['DOCUMENT_ROOT'])) { $not_directly_in['document root'] = $_SERVER['DOCUMENT_ROOT']; } @@ -347,8 +709,9 @@ class Mixin_NextGen_Gallery_Validation $this->object->add_error(sprintf(__("Gallery path must be a sub-directory under the %s directory", 'nggallery'), $label), 'gallerypath'); } } + $ABSPATH = wp_normalize_path(ABSPATH); // Disallow galleries from being under these directories at all - $not_ever_in = array('plugins' => WP_PLUGIN_DIR, 'must use plugins' => WPMU_PLUGIN_DIR, 'wp-admin' => $fs->join_paths(ABSPATH, 'wp-admin'), 'wp-includes' => $fs->join_paths(ABSPATH, 'wp-admin'), 'themes' => get_theme_root()); + $not_ever_in = array('plugins' => wp_normalize_path(WP_PLUGIN_DIR), 'must use plugins' => wp_normalize_path(WPMU_PLUGIN_DIR), 'wp-admin' => $fs->join_paths($ABSPATH, 'wp-admin'), 'wp-includes' => $fs->join_paths($ABSPATH, 'wp-admin'), 'themes' => get_theme_root()); foreach ($not_ever_in as $label => $dir) { if (strpos($abspath, $dir) === 0) { $this->object->add_error(sprintf(__("Gallery path cannot be under %s directory", 'nggallery'), $label), 'gallerypath'); @@ -456,7 +819,7 @@ class C_Gallery_Mapper extends C_CustomTable_DataMapper_Driver */ public static function get_instance($context = False) { - if (is_null(self::$_instance)) { + if (!self::$_instance) { $klass = get_class(); self::$_instance = new $klass($context); } @@ -476,10 +839,10 @@ class Mixin_Gallery_Mapper extends Mixin } function _save_entity($entity) { + $storage = C_Gallery_Storage::get_instance(); // A bug in NGG 2.1.24 allowed galleries to be created with spaces in the directory name, unreplaced by dashes // This causes a few problems everywhere, so we here allow users a way to fix those galleries by just re-saving if (FALSE !== strpos($entity->path, ' ')) { - $storage = C_Gallery_Storage::get_instance(); $abspath = $storage->get_gallery_abspath($entity->{$entity->id_field}); $pre_path = $entity->path; $entity->path = str_replace(' ', '-', $entity->path); @@ -508,6 +871,7 @@ class Mixin_Gallery_Mapper extends Mixin } $retval = $this->call_parent('_save_entity', $entity); if ($retval) { + wp_mkdir_p($storage->get_gallery_abspath($entity)); do_action('ngg_created_new_gallery', $entity->{$entity->id_field}); C_Photocrati_Transient_Manager::flush('displayed_gallery_rendering'); } @@ -585,100 +949,6 @@ class Mixin_Gallery_Mapper extends Mixin $this->object->_set_default_value($entity, 'author', get_current_user_id()); } } -class GalleryStorageDriverNotSelectedException extends RuntimeException -{ - function __construct($message = '', $code = NULL, $previous = NULL) - { - if (!$message) { - $message = "No gallery storage driver selected."; - } - parent::__construct($message, $code, $previous); - } -} -class Mixin_GalleryStorage extends Mixin -{ - /** - * Returns the name of the class which provides the gallerystorage implementation - * @param string|bool $context (optional) - * @return string - */ - function _get_driver_factory_method($context = FALSE) - { - $factory_method = ''; - // No constant has been defined to establish a global gallerystorage driver - if (!defined('GALLERYSTORAGE_DRIVER')) { - // Get the datamapper configured in the database - $factory_method = C_NextGen_Settings::get_instance()->gallerystorage_driver; - // Define a constant and use this as the global gallerystorage driver, - // unless running in a SimpleTest Environment - if (!isset($GLOBALS['SIMPLE_TEST_RUNNING'])) { - define('GALLERYSTORAGE_DRIVER', $factory_method); - } - } else { - $factory_method = GALLERYSTORAGE_DRIVER; - } - return $factory_method; - } -} -class C_GalleryStorage_Base extends C_Component -{ - /** - * Gets the url or path of an image of a particular size - * @param string $method - * @param array $args - * @return mixed - */ - function __call($method, $args) - { - if (preg_match("/^get_(\\w+)_(abspath|url|dimensions|html|size_params)\$/", $method, $match)) { - if (isset($match[1]) && isset($match[2]) && !$this->has_method($method)) { - $method = 'get_image_' . $match[2]; - $args[] = $match[1]; - // array($image, $size) - return parent::__call($method, $args); - } - } - return parent::__call($method, $args); - } -} -/** - * Class C_Gallery_Storage - * @mixin Mixin_GalleryStorage - * @implements I_Gallery_Storage - */ -class C_Gallery_Storage extends C_GalleryStorage_Base -{ - public static $_instances = array(); - function define($context = FALSE) - { - parent::define($context); - $this->add_mixin('Mixin_GalleryStorage'); - $this->wrap('I_GalleryStorage_Driver', array(&$this, '_get_driver'), $context); - $this->implement('I_Gallery_Storage'); - } - /** - * @param bool|string $context - * @return C_Gallery_Storage - */ - static function get_instance($context = False) - { - if (!isset(self::$_instances[$context])) { - self::$_instances[$context] = new C_Gallery_Storage($context); - } - return self::$_instances[$context]; - } - /** - * Returns the implementation for the gallerystorage - * @param string $context - * @return mixed - */ - function _get_driver($context) - { - $factory_method = $this->_get_driver_factory_method($context); - $factory = C_Component_Factory::get_instance(); - return $factory->create($factory_method, FALSE, $context); - } -} class E_UploadException extends E_NggErrorException { function __construct($message = '', $code = NULL, $previous = NULL) @@ -738,2965 +1008,2403 @@ class E_No_Image_Library_Exception extends E_NggErrorException } } } -class Mixin_GalleryStorage_Driver_Base extends Mixin +/** + * Class C_Gallery_Storage + * @implements I_Gallery_Storage + * @mixin Mixin_GalleryStorage_Base + * @mixin Mixin_GalleryStorage_Base_Dynamic + * @mixin Mixin_GalleryStorage_Base_Getters + * @mixin Mixin_GalleryStorage_Base_Management + * @mixin Mixin_GalleryStorage_Base_MediaLibrary + * @mixin Mixin_GalleryStorage_Base_Upload + */ +class C_Gallery_Storage extends C_Component { - /** - * Set correct file permissions (taken from wp core). Should be called - * after writing any file - * - * @class nggAdmin - * @param string $filename - * @return bool $result - */ - function _chmod($filename = '') + public static $_instances = array(); + function define($context = FALSE) { - $stat = @stat(dirname($filename)); - $perms = $stat['mode'] & 0666; - // Remove execute bits for files - if (@chmod($filename, $perms)) { - return TRUE; - } - return FALSE; + parent::define($context); + $this->add_mixin('Mixin_GalleryStorage_Base'); + $this->add_mixin('Mixin_GalleryStorage_Base_Dynamic'); + $this->add_mixin('Mixin_GalleryStorage_Base_Getters'); + $this->add_mixin('Mixin_GalleryStorage_Base_Management'); + $this->add_mixin('Mixin_GalleryStorage_Base_MediaLibrary'); + $this->add_mixin('Mixin_GalleryStorage_Base_Upload'); + $this->implement('I_Gallery_Storage'); + $this->implement('I_GalleryStorage_Driver'); + // backwards compatibility } /** - * Gets the id of a gallery, regardless of whether an integer - * or object was passed as an argument - * @param mixed $gallery_obj_or_id - * @return null|int + * Provides some aliases to defined methods; thanks to this a call to C_Gallery_Storage->get_thumb_url() is + * translated to C_Gallery_Storage->get_image_url('thumb'). + * TODO: Remove this 'magic' method so that our code is always understandable without needing deep context + * @param string $method + * @param array $args + * @return mixed + * @throws Exception */ - function _get_gallery_id($gallery_obj_or_id) + function __call($method, $args) { - $retval = NULL; - $gallery_key = $this->object->_gallery_mapper->get_primary_key_column(); - if (is_object($gallery_obj_or_id)) { - if (isset($gallery_obj_or_id->{$gallery_key})) { - $retval = $gallery_obj_or_id->{$gallery_key}; + if (preg_match("/^get_(\\w+)_(abspath|url|dimensions|html|size_params)\$/", $method, $match)) { + if (isset($match[1]) && isset($match[2]) && !$this->has_method($method)) { + $method = 'get_image_' . $match[2]; + $args[] = $match[1]; + return parent::__call($method, $args); } - } elseif (is_numeric($gallery_obj_or_id)) { - $retval = $gallery_obj_or_id; } - return $retval; + return parent::__call($method, $args); } /** - * Gets the id of an image, regardless of whether an integer - * or object was passed as an argument - * @param object|int $image_obj_or_id - * @return null|int + * For compatibility reasons, we include this method. This used to be used to get the underlying storage driver. + * Necessary for Imagify integration */ - function _get_image_id($image_obj_or_id) + function &get_wrapped_instance() { - $retval = NULL; - $image_key = $this->object->_image_mapper->get_primary_key_column(); - if (is_object($image_obj_or_id)) { - if (isset($image_obj_or_id->{$image_key})) { - $retval = $image_obj_or_id->{$image_key}; - } - } elseif (is_numeric($image_obj_or_id)) { - $retval = $image_obj_or_id; - } - return $retval; + return $this; } - function convert_slashes($path) + function initialize() { - $search = array('/', "\\"); - $replace = array(DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR); - return str_replace($search, $replace, $path); + parent::initialize(); + $this->_gallery_mapper = C_Gallery_Mapper::get_instance(); + $this->_image_mapper = C_Image_Mapper::get_instance(); } - function delete_directory($abspath) + /** + * @param bool|string $context + * @return C_Gallery_Storage + */ + static function get_instance($context = False) { - $retval = FALSE; - if (@file_exists($abspath)) { - $files = scandir($abspath); - array_shift($files); - array_shift($files); - foreach ($files as $file) { - $file_abspath = implode(DIRECTORY_SEPARATOR, array(rtrim($abspath, "/\\"), $file)); - if (is_dir($file_abspath)) { - $this->object->delete_directory($file_abspath); - } else { - unlink($file_abspath); - } - } - rmdir($abspath); - $retval = @file_exists($abspath); + if (!isset(self::$_instances[$context])) { + self::$_instances[$context] = new C_Gallery_Storage($context); } - return $retval; + return self::$_instances[$context]; } - /** - * Backs up an image file - * - * @param int|object $image - * @return bool - */ - function backup_image($image) +} +class Mixin_NextGen_Gallery_Image_Validation extends Mixin +{ + function validation() { - $retval = FALSE; - $image_path = $this->object->get_image_abspath($image); - if ($image_path && @file_exists($image_path)) { - $retval = copy($image_path, $this->object->get_backup_abspath($image)); - // Store the dimensions of the image - if (function_exists('getimagesize')) { - $mapper = C_Image_Mapper::get_instance(); - if (!is_object($image)) { - $image = $mapper->find($image); - } - if ($image) { - if (!property_exists($image, 'meta_data')) { - $image->meta_data = array(); - } - $dimensions = getimagesize($image_path); - $image->meta_data['backup'] = array('filename' => basename($image_path), 'width' => $dimensions[0], 'height' => $dimensions[1], 'generated' => microtime()); - $mapper->save($image); - } - } + // Additional checks... + if (isset($this->object->description)) { + $this->object->description = M_NextGen_Data::strip_html($this->object->description, TRUE); } - return $retval; + if (isset($this->object->alttext)) { + $this->object->alttext = M_NextGen_Data::strip_html($this->object->alttext, TRUE); + } + $this->validates_presence_of('galleryid', 'filename', 'alttext', 'exclude', 'sortorder', 'imagedate'); + $this->validates_numericality_of('galleryid'); + $this->validates_numericality_of($this->id()); + $this->validates_numericality_of('sortorder'); + $this->validates_length_of('filename', 185, '<=', __('Image filenames may not be longer than 185 characters in length', 'nextgen-gallery')); + return $this->object->is_valid(); + } +} +/** + * Model for NextGen Gallery Images + * @mixin Mixin_NextGen_Gallery_Image_Validation + * @implements I_Image + */ +class C_Image extends C_DataMapper_Model +{ + var $_mapper_interface = 'I_Image_Mapper'; + function define($properties = array(), $mapper = FALSE, $context = FALSE) + { + parent::define($mapper, $properties, $context); + $this->add_mixin('Mixin_NextGen_Gallery_Image_Validation'); + $this->implement('I_Image'); } /** - * Copies images into another gallery - * @param array $images - * @param int|object $gallery - * @param boolean $db optionally only copy the image files - * @param boolean $move move the image instead of copying - * @return bool + * Instantiates a new model + * @param array|stdClass $properties (optional) + * @param C_Image_Mapper|false $mapper (optional) + * @param string|false $context (optional) */ - function copy_images($images, $gallery, $db = TRUE, $move = FALSE) + function initialize($properties = array(), $mapper = FALSE, $context = FALSE) { - $retval = FALSE; - // Ensure we have a valid gallery - if ($gallery = $this->object->_get_gallery_id($gallery)) { - $gallery_path = $this->object->get_gallery_abspath($gallery); - $image_key = $this->object->_image_mapper->get_primary_key_column(); - $retval = TRUE; - $fs = C_Fs::get_instance(); - // Iterate through each image to copy... - foreach ($images as $image) { - // Copy each image size - foreach ($this->object->get_image_sizes() as $size) { - $image_path = $this->object->get_image_abspath($image, $size); - $dst = $fs->join_paths($gallery_path, M_I18n::mb_basename($image_path)); - $success = $move ? move($image_path, $dst) : copy($image_path, $dst); - if (!$success) { - $retval = FALSE; - } - } - // Copy the db entry - if ($db) { - if (is_numeric($image)) { - $this->object->_image_mapper($image); - } - unset($image->{$image_key}); - $image->galleryid = $gallery; - } - } + if (!$mapper) { + $mapper = $this->get_registry()->get_utility($this->_mapper_interface); } - return $retval; + parent::initialize($mapper, $properties); } /** - * Empties the gallery cache directory of content - * @param object $gallery + * Returns the model representing the gallery associated with this image + * @param object|false $model (optional) + * @return C_Gallery|object */ - function flush_cache($gallery) + function get_gallery($model = FALSE) { - $cache = C_Cache::get_instance(); - $cache->flush_directory($this->object->get_cache_abspath($gallery)); + return C_Gallery_Mapper::get_instance()->find($this->galleryid, $model); } +} +/** + * Class C_Image_Mapper + * @mixin Mixin_NextGen_Table_Extras + * @mixin Mixin_Gallery_Image_Mapper + * @implements I_Image_Mapper + */ +class C_Image_Mapper extends C_CustomTable_DataMapper_Driver +{ + public static $_instance = NULL; /** - * Gets the absolute path of the backup of an original image - * @param string $image - * @return null|string + * Defines the gallery image mapper + * @param string|false $context (optional) + * @param mixed $not_used */ - function get_backup_abspath($image) + function define($context = FALSE, $not_used = FALSE) { - $retval = null; - if ($image_path = $this->object->get_image_abspath($image)) { - $retval = $image_path . '_backup'; + // Add 'attachment' context + if (!is_array($context)) { + $context = array($context); } - return $retval; - } - function get_backup_dimensions($image) - { - return $this->object->get_image_dimensions($image, 'backup'); + array_push($context, 'attachment'); + // Define the mapper + $this->_primary_key_column = 'pid'; + parent::define('ngg_pictures', $context); + $this->add_mixin('Mixin_NextGen_Table_Extras'); + $this->add_mixin('Mixin_Gallery_Image_Mapper'); + $this->implement('I_Image_Mapper'); + $this->set_model_factory_method('image'); + // Define the columns + $this->define_column('pid', 'BIGINT', 0); + $this->define_column('image_slug', 'VARCHAR(255)'); + $this->define_column('post_id', 'BIGINT', 0); + $this->define_column('galleryid', 'BIGINT', 0); + $this->define_column('filename', 'VARCHAR(255)'); + $this->define_column('description', 'TEXT'); + $this->define_column('alttext', 'TEXT'); + $this->define_column('imagedate', 'DATETIME'); + $this->define_column('exclude', 'INT', 0); + $this->define_column('sortorder', 'BIGINT', 0); + $this->define_column('meta_data', 'TEXT'); + $this->define_column('extras_post_id', 'BIGINT', 0); + $this->define_column('updated_at', 'BIGINT'); + // Mark the columns which should be unserialized + $this->add_serialized_column('meta_data'); } - function get_backup_url($image) + function initialize($object_name = FALSE) { - return $this->object->get_image_url($image, 'backup'); + parent::initialize('ngg_pictures'); } /** - * Returns the absolute path to the cache directory of a gallery. - * - * Without the gallery parameter the legacy (pre 2.0) shared directory is returned. - * - * @param int|object|false|C_Gallery $gallery (optional) - * @return string Absolute path to cache directory + * @param bool|string $context + * @return C_Image_Mapper */ - function get_cache_abspath($gallery = FALSE) + static function get_instance($context = False) { - $retval = NULL; - if (FALSE == $gallery) { - $gallerypath = C_NextGen_Settings::get_instance()->gallerypath; - $retval = implode(DIRECTORY_SEPARATOR, array(rtrim(C_Fs::get_instance()->get_document_root('gallery'), "/\\"), rtrim($gallerypath, "/\\"), 'cache')); - } else { - if (is_numeric($gallery)) { - $gallery = $this->object->_gallery_mapper->find($gallery); - } - $retval = rtrim(implode(DIRECTORY_SEPARATOR, array($this->object->get_gallery_abspath($gallery), 'dynamic')), "/\\"); + if (is_null(self::$_instance)) { + $klass = get_class(); + self::$_instance = new $klass($context); } - return $retval; + return self::$_instance; } - /** - * Gets the absolute path where the full-sized image is stored - * @param int|object $image - * @return null|string - */ - function get_full_abspath($image) +} +/** + * Sets the alttext property as the post title + */ +class Mixin_Gallery_Image_Mapper extends Mixin +{ + function destroy($image) { - return $this->object->get_image_abspath($image, 'full'); + $retval = $this->call_parent('destroy', $image); + // Delete tag associations with the image + if (!is_numeric($image)) { + $image = $image->{$image->id_field}; + } + wp_delete_object_term_relationships($image, 'ngg_tag'); + C_Photocrati_Transient_Manager::flush('displayed_gallery_rendering'); + return $retval; } - /** - * Alias to get_image_dimensions() - * @param int|object $image - * @return array - */ - function get_full_dimensions($image) + function _save_entity($entity) { - return $this->object->get_image_dimensions($image, 'full'); + $entity->updated_at = time(); + // If successfully saved then import metadata + $retval = $this->call_parent('_save_entity', $entity); + if ($retval) { + include_once NGGALLERY_ABSPATH . '/admin/functions.php'; + $image_id = $this->get_id($entity); + if (!isset($entity->meta_data['saved'])) { + nggAdmin::import_MetaData($image_id); + } + C_Photocrati_Transient_Manager::flush('displayed_gallery_rendering'); + } + return $retval; } - /** - * Alias to get_image_html() - * @param int|object $image - * @return string - */ - function get_full_html($image) + function reimport_metadata($image_or_id) { - return $this->object->get_image_html($image, 'full'); + // Get the image + $image = NULL; + if (is_int($image_or_id)) { + $image = $this->object->find($image_or_id); + } else { + $image = $image_or_id; + } + // Reset all image details that would have normally been imported + if (is_array($image->meta_data)) { + unset($image->meta_data['saved']); + } + nggAdmin::import_MetaData($image); + return $this->object->save($image); } /** - * Alias for get_original_url() - * - * @param int|stdClass|C_Image $image - * @param bool $check_existance (optional) - * @return string + * Retrieves the id from an image + * @param $image + * @return bool */ - function get_full_url($image, $check_existance = FALSE) - { - return $this->object->get_image_url($image, 'full', $check_existance); - } - function get_image_checksum($image, $size = 'full') + function get_id($image) { - $retval = NULL; - if ($image_abspath = $this->get_image_abspath($image, $size, TRUE)) { - $retval = md5_file($image_abspath); - } - return $retval; + $retval = FALSE; + // Have we been passed an entity and is the id_field set? + if ($image instanceof stdClass) { + if (isset($image->id_field)) { + $retval = $image->{$image->id_field}; + } + } else { + $retval = $image->id(); + } + // If we still don't have an id, then we'll lookup the primary key + // and try fetching it manually + if (!$retval) { + $key = $this->object->get_primary_key_column(); + $retval = $image->{$key}; + } + return $retval; + } + function get_post_title($entity) + { + return $entity->alttext; + } + function set_defaults($entity) + { + // If not set already, we'll add an exclude property. This is used + // by NextGEN Gallery itself, as well as the Attach to Post module + $this->object->_set_default_value($entity, 'exclude', 0); + // Ensure that the object has a description attribute + $this->object->_set_default_value($entity, 'description', ''); + // If not set already, set a default sortorder + $this->object->_set_default_value($entity, 'sortorder', 0); + // The imagedate must be set + if (!isset($entity->imagedate) or is_null($entity->imagedate) or $entity->imagedate == '0000-00-00 00:00:00') { + $entity->imagedate = date("Y-m-d H:i:s"); + } + // If a filename is set, and no alttext is set, then set the alttext + // to the basename of the filename (legacy behavior) + if (isset($entity->filename)) { + $path_parts = M_I18n::mb_pathinfo($entity->filename); + $alttext = !isset($path_parts['filename']) ? substr($path_parts['basename'], 0, strpos($path_parts['basename'], '.')) : $path_parts['filename']; + $this->object->_set_default_value($entity, 'alttext', $alttext); + } + // Set unique slug + if (isset($entity->alttext) && empty($entity->image_slug)) { + $entity->image_slug = nggdb::get_unique_slug(sanitize_title_with_dashes($entity->alttext), 'image'); + } + // Ensure that the exclude parameter is an integer or boolean-evaluated + // value + if (is_string($entity->exclude)) { + $entity->exclude = intval($entity->exclude); + } + // Trim alttext and description + $entity->description = trim($entity->description); + $entity->alttext = trim($entity->alttext); } /** - * Gets the dimensions for a particular-sized image + * Finds all images for a gallery + * @param $gallery + * @param bool $model * - * @param int|object $image - * @param string $size - * @return null|array + * @return array */ - function get_image_dimensions($image, $size = 'full') + function find_all_for_gallery($gallery, $model = FALSE) { - $retval = NULL; - // If an image id was provided, get the entity - if (is_numeric($image)) { - $image = $this->object->_image_mapper->find($image); - } - // Ensure we have a valid image - if ($image) { - // Adjust size parameter - switch ($size) { - case 'original': - $size = 'full'; - break; - case 'thumbnails': - case 'thumbnail': - case 'thumb': - case 'thumbs': - $size = 'thumbnail'; - break; - } - // Image dimensions are stored in the $image->meta_data - // property for all implementations - if (isset($image->meta_data) && isset($image->meta_data[$size])) { - $retval = $image->meta_data[$size]; + $retval = array(); + $gallery_id = 0; + if (is_object($gallery)) { + if (isset($gallery->id_field)) { + $gallery_id = $gallery->{$gallery->id_field}; } else { - $abspath = $this->object->get_image_abspath($image, $size); - if (@file_exists($abspath)) { - $dims = getimagesize($abspath); - if ($dims) { - $retval['width'] = $dims[0]; - $retval['height'] = $dims[1]; - } - } elseif ($size == 'backup') { - $retval = $this->object->get_image_dimensions($image, 'full'); + $key = $this->object->get_primary_key_column(); + if (isset($gallery->{$key})) { + $gallery_id = $gallery->{$key}; } } + } elseif (is_numeric($gallery)) { + $gallery_id = $gallery; + } + if ($gallery_id) { + $retval = $this->object->select()->where(array("galleryid = %s", $gallery_id))->run_query(FALSE, $model); } return $retval; } +} +/** + * This class provides a lazy-loading wrapper to the NextGen-Legacy "nggImage" class for use in legacy style templates + */ +class C_Image_Wrapper +{ + public $_cache; + // cache of retrieved values + public $_settings; + // I_Settings_Manager cache + public $_storage; + // I_Gallery_Storage cache + public $_galleries; + // cache of I_Gallery_Mapper (plural) + public $_orig_image; + // original provided image + public $_orig_image_id; + // original image ID + public $_cache_overrides; + // allow for forcing variable values + public $_legacy = FALSE; + public $_displayed_gallery; + // cached object /** - * Gets the HTML for an image - * @param int|object $image - * @param string $size - * @param array $attributes (optional) - * @return string + * Constructor. Converts the image class into an array and fills from defaults any missing values + * + * @param object $image Individual result from displayed_gallery->get_entities() + * @param object $displayed_gallery Displayed gallery -- MAY BE NULL + * @param bool $legacy Whether the image source is from NextGen Legacy or NextGen + * @return void */ - function get_image_html($image, $size = 'full', $attributes = array()) + public function __construct($image, $displayed_gallery = NULL, $legacy = FALSE) { - $retval = ""; - if (is_numeric($image)) { - $image = $this->object->_image_mapper->find($image); + // for clarity + if ($displayed_gallery && isset($displayed_gallery->display_settings['number_of_columns'])) { + $columns = $displayed_gallery->display_settings['number_of_columns']; + } else { + $columns = 0; } - if ($image) { - // Set alt text if not already specified - if (!isset($attributes['alttext'])) { - $attributes['alt'] = esc_attr($image->alttext); - } - // Set the title if not already set - if (!isset($attributes['title'])) { - $attributes['title'] = esc_attr($image->alttext); - } - // Set the dimensions if not set already - if (!isset($attributes['width']) or !isset($attributes['height'])) { - $dimensions = $this->object->get_image_dimensions($image, $size); - if (!isset($attributes['width'])) { - $attributes['width'] = $dimensions['width']; - } - if (!isset($attributes['height'])) { - $attributes['height'] = $dimensions['height']; - } - } - // Set the url if not already specified - if (!isset($attributes['src'])) { - $attributes['src'] = $this->object->get_image_url($image, $size); - } - // Format attributes - $attribs = array(); - foreach ($attributes as $attrib => $value) { - $attribs[] = "{$attrib}=\"{$value}\""; + // Public variables + $defaults = array( + 'errmsg' => '', + // Error message to display, if any + 'error' => FALSE, + // Error state + 'imageURL' => '', + // URL Path to the image + 'thumbURL' => '', + // URL Path to the thumbnail + 'imagePath' => '', + // Server Path to the image + 'thumbPath' => '', + // Server Path to the thumbnail + 'href' => '', + // A href link code + // Mostly constant + 'thumbPrefix' => 'thumbs_', + // FolderPrefix to the thumbnail + 'thumbFolder' => '/thumbs/', + // Foldername to the thumbnail + // Image Data + 'galleryid' => 0, + // Gallery ID + 'pid' => 0, + // Image ID + 'filename' => '', + // Image filename + 'description' => '', + // Image description + 'alttext' => '', + // Image alttext + 'imagedate' => '', + // Image date/time + 'exclude' => '', + // Image exclude + 'thumbcode' => '', + // Image effect code + // Gallery Data + 'name' => '', + // Gallery name + 'path' => '', + // Gallery path + 'title' => '', + // Gallery title + 'pageid' => 0, + // Gallery page ID + 'previewpic' => 0, + // Gallery preview pic + 'style' => $columns > 0 ? 'style="width:' . floor(100 / $columns) . '%;"' : '', + 'hidden' => FALSE, + 'permalink' => '', + 'tags' => '', + ); + // convert the image to an array and apply the defaults + $this->_orig_image = $image; + $image = (array) $image; + foreach ($defaults as $key => $val) { + if (!isset($image[$key])) { + $image[$key] = $val; } - $attribs = implode(" ", $attribs); - // Return HTML string - $retval = "<img {$attribs} />"; } - return $retval; + // cache the results + ksort($image); + $id_field = !empty($image['id_field']) ? $image['id_field'] : 'pid'; + $this->_cache = (array) apply_filters('ngg_image_object', (object) $image, $image[$id_field]); + $this->_orig_image_id = $image[$id_field]; + $this->_legacy = $legacy; + $this->_displayed_gallery = $displayed_gallery; } - /** - * An alias for get_full_abspath() - * @param int|object $image - * @param bool $check_existance - * @return null|string - */ - function get_original_abspath($image, $check_existance = FALSE) + public function __set($name, $value) { - return $this->object->get_image_abspath($image, 'full', $check_existance); + $this->_cache[$name] = $value; } - /** - * Alias to get_image_dimensions() - * @param int|object $image - * @return array - */ - function get_original_dimensions($image) + public function __isset($name) { - return $this->object->get_image_dimensions($image, 'full'); + return isset($this->_cache[$name]); } - /** - * Alias to get_image_html() - * @param int|object $image - * @return string - */ - function get_original_html($image) + public function __unset($name) { - return $this->object->get_image_html($image, 'full'); + unset($this->_cache[$name]); } /** - * Gets the url to the original-sized image - * @param int|stdClass|C_Image $image - * @param bool $check_existance (optional) - * @return string + * Lazy-loader for image variables. + * + * @param string $name Parameter name + * @return mixed */ - function get_original_url($image, $check_existance = FALSE) + public function __get($name) { - return $this->object->get_image_url($image, 'full', $check_existance); + if (isset($this->_cache_overrides[$name])) { + return $this->_cache_overrides[$name]; + } + // at the bottom we default to returning $this->_cache[$name]. + switch ($name) { + case 'alttext': + $this->_cache['alttext'] = empty($this->_cache['alttext']) ? ' ' : html_entity_decode(stripslashes($this->_cache['alttext'])); + return $this->_cache['alttext']; + case 'author': + $gallery = $this->get_legacy_gallery($this->__get('galleryid')); + $this->_cache['author'] = $gallery->name; + return $this->_cache['author']; + case 'caption': + $caption = html_entity_decode(stripslashes($this->__get('description'))); + if (empty($caption)) { + $caption = ' '; + } + $this->_cache['caption'] = $caption; + return $this->_cache['caption']; + case 'description': + $this->_cache['description'] = empty($this->_cache['description']) ? ' ' : html_entity_decode(stripslashes($this->_cache['description'])); + return $this->_cache['description']; + case 'galdesc': + $gallery = $this->get_legacy_gallery($this->__get('galleryid')); + $this->_cache['galdesc'] = $gallery->name; + return $this->_cache['galdesc']; + case 'gid': + $gallery = $this->get_legacy_gallery($this->__get('galleryid')); + $this->_cache['gid'] = $gallery->{$gallery->id_field}; + return $this->_cache['gid']; + case 'href': + return $this->__get('imageHTML'); + case 'id': + return $this->_orig_image_id; + case 'imageHTML': + $tmp = '<a href="' . $this->__get('imageURL') . '" title="' . htmlspecialchars(stripslashes($this->__get('description'))) . '" ' . $this->get_thumbcode($this->__get('name')) . '>' . '<img alt="' . $this->__get('alttext') . '" src="' . $this->__get('imageURL') . '"/>' . '</a>'; + $this->_cache['href'] = $tmp; + $this->_cache['imageHTML'] = $tmp; + return $this->_cache['imageHTML']; + case 'imagePath': + $storage = $this->get_storage(); + $this->_cache['imagePath'] = $storage->get_image_abspath($this->_orig_image, 'full'); + return $this->_cache['imagePath']; + case 'imageURL': + $storage = $this->get_storage(); + $this->_cache['imageURL'] = $storage->get_image_url($this->_orig_image, 'full'); + return $this->_cache['imageURL']; + case 'linktitle': + $this->_cache['linktitle'] = htmlspecialchars(stripslashes($this->__get('description'))); + return $this->_cache['linktitle']; + case 'name': + $gallery = $this->get_legacy_gallery($this->__get('galleryid')); + $this->_cache['name'] = $gallery->name; + return $this->_cache['name']; + case 'pageid': + $gallery = $this->get_legacy_gallery($this->__get('galleryid')); + $this->_cache['pageid'] = $gallery->name; + return $this->_cache['pageid']; + case 'path': + $gallery = $this->get_legacy_gallery($this->__get('galleryid')); + $this->_cache['path'] = $gallery->name; + return $this->_cache['path']; + case 'permalink': + $this->_cache['permalink'] = $this->__get('imageURL'); + return $this->_cache['permalink']; + case 'pid': + return $this->_orig_image_id; + case 'id_field': + $this->_cache['id_field'] = !empty($this->_orig_image->id_field) ? $this->_orig_image->id_field : 'pid'; + return $this->_cache['id_field']; + case 'pidlink': + $application = C_Router::get_instance()->get_routed_app(); + $controller = C_Display_Type_Controller::get_instance(); + $this->_cache['pidlink'] = $controller->set_param_for($application->get_routed_url(TRUE), 'pid', $this->__get('image_slug')); + return $this->_cache['pidlink']; + case 'previewpic': + $gallery = $this->get_legacy_gallery($this->__get('galleryid')); + $this->_cache['previewpic'] = $gallery->name; + return $this->_cache['previewpic']; + case 'size': + $w = 0; + $h = 0; + if ($this->_displayed_gallery && isset($this->_displayed_gallery->display_settings)) { + $ds = $this->_displayed_gallery->display_settings; + if (isset($ds['override_thumbnail_settings']) && $ds['override_thumbnail_settings']) { + $w = $ds['thumbnail_width']; + $h = $ds['thumbnail_height']; + } + } + if (!$w || !$h) { + if (is_string($this->_orig_image->meta_data)) { + $this->_orig_image = C_NextGen_Serializable::unserialize($this->_orig_image->meta_data); + } + if (!isset($this->_orig_image->meta_data['thumbnail'])) { + $storage = $this->get_storage(); + $storage->generate_thumbnail($this->_orig_image); + } + $w = $this->_orig_image->meta_data['thumbnail']['width']; + $h = $this->_orig_image->meta_data['thumbnail']['height']; + } + return "width='{$w}' height='{$h}'"; + case 'slug': + $gallery = $this->get_legacy_gallery($this->__get('galleryid')); + $this->_cache['slug'] = $gallery->name; + return $this->_cache['slug']; + case 'tags': + $this->_cache['tags'] = wp_get_object_terms($this->__get('id'), 'ngg_tag', 'fields=all'); + return $this->_cache['tags']; + case 'thumbHTML': + $tmp = '<a href="' . $this->__get('imageURL') . '" title="' . htmlspecialchars(stripslashes($this->__get('description'))) . '" ' . $this->get_thumbcode($this->__get('name')) . '>' . '<img alt="' . $this->__get('alttext') . '" src="' . $this->thumbURL . '"/>' . '</a>'; + $this->_cache['href'] = $tmp; + $this->_cache['thumbHTML'] = $tmp; + return $this->_cache['thumbHTML']; + case 'thumbPath': + $storage = $this->get_storage(); + $this->_cache['thumbPath'] = $storage->get_image_abspath($this->_orig_image, 'thumbnail'); + return $this->_cache['thumbPath']; + case 'thumbnailURL': + $storage = $this->get_storage(); + $thumbnail_size_name = 'thumbnail'; + if ($this->_displayed_gallery && isset($this->_displayed_gallery->display_settings)) { + $ds = $this->_displayed_gallery->display_settings; + if (isset($ds['override_thumbnail_settings']) && $ds['override_thumbnail_settings']) { + $dynthumbs = C_Component_Registry::get_instance()->get_utility('I_Dynamic_Thumbnails_Manager'); + $dyn_params = array('width' => $ds['thumbnail_width'], 'height' => $ds['thumbnail_height']); + if ($ds['thumbnail_quality']) { + $dyn_params['quality'] = $ds['thumbnail_quality']; + } + if ($ds['thumbnail_crop']) { + $dyn_params['crop'] = TRUE; + } + if ($ds['thumbnail_watermark']) { + $dyn_params['watermark'] = TRUE; + } + $thumbnail_size_name = $dynthumbs->get_size_name($dyn_params); + } + } + $this->_cache['thumbnailURL'] = $storage->get_image_url($this->_orig_image, $thumbnail_size_name); + return $this->_cache['thumbnailURL']; + case 'thumbcode': + if ($this->_displayed_gallery && isset($this->_displayed_gallery->display_settings) && isset($this->_displayed_gallery->display_settings['use_imagebrowser_effect']) && $this->_displayed_gallery->display_settings['use_imagebrowser_effect'] && !empty($this->_orig_image->thumbcode)) { + $this->_cache['thumbcode'] = $this->_orig_image->thumbcode; + } else { + $this->_cache['thumbcode'] = $this->get_thumbcode($this->__get('name')); + } + return $this->_cache['thumbcode']; + case 'thumbURL': + return $this->__get('thumbnailURL'); + case 'title': + $this->_cache['title'] = stripslashes($this->__get('name')); + return $this->_cache['title']; + case 'url': + $storage = $this->get_storage(); + $this->_cache['url'] = $storage->get_image_url($this->_orig_image, 'full'); + return $this->_cache['url']; + default: + return $this->_cache[$name]; + } + } + // called on initial nggLegacy image at construction. not sure what to do with it now. + function construct_ngg_Image($gallery) + { + do_action_ref_array('ngg_get_image', array(&$this)); + unset($this->tags); } /** - * Gets the upload path, optionally for a particular gallery - * @param int|C_Gallery|object|false $gallery (optional) - * @return string + * Retrieves and caches an I_Settings_Manager instance + * + * @return mixed */ - function get_upload_relpath($gallery = FALSE) + function get_settings() { - $fs = C_Fs::get_instance(); - $retval = str_replace($fs->get_document_root('gallery'), '', $this->object->get_upload_abspath($gallery)); - return DIRECTORY_SEPARATOR . ltrim($retval, "/\\"); + if (is_null($this->_settings)) { + $this->_settings = C_NextGen_Settings::get_instance(); + } + return $this->_settings; } /** - * Moves images from to another gallery - * @param array $images - * @param int|object $gallery - * @param boolean $db optionally only move the image files, not the db entries - * @return boolean + * Retrieves and caches an I_Gallery_Storage instance + * + * @return mixed */ - function move_images($images, $gallery, $db = TRUE) + function get_storage() { - return $this->object->copy_images($images, $gallery, $db, TRUE); + if (is_null($this->_storage)) { + $this->_storage = C_Gallery_Storage::get_instance(); + } + return $this->_storage; } - function is_image_file($filename = NULL) + /** + * Retrieves I_Gallery_Mapper instance. + * + * @param int $gallery_id Gallery ID + * @return mixed + */ + function get_gallery($gallery_id) { - $retval = FALSE; - if (!$filename && isset($_FILES['file']) && $_FILES['file']['error'] == 0) { - $filename = $_FILES['file']['tmp_name']; - } - $valid_types = array('image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png'); - // If we can, we'll verify the mime type - if (function_exists('exif_imagetype')) { - if (($image_type = @exif_imagetype($filename)) !== FALSE) { - $retval = in_array(image_type_to_mime_type($image_type), $valid_types); - } - } else { - $file_info = @getimagesize($filename); - if (isset($file_info[2])) { - $retval = in_array(image_type_to_mime_type($file_info[2]), $valid_types); - } + if (isset($this->container) && method_exists($this->container, 'get_gallery')) { + return $this->container->get_gallery($gallery_id); } - return $retval; + return C_Gallery_Mapper::get_instance()->find($gallery_id); } - function is_zip() + /** + * Retrieves I_Gallery_Mapper instance. + * + * @param int $gallery_id Gallery ID + * @return mixed + */ + function get_legacy_gallery($gallery_id) { - $retval = FALSE; - if (isset($_FILES['file']) && $_FILES['file']['error'] == 0) { - $file_info = $_FILES['file']; - if (isset($file_info['type'])) { - $type = $file_info['type']; - $type_parts = explode('/', $type); - if (strtolower($type_parts[0]) == 'application') { - $spec = $type_parts[1]; - $spec_parts = explode('-', $spec); - $spec_parts = array_map('strtolower', $spec_parts); - if (in_array($spec, array('zip', 'octet-stream')) || in_array('zip', $spec_parts)) { - $retval = true; - } - } - } - } - return $retval; + return C_Gallery_Mapper::get_instance()->find($gallery_id); } - function upload_zip($gallery_id) + /** + * Get the thumbnail code (to add effects on thumbnail click) + * + * Applies the filter 'ngg_get_thumbcode' + * @param string $gallery_name (optional) Default = '' + * @return string + */ + function get_thumbcode($gallery_name = '') { - $memory_limit = intval(ini_get('memory_limit')); - if (!extension_loaded('suhosin') && $memory_limit < 256) { - @ini_set('memory_limit', '256M'); - } - $retval = FALSE; - if ($this->object->is_zip()) { - $fs = C_Fs::get_instance(); - // Uses the WordPress ZIP abstraction API - include_once $fs->join_paths(ABSPATH, 'wp-admin', 'includes', 'file.php'); - WP_Filesystem(); - // Ensure that we truly have the gallery id - $gallery_id = $this->_get_gallery_id($gallery_id); - $zipfile = $_FILES['file']['tmp_name']; - $dest_path = implode(DIRECTORY_SEPARATOR, array(rtrim(get_temp_dir(), "/\\"), 'unpacked-' . M_I18n::mb_basename($zipfile))); - wp_mkdir_p($dest_path); - if (unzip_file($zipfile, $dest_path) === TRUE) { - $dest_dir = $dest_path . DIRECTORY_SEPARATOR; - $files = glob($dest_dir . '*'); - $size = 0; - foreach ($files as $file) { - if (is_file($dest_dir . $file)) { - $size += filesize($dest_dir . $file); - } - } - if ($size == 0) { - $this->object->delete_directory($dest_path); - $destination = wp_upload_dir(); - $destination_path = $destination['basedir']; - $dest_path = implode(DIRECTORY_SEPARATOR, array(rtrim($destination_path, "/\\"), 'unpacked-' . M_I18n::mb_basename($zipfile))); - wp_mkdir_p($dest_path); - if (unzip_file($zipfile, $dest_path) === TRUE) { - $retval = $this->object->import_gallery_from_fs($dest_path, $gallery_id); - } - } else { - $retval = $this->object->import_gallery_from_fs($dest_path, $gallery_id); - } + if (empty($this->_displayed_gallery)) { + $effect_code = C_NextGen_Settings::get_instance()->thumbCode; + $effect_code = str_replace('%GALLERY_ID%', $gallery_name, $effect_code); + $effect_code = str_replace('%GALLERY_NAME%', $gallery_name, $effect_code); + $retval = $effect_code; + } else { + $controller = C_Display_Type_Controller::get_instance(); + $retval = $controller->get_effect_code($this->_displayed_gallery); + // This setting requires that we disable the effect code + $ds = $this->_displayed_gallery->display_settings; + if (isset($ds['use_imagebrowser_effect']) && $ds['use_imagebrowser_effect']) { + $retval = ''; } - $this->object->delete_directory($dest_path); - } - if (!extension_loaded('suhosin')) { - @ini_set('memory_limit', $memory_limit . 'M'); } + $retval = apply_filters('ngg_get_thumbcode', $retval, $this); + // ensure some additional data- fields are added; provides Pro-Lightbox compatibility + $retval .= ' data-image-id="' . $this->__get('id') . '"'; + $retval .= ' data-src="' . $this->__get('imageURL') . '"'; + $retval .= ' data-thumbnail="' . $this->__get('thumbnailURL') . '"'; + $retval .= ' data-title="' . esc_attr($this->__get('alttext')) . '"'; + $retval .= ' data-description="' . esc_attr($this->__get('description')) . '"'; + $this->_cache['thumbcode'] = $retval; return $retval; } - function is_current_user_over_quota() + /** + * For compatibility support + * + * @return mixed + */ + function get_href_link() { - $retval = FALSE; - $settings = C_NextGen_Settings::get_instance(); - if (is_multisite() && $settings->get('wpmuQuotaCheck')) { - require_once ABSPATH . 'wp-admin/includes/ms.php'; - $retval = upload_is_user_over_quota(FALSE); - } - return $retval; + return $this->__get('imageHTML'); } /** - * Uploads base64 file to a gallery - * @param int|stdClass|C_Gallery $gallery - * @param $data base64-encoded string of data representing the image - * @param string|false (optional) $filename specifies the name of the file - * @param int|false $image_id (optional) - * @param bool $override (optional) - * @return C_Image + * For compatibility support + * + * @return mixed */ - function upload_base64_image($gallery, $data, $filename = FALSE, $image_id = FALSE, $override = FALSE) + function get_href_thumb_link() { - $settings = C_NextGen_Settings::get_instance(); - $memory_limit = intval(ini_get('memory_limit')); - if (!extension_loaded('suhosin') && $memory_limit < 256) { - @ini_set('memory_limit', '256M'); - } - $retval = NULL; - if ($gallery_id = $this->object->_get_gallery_id($gallery)) { - if ($this->object->is_current_user_over_quota()) { - $message = sprintf(__('Sorry, you have used your space allocation. Please delete some files to upload more files.', 'nggallery')); - throw new E_NoSpaceAvailableException($message); - } - // Get path information. The use of get_upload_abspath() might - // not be the best for some drivers. For example, if using the - // WordPress Media Library for uploading, then the wp_upload_bits() - // function should perhaps be used - $upload_dir = $this->object->get_upload_abspath($gallery); - // Perhaps a filename was given instead of base64 data? - if (preg_match("#/\\\\#", $data[0]) && @file_exists($data)) { - if (!$filename) { - $filename = M_I18n::mb_basename($data); - } - $data = file_get_contents($data); - } - // Determine filenames - $original_filename = $filename; - $filename = $filename ? sanitize_file_name($original_filename) : uniqid('nextgen-gallery'); - if (preg_match("/\\-(png|jpg|gif|jpeg)\$/i", $filename, $match)) { - $filename = str_replace($match[0], '.' . $match[1], $filename); - } - $abs_filename = implode(DIRECTORY_SEPARATOR, array($upload_dir, $filename)); - // Ensure that the filename is valid - if (!preg_match("/(png|jpeg|jpg|gif)\$/i", $abs_filename)) { - throw new E_UploadException(__('Invalid image file. Acceptable formats: JPG, GIF, and PNG.', 'nggallery')); - } - // Prevent duplicate filenames: check if the filename exists and - // begin appending '-i' until we find an open slot - if (!ini_get('safe_mode') && @file_exists($abs_filename) && !$override) { - $file_exists = TRUE; - $i = 0; - do { - $i++; - $parts = explode('.', $filename); - $extension = array_pop($parts); - $new_filename = implode('.', $parts) . '-' . $i . '.' . $extension; - $new_abs_filename = implode(DIRECTORY_SEPARATOR, array($upload_dir, $new_filename)); - if (!@file_exists($new_abs_filename)) { - $file_exists = FALSE; - $filename = $new_filename; - $abs_filename = $new_abs_filename; - } - } while ($file_exists == TRUE); - } - // Create or retrieve the image object - $image = NULL; - if ($image_id) { - $image = $this->object->_image_mapper->find($image_id, TRUE); - if ($image) { - unset($image->meta_data['saved']); - } - } - if (!$image) { - $image = $this->object->_image_mapper->create(); - } - $retval = $image; - // Create or update the database record - $image->alttext = str_replace('.' . M_I18n::mb_pathinfo($original_filename, PATHINFO_EXTENSION), '', M_I18n::mb_basename($original_filename)); - $image->galleryid = $this->object->_get_gallery_id($gallery); - $image->filename = $filename; - $image->image_slug = nggdb::get_unique_slug(sanitize_title_with_dashes($image->alttext), 'image'); - $image_key = $this->object->_image_mapper->get_primary_key_column(); - // If we can't write to the directory, then there's no point in continuing - if (!@file_exists($upload_dir)) { - @wp_mkdir_p($upload_dir); - } - if (!is_writable($upload_dir)) { - throw new E_InsufficientWriteAccessException(FALSE, $upload_dir, FALSE); - } - try { - // Try writing the image - $fp = fopen($abs_filename, 'wb'); - fwrite($fp, $this->maybe_base64_decode($data)); - fclose($fp); - // Ensure that we're not vulerable to CVE-2017-2416 exploit - if (($dimensions = getimagesize($abs_filename)) !== FALSE) { - if (isset($dimensions[0]) && intval($dimensions[0]) > 30000 || isset($dimensions[1]) && intval($dimensions[1]) > 30000) { - unlink($abs_filename); - throw new E_UploadException(__('Image file too large. Maximum image dimensions supported are 30k x 30k.')); - } - } - // Save the image - $image_id = $this->object->_image_mapper->save($image); - if (!$image_id) { - $exception = ''; - foreach ($image->get_errors() as $field => $errors) { - foreach ($errors as $error) { - if (!empty($exception)) { - $exception .= "<br/>"; - } - $exception .= __(sprintf("Error while uploading %s: %s", $filename, $error), 'nextgen-gallery'); - } - } - throw new E_UploadException($exception); - } - if ($settings->imgBackup) { - $this->object->backup_image($image); - } - if ($settings->imgAutoResize) { - $this->object->generate_image_clone($abs_filename, $abs_filename, $this->object->get_image_size_params($image_id, 'full')); - } - $this->object->_image_mapper->_use_cache = FALSE; - $image = $this->object->_image_mapper->find($image_id); - $this->object->_image_mapper->_use_cache = TRUE; - // Ensure that fullsize dimensions are added to metadata array - $dimensions = getimagesize($abs_filename); - $full_meta = array('width' => $dimensions[0], 'height' => $dimensions[1], 'md5' => $this->object->get_image_checksum($image, 'full')); - if (!isset($image->meta_data) or is_string($image->meta_data) && strlen($image->meta_data) == 0 or is_bool($image->meta_data)) { - $image->meta_data = array(); - } - $image->meta_data = array_merge($image->meta_data, $full_meta); - $image->meta_data['full'] = $full_meta; - // Don't forget to append the 'full' entry in meta_data in the db - $this->object->_image_mapper->save($image); - // Generate a thumbnail for the image - $this->object->generate_thumbnail($image); - // Set gallery preview image if missing - C_Gallery_Mapper::get_instance()->set_preview_image($gallery, $image_id, TRUE); - // Notify other plugins that an image has been added - do_action('ngg_added_new_image', $image); - // delete dirsize after adding new images - delete_transient('dirsize_cache'); - // Seems redundant to above hook. Maintaining for legacy purposes - do_action('ngg_after_new_images_added', $gallery_id, array($image->{$image_key})); - } catch (E_UploadException $ex) { - throw $ex; - } catch (E_No_Image_Library_Exception $ex) { - throw $ex; - } catch (E_Clean_Exit $ex) { - // pass - } catch (Exception $ex) { - throw new E_InsufficientWriteAccessException(FALSE, $abs_filename, FALSE, $ex); - } - } else { - throw new E_EntityNotFoundException(); - } - if (!extension_loaded('suhosin')) { - @ini_set('memory_limit', $memory_limit . 'M'); - } - return $retval; + return $this->__get('thumbHTML'); } - function maybe_base64_decode($data) + /** + * Function exists for legacy support but has been gutted to not do anything + * + * @param string|int $width (optional) Default = '' + * @param string|int $height (optional) Default = '' + * @param string $mode could be watermark | web20 | crop + * @return bool|string The url for the image or false if failed + */ + function cached_singlepic_file($width = '', $height = '', $mode = '') { - $decoded = base64_decode($data); - if ($decoded === FALSE) { - return $data; - } else { - if (base64_encode($decoded) == $data) { - return base64_decode($data); - } + $dynthumbs = C_Dynamic_Thumbnails_Manager::get_instance(); + $storage = $this->get_storage(); + // determine what to do with 'mode' + $display_reflection = FALSE; + $display_watermark = FALSE; + if (!is_array($mode)) { + $mode = explode(',', $mode); } - return $data; + if (in_array('web20', $mode)) { + $display_reflection = TRUE; + } + if (in_array('watermark', $mode)) { + $display_watermark = TRUE; + } + // and go for it + $params = array('width' => $width, 'height' => $height, 'watermark' => $display_watermark, 'reflection' => $display_reflection); + return $storage->get_image_url((object) $this->_cache, $dynthumbs->get_size_name($params)); } - function import_gallery_from_fs($abspath, $gallery_id = FALSE, $create_new_gallerypath = TRUE, $gallery_title = NULL, $filenames = array()) + /** + * Get the tags associated to this image + */ + function get_tags() { - $retval = FALSE; - if (@file_exists($abspath)) { - $fs = C_Fs::get_instance(); - // Ensure that this folder has images - // Ensure that this folder has images - $i = 0; - $files = array(); - foreach (scandir($abspath) as $file) { - if ($file == '.' || $file == '..') { - continue; - } - $file_abspath = $fs->join_paths($abspath, $file); - // The first directory is considered valid - if (is_dir($file_abspath) && $i === 0) { - $files[] = $file_abspath; - } elseif ($this->is_image_file($file_abspath)) { - if ($filenames && array_search($file_abspath, $filenames) !== FALSE) { - $files[] = $file_abspath; - } else { - if (!$filenames) { - $files[] = $file_abspath; - } - } - } - } - if (!empty($files)) { - // Get needed utilities - $gallery_mapper = C_Gallery_Mapper::get_instance(); - // Sometimes users try importing a directory, which actually has all images under another directory - if (is_dir($files[0])) { - return $this->import_gallery_from_fs($files[0], $gallery_id, $create_new_gallerypath, $gallery_title, $filenames); - } - // If no gallery has been specified, then use the directory name as the gallery name - if (!$gallery_id) { - // Create the gallery - $gallery = $gallery_mapper->create(array('title' => $gallery_title ? $gallery_title : M_I18n::mb_basename($abspath))); - if (!$create_new_gallerypath) { - $gallery->path = str_ireplace(ABSPATH, '', $abspath); - } - // Save the gallery - if ($gallery->save()) { - $gallery_id = $gallery->id(); - } - } - // Ensure that we have a gallery id - if ($gallery_id) { - $retval = array('gallery_id' => $gallery_id, 'image_ids' => array()); - foreach ($files as $file_abspath) { - if (!preg_match("/\\.(jpg|jpeg|gif|png)\$/i", $file_abspath)) { - continue; - } - $image = null; - if ($create_new_gallerypath) { - $image = $this->object->upload_base64_image($gallery_id, file_get_contents($file_abspath), str_replace(' ', '_', M_I18n::mb_basename($file_abspath))); - } else { - // Create the database record ... TODO cleanup, some duplication here from upload_base64_image - $factory = C_Component_Factory::get_instance(); - $image = $factory->create('image'); - $image->alttext = sanitize_title_with_dashes(str_replace('.' . M_I18n::mb_pathinfo($file_abspath, PATHINFO_EXTENSION), '', M_I18n::mb_basename($file_abspath))); - $image->galleryid = $this->object->_get_gallery_id($gallery_id); - $image->filename = M_I18n::mb_basename($file_abspath); - $image->image_slug = nggdb::get_unique_slug(sanitize_title_with_dashes($image->alttext), 'image'); - $image_key = $this->object->_image_mapper->get_primary_key_column(); - $abs_filename = $file_abspath; - if ($image_id = $this->object->_image_mapper->save($image)) { - try { - if (C_NextGen_settings::get_instance()->imgBackup) { - $this->object->backup_image($image); - } - # if ($settings->imgAutoResize) - # $this->object->generate_image_clone( - # $abs_filename, - # $abs_filename, - # $this->object->get_image_size_params($image_id, 'full') - # ); - // Ensure that fullsize dimensions are added to metadata array - $dimensions = getimagesize($abs_filename); - $full_meta = array('width' => $dimensions[0], 'height' => $dimensions[1]); - if (!isset($image->meta_data) || is_string($image->meta_data) && strlen($image->meta_data) === 0) { - $image->meta_data = array(); - } else { - if (is_string($image->meta_data)) { - // TODO: We should probably unserialize in this circumstance - } - } - $image->meta_data = array_merge($image->meta_data, $full_meta); - $image->meta_data['full'] = $full_meta; - // Generate a thumbnail for the image - $this->object->generate_thumbnail($image); - // Set gallery preview image if missing - C_Gallery_Mapper::get_instance()->set_preview_image($gallery, $image_id, TRUE); - // Notify other plugins that an image has been added - do_action('ngg_added_new_image', $image); - // delete dirsize after adding new images - delete_transient('dirsize_cache'); - // Seems redundant to above hook. Maintaining for legacy purposes - do_action('ngg_after_new_images_added', $gallery_id, array($image->{$image_key})); - } catch (Exception $ex) { - throw new E_InsufficientWriteAccessException(FALSE, $abs_filename, FALSE, $ex); - } - } else { - throw new E_InvalidEntityException(); - } - } - $retval['image_ids'][] = $image->{$image->id_field}; - } - // Add the gallery name to the result - $gallery = $gallery_mapper->find($gallery_id); - $retval['gallery_name'] = $gallery->title; - unset($gallery); - } - } - } - return $retval; + return $this->__get('tags'); } - function get_image_format_list() + /** + * Get the permalink to the image + * + * TODO: Get a permalink to a page presenting the image + */ + function get_permalink() { - $format_list = array(IMAGETYPE_GIF => 'gif', IMAGETYPE_JPEG => 'jpg', IMAGETYPE_PNG => 'png'); - return $format_list; + return $this->__get('permalink'); } /** - * Returns an array of properties of a resulting clone image if and when generated - * @param string $image_path - * @param string $clone_path - * @param array $params - * @return null|array + * Returns the _cache array; used by nggImage + * @return array */ - function calculate_image_clone_result($image_path, $clone_path, $params) + function _get_image() { - $width = isset($params['width']) ? $params['width'] : NULL; - $height = isset($params['height']) ? $params['height'] : NULL; - $quality = isset($params['quality']) ? $params['quality'] : NULL; - $type = isset($params['type']) ? $params['type'] : NULL; - $crop = isset($params['crop']) ? $params['crop'] : NULL; - $watermark = isset($params['watermark']) ? $params['watermark'] : NULL; - $rotation = isset($params['rotation']) ? $params['rotation'] : NULL; - $reflection = isset($params['reflection']) ? $params['reflection'] : NULL; - $crop_frame = isset($params['crop_frame']) ? $params['crop_frame'] : NULL; - $result = NULL; - // Ensure we have a valid image - if ($image_path && @file_exists($image_path)) { - // Ensure target directory exists, but only create 1 subdirectory - $image_dir = dirname($image_path); - $clone_dir = dirname($clone_path); - $image_extension = M_I18n::mb_pathinfo($image_path, PATHINFO_EXTENSION); - $image_extension_str = null; - $clone_extension = M_I18n::mb_pathinfo($clone_path, PATHINFO_EXTENSION); - $clone_extension_str = null; - if ($image_extension != null) { - $image_extension_str = '.' . $image_extension; + return $this->_cache; + } +} +class C_Image_Wrapper_Collection implements ArrayAccess +{ + public $container = array(); + public $galleries = array(); + public function offsetExists($offset) + { + return isset($this->container[$offset]); + } + public function offsetGet($offset) + { + return isset($this->container[$offset]) ? $this->container[$offset] : null; + } + public function offsetSet($offset, $value) + { + if (is_object($value)) { + $value->container = $this; + } + if (is_null($offset)) { + $this->container[] = $value; + } else { + $this->container[$offset] = $value; + } + } + public function offsetUnset($offset) + { + unset($this->container[$offset]); + } + /** + * Retrieves and caches an I_Gallery_Mapper instance for this gallery id + * + * @param int $gallery_id Gallery ID + * @return mixed + */ + public function get_gallery($gallery_id) + { + if (!isset($this->galleries[$gallery_id]) || is_null($this->galleries[$gallery_id])) { + $this->galleries[$gallery_id] = C_Gallery_Mapper::get_instance(); + } + return $this->galleries[$gallery_id]; + } +} +class C_NextGen_Data_Installer extends C_NggLegacy_Installer +{ + function get_registry() + { + return C_Component_Registry::get_instance(); + } + function install() + { + $this->remove_table_extra_options(); + } + function remove_table_extra_options() + { + global $wpdb; + $likes = array("option_name LIKE '%ngg_gallery%'", "option_name LIKE '%ngg_pictures%'", "option_name LIKE '%ngg_album%'"); + $sql = "DELETE FROM {$wpdb->options} WHERE " . implode(" OR ", $likes); + $wpdb->query($sql); + } + function uninstall($hard = FALSE) + { + if ($hard) { + /* Yes: this is commented twice. + // TODO for now never delete galleries/albums/content + # $mappers = array( + # $this->get_registry()->get_utility('I_Album_Mapper'), + # $this->get_registry()->get_utility('I_Gallery_Mapper'), + # $this->get_registry()->get_utility('I_Image_Mapper'), + # ); + + # foreach ($mappers as $mapper) { + # $mapper->delete()->run_query(); + # } + + # // Remove ngg tags + # global $wpdb; + # $wpdb->query("DELETE FROM {$wpdb->terms} WHERE term_id IN (SELECT term_id FROM {$wpdb->term_taxonomy} WHERE taxonomy='ngg_tag')"); + # $wpdb->query("DELETE FROM {$wpdb->term_taxonomy} WHERE taxonomy='ngg_tag'"); + */ + } + } +} +class C_NextGen_Metadata extends C_Component +{ + // Image data + public $image = ''; + // The image object + public $file_path = ''; + // Path to the image file + public $size = FALSE; + // The image size + public $exif_data = FALSE; + // EXIF data array + public $iptc_data = FALSE; + // IPTC data array + public $xmp_data = FALSE; + // XMP data array + // Filtered Data + public $exif_array = FALSE; + // EXIF data array + public $iptc_array = FALSE; + // IPTC data array + public $xmp_array = FALSE; + // XMP data array + public $sanitize = FALSE; + // sanitize meta data on request + /** + * Class constructor + * + * @param int $image Image ID + * @param bool $onlyEXIF TRUE = will parse only EXIF data + * @return bool FALSE if the file does not exist or metadat could not be read + */ + public function __construct($image, $onlyEXIF = FALSE) + { + if (is_numeric($image)) { + $image = C_Image_Mapper::get_instance()->find($image); + } + $this->image = apply_filters('ngg_find_image_meta', $image); + $this->file_path = C_Gallery_Storage::get_instance()->get_image_abspath($this->image); + if (!@file_exists($this->file_path)) { + return FALSE; + } + $this->size = @getimagesize($this->file_path, $metadata); + if ($this->size && is_array($metadata)) { + // get exif - data + if (is_callable('exif_read_data')) { + $this->exif_data = @exif_read_data($this->file_path, NULL, TRUE); } - if ($clone_extension != null) { - $clone_extension_str = '.' . $clone_extension; + // stop here if we didn't need other meta data + if ($onlyEXIF) { + return TRUE; } - $image_basename = M_I18n::mb_basename($image_path); - $clone_basename = M_I18n::mb_basename($clone_path); - // We use a default suffix as passing in null as the suffix will make WordPress use a default - $clone_suffix = null; - $format_list = $this->object->get_image_format_list(); - $clone_format = null; - // format is determined below and based on $type otherwise left to null - // suffix is only used to reconstruct paths for image_resize function - if (strpos($clone_basename, $image_basename) === 0) { - $clone_suffix = substr($clone_basename, strlen($image_basename)); + // get the iptc data - should be in APP13 + if (is_callable('iptcparse') && isset($metadata['APP13'])) { + $this->iptc_data = @iptcparse($metadata['APP13']); } - if ($clone_suffix != null && $clone_suffix[0] == '-') { - // WordPress adds '-' on its own - $clone_suffix = substr($clone_suffix, 1); + // get the xmp data in a XML format + if (is_callable('xml_parser_create')) { + $this->xmp_data = $this->extract_XMP($this->file_path); } - // Get original image dimensions - $dimensions = getimagesize($image_path); - if ($width == null && $height == null) { - if ($dimensions != null) { - if ($width == null) { - $width = $dimensions[0]; - } - if ($height == null) { - $height = $dimensions[1]; - } - } else { - // XXX Don't think there's any other option here but to fail miserably...use some hard-coded defaults maybe? - return null; - } + return TRUE; + } + return FALSE; + } + /** + * return the saved meta data from the database + * + * @since 1.4.0 + * @param string $object (optional) + * @return array|mixed return either the complete array or the single object + */ + function get_saved_meta($object = false) + { + $meta = $this->image->meta_data; + // Check if we already import the meta data to the database + if (!is_array($meta) || !isset($meta['saved']) || $meta['saved'] !== TRUE) { + return false; + } + // return one element if requested + if ($object) { + return $meta[$object]; + } + //removed saved parameter we don't need that to show + unset($meta['saved']); + // and remove empty tags or arrays + foreach ($meta as $key => $value) { + if (empty($value) or is_array($value)) { + unset($meta[$key]); } - if ($dimensions != null) { - $dimensions_ratio = $dimensions[0] / $dimensions[1]; - if ($width == null) { - $width = (int) round($height * $dimensions_ratio); - if ($width == $dimensions[0] - 1) { - $width = $dimensions[0]; - } + } + // on request sanitize the output + if ($this->sanitize == true) { + array_walk($meta, 'esc_html'); + } + return $meta; + } + /** + * nggMeta::get_EXIF() + * See also http://trac.wordpress.org/changeset/6313 + * + * @return bool|array + */ + function get_EXIF($object = false) + { + if (!$this->exif_data) { + return false; + } + if (!is_array($this->exif_array)) { + $meta = array(); + if (isset($this->exif_data['EXIF'])) { + $exif = $this->exif_data['EXIF']; + if (!empty($exif['FNumber'])) { + $meta['aperture'] = 'F ' . round($this->exif_frac2dec($exif['FNumber']), 2); + } + if (!empty($exif['Model'])) { + $meta['camera'] = trim($exif['Model']); + } + if (!empty($exif['DateTimeDigitized'])) { + $meta['created_timestamp'] = $this->exif_date2ts($exif['DateTimeDigitized']); } else { - if ($height == null) { - $height = (int) round($width / $dimensions_ratio); - if ($height == $dimensions[1] - 1) { - $height = $dimensions[1]; + if (!empty($exif['DateTimeOriginal'])) { + $meta['created_timestamp'] = $this->exif_date2ts($exif['DateTimeOriginal']); + } else { + if (!empty($exif['FileDateTime'])) { + $meta['created_timestamp'] = $this->exif_date2ts($exif['FileDateTime']); } } } - if ($width > $dimensions[0]) { - $width = $dimensions[0]; + if (!empty($exif['FocalLength'])) { + $meta['focal_length'] = $this->exif_frac2dec($exif['FocalLength']) . __(' mm', 'nggallery'); } - if ($height > $dimensions[1]) { - $height = $dimensions[1]; + if (!empty($exif['ISOSpeedRatings'])) { + $meta['iso'] = $exif['ISOSpeedRatings']; } - $image_format = $dimensions[2]; - if ($type != null) { - if (is_string($type)) { - $type = strtolower($type); - // Indexes in the $format_list array correspond to IMAGETYPE_XXX values appropriately - if (($index = array_search($type, $format_list)) !== false) { - $type = $index; - if ($type != $image_format) { - // Note: this only changes the FORMAT of the image but not the extension - $clone_format = $type; - } - } - } + if (!empty($exif['ExposureTime'])) { + $meta['shutter_speed'] = $this->exif_frac2dec($exif['ExposureTime']); + $meta['shutter_speed'] = ($meta['shutter_speed'] > 0.0 and $meta['shutter_speed'] < 1.0) ? '1/' . round(1 / $meta['shutter_speed'], -1) : $meta['shutter_speed']; + $meta['shutter_speed'] .= __(' sec', 'nggallery'); + } + //Bit 0 indicates the flash firing status + if (!empty($exif['Flash'])) { + $meta['flash'] = $exif['Flash'] & 1 ? __('Fired', 'nggallery') : __('Not fired', ' nggallery'); } } - if ($width == null || $height == null) { - // Something went wrong... - return null; - } - $result['clone_path'] = $clone_path; - $result['clone_directory'] = $clone_dir; - $result['clone_suffix'] = $clone_suffix; - $result['clone_format'] = $clone_format; - $result['base_width'] = $dimensions[0]; - $result['base_height'] = $dimensions[1]; - // image_resize() has limitations: - // - no easy crop frame support - // - fails if the dimensions are unchanged - // - doesn't support filename prefix, only suffix so names like thumbs_original_name.jpg for $clone_path are not supported - // also suffix cannot be null as that will make WordPress use a default suffix...we could use an object that returns empty string from __toString() but for now just fallback to ngg generator - if (FALSE) { - // disabling the WordPress method for Iteration #6 - // if (($crop_frame == null || !$crop) && ($dimensions[0] != $width && $dimensions[1] != $height) && $clone_suffix != null) - $result['method'] = 'wordpress'; - $new_dims = image_resize_dimensions($dimensions[0], $dimensions[1], $width, $height, $crop); - if ($new_dims) { - list($dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) = $new_dims; - $width = $dst_w; - $height = $dst_h; - } else { - $result['error'] = new WP_Error('error_getting_dimensions', __('Could not calculate resized image dimensions')); + // additional information + if (isset($this->exif_data['IFD0'])) { + $exif = $this->exif_data['IFD0']; + if (!empty($exif['Model'])) { + $meta['camera'] = $exif['Model']; } - } else { - $result['method'] = 'nextgen'; - $original_width = $dimensions[0]; - $original_height = $dimensions[1]; - $aspect_ratio = $width / $height; - $orig_ratio_x = $original_width / $width; - $orig_ratio_y = $original_height / $height; - if ($crop) { - $algo = 'shrink'; - // either 'adapt' or 'shrink' - if ($crop_frame != null) { - $crop_x = (int) round($crop_frame['x']); - $crop_y = (int) round($crop_frame['y']); - $crop_width = (int) round($crop_frame['width']); - $crop_height = (int) round($crop_frame['height']); - $crop_final_width = (int) round($crop_frame['final_width']); - $crop_final_height = (int) round($crop_frame['final_height']); - $crop_width_orig = $crop_width; - $crop_height_orig = $crop_height; - $crop_factor_x = $crop_width / $crop_final_width; - $crop_factor_y = $crop_height / $crop_final_height; - $crop_ratio_x = $crop_width / $width; - $crop_ratio_y = $crop_height / $height; - if ($algo == 'adapt') { - // XXX not sure about this...don't use for now - # $crop_width = (int) round($width * $crop_factor_x); - # $crop_height = (int) round($height * $crop_factor_y); - } else { - if ($algo == 'shrink') { - if ($crop_ratio_x < $crop_ratio_y) { - $crop_width = max($crop_width, $width); - $crop_height = (int) round($crop_width / $aspect_ratio); - } else { - $crop_height = max($crop_height, $height); - $crop_width = (int) round($crop_height * $aspect_ratio); - } - if ($crop_width == $crop_width_orig - 1) { - $crop_width = $crop_width_orig; - } - if ($crop_height == $crop_height_orig - 1) { - $crop_height = $crop_height_orig; - } - } - } - $crop_diff_x = (int) round(($crop_width_orig - $crop_width) / 2); - $crop_diff_y = (int) round(($crop_height_orig - $crop_height) / 2); - $crop_x += $crop_diff_x; - $crop_y += $crop_diff_y; - $crop_max_x = $crop_x + $crop_width; - $crop_max_y = $crop_y + $crop_height; - // Check if we're overflowing borders - // - if ($crop_x < 0) { - $crop_x = 0; - } else { - if ($crop_max_x > $original_width) { - $crop_x -= $crop_max_x - $original_width; - } - } - if ($crop_y < 0) { - $crop_y = 0; - } else { - if ($crop_max_y > $original_height) { - $crop_y -= $crop_max_y - $original_height; - } - } - } else { - if ($orig_ratio_x < $orig_ratio_y) { - $crop_width = $original_width; - $crop_height = (int) round($height * $orig_ratio_x); - } else { - $crop_height = $original_height; - $crop_width = (int) round($width * $orig_ratio_y); - } - if ($crop_width == $width - 1) { - $crop_width = $width; - } - if ($crop_height == $height - 1) { - $crop_height = $height; - } - $crop_x = (int) round(($original_width - $crop_width) / 2); - $crop_y = (int) round(($original_height - $crop_height) / 2); - } - $result['crop_area'] = array('x' => $crop_x, 'y' => $crop_y, 'width' => $crop_width, 'height' => $crop_height); - } else { - // Just constraint dimensions to ensure there's no stretching or deformations - list($width, $height) = wp_constrain_dimensions($original_width, $original_height, $width, $height); + if (!empty($exif['Make'])) { + $meta['make'] = $exif['Make']; + } + if (!empty($exif['ImageDescription'])) { + $meta['title'] = $this->utf8_encode($exif['ImageDescription']); + } + if (!empty($exif['Orientation'])) { + $meta['Orientation'] = $exif['Orientation']; } } - $result['width'] = $width; - $result['height'] = $height; - $result['quality'] = $quality; - $real_width = $width; - $real_height = $height; - if ($rotation && in_array(abs($rotation), array(90, 270))) { - $real_width = $height; - $real_height = $width; - } - if ($reflection) { - // default for nextgen was 40%, this is used in generate_image_clone as well - $reflection_amount = 40; - // Note, round() would probably be best here but using the same code that C_NggLegacy_Thumbnail uses for compatibility - $reflection_height = intval($real_height * ($reflection_amount / 100)); - $real_height = $real_height + $reflection_height; + // this is done by Windows + if (isset($this->exif_data['WINXP'])) { + $exif = $this->exif_data['WINXP']; + if (!empty($exif['Title']) && empty($meta['title'])) { + $meta['title'] = $this->utf8_encode($exif['Title']); + } + if (!empty($exif['Author'])) { + $meta['author'] = $this->utf8_encode($exif['Author']); + } + if (!empty($exif['Keywords'])) { + $meta['keywords'] = $this->utf8_encode($exif['Keywords']); + } + if (!empty($exif['Subject'])) { + $meta['subject'] = $this->utf8_encode($exif['Subject']); + } + if (!empty($exif['Comments'])) { + $meta['caption'] = $this->utf8_encode($exif['Comments']); + } } - $result['real_width'] = $real_width; - $result['real_height'] = $real_height; + $this->exif_array = $meta; } - return $result; + // return one element if requested + if ($object == true) { + $value = isset($this->exif_array[$object]) ? $this->exif_array[$object] : false; + return $value; + } + // on request sanitize the output + if ($this->sanitize == true) { + array_walk($this->exif_array, 'esc_html'); + } + return $this->exif_array; } - /** - * Returns an array of dimensional properties (width, height, real_width, real_height) of a resulting clone image if and when generated - * @param string $image_path - * @param string $clone_path - * @param array $params - * @return null|array - */ - function calculate_image_clone_dimensions($image_path, $clone_path, $params) + // convert a fraction string to a decimal + function exif_frac2dec($str) { - $retval = null; - $result = $this->object->calculate_image_clone_result($image_path, $clone_path, $params); - if ($result != null) { - $retval = array('width' => $result['width'], 'height' => $result['height'], 'real_width' => $result['real_width'], 'real_height' => $result['real_height']); + @(list($n, $d) = explode('/', $str)); + if (!empty($d)) { + return $n / $d; + } + return $str; + } + // convert the exif date format to a unix timestamp + function exif_date2ts($str) + { + $retval = is_numeric($str) ? $str : @strtotime($str); + if (!$retval && $str) { + @(list($date, $time) = explode(' ', trim($str))); + @(list($y, $m, $d) = explode(':', $date)); + $retval = strtotime("{$y}-{$m}-{$d} {$time}"); } return $retval; } /** - * Generates a "clone" for an existing image, the clone can be altered using the $params array - * @param string $image_path - * @param string $clone_path - * @param array $params - * @return null|object + * nggMeta::readIPTC() - IPTC Data Information for EXIF Display + * + * @param object $object (optional) + * @return null|bool|array */ - function generate_image_clone($image_path, $clone_path, $params) + function get_IPTC($object = false) { - $crop = isset($params['crop']) ? $params['crop'] : NULL; - $watermark = isset($params['watermark']) ? $params['watermark'] : NULL; - $reflection = isset($params['reflection']) ? $params['reflection'] : NULL; - $rotation = isset($params['rotation']) ? $params['rotation'] : NULL; - $flip = isset($params['flip']) ? $params['flip'] : NULL; - $destpath = NULL; - $thumbnail = NULL; - $result = $this->object->calculate_image_clone_result($image_path, $clone_path, $params); - // XXX this should maybe be removed and extra settings go into $params? - $settings = apply_filters('ngg_settings_during_image_generation', C_NextGen_Settings::get_instance()->to_array()); - // Ensure we have a valid image - if ($image_path && @file_exists($image_path) && $result != null && !isset($result['error'])) { - $image_dir = dirname($image_path); - $clone_path = $result['clone_path']; - $clone_dir = $result['clone_directory']; - $clone_format = $result['clone_format']; - $format_list = $this->object->get_image_format_list(); - // Ensure target directory exists, but only create 1 subdirectory - if (!@file_exists($clone_dir)) { - if (strtolower(realpath($image_dir)) != strtolower(realpath($clone_dir))) { - if (strtolower(realpath($image_dir)) == strtolower(realpath(dirname($clone_dir)))) { - wp_mkdir_p($clone_dir); - } - } - } - $method = $result['method']; - $width = $result['width']; - $height = $result['height']; - $quality = $result['quality']; - if ($quality == null) { - $quality = 100; - } - if ($method == 'wordpress') { - $original = wp_get_image_editor($image_path); - $destpath = $clone_path; - if (!is_wp_error($original)) { - $original->resize($width, $height, $crop); - $original->set_quality($quality); - $original->save($clone_path); - } - } else { - if ($method == 'nextgen') { - $destpath = $clone_path; - $thumbnail = new C_NggLegacy_Thumbnail($image_path, true); - if (!$thumbnail->error) { - if ($crop) { - $crop_area = $result['crop_area']; - $crop_x = $crop_area['x']; - $crop_y = $crop_area['y']; - $crop_width = $crop_area['width']; - $crop_height = $crop_area['height']; - $thumbnail->crop($crop_x, $crop_y, $crop_width, $crop_height); - } - $thumbnail->resize($width, $height); - } else { - $thumbnail = NULL; - } - } - } - // We successfully generated the thumbnail - if (is_string($destpath) && (@file_exists($destpath) || $thumbnail != null)) { - if ($clone_format != null) { - if (isset($format_list[$clone_format])) { - $clone_format_extension = $format_list[$clone_format]; - $clone_format_extension_str = null; - if ($clone_format_extension != null) { - $clone_format_extension_str = '.' . $clone_format_extension; - } - $destpath_info = M_I18n::mb_pathinfo($destpath); - $destpath_extension = $destpath_info['extension']; - if (strtolower($destpath_extension) != strtolower($clone_format_extension)) { - $destpath_dir = $destpath_info['dirname']; - $destpath_basename = $destpath_info['filename']; - $destpath_new = $destpath_dir . DIRECTORY_SEPARATOR . $destpath_basename . $clone_format_extension_str; - if (@file_exists($destpath) && rename($destpath, $destpath_new) || $thumbnail != null) { - $destpath = $destpath_new; - } - } - } - } - if (is_null($thumbnail)) { - $thumbnail = new C_NggLegacy_Thumbnail($destpath, true); - if ($thumbnail->error) { - $thumbnail = null; - return null; - } - } else { - $thumbnail->fileName = $destpath; - } - // This is quite odd, when watermark equals int(0) it seems all statements below ($watermark == 'image') and ($watermark == 'text') both evaluate as true - // so we set it at null if it evaluates to any null-like value - if ($watermark == null) { - $watermark = null; - } - if ($watermark == 1 || $watermark === true) { - if (in_array(strval($settings['wmType']), array('image', 'text'))) { - $watermark = $settings['wmType']; - } else { - $watermark = 'text'; - } - } - $watermark = strval($watermark); - if ($watermark == 'image') { - $thumbnail->watermarkImgPath = $settings['wmPath']; - $thumbnail->watermarkImage($settings['wmPos'], $settings['wmXpos'], $settings['wmYpos']); - } else { - if ($watermark == 'text') { - $thumbnail->watermarkText = $settings['wmText']; - $thumbnail->watermarkCreateText($settings['wmColor'], $settings['wmFont'], $settings['wmSize'], $settings['wmOpaque']); - $thumbnail->watermarkImage($settings['wmPos'], $settings['wmXpos'], $settings['wmYpos']); - } - } - if ($rotation && in_array(abs($rotation), array(90, 180, 270))) { - $thumbnail->rotateImageAngle($rotation); - } - $flip = strtolower($flip); - if ($flip && in_array($flip, array('h', 'v', 'hv'))) { - $flip_h = in_array($flip, array('h', 'hv')); - $flip_v = in_array($flip, array('v', 'hv')); - $thumbnail->flipImage($flip_h, $flip_v); - } - if ($reflection) { - $thumbnail->createReflection(40, 40, 50, FALSE, '#a4a4a4'); - } - if ($clone_format != null && isset($format_list[$clone_format])) { - // Force format - $thumbnail->format = strtoupper($format_list[$clone_format]); + if (!$this->iptc_data) { + return false; + } + if (!is_array($this->iptc_array)) { + // --------- Set up Array Functions --------- // + $iptcTags = array("2#005" => 'title', "2#007" => 'status', "2#012" => 'subject', "2#015" => 'category', "2#025" => 'keywords', "2#055" => 'created_date', "2#060" => 'created_time', "2#080" => 'author', "2#085" => 'position', "2#090" => 'city', "2#092" => 'location', "2#095" => 'state', "2#100" => 'country_code', "2#101" => 'country', "2#105" => 'headline', "2#110" => 'credit', "2#115" => 'source', "2#116" => 'copyright', "2#118" => 'contact', "2#120" => 'caption'); + $meta = array(); + foreach ($iptcTags as $key => $value) { + if (isset($this->iptc_data[$key])) { + $meta[$value] = trim($this->utf8_encode(implode(", ", $this->iptc_data[$key]))); } - $thumbnail = apply_filters('ngg_before_save_thumbnail', $thumbnail); - $exif_iptc = @C_Exif_Writer_Wrapper::read_metadata($image_path); - $thumbnail->save($destpath, $quality); - @C_Exif_Writer_Wrapper::write_metadata($destpath, $exif_iptc); } + $this->iptc_array = $meta; } - return $thumbnail; - } -} -/** - * Class C_GalleryStorage_Driver_Base - * @mixin Mixin_GalleryStorage_Driver_Base - * @implements I_GalleryStorage_Driver - */ -class C_GalleryStorage_Driver_Base extends C_GalleryStorage_Base -{ - public static $_instances = array(); - function define($context = FALSE) - { - parent::define($context); - $this->add_mixin('Mixin_GalleryStorage_Driver_Base'); - $this->implement('I_GalleryStorage_Driver'); - } - function initialize() - { - parent::initialize(); - $this->_gallery_mapper = C_Gallery_Mapper::get_instance(); - $this->_image_mapper = C_Image_Mapper::get_instance(); - } - /** - * @param bool|string $context - * @return C_GalleryStorage_Driver_Base - */ - public static function get_instance($context = False) - { - if (!isset(self::$_instances[$context])) { - self::$_instances[$context] = new C_GalleryStorage_Driver_Base($context); - } - return self::$_instances[$context]; - } - /** - * Gets the class name of the driver used - * @return string - */ - function get_driver_class_name() - { - return get_called_class(); - } -} -class Mixin_NextGen_Gallery_Image_Validation extends Mixin -{ - function validation() - { - // Additional checks... - if (isset($this->object->description)) { - $this->object->description = M_NextGen_Data::strip_html($this->object->description, TRUE); + // return one element if requested + if ($object) { + return isset($this->iptc_array[$object]) ? $this->iptc_array[$object] : NULL; } - if (isset($this->object->alttext)) { - $this->object->alttext = M_NextGen_Data::strip_html($this->object->alttext, TRUE); + // on request sanitize the output + if ($this->sanitize == true) { + array_walk($this->iptc_array, 'esc_html'); } - $this->validates_presence_of('galleryid', 'filename', 'alttext', 'exclude', 'sortorder', 'imagedate'); - $this->validates_numericality_of('galleryid'); - $this->validates_numericality_of($this->id()); - $this->validates_numericality_of('sortorder'); - $this->validates_length_of('filename', 185, '<=', __('Image filenames may not be longer than 185 characters in length', 'nextgen-gallery')); - return $this->object->is_valid(); - } -} -/** - * Model for NextGen Gallery Images - * @mixin Mixin_NextGen_Gallery_Image_Validation - * @implements I_Image - */ -class C_Image extends C_DataMapper_Model -{ - var $_mapper_interface = 'I_Image_Mapper'; - function define($properties = array(), $mapper = FALSE, $context = FALSE) - { - parent::define($mapper, $properties, $context); - $this->add_mixin('Mixin_NextGen_Gallery_Image_Validation'); - $this->implement('I_Image'); + return $this->iptc_array; } /** - * Instantiates a new model - * @param array|stdClass $properties (optional) - * @param C_Image_Mapper|false $mapper (optional) - * @param string|false $context (optional) + * nggMeta::extract_XMP() + * get XMP DATA + * code by Pekka Saarinen http://photography-on-the.net + * + * @param mixed $filename + * @return bool|string */ - function initialize($properties = array(), $mapper = FALSE, $context = FALSE) + function extract_XMP($filename) { - if (!$mapper) { - $mapper = $this->get_registry()->get_utility($this->_mapper_interface); + //TODO:Require a lot of memory, could be better + ob_start(); + @readfile($filename); + $source = ob_get_contents(); + ob_end_clean(); + $start = strpos($source, "<x:xmpmeta"); + $end = strpos($source, "</x:xmpmeta>"); + if (!$start === false && !$end === false) { + $lenght = $end - $start; + $xmp_data = substr($source, $start, $lenght + 12); + unset($source); + return $xmp_data; } - parent::initialize($mapper, $properties); - } - /** - * Returns the model representing the gallery associated with this image - * @param object|false $model (optional) - * @return C_Gallery|object - */ - function get_gallery($model = FALSE) - { - return C_Gallery_Mapper::get_instance()->find($this->galleryid, $model); + unset($source); + return false; } -} -/** - * Class C_Image_Mapper - * @mixin Mixin_NextGen_Table_Extras - * @mixin Mixin_Gallery_Image_Mapper - * @implements I_Image_Mapper - */ -class C_Image_Mapper extends C_CustomTable_DataMapper_Driver -{ - public static $_instance = NULL; /** - * Defines the gallery image mapper - * @param string|false $context (optional) - * @param mixed $not_used + * nggMeta::get_XMP() + * + * @package Taken from http://php.net/manual/en/function.xml-parse-into-struct.php + * @author Alf Marius Foss Olsen & Alex Rabe + * @return bool|array + * */ - function define($context = FALSE, $not_used = FALSE) + function get_XMP($object = false) { - // Add 'attachment' context - if (!is_array($context)) { - $context = array($context); + if (!$this->xmp_data) { + return false; } - array_push($context, 'attachment'); - // Define the mapper - $this->_primary_key_column = 'pid'; - parent::define('ngg_pictures', $context); - $this->add_mixin('Mixin_NextGen_Table_Extras'); - $this->add_mixin('Mixin_Gallery_Image_Mapper'); - $this->implement('I_Image_Mapper'); - $this->set_model_factory_method('image'); - // Define the columns - $this->define_column('pid', 'BIGINT', 0); - $this->define_column('image_slug', 'VARCHAR(255)'); - $this->define_column('post_id', 'BIGINT', 0); - $this->define_column('galleryid', 'BIGINT', 0); - $this->define_column('filename', 'VARCHAR(255)'); - $this->define_column('description', 'TEXT'); - $this->define_column('alttext', 'TEXT'); - $this->define_column('imagedate', 'DATETIME'); - $this->define_column('exclude', 'INT', 0); - $this->define_column('sortorder', 'BIGINT', 0); - $this->define_column('meta_data', 'TEXT'); - $this->define_column('extras_post_id', 'BIGINT', 0); - $this->define_column('updated_at', 'BIGINT'); - // Mark the columns which should be unserialized - $this->add_serialized_column('meta_data'); + if (!is_array($this->xmp_array)) { + $parser = xml_parser_create(); + xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); + // Dont mess with my cAsE sEtTings + xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); + // Dont bother with empty info + xml_parse_into_struct($parser, $this->xmp_data, $values); + xml_parser_free($parser); + $xmlarray = array(); + // The XML array + $this->xmp_array = array(); + // The returned array + $stack = array(); + // tmp array used for stacking + $list_array = array(); + // tmp array for list elements + $list_element = false; + // rdf:li indicator + foreach ($values as $val) { + if ($val['type'] == "open") { + array_push($stack, $val['tag']); + } elseif ($val['type'] == "close") { + // reset the compared stack + if ($list_element == false) { + array_pop($stack); + } + // reset the rdf:li indicator & array + $list_element = false; + $list_array = array(); + } elseif ($val['type'] == "complete") { + if ($val['tag'] == "rdf:li") { + // first go one element back + if ($list_element == false) { + array_pop($stack); + } + $list_element = true; + // do not parse empty tags + if (empty($val['value'])) { + continue; + } + // save it in our temp array + $list_array[] = $val['value']; + // in the case it's a list element we seralize it + $value = implode(",", $list_array); + $this->setArrayValue($xmlarray, $stack, $value); + } else { + array_push($stack, $val['tag']); + // do not parse empty tags + if (!empty($val['value'])) { + $this->setArrayValue($xmlarray, $stack, $val['value']); + } + array_pop($stack); + } + } + } + // foreach + // don't parse a empty array + if (empty($xmlarray) || empty($xmlarray['x:xmpmeta'])) { + return false; + } + // cut off the useless tags + $xmlarray = $xmlarray['x:xmpmeta']['rdf:RDF']['rdf:Description']; + // --------- Some values from the XMP format--------- // + $xmpTags = array('xap:CreateDate' => 'created_timestamp', 'xap:ModifyDate' => 'last_modfied', 'xap:CreatorTool' => 'tool', 'dc:format' => 'format', 'dc:title' => 'title', 'dc:creator' => 'author', 'dc:subject' => 'keywords', 'dc:description' => 'caption', 'photoshop:AuthorsPosition' => 'position', 'photoshop:City' => 'city', 'photoshop:Country' => 'country'); + foreach ($xmpTags as $key => $value) { + // if the kex exist + if (isset($xmlarray[$key])) { + switch ($key) { + case 'xap:CreateDate': + case 'xap:ModifyDate': + $this->xmp_array[$value] = strtotime($xmlarray[$key]); + break; + default: + $this->xmp_array[$value] = $xmlarray[$key]; + } + } + } + } + // return one element if requested + if ($object != false) { + return isset($this->xmp_array[$object]) ? $this->xmp_array[$object] : false; + } + // on request sanitize the output + if ($this->sanitize == true) { + array_walk($this->xmp_array, 'esc_html'); + } + return $this->xmp_array; } - function initialize($object_name = FALSE) + function setArrayValue(&$array, $stack, $value) { - parent::initialize('ngg_pictures'); + if ($stack) { + $key = array_shift($stack); + $this->setArrayValue($array[$key], $stack, $value); + return $array; + } else { + $array = $value; + } + return $array; } /** - * @param bool|string $context - * @return C_Image_Mapper + * nggMeta::get_META() - return a meta value form the available list + * + * @param string $object + * @return mixed $value */ - static function get_instance($context = False) + function get_META($object = false) { - if (is_null(self::$_instance)) { - $klass = get_class(); - self::$_instance = new $klass($context); + // defined order first look into database, then XMP, IPTC and EXIF. + if ($value = $this->get_saved_meta($object)) { + return $value; } - return self::$_instance; - } -} -/** - * Sets the alttext property as the post title - */ -class Mixin_Gallery_Image_Mapper extends Mixin -{ - function destroy($image) - { - $retval = $this->call_parent('destroy', $image); - // Delete tag associations with the image - if (!is_numeric($image)) { - $image = $image->{$image->id_field}; + if ($value = $this->get_XMP($object)) { + return $value; } - wp_delete_object_term_relationships($image, 'ngg_tag'); - C_Photocrati_Transient_Manager::flush('displayed_gallery_rendering'); - return $retval; + if ($object == 'created_timestamp' && ($d = $this->get_IPTC('created_date')) && ($t = $this->get_IPTC('created_time'))) { + return $this->exif_date2ts($d . ' ' . $t); + } + if ($value = $this->get_IPTC($object)) { + return $value; + } + if ($value = $this->get_EXIF($object)) { + return $value; + } + // nothing found ? + return false; } - function _save_entity($entity) + /** + * nggMeta::i8n_name() - localize the tag name + * + * @param mixed $key + * @return string Translated $key + */ + function i18n_name($key) { - $entity->updated_at = time(); - // If successfully saved then import metadata - $retval = $this->call_parent('_save_entity', $entity); - if ($retval) { - include_once NGGALLERY_ABSPATH . '/admin/functions.php'; - $image_id = $this->get_id($entity); - if (!isset($entity->meta_data['saved'])) { - nggAdmin::import_MetaData($image_id); - } - C_Photocrati_Transient_Manager::flush('displayed_gallery_rendering'); + $tagnames = array('aperture' => __('Aperture', 'nggallery'), 'credit' => __('Credit', 'nggallery'), 'camera' => __('Camera', 'nggallery'), 'caption' => __('Caption', 'nggallery'), 'created_timestamp' => __('Date/Time', 'nggallery'), 'copyright' => __('Copyright', 'nggallery'), 'focal_length' => __('Focal length', 'nggallery'), 'iso' => __('ISO', 'nggallery'), 'shutter_speed' => __('Shutter speed', 'nggallery'), 'title' => __('Title', 'nggallery'), 'author' => __('Author', 'nggallery'), 'tags' => __('Tags', 'nggallery'), 'subject' => __('Subject', 'nggallery'), 'make' => __('Make', 'nggallery'), 'status' => __('Edit Status', 'nggallery'), 'category' => __('Category', 'nggallery'), 'keywords' => __('Keywords', 'nggallery'), 'created_date' => __('Date Created', 'nggallery'), 'created_time' => __('Time Created', 'nggallery'), 'position' => __('Author Position', 'nggallery'), 'city' => __('City', 'nggallery'), 'location' => __('Location', 'nggallery'), 'state' => __('Province/State', 'nggallery'), 'country_code' => __('Country code', 'nggallery'), 'country' => __('Country', 'nggallery'), 'headline' => __('Headline', 'nggallery'), 'credit' => __('Credit', 'nggallery'), 'source' => __('Source', 'nggallery'), 'copyright' => __('Copyright Notice', 'nggallery'), 'contact' => __('Contact', 'nggallery'), 'last_modfied' => __('Last modified', 'nggallery'), 'tool' => __('Program tool', 'nggallery'), 'format' => __('Format', 'nggallery'), 'width' => __('Image Width', 'nggallery'), 'height' => __('Image Height', 'nggallery'), 'flash' => __('Flash', 'nggallery')); + if (isset($tagnames[$key])) { + $key = $tagnames[$key]; } - return $retval; + return $key; } - function reimport_metadata($image_or_id) + /** + * Return the Timestamp from the image , if possible it's read from exif data + * @return string + */ + function get_date_time() { - // Get the image - $image = NULL; - if (is_int($image_or_id)) { - $image = $this->object->find($image_or_id); - } else { - $image = $image_or_id; + $date = time(); + // Try getting the created_timestamp field + $date = $this->exif_date2ts($this->get_META('created_timestamp')); + if (!$date) { + $image_path = C_Gallery_Storage::get_instance()->get_backup_abspath($this->image); + $date = @filectime($image_path); } - // Reset all image details that would have normally been imported - if (is_array($image->meta_data)) { - unset($image->meta_data['saved']); + // Failback + if (!$date) { + $date = time(); } - nggAdmin::import_MetaData($image); - return $this->object->save($image); + // Return the MySQL format + $date_time = date('Y-m-d H:i:s', $date); + return $date_time; } /** - * Retrieves the id from an image - * @param $image - * @return bool + * This function return the most common metadata, via a filter we can add more + * Reason : GD manipulation removes that options + * + * @since V1.4.0 + * @return array|false */ - function get_id($image) + function get_common_meta() { - $retval = FALSE; - // Have we been passed an entity and is the id_field set? - if ($image instanceof stdClass) { - if (isset($image->id_field)) { - $retval = $image->{$image->id_field}; - } - } else { - $retval = $image->id(); + global $wpdb; + $meta = array('aperture' => 0, 'credit' => '', 'camera' => '', 'caption' => '', 'created_timestamp' => 0, 'copyright' => '', 'focal_length' => 0, 'iso' => 0, 'shutter_speed' => 0, 'flash' => 0, 'title' => '', 'keywords' => ''); + $meta = apply_filters('ngg_read_image_metadata', $meta); + // meta should be still an array + if (!is_array($meta)) { + return false; } - // If we still don't have an id, then we'll lookup the primary key - // and try fetching it manually - if (!$retval) { - $key = $this->object->get_primary_key_column(); - $retval = $image->{$key}; + foreach ($meta as $key => $value) { + $meta[$key] = $this->get_META($key); } - return $retval; + //let's add now the size of the image + $meta['width'] = $this->size[0]; + $meta['height'] = $this->size[1]; + return $meta; } - function get_post_title($entity) + /** + * If needed sanitize each value before output + * + * @return void + */ + function sanitize() { - return $entity->alttext; - } - function set_defaults($entity) - { - // If not set already, we'll add an exclude property. This is used - // by NextGEN Gallery itself, as well as the Attach to Post module - $this->object->_set_default_value($entity, 'exclude', 0); - // Ensure that the object has a description attribute - $this->object->_set_default_value($entity, 'description', ''); - // If not set already, set a default sortorder - $this->object->_set_default_value($entity, 'sortorder', 0); - // The imagedate must be set - if (!isset($entity->imagedate) or is_null($entity->imagedate) or $entity->imagedate == '0000-00-00 00:00:00') { - $entity->imagedate = date("Y-m-d H:i:s"); - } - // If a filename is set, and no alttext is set, then set the alttext - // to the basename of the filename (legacy behavior) - if (isset($entity->filename)) { - $path_parts = M_I18n::mb_pathinfo($entity->filename); - $alttext = !isset($path_parts['filename']) ? substr($path_parts['basename'], 0, strpos($path_parts['basename'], '.')) : $path_parts['filename']; - $this->object->_set_default_value($entity, 'alttext', $alttext); - } - // Set unique slug - if (isset($entity->alttext) && empty($entity->image_slug)) { - $entity->image_slug = nggdb::get_unique_slug(sanitize_title_with_dashes($entity->alttext), 'image'); - } - // Ensure that the exclude parameter is an integer or boolean-evaluated - // value - if (is_string($entity->exclude)) { - $entity->exclude = intval($entity->exclude); - } - // Trim alttext and description - $entity->description = trim($entity->description); - $entity->alttext = trim($entity->alttext); + $this->sanitize = true; } /** - * Finds all images for a gallery - * @param $gallery - * @param bool $model + * Wrapper to utf8_encode() that avoids double encoding * - * @return array + * Regex adapted from http://www.w3.org/International/questions/qa-forms-utf-8.en.php + * to determine if the given string is already UTF-8. mb_detect_encoding() is not + * always available and is limited in accuracy + * + * @param string $str + * @return string */ - function find_all_for_gallery($gallery, $model = FALSE) + function utf8_encode($str) { - $retval = array(); - $gallery_id = 0; - if (is_object($gallery)) { - if (isset($gallery->id_field)) { - $gallery_id = $gallery->{$gallery->id_field}; - } else { - $key = $this->object->get_primary_key_column(); - if (isset($gallery->{$key})) { - $gallery_id = $gallery->{$key}; - } - } - } elseif (is_numeric($gallery)) { - $gallery_id = $gallery; - } - if ($gallery_id) { - $retval = $this->object->select()->where(array("galleryid = %s", $gallery_id))->run_query(FALSE, $model); + $is_utf8 = preg_match('%^(?: + [\\x09\\x0A\\x0D\\x20-\\x7E] # ASCII + | [\\xC2-\\xDF][\\x80-\\xBF] # non-overlong 2-byte + | \\xE0[\\xA0-\\xBF][\\x80-\\xBF] # excluding overlongs + | [\\xE1-\\xEC\\xEE\\xEF][\\x80-\\xBF]{2} # straight 3-byte + | \\xED[\\x80-\\x9F][\\x80-\\xBF] # excluding surrogates + | \\xF0[\\x90-\\xBF][\\x80-\\xBF]{2} # planes 1-3 + | [\\xF1-\\xF3][\\x80-\\xBF]{3} # planes 4-15 + | \\xF4[\\x80-\\x8F][\\x80-\\xBF]{2} # plane 16 + )*$%xs', $str); + if (!$is_utf8) { + utf8_encode($str); } - return $retval; + return $str; } } /** - * This class provides a lazy-loading wrapper to the NextGen-Legacy "nggImage" class for use in legacy style templates + * gd.thumbnail.inc.php + * + * @author Ian Selby (ian@gen-x-design.com) + * @copyright Copyright 2006-2011 + * @version 1.3.0 (based on 1.1.3) + * @modded by Alex Rabe + * */ -class C_Image_Wrapper +/** + * PHP class for dynamically resizing, cropping, and rotating images for thumbnail purposes and either displaying them on-the-fly or saving them. + * + */ +class C_NggLegacy_Thumbnail { - public $_cache; - // cache of retrieved values - public $_settings; - // I_Settings_Manager cache - public $_storage; - // I_Gallery_Storage cache - public $_galleries; - // cache of I_Gallery_Mapper (plural) - public $_orig_image; - // original provided image - public $_orig_image_id; - // original image ID - public $_cache_overrides; - // allow for forcing variable values - public $_legacy = FALSE; - public $_displayed_gallery; - // cached object /** - * Constructor. Converts the image class into an array and fills from defaults any missing values + * Error message to display, if any * - * @param object $image Individual result from displayed_gallery->get_entities() - * @param object $displayed_gallery Displayed gallery -- MAY BE NULL - * @param bool $legacy Whether the image source is from NextGen Legacy or NextGen - * @return void + * @var string */ - public function __construct($image, $displayed_gallery = NULL, $legacy = FALSE) - { - // for clarity - if ($displayed_gallery && isset($displayed_gallery->display_settings['number_of_columns'])) { - $columns = $displayed_gallery->display_settings['number_of_columns']; - } else { - $columns = 0; - } - // Public variables - $defaults = array( - 'errmsg' => '', - // Error message to display, if any - 'error' => FALSE, - // Error state - 'imageURL' => '', - // URL Path to the image - 'thumbURL' => '', - // URL Path to the thumbnail - 'imagePath' => '', - // Server Path to the image - 'thumbPath' => '', - // Server Path to the thumbnail - 'href' => '', - // A href link code - // Mostly constant - 'thumbPrefix' => 'thumbs_', - // FolderPrefix to the thumbnail - 'thumbFolder' => '/thumbs/', - // Foldername to the thumbnail - // Image Data - 'galleryid' => 0, - // Gallery ID - 'pid' => 0, - // Image ID - 'filename' => '', - // Image filename - 'description' => '', - // Image description - 'alttext' => '', - // Image alttext - 'imagedate' => '', - // Image date/time - 'exclude' => '', - // Image exclude - 'thumbcode' => '', - // Image effect code - // Gallery Data - 'name' => '', - // Gallery name - 'path' => '', - // Gallery path - 'title' => '', - // Gallery title - 'pageid' => 0, - // Gallery page ID - 'previewpic' => 0, - // Gallery preview pic - 'style' => $columns > 0 ? 'style="width:' . floor(100 / $columns) . '%;"' : '', - 'hidden' => FALSE, - 'permalink' => '', - 'tags' => '', - ); - // convert the image to an array and apply the defaults - $this->_orig_image = $image; - $image = (array) $image; - foreach ($defaults as $key => $val) { - if (!isset($image[$key])) { - $image[$key] = $val; - } - } - // cache the results - ksort($image); - $id_field = !empty($image['id_field']) ? $image['id_field'] : 'pid'; - $this->_cache = (array) apply_filters('ngg_image_object', (object) $image, $image[$id_field]); - $this->_orig_image_id = $image[$id_field]; - $this->_legacy = $legacy; - $this->_displayed_gallery = $displayed_gallery; - } - public function __set($name, $value) - { - $this->_cache[$name] = $value; - } - public function __isset($name) - { - return isset($this->_cache[$name]); - } - public function __unset($name) - { - unset($this->_cache[$name]); - } + var $errmsg; /** - * Lazy-loader for image variables. + * Whether or not there is an error * - * @param string $name Parameter name - * @return mixed + * @var boolean */ - public function __get($name) - { - if (isset($this->_cache_overrides[$name])) { - return $this->_cache_overrides[$name]; - } - // at the bottom we default to returning $this->_cache[$name]. - switch ($name) { - case 'alttext': - $this->_cache['alttext'] = empty($this->_cache['alttext']) ? ' ' : html_entity_decode(stripslashes($this->_cache['alttext'])); - return $this->_cache['alttext']; - case 'author': - $gallery = $this->get_legacy_gallery($this->__get('galleryid')); - $this->_cache['author'] = $gallery->name; - return $this->_cache['author']; - case 'caption': - $caption = html_entity_decode(stripslashes($this->__get('description'))); - if (empty($caption)) { - $caption = ' '; - } - $this->_cache['caption'] = $caption; - return $this->_cache['caption']; - case 'description': - $this->_cache['description'] = empty($this->_cache['description']) ? ' ' : html_entity_decode(stripslashes($this->_cache['description'])); - return $this->_cache['description']; - case 'galdesc': - $gallery = $this->get_legacy_gallery($this->__get('galleryid')); - $this->_cache['galdesc'] = $gallery->name; - return $this->_cache['galdesc']; - case 'gid': - $gallery = $this->get_legacy_gallery($this->__get('galleryid')); - $this->_cache['gid'] = $gallery->{$gallery->id_field}; - return $this->_cache['gid']; - case 'href': - return $this->__get('imageHTML'); - case 'id': - return $this->_orig_image_id; - case 'imageHTML': - $tmp = '<a href="' . $this->__get('imageURL') . '" title="' . htmlspecialchars(stripslashes($this->__get('description'))) . '" ' . $this->get_thumbcode($this->__get('name')) . '>' . '<img alt="' . $this->__get('alttext') . '" src="' . $this->__get('imageURL') . '"/>' . '</a>'; - $this->_cache['href'] = $tmp; - $this->_cache['imageHTML'] = $tmp; - return $this->_cache['imageHTML']; - case 'imagePath': - $storage = $this->get_storage(); - $this->_cache['imagePath'] = $storage->get_image_abspath($this->_orig_image, 'full'); - return $this->_cache['imagePath']; - case 'imageURL': - $storage = $this->get_storage(); - $this->_cache['imageURL'] = $storage->get_image_url($this->_orig_image, 'full'); - return $this->_cache['imageURL']; - case 'linktitle': - $this->_cache['linktitle'] = htmlspecialchars(stripslashes($this->__get('description'))); - return $this->_cache['linktitle']; - case 'name': - $gallery = $this->get_legacy_gallery($this->__get('galleryid')); - $this->_cache['name'] = $gallery->name; - return $this->_cache['name']; - case 'pageid': - $gallery = $this->get_legacy_gallery($this->__get('galleryid')); - $this->_cache['pageid'] = $gallery->name; - return $this->_cache['pageid']; - case 'path': - $gallery = $this->get_legacy_gallery($this->__get('galleryid')); - $this->_cache['path'] = $gallery->name; - return $this->_cache['path']; - case 'permalink': - $this->_cache['permalink'] = $this->__get('imageURL'); - return $this->_cache['permalink']; - case 'pid': - return $this->_orig_image_id; - case 'id_field': - $this->_cache['id_field'] = !empty($this->_orig_image->id_field) ? $this->_orig_image->id_field : 'pid'; - return $this->_cache['id_field']; - case 'pidlink': - $application = C_Router::get_instance()->get_routed_app(); - $controller = C_Display_Type_Controller::get_instance(); - $this->_cache['pidlink'] = $controller->set_param_for($application->get_routed_url(TRUE), 'pid', $this->__get('image_slug')); - return $this->_cache['pidlink']; - case 'previewpic': - $gallery = $this->get_legacy_gallery($this->__get('galleryid')); - $this->_cache['previewpic'] = $gallery->name; - return $this->_cache['previewpic']; - case 'size': - $w = 0; - $h = 0; - if ($this->_displayed_gallery && isset($this->_displayed_gallery->display_settings)) { - $ds = $this->_displayed_gallery->display_settings; - if (isset($ds['override_thumbnail_settings']) && $ds['override_thumbnail_settings']) { - $w = $ds['thumbnail_width']; - $h = $ds['thumbnail_height']; - } - } - if (!$w || !$h) { - if (is_string($this->_orig_image->meta_data)) { - $this->_orig_image = C_NextGen_Serializable::unserialize($this->_orig_image->meta_data); - } - if (!isset($this->_orig_image->meta_data['thumbnail'])) { - $storage = $this->get_storage(); - $storage->generate_thumbnail($this->_orig_image); - } - $w = $this->_orig_image->meta_data['thumbnail']['width']; - $h = $this->_orig_image->meta_data['thumbnail']['height']; - } - return "width='{$w}' height='{$h}'"; - case 'slug': - $gallery = $this->get_legacy_gallery($this->__get('galleryid')); - $this->_cache['slug'] = $gallery->name; - return $this->_cache['slug']; - case 'tags': - $this->_cache['tags'] = wp_get_object_terms($this->__get('id'), 'ngg_tag', 'fields=all'); - return $this->_cache['tags']; - case 'thumbHTML': - $tmp = '<a href="' . $this->__get('imageURL') . '" title="' . htmlspecialchars(stripslashes($this->__get('description'))) . '" ' . $this->get_thumbcode($this->__get('name')) . '>' . '<img alt="' . $this->__get('alttext') . '" src="' . $this->thumbURL . '"/>' . '</a>'; - $this->_cache['href'] = $tmp; - $this->_cache['thumbHTML'] = $tmp; - return $this->_cache['thumbHTML']; - case 'thumbPath': - $storage = $this->get_storage(); - $this->_cache['thumbPath'] = $storage->get_image_abspath($this->_orig_image, 'thumbnail'); - return $this->_cache['thumbPath']; - case 'thumbnailURL': - $storage = $this->get_storage(); - $thumbnail_size_name = 'thumbnail'; - if ($this->_displayed_gallery && isset($this->_displayed_gallery->display_settings)) { - $ds = $this->_displayed_gallery->display_settings; - if (isset($ds['override_thumbnail_settings']) && $ds['override_thumbnail_settings']) { - $dynthumbs = C_Component_Registry::get_instance()->get_utility('I_Dynamic_Thumbnails_Manager'); - $dyn_params = array('width' => $ds['thumbnail_width'], 'height' => $ds['thumbnail_height']); - if ($ds['thumbnail_quality']) { - $dyn_params['quality'] = $ds['thumbnail_quality']; - } - if ($ds['thumbnail_crop']) { - $dyn_params['crop'] = TRUE; - } - if ($ds['thumbnail_watermark']) { - $dyn_params['watermark'] = TRUE; - } - $thumbnail_size_name = $dynthumbs->get_size_name($dyn_params); - } - } - $this->_cache['thumbnailURL'] = $storage->get_image_url($this->_orig_image, $thumbnail_size_name); - return $this->_cache['thumbnailURL']; - case 'thumbcode': - if ($this->_displayed_gallery && isset($this->_displayed_gallery->display_settings) && isset($this->_displayed_gallery->display_settings['use_imagebrowser_effect']) && $this->_displayed_gallery->display_settings['use_imagebrowser_effect'] && !empty($this->_orig_image->thumbcode)) { - $this->_cache['thumbcode'] = $this->_orig_image->thumbcode; - } else { - $this->_cache['thumbcode'] = $this->get_thumbcode($this->__get('name')); - } - return $this->_cache['thumbcode']; - case 'thumbURL': - return $this->__get('thumbnailURL'); - case 'title': - $this->_cache['title'] = stripslashes($this->__get('name')); - return $this->_cache['title']; - case 'url': - $storage = $this->get_storage(); - $this->_cache['url'] = $storage->get_image_url($this->_orig_image, 'full'); - return $this->_cache['url']; - default: - return $this->_cache[$name]; - } - } - // called on initial nggLegacy image at construction. not sure what to do with it now. - function construct_ngg_Image($gallery) - { - do_action_ref_array('ngg_get_image', array(&$this)); - unset($this->tags); - } + var $error; /** - * Retrieves and caches an I_Settings_Manager instance + * Format of the image file * - * @return mixed + * @var string */ - function get_settings() - { - if (is_null($this->_settings)) { - $this->_settings = C_NextGen_Settings::get_instance(); - } - return $this->_settings; - } + var $format; /** - * Retrieves and caches an I_Gallery_Storage instance + * File name and path of the image file * - * @return mixed + * @var string */ - function get_storage() - { - if (is_null($this->_storage)) { - $this->_storage = C_Gallery_Storage::get_instance(); - } - return $this->_storage; - } + var $fileName; /** - * Retrieves I_Gallery_Mapper instance. + * Current dimensions of working image * - * @param int $gallery_id Gallery ID - * @return mixed + * @var array */ - function get_gallery($gallery_id) - { - if (isset($this->container) && method_exists($this->container, 'get_gallery')) { - return $this->container->get_gallery($gallery_id); - } - return C_Gallery_Mapper::get_instance()->find($gallery_id); - } + var $currentDimensions; /** - * Retrieves I_Gallery_Mapper instance. + * New dimensions of working image * - * @param int $gallery_id Gallery ID - * @return mixed + * @var array */ - function get_legacy_gallery($gallery_id) - { - return C_Gallery_Mapper::get_instance()->find($gallery_id); - } + var $newDimensions; /** - * Get the thumbnail code (to add effects on thumbnail click) + * Image resource for newly manipulated image * - * Applies the filter 'ngg_get_thumbcode' - * @param string $gallery_name (optional) Default = '' - * @return string + * @var resource + * @access private */ - function get_thumbcode($gallery_name = '') - { - if (empty($this->_displayed_gallery)) { - $effect_code = C_NextGen_Settings::get_instance()->thumbCode; - $effect_code = str_replace('%GALLERY_ID%', $gallery_name, $effect_code); - $effect_code = str_replace('%GALLERY_NAME%', $gallery_name, $effect_code); - $retval = $effect_code; - } else { - $controller = C_Display_Type_Controller::get_instance(); - $retval = $controller->get_effect_code($this->_displayed_gallery); - // This setting requires that we disable the effect code - $ds = $this->_displayed_gallery->display_settings; - if (isset($ds['use_imagebrowser_effect']) && $ds['use_imagebrowser_effect']) { - $retval = ''; - } - } - $retval = apply_filters('ngg_get_thumbcode', $retval, $this); - // ensure some additional data- fields are added; provides Pro-Lightbox compatibility - $retval .= ' data-image-id="' . $this->__get('id') . '"'; - $retval .= ' data-src="' . $this->__get('imageURL') . '"'; - $retval .= ' data-thumbnail="' . $this->__get('thumbnailURL') . '"'; - $retval .= ' data-title="' . esc_attr($this->__get('alttext')) . '"'; - $retval .= ' data-description="' . esc_attr($this->__get('description')) . '"'; - $this->_cache['thumbcode'] = $retval; - return $retval; - } + var $newImage; /** - * For compatibility support + * Image resource for image before previous manipulation * - * @return mixed + * @var resource + * @access private */ - function get_href_link() - { - return $this->__get('imageHTML'); - } + var $oldImage; /** - * For compatibility support + * Image resource for image being currently manipulated * - * @return mixed + * @var resource + * @access private */ - function get_href_thumb_link() - { - return $this->__get('thumbHTML'); - } + var $workingImage; /** - * Function exists for legacy support but has been gutted to not do anything + * Percentage to resize image by * - * @param string|int $width (optional) Default = '' - * @param string|int $height (optional) Default = '' - * @param string $mode could be watermark | web20 | crop - * @return bool|string The url for the image or false if failed + * @var int + * @access private */ - function cached_singlepic_file($width = '', $height = '', $mode = '') - { - $dynthumbs = C_Dynamic_Thumbnails_Manager::get_instance(); - $storage = $this->get_storage(); - // determine what to do with 'mode' - $display_reflection = FALSE; - $display_watermark = FALSE; - if (!is_array($mode)) { - $mode = explode(',', $mode); - } - if (in_array('web20', $mode)) { - $display_reflection = TRUE; - } - if (in_array('watermark', $mode)) { - $display_watermark = TRUE; - } - // and go for it - $params = array('width' => $width, 'height' => $height, 'watermark' => $display_watermark, 'reflection' => $display_reflection); - return $storage->get_image_url((object) $this->_cache, $dynthumbs->get_size_name($params)); - } + var $percent; /** - * Get the tags associated to this image + * Maximum width of image during resize + * + * @var int + * @access private */ - function get_tags() - { - return $this->__get('tags'); - } + var $maxWidth; /** - * Get the permalink to the image + * Maximum height of image during resize * - * TODO: Get a permalink to a page presenting the image + * @var int + * @access private */ - function get_permalink() + var $maxHeight; + /** + * Image for Watermark + * + * @var string + * + */ + var $watermarkImgPath; + /** + * Text for Watermark + * + * @var string + * + */ + var $watermarkText; + /** + * Image Resource ID for Watermark + * + * @var string + * + */ + function __construct($fileName, $no_ErrorImage = false) { - return $this->__get('permalink'); + //make sure the GD library is installed + if (!function_exists("gd_info")) { + echo 'You do not have the GD Library installed. This class requires the GD library to function properly.' . "\n"; + echo 'visit http://us2.php.net/manual/en/ref.image.php for more information'; + throw new E_No_Image_Library_Exception(); + } + //initialize variables + $this->errmsg = ''; + $this->error = false; + $this->currentDimensions = array(); + $this->newDimensions = array(); + $this->fileName = $fileName; + $this->percent = 100; + $this->maxWidth = 0; + $this->maxHeight = 0; + $this->watermarkImgPath = ''; + $this->watermarkText = ''; + //check to see if file exists + if (!@file_exists($this->fileName)) { + $this->errmsg = 'File not found'; + $this->error = true; + } elseif (!is_readable($this->fileName)) { + $this->errmsg = 'File is not readable'; + $this->error = true; + } + $image_size = null; + //if there are no errors, determine the file format + if ($this->error == false) { + // set_time_limit(30); + @ini_set('memory_limit', -1); + $image_size = @getimagesize($this->fileName); + if (isset($image_size) && is_array($image_size)) { + $extensions = array('1' => 'GIF', '2' => 'JPG', '3' => 'PNG'); + $extension = array_key_exists($image_size[2], $extensions) ? $extensions[$image_size[2]] : ''; + if ($extension) { + $this->format = $extension; + } else { + $this->errmsg = 'Unknown file format'; + $this->error = true; + } + } else { + $this->errmsg = 'File is not an image'; + $this->error = true; + } + } + // increase memory-limit if possible, GD needs this for large images + if (!extension_loaded('suhosin')) { + @ini_set('memory_limit', '512M'); + } + if ($this->error == false) { + // Check memory consumption if file exists + $this->checkMemoryForImage($this->fileName); + } + //initialize resources if no errors + if ($this->error == false) { + $img_err = null; + switch ($this->format) { + case 'GIF': + if (function_exists('ImageCreateFromGif')) { + $this->oldImage = @ImageCreateFromGif($this->fileName); + } else { + $img_err = __('Support for GIF format is missing.', 'nggallery'); + } + break; + case 'JPG': + if (function_exists('ImageCreateFromJpeg')) { + $this->oldImage = @ImageCreateFromJpeg($this->fileName); + } else { + $img_err = __('Support for JPEG format is missing.', 'nggallery'); + } + break; + case 'PNG': + if (function_exists('ImageCreateFromPng')) { + $this->oldImage = @ImageCreateFromPng($this->fileName); + } else { + $img_err = __('Support for PNG format is missing.', 'nggallery'); + } + break; + } + if (!$this->oldImage) { + if ($img_err == null) { + $img_err = __('Check memory limit', 'nggallery'); + } + $this->errmsg = sprintf(__('Create Image failed. %1$s', 'nggallery'), $img_err); + $this->error = true; + } else { + $this->currentDimensions = array('width' => $image_size[0], 'height' => $image_size[1]); + $this->newImage = $this->oldImage; + } + } + if ($this->error == true) { + if (!$no_ErrorImage) { + $this->showErrorImage(); + } + return; + } } /** - * Returns the _cache array; used by nggImage - * @return array + * Calculate the memory limit + * @param string $filename + * */ - function _get_image() + function checkMemoryForImage($filename) { - return $this->_cache; + $imageInfo = getimagesize($filename); + switch ($this->format) { + case 'GIF': + // measured factor 1 is better + $CHANNEL = 1; + break; + case 'JPG': + $CHANNEL = $imageInfo['channels']; + break; + case 'PNG': + // didn't get the channel for png + $CHANNEL = 3; + break; + } + $bits = !empty($imageInfo['bits']) ? $imageInfo['bits'] : 32; + // imgInfo[bits] is not always available + return $this->checkMemoryForData($imageInfo[0], $imageInfo[1], $CHANNEL, $bits); } -} -class C_Image_Wrapper_Collection implements ArrayAccess -{ - public $container = array(); - public $galleries = array(); - public function offsetExists($offset) + function checkMemoryForData($width, $height, $channels = null, $bits = null) { - return isset($this->container[$offset]); + $imageInfo = getimagesize($this->fileName); + if ($channels == null) { + switch ($this->format) { + case 'GIF': + // measured factor 1 is better + $channels = 1; + break; + case 'JPG': + $channels = $imageInfo['channels']; + break; + case 'PNG': + // didn't get the channel for png + $channels = 3; + break; + } + } + if ($bits == null) { + $bits = !empty($imageInfo['bits']) ? $imageInfo['bits'] : 32; + } + // imgInfo[bits] is not always available + if (function_exists('memory_get_usage') && ini_get('memory_limit')) { + $MB = 1048576; + // number of bytes in 1M + $K64 = 65536; + // number of bytes in 64K + $TWEAKFACTOR = 1.68; + // Or whatever works for you + $memoryNeeded = round((doubleval($width * $height * $bits * $channels) / 8 + $K64) * $TWEAKFACTOR); + $memoryNeeded = memory_get_usage() + $memoryNeeded; + // get memory limit + $memory_limit = ini_get('memory_limit'); + // PHP docs : Note that to have no memory limit, set this directive to -1. + if ($memory_limit == -1) { + return true; + } + // Just check megabyte limits, not higher + if (strtolower(substr($memory_limit, -1)) == 'm') { + if ($memory_limit != '') { + $memory_limit = intval(substr($memory_limit, 0, -1)) * 1024 * 1024; + } + if ($memoryNeeded > $memory_limit) { + $memoryNeeded = round($memoryNeeded / 1024 / 1024, 2); + $this->errmsg = 'Exceed Memory limit. Require : ' . $memoryNeeded . " MByte"; + $this->error = true; + return false; + } + } + } + return true; } - public function offsetGet($offset) + function __destruct() { - return isset($this->container[$offset]) ? $this->container[$offset] : null; + $this->destruct(); } - public function offsetSet($offset, $value) + /** + * Must be called to free up allocated memory after all manipulations are done + * + */ + function destruct() { - if (is_object($value)) { - $value->container = $this; + if (is_resource($this->newImage)) { + @ImageDestroy($this->newImage); } - if (is_null($offset)) { - $this->container[] = $value; - } else { - $this->container[$offset] = $value; + if (is_resource($this->oldImage)) { + @ImageDestroy($this->oldImage); + } + if (is_resource($this->workingImage)) { + @ImageDestroy($this->workingImage); } } - public function offsetUnset($offset) + /** + * Returns the current width of the image + * + * @return int + */ + function getCurrentWidth() { - unset($this->container[$offset]); + return $this->currentDimensions['width']; } /** - * Retrieves and caches an I_Gallery_Mapper instance for this gallery id + * Returns the current height of the image * - * @param int $gallery_id Gallery ID - * @return mixed + * @return int */ - public function get_gallery($gallery_id) + function getCurrentHeight() { - if (!isset($this->galleries[$gallery_id]) || is_null($this->galleries[$gallery_id])) { - $this->galleries[$gallery_id] = C_Gallery_Mapper::get_instance(); - } - return $this->galleries[$gallery_id]; + return $this->currentDimensions['height']; } -} -class C_NextGen_Data_Installer extends C_NggLegacy_Installer -{ - function get_registry() + /** + * Calculates new image width + * + * @param int $width + * @param int $height + * @return array + */ + function calcWidth($width, $height) { - return C_Component_Registry::get_instance(); + $newWp = 100 * $this->maxWidth / $width; + $newHeight = $height * $newWp / 100; + if (intval($newHeight) == $this->maxHeight - 1) { + $newHeight = $this->maxHeight; + } + return array('newWidth' => intval($this->maxWidth), 'newHeight' => intval($newHeight)); } - function install() + /** + * Calculates new image height + * + * @param int $width + * @param int $height + * @return array + */ + function calcHeight($width, $height) { - $this->remove_table_extra_options(); + $newHp = 100 * $this->maxHeight / $height; + $newWidth = $width * $newHp / 100; + if (intval($newWidth) == $this->maxWidth - 1) { + $newWidth = $this->maxWidth; + } + return array('newWidth' => intval($newWidth), 'newHeight' => intval($this->maxHeight)); } - function remove_table_extra_options() + /** + * Calculates new image size based on percentage + * + * @param int $width + * @param int $height + * @return array + */ + function calcPercent($width, $height, $percent = -1) { - global $wpdb; - $likes = array("option_name LIKE '%ngg_gallery%'", "option_name LIKE '%ngg_pictures%'", "option_name LIKE '%ngg_album%'"); - $sql = "DELETE FROM {$wpdb->options} WHERE " . implode(" OR ", $likes); - $wpdb->query($sql); + if ($percent == -1) { + $percent = $this->percent; + } + $newWidth = $width * $percent / 100; + $newHeight = $height * $percent / 100; + return array('newWidth' => intval($newWidth), 'newHeight' => intval($newHeight)); } - function uninstall($hard = FALSE) + /** + * Calculates new image size based on width and height, while constraining to maxWidth and maxHeight + * + * @param int $width + * @param int $height + */ + function calcImageSize($width, $height) { - if ($hard) { - /* Yes: this is commented twice. - // TODO for now never delete galleries/albums/content - # $mappers = array( - # $this->get_registry()->get_utility('I_Album_Mapper'), - # $this->get_registry()->get_utility('I_Gallery_Mapper'), - # $this->get_registry()->get_utility('I_Image_Mapper'), - # ); - - # foreach ($mappers as $mapper) { - # $mapper->delete()->run_query(); - # } - - # // Remove ngg tags - # global $wpdb; - # $wpdb->query("DELETE FROM {$wpdb->terms} WHERE term_id IN (SELECT term_id FROM {$wpdb->term_taxonomy} WHERE taxonomy='ngg_tag')"); - # $wpdb->query("DELETE FROM {$wpdb->term_taxonomy} WHERE taxonomy='ngg_tag'"); - */ + // $width and $height are the CURRENT image resolutions + $ratio_w = $this->maxWidth / $width; + $ratio_h = $this->maxHeight / $height; + if ($ratio_w >= $ratio_h) { + $width = $this->maxWidth; + $height = (int) round($height * $ratio_h, 0); + } else { + $height = $this->maxHeight; + $width = (int) round($width * $ratio_w, 0); } + $this->newDimensions = array('newWidth' => $width, 'newHeight' => $height); } -} -class C_NextGen_Metadata extends C_Component -{ - // Image data - public $image = ''; - // The image object - public $file_path = ''; - // Path to the image file - public $size = FALSE; - // The image size - public $exif_data = FALSE; - // EXIF data array - public $iptc_data = FALSE; - // IPTC data array - public $xmp_data = FALSE; - // XMP data array - // Filtered Data - public $exif_array = FALSE; - // EXIF data array - public $iptc_array = FALSE; - // IPTC data array - public $xmp_array = FALSE; - // XMP data array - public $sanitize = FALSE; - // sanitize meta data on request /** - * Class constructor - * - * @param int $image Image ID - * @param bool $onlyEXIF TRUE = will parse only EXIF data - * @return bool FALSE if the file does not exist or metadat could not be read + * Calculates new image size based percentage + * + * @param int $width + * @param int $height */ - public function __construct($image, $onlyEXIF = FALSE) + function calcImageSizePercent($width, $height) { - if (is_numeric($image)) { - $image = C_Image_Mapper::get_instance()->find($image); + if ($this->percent > 0) { + $this->newDimensions = $this->calcPercent($width, $height); } - $this->image = apply_filters('ngg_find_image_meta', $image); - $this->file_path = C_Gallery_Storage::get_instance()->get_image_abspath($this->image); - if (!@file_exists($this->file_path)) { - return FALSE; + } + /** + * Displays error image + * + */ + function showErrorImage() + { + header('Content-type: image/png'); + $errImg = ImageCreate(220, 25); + $bgColor = imagecolorallocate($errImg, 0, 0, 0); + $fgColor1 = imagecolorallocate($errImg, 255, 255, 255); + $fgColor2 = imagecolorallocate($errImg, 255, 0, 0); + imagestring($errImg, 3, 6, 6, 'Error:', $fgColor2); + imagestring($errImg, 3, 55, 6, $this->errmsg, $fgColor1); + imagepng($errImg); + imagedestroy($errImg); + } + /** + * Resizes image to fixed Width x Height + * + * @param int $Width + * @param int $Height + * @param int $deprecated Unused + */ + function resizeFix($Width = 0, $Height = 0, $deprecated = 3) + { + if (!$this->checkMemoryForData($Width, $Height)) { + return; } - $this->size = @getimagesize($this->file_path, $metadata); - if ($this->size && is_array($metadata)) { - // get exif - data - if (is_callable('exif_read_data')) { - $this->exif_data = @exif_read_data($this->file_path, NULL, TRUE); - } - // stop here if we didn't need other meta data - if ($onlyEXIF) { - return TRUE; - } - // get the iptc data - should be in APP13 - if (is_callable('iptcparse') && isset($metadata['APP13'])) { - $this->iptc_data = @iptcparse($metadata['APP13']); - } - // get the xmp data in a XML format - if (is_callable('xml_parser_create')) { - $this->xmp_data = $this->extract_XMP($this->file_path); - } - return TRUE; + $this->newWidth = $Width; + $this->newHeight = $Height; + if (function_exists("ImageCreateTrueColor")) { + $this->workingImage = ImageCreateTrueColor($this->newWidth, $this->newHeight); + } else { + $this->workingImage = ImageCreate($this->newWidth, $this->newHeight); } - return FALSE; + // ImageCopyResampled( + $this->imagecopyresampled($this->workingImage, $this->oldImage, 0, 0, 0, 0, $this->newWidth, $this->newHeight, $this->currentDimensions['width'], $this->currentDimensions['height']); + $this->oldImage = $this->workingImage; + $this->newImage = $this->workingImage; + $this->currentDimensions['width'] = $this->newWidth; + $this->currentDimensions['height'] = $this->newHeight; } /** - * return the saved meta data from the database + * Resizes image to maxWidth x maxHeight * - * @since 1.4.0 - * @param string $object (optional) - * @return array|mixed return either the complete array or the single object + * @param int $maxWidth + * @param int $maxHeight + * @param int $deprecated Unused */ - function get_saved_meta($object = false) + function resize($maxWidth = 0, $maxHeight = 0, $deprecated = 3) { - $meta = $this->image->meta_data; - // Check if we already import the meta data to the database - if (!is_array($meta) || !isset($meta['saved']) || $meta['saved'] !== TRUE) { - return false; - } - // return one element if requested - if ($object) { - return $meta[$object]; + if (!$this->checkMemoryForData($maxWidth, $maxHeight)) { + return; } - //removed saved parameter we don't need that to show - unset($meta['saved']); - // and remove empty tags or arrays - foreach ($meta as $key => $value) { - if (empty($value) or is_array($value)) { - unset($meta[$key]); - } + $this->maxWidth = $maxWidth; + $this->maxHeight = $maxHeight; + $this->calcImageSize($this->currentDimensions['width'], $this->currentDimensions['height']); + if ($this->workingImage != null && $this->workingImage != $this->oldImage) { + ImageDestroy($this->workingImage); + $this->workingImage = null; } - // on request sanitize the output - if ($this->sanitize == true) { - array_walk($meta, 'esc_html'); + if (function_exists("ImageCreateTrueColor")) { + $this->workingImage = ImageCreateTrueColor($this->newDimensions['newWidth'], $this->newDimensions['newHeight']); + } else { + $this->workingImage = ImageCreate($this->newDimensions['newWidth'], $this->newDimensions['newHeight']); } - return $meta; + // ImageCopyResampled( + $this->imagecopyresampled($this->workingImage, $this->oldImage, 0, 0, 0, 0, $this->newDimensions['newWidth'], $this->newDimensions['newHeight'], $this->currentDimensions['width'], $this->currentDimensions['height']); + ImageDestroy($this->oldImage); + $this->oldImage = $this->workingImage; + $this->newImage = $this->workingImage; + $this->currentDimensions['width'] = $this->newDimensions['newWidth']; + $this->currentDimensions['height'] = $this->newDimensions['newHeight']; } /** - * nggMeta::get_EXIF() - * See also http://trac.wordpress.org/changeset/6313 + * Resizes the image by $percent percent * - * @return bool|array + * @param int $percent */ - function get_EXIF($object = false) + function resizePercent($percent = 0) { - if (!$this->exif_data) { - return false; + $dims = $this->calcPercent($this->currentDimensions['width'], $this->currentDimensions['height'], $percent); + if (!$this->checkMemoryForData($dims['newWidth'], $dims['newHeight'])) { + return; } - if (!is_array($this->exif_array)) { - $meta = array(); - if (isset($this->exif_data['EXIF'])) { - $exif = $this->exif_data['EXIF']; - if (!empty($exif['FNumber'])) { - $meta['aperture'] = 'F ' . round($this->exif_frac2dec($exif['FNumber']), 2); - } - if (!empty($exif['Model'])) { - $meta['camera'] = trim($exif['Model']); - } - if (!empty($exif['DateTimeDigitized'])) { - $meta['created_timestamp'] = $this->exif_date2ts($exif['DateTimeDigitized']); - } else { - if (!empty($exif['DateTimeOriginal'])) { - $meta['created_timestamp'] = $this->exif_date2ts($exif['DateTimeOriginal']); - } else { - if (!empty($exif['FileDateTime'])) { - $meta['created_timestamp'] = $this->exif_date2ts($exif['FileDateTime']); - } - } - } - if (!empty($exif['FocalLength'])) { - $meta['focal_length'] = $this->exif_frac2dec($exif['FocalLength']) . __(' mm', 'nggallery'); - } - if (!empty($exif['ISOSpeedRatings'])) { - $meta['iso'] = $exif['ISOSpeedRatings']; - } - if (!empty($exif['ExposureTime'])) { - $meta['shutter_speed'] = $this->exif_frac2dec($exif['ExposureTime']); - $meta['shutter_speed'] = ($meta['shutter_speed'] > 0.0 and $meta['shutter_speed'] < 1.0) ? '1/' . round(1 / $meta['shutter_speed'], -1) : $meta['shutter_speed']; - $meta['shutter_speed'] .= __(' sec', 'nggallery'); - } - //Bit 0 indicates the flash firing status - if (!empty($exif['Flash'])) { - $meta['flash'] = $exif['Flash'] & 1 ? __('Fired', 'nggallery') : __('Not fired', ' nggallery'); - } - } - // additional information - if (isset($this->exif_data['IFD0'])) { - $exif = $this->exif_data['IFD0']; - if (!empty($exif['Model'])) { - $meta['camera'] = $exif['Model']; - } - if (!empty($exif['Make'])) { - $meta['make'] = $exif['Make']; - } - if (!empty($exif['ImageDescription'])) { - $meta['title'] = $this->utf8_encode($exif['ImageDescription']); - } - if (!empty($exif['Orientation'])) { - $meta['Orientation'] = $exif['Orientation']; - } - } - // this is done by Windows - if (isset($this->exif_data['WINXP'])) { - $exif = $this->exif_data['WINXP']; - if (!empty($exif['Title']) && empty($meta['title'])) { - $meta['title'] = $this->utf8_encode($exif['Title']); - } - if (!empty($exif['Author'])) { - $meta['author'] = $this->utf8_encode($exif['Author']); - } - if (!empty($exif['Keywords'])) { - $meta['keywords'] = $this->utf8_encode($exif['Keywords']); - } - if (!empty($exif['Subject'])) { - $meta['subject'] = $this->utf8_encode($exif['Subject']); - } - if (!empty($exif['Comments'])) { - $meta['caption'] = $this->utf8_encode($exif['Comments']); - } - } - $this->exif_array = $meta; - } - // return one element if requested - if ($object == true) { - $value = isset($this->exif_array[$object]) ? $this->exif_array[$object] : false; - return $value; - } - // on request sanitize the output - if ($this->sanitize == true) { - array_walk($this->exif_array, 'esc_html'); + $this->percent = $percent; + $this->calcImageSizePercent($this->currentDimensions['width'], $this->currentDimensions['height']); + if (function_exists("ImageCreateTrueColor")) { + $this->workingImage = ImageCreateTrueColor($this->newDimensions['newWidth'], $this->newDimensions['newHeight']); + } else { + $this->workingImage = ImageCreate($this->newDimensions['newWidth'], $this->newDimensions['newHeight']); } - return $this->exif_array; + $this->ImageCopyResampled($this->workingImage, $this->oldImage, 0, 0, 0, 0, $this->newDimensions['newWidth'], $this->newDimensions['newHeight'], $this->currentDimensions['width'], $this->currentDimensions['height']); + $this->oldImage = $this->workingImage; + $this->newImage = $this->workingImage; + $this->currentDimensions['width'] = $this->newDimensions['newWidth']; + $this->currentDimensions['height'] = $this->newDimensions['newHeight']; } - // convert a fraction string to a decimal - function exif_frac2dec($str) + /** + * Crops the image from calculated center in a square of $cropSize pixels + * + * @param int $cropSize + */ + function cropFromCenter($cropSize) { - @(list($n, $d) = explode('/', $str)); - if (!empty($d)) { - return $n / $d; + if ($cropSize > $this->currentDimensions['width']) { + $cropSize = $this->currentDimensions['width']; } - return $str; - } - // convert the exif date format to a unix timestamp - function exif_date2ts($str) - { - $retval = is_numeric($str) ? $str : @strtotime($str); - if (!$retval && $str) { - @(list($date, $time) = explode(' ', trim($str))); - @(list($y, $m, $d) = explode(':', $date)); - $retval = strtotime("{$y}-{$m}-{$d} {$time}"); + if ($cropSize > $this->currentDimensions['height']) { + $cropSize = $this->currentDimensions['height']; } - return $retval; + $cropX = intval(($this->currentDimensions['width'] - $cropSize) / 2); + $cropY = intval(($this->currentDimensions['height'] - $cropSize) / 2); + if ($this->workingImage != null && $this->workingImage != $this->oldImage) { + ImageDestroy($this->workingImage); + $this->workingImage = null; + } + if (function_exists("ImageCreateTrueColor")) { + $this->workingImage = ImageCreateTrueColor($cropSize, $cropSize); + } else { + $this->workingImage = ImageCreate($cropSize, $cropSize); + } + $this->imagecopyresampled($this->workingImage, $this->oldImage, 0, 0, $cropX, $cropY, $cropSize, $cropSize, $cropSize, $cropSize); + $this->oldImage = $this->workingImage; + $this->newImage = $this->workingImage; + $this->currentDimensions['width'] = $cropSize; + $this->currentDimensions['height'] = $cropSize; } /** - * nggMeta::readIPTC() - IPTC Data Information for EXIF Display + * Advanced cropping function that crops an image using $startX and $startY as the upper-left hand corner. * - * @param object $object (optional) - * @return null|bool|array + * @param int $startX + * @param int $startY + * @param int $width + * @param int $height */ - function get_IPTC($object = false) + function crop($startX, $startY, $width, $height) { - if (!$this->iptc_data) { - return false; + if (!$this->checkMemoryForData($width, $height)) { + return; } - if (!is_array($this->iptc_array)) { - // --------- Set up Array Functions --------- // - $iptcTags = array("2#005" => 'title', "2#007" => 'status', "2#012" => 'subject', "2#015" => 'category', "2#025" => 'keywords', "2#055" => 'created_date', "2#060" => 'created_time', "2#080" => 'author', "2#085" => 'position', "2#090" => 'city', "2#092" => 'location', "2#095" => 'state', "2#100" => 'country_code', "2#101" => 'country', "2#105" => 'headline', "2#110" => 'credit', "2#115" => 'source', "2#116" => 'copyright', "2#118" => 'contact', "2#120" => 'caption'); - $meta = array(); - foreach ($iptcTags as $key => $value) { - if (isset($this->iptc_data[$key])) { - $meta[$value] = trim($this->utf8_encode(implode(", ", $this->iptc_data[$key]))); - } - } - $this->iptc_array = $meta; + //make sure the cropped area is not greater than the size of the image + if ($width > $this->currentDimensions['width']) { + $width = $this->currentDimensions['width']; } - // return one element if requested - if ($object) { - return isset($this->iptc_array[$object]) ? $this->iptc_array[$object] : NULL; + if ($height > $this->currentDimensions['height']) { + $height = $this->currentDimensions['height']; } - // on request sanitize the output - if ($this->sanitize == true) { - array_walk($this->iptc_array, 'esc_html'); + //make sure not starting outside the image + if ($startX + $width > $this->currentDimensions['width']) { + $startX = $this->currentDimensions['width'] - $width; } - return $this->iptc_array; + if ($startY + $height > $this->currentDimensions['height']) { + $startY = $this->currentDimensions['height'] - $height; + } + if ($startX < 0) { + $startX = 0; + } + if ($startY < 0) { + $startY = 0; + } + if ($this->workingImage != null && $this->workingImage != $this->oldImage) { + ImageDestroy($this->workingImage); + $this->workingImage = null; + } + if (function_exists("ImageCreateTrueColor")) { + $this->workingImage = ImageCreateTrueColor($width, $height); + } else { + $this->workingImage = ImageCreate($width, $height); + } + $this->imagecopyresampled($this->workingImage, $this->oldImage, 0, 0, $startX, $startY, $width, $height, $width, $height); + ImageDestroy($this->oldImage); + $this->oldImage = $this->workingImage; + $this->newImage = $this->workingImage; + $this->currentDimensions['width'] = $width; + $this->currentDimensions['height'] = $height; } /** - * nggMeta::extract_XMP() - * get XMP DATA - * code by Pekka Saarinen http://photography-on-the.net + * Outputs the image to the screen, or saves to $name if supplied. Quality of JPEG images can be controlled with the $quality variable * - * @param mixed $filename - * @return bool|string + * @param int $quality + * @param string $name */ - function extract_XMP($filename) + function show($quality = 100, $name = '') { - //TODO:Require a lot of memory, could be better - ob_start(); - @readfile($filename); - $source = ob_get_contents(); - ob_end_clean(); - $start = strpos($source, "<x:xmpmeta"); - $end = strpos($source, "</x:xmpmeta>"); - if (!$start === false && !$end === false) { - $lenght = $end - $start; - $xmp_data = substr($source, $start, $lenght + 12); - unset($source); - return $xmp_data; + switch ($this->format) { + case 'GIF': + if ($name != '') { + @ImageGif($this->newImage, $name) or $this->error = true; + } else { + header('Content-type: image/gif'); + ImageGif($this->newImage); + } + break; + case 'JPG': + if ($name != '') { + @ImageJpeg($this->newImage, $name, $quality) or $this->error = true; + } else { + header('Content-type: image/jpeg'); + ImageJpeg($this->newImage, NULL, $quality); + } + break; + case 'PNG': + if ($name != '') { + @ImagePng($this->newImage, $name) or $this->error = true; + } else { + header('Content-type: image/png'); + ImagePng($this->newImage); + } + break; } - unset($source); - return false; } /** - * nggMeta::get_XMP() - * - * @package Taken from http://php.net/manual/en/function.xml-parse-into-struct.php - * @author Alf Marius Foss Olsen & Alex Rabe - * @return bool|array + * Saves image as $name (can include file path), with quality of # percent if file is a jpeg * + * @param string $name + * @param int $quality + * @return bool errorstate */ - function get_XMP($object = false) + function save($name, $quality = 100) { - if (!$this->xmp_data) { - return false; - } - if (!is_array($this->xmp_array)) { - $parser = xml_parser_create(); - xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); - // Dont mess with my cAsE sEtTings - xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); - // Dont bother with empty info - xml_parse_into_struct($parser, $this->xmp_data, $values); - xml_parser_free($parser); - $xmlarray = array(); - // The XML array - $this->xmp_array = array(); - // The returned array - $stack = array(); - // tmp array used for stacking - $list_array = array(); - // tmp array for list elements - $list_element = false; - // rdf:li indicator - foreach ($values as $val) { - if ($val['type'] == "open") { - array_push($stack, $val['tag']); - } elseif ($val['type'] == "close") { - // reset the compared stack - if ($list_element == false) { - array_pop($stack); - } - // reset the rdf:li indicator & array - $list_element = false; - $list_array = array(); - } elseif ($val['type'] == "complete") { - if ($val['tag'] == "rdf:li") { - // first go one element back - if ($list_element == false) { - array_pop($stack); - } - $list_element = true; - // do not parse empty tags - if (empty($val['value'])) { - continue; - } - // save it in our temp array - $list_array[] = $val['value']; - // in the case it's a list element we seralize it - $value = implode(",", $list_array); - $this->setArrayValue($xmlarray, $stack, $value); - } else { - array_push($stack, $val['tag']); - // do not parse empty tags - if (!empty($val['value'])) { - $this->setArrayValue($xmlarray, $stack, $val['value']); - } - array_pop($stack); - } - } - } - // foreach - // don't parse a empty array - if (empty($xmlarray) || empty($xmlarray['x:xmpmeta'])) { - return false; - } - // cut off the useless tags - $xmlarray = $xmlarray['x:xmpmeta']['rdf:RDF']['rdf:Description']; - // --------- Some values from the XMP format--------- // - $xmpTags = array('xap:CreateDate' => 'created_timestamp', 'xap:ModifyDate' => 'last_modfied', 'xap:CreatorTool' => 'tool', 'dc:format' => 'format', 'dc:title' => 'title', 'dc:creator' => 'author', 'dc:subject' => 'keywords', 'dc:description' => 'caption', 'photoshop:AuthorsPosition' => 'position', 'photoshop:City' => 'city', 'photoshop:Country' => 'country'); - foreach ($xmpTags as $key => $value) { - // if the kex exist - if (isset($xmlarray[$key])) { - switch ($key) { - case 'xap:CreateDate': - case 'xap:ModifyDate': - $this->xmp_array[$value] = strtotime($xmlarray[$key]); - break; - default: - $this->xmp_array[$value] = $xmlarray[$key]; - } - } - } - } - // return one element if requested - if ($object != false) { - return isset($this->xmp_array[$object]) ? $this->xmp_array[$object] : false; - } - // on request sanitize the output - if ($this->sanitize == true) { - array_walk($this->xmp_array, 'esc_html'); - } - return $this->xmp_array; - } - function setArrayValue(&$array, $stack, $value) - { - if ($stack) { - $key = array_shift($stack); - $this->setArrayValue($array[$key], $stack, $value); - return $array; - } else { - $array = $value; - } - return $array; - } - /** - * nggMeta::get_META() - return a meta value form the available list - * - * @param string $object - * @return mixed $value - */ - function get_META($object = false) - { - // defined order first look into database, then XMP, IPTC and EXIF. - if ($value = $this->get_saved_meta($object)) { - return $value; - } - if ($value = $this->get_XMP($object)) { - return $value; - } - if ($object == 'created_timestamp' && ($d = $this->get_IPTC('created_date')) && ($t = $this->get_IPTC('created_time'))) { - return $this->exif_date2ts($d . ' ' . $t); - } - if ($value = $this->get_IPTC($object)) { - return $value; + $this->show($quality, $name); + if ($this->error == true) { + $this->errmsg = 'Create Image failed. Check safe mode settings'; + return false; } - if ($value = $this->get_EXIF($object)) { - return $value; + if (function_exists('do_action')) { + do_action('ngg_ajax_image_save', $name); } - // nothing found ? - return false; + return true; } /** - * nggMeta::i8n_name() - localize the tag name + * Creates Apple-style reflection under image, optionally adding a border to main image * - * @param mixed $key - * @return string Translated $key - */ - function i18n_name($key) - { - $tagnames = array('aperture' => __('Aperture', 'nggallery'), 'credit' => __('Credit', 'nggallery'), 'camera' => __('Camera', 'nggallery'), 'caption' => __('Caption', 'nggallery'), 'created_timestamp' => __('Date/Time', 'nggallery'), 'copyright' => __('Copyright', 'nggallery'), 'focal_length' => __('Focal length', 'nggallery'), 'iso' => __('ISO', 'nggallery'), 'shutter_speed' => __('Shutter speed', 'nggallery'), 'title' => __('Title', 'nggallery'), 'author' => __('Author', 'nggallery'), 'tags' => __('Tags', 'nggallery'), 'subject' => __('Subject', 'nggallery'), 'make' => __('Make', 'nggallery'), 'status' => __('Edit Status', 'nggallery'), 'category' => __('Category', 'nggallery'), 'keywords' => __('Keywords', 'nggallery'), 'created_date' => __('Date Created', 'nggallery'), 'created_time' => __('Time Created', 'nggallery'), 'position' => __('Author Position', 'nggallery'), 'city' => __('City', 'nggallery'), 'location' => __('Location', 'nggallery'), 'state' => __('Province/State', 'nggallery'), 'country_code' => __('Country code', 'nggallery'), 'country' => __('Country', 'nggallery'), 'headline' => __('Headline', 'nggallery'), 'credit' => __('Credit', 'nggallery'), 'source' => __('Source', 'nggallery'), 'copyright' => __('Copyright Notice', 'nggallery'), 'contact' => __('Contact', 'nggallery'), 'last_modfied' => __('Last modified', 'nggallery'), 'tool' => __('Program tool', 'nggallery'), 'format' => __('Format', 'nggallery'), 'width' => __('Image Width', 'nggallery'), 'height' => __('Image Height', 'nggallery'), 'flash' => __('Flash', 'nggallery')); - if (isset($tagnames[$key])) { - $key = $tagnames[$key]; - } - return $key; - } - /** - * Return the Timestamp from the image , if possible it's read from exif data - * @return string + * @param int $percent + * @param int $reflection + * @param int $white + * @param bool $border + * @param string $borderColor */ - function get_date_time() + function createReflection($percent, $reflection, $white, $border = true, $borderColor = '#a4a4a4') { - $date = time(); - // Try getting the created_timestamp field - $date = $this->exif_date2ts($this->get_META('created_timestamp')); - if (!$date) { - $image_path = C_Gallery_Storage::get_instance()->get_backup_abspath($this->image); - $date = @filectime($image_path); + $width = $this->currentDimensions['width']; + $height = $this->currentDimensions['height']; + $reflectionHeight = intval($height * ($reflection / 100)); + $newHeight = $height + $reflectionHeight; + $reflectedPart = $height * ($percent / 100); + $this->workingImage = ImageCreateTrueColor($width, $newHeight); + ImageAlphaBlending($this->workingImage, true); + $colorToPaint = ImageColorAllocateAlpha($this->workingImage, 255, 255, 255, 0); + ImageFilledRectangle($this->workingImage, 0, 0, $width, $newHeight, $colorToPaint); + imagecopyresampled($this->workingImage, $this->newImage, 0, 0, 0, $reflectedPart, $width, $reflectionHeight, $width, $height - $reflectedPart); + $this->imageFlipVertical(); + imagecopy($this->workingImage, $this->newImage, 0, 0, 0, 0, $width, $height); + imagealphablending($this->workingImage, true); + for ($i = 0; $i < $reflectionHeight; $i++) { + $colorToPaint = imagecolorallocatealpha($this->workingImage, 255, 255, 255, ($i / $reflectionHeight * -1 + 1) * $white); + imagefilledrectangle($this->workingImage, 0, $height + $i, $width, $height + $i, $colorToPaint); } - // Failback - if (!$date) { - $date = time(); + if ($border == true) { + $rgb = $this->hex2rgb($borderColor, false); + $colorToPaint = imagecolorallocate($this->workingImage, $rgb[0], $rgb[1], $rgb[2]); + imageline($this->workingImage, 0, 0, $width, 0, $colorToPaint); + //top line + imageline($this->workingImage, 0, $height, $width, $height, $colorToPaint); + //bottom line + imageline($this->workingImage, 0, 0, 0, $height, $colorToPaint); + //left line + imageline($this->workingImage, $width - 1, 0, $width - 1, $height, $colorToPaint); + //right line } - // Return the MySQL format - $date_time = date('Y-m-d H:i:s', $date); - return $date_time; + $this->oldImage = $this->workingImage; + $this->newImage = $this->workingImage; + $this->currentDimensions['width'] = $width; + $this->currentDimensions['height'] = $newHeight; } /** - * This function return the most common metadata, via a filter we can add more - * Reason : GD manipulation removes that options + * Flip an image. * - * @since V1.4.0 - * @return array|false + * @param bool $horz flip the image in horizontal mode + * @param bool $vert flip the image in vertical mode + * @return true */ - function get_common_meta() + function flipImage($horz = false, $vert = false) { - global $wpdb; - $meta = array('aperture' => 0, 'credit' => '', 'camera' => '', 'caption' => '', 'created_timestamp' => 0, 'copyright' => '', 'focal_length' => 0, 'iso' => 0, 'shutter_speed' => 0, 'flash' => 0, 'title' => '', 'keywords' => ''); - $meta = apply_filters('ngg_read_image_metadata', $meta); - // meta should be still an array - if (!is_array($meta)) { - return false; - } - foreach ($meta as $key => $value) { - $meta[$key] = $this->get_META($key); - } - //let's add now the size of the image - $meta['width'] = $this->size[0]; - $meta['height'] = $this->size[1]; - return $meta; + $sx = $vert ? $this->currentDimensions['width'] - 1 : 0; + $sy = $horz ? $this->currentDimensions['height'] - 1 : 0; + $sw = $vert ? -$this->currentDimensions['width'] : $this->currentDimensions['width']; + $sh = $horz ? -$this->currentDimensions['height'] : $this->currentDimensions['height']; + $this->workingImage = imagecreatetruecolor($this->currentDimensions['width'], $this->currentDimensions['height']); + $this->imagecopyresampled($this->workingImage, $this->oldImage, 0, 0, $sx, $sy, $this->currentDimensions['width'], $this->currentDimensions['height'], $sw, $sh); + $this->oldImage = $this->workingImage; + $this->newImage = $this->workingImage; + return true; } /** - * If needed sanitize each value before output + * Rotate an image clockwise or counter clockwise * - * @return void + * @param string $dir Either CW or CCW + * @return bool */ - function sanitize() + function rotateImage($dir = 'CW') { - $this->sanitize = true; + $angle = $dir == 'CW' ? 90 : -90; + return $this->rotateImageAngle($angle); } /** - * Wrapper to utf8_encode() that avoids double encoding - * - * Regex adapted from http://www.w3.org/International/questions/qa-forms-utf-8.en.php - * to determine if the given string is already UTF-8. mb_detect_encoding() is not - * always available and is limited in accuracy + * Rotate an image clockwise or counter clockwise * - * @param string $str - * @return string + * @param int $angle Degrees to rotate the target image + * @return bool */ - function utf8_encode($str) + function rotateImageAngle($angle = 90) { - $is_utf8 = preg_match('%^(?: - [\\x09\\x0A\\x0D\\x20-\\x7E] # ASCII - | [\\xC2-\\xDF][\\x80-\\xBF] # non-overlong 2-byte - | \\xE0[\\xA0-\\xBF][\\x80-\\xBF] # excluding overlongs - | [\\xE1-\\xEC\\xEE\\xEF][\\x80-\\xBF]{2} # straight 3-byte - | \\xED[\\x80-\\x9F][\\x80-\\xBF] # excluding surrogates - | \\xF0[\\x90-\\xBF][\\x80-\\xBF]{2} # planes 1-3 - | [\\xF1-\\xF3][\\x80-\\xBF]{3} # planes 4-15 - | \\xF4[\\x80-\\x8F][\\x80-\\xBF]{2} # plane 16 - )*$%xs', $str); - if (!$is_utf8) { - utf8_encode($str); + if (function_exists('imagerotate')) { + $this->workingImage = imagerotate($this->oldImage, 360 - $angle, 0); + // imagerotate() rotates CCW + $this->currentDimensions['width'] = imagesx($this->workingImage); + $this->currentDimensions['height'] = imagesy($this->workingImage); + $this->oldImage = $this->workingImage; + $this->newImage = $this->workingImage; + return true; } - return $str; - } -} -class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin -{ - /** - * Returns the named sizes available for images - * @return array - */ - function get_image_sizes() - { - return array('full', 'thumbnail'); + $this->workingImage = imagecreatetruecolor($this->currentDimensions['height'], $this->currentDimensions['width']); + imagealphablending($this->workingImage, false); + imagesavealpha($this->workingImage, true); + switch ($angle) { + case 90: + for ($x = 0; $x < $this->currentDimensions['width']; $x++) { + for ($y = 0; $y < $this->currentDimensions['height']; $y++) { + if (!imagecopy($this->workingImage, $this->oldImage, $this->currentDimensions['height'] - $y - 1, $x, $x, $y, 1, 1)) { + return false; + } + } + } + break; + case -90: + for ($x = 0; $x < $this->currentDimensions['width']; $x++) { + for ($y = 0; $y < $this->currentDimensions['height']; $y++) { + if (!imagecopy($this->workingImage, $this->oldImage, $y, $this->currentDimensions['width'] - $x - 1, $x, $y, 1, 1)) { + return false; + } + } + } + break; + default: + return false; + } + $this->currentDimensions['width'] = imagesx($this->workingImage); + $this->currentDimensions['height'] = imagesy($this->workingImage); + $this->oldImage = $this->workingImage; + $this->newImage = $this->workingImage; + return true; } /** - * @param object|bool $gallery (optional) - * @return string + * Inverts working image, used by reflection function + * + * @access private */ - function get_upload_abspath($gallery = FALSE) + function imageFlipVertical() { - // Base upload path - $retval = C_NextGen_Settings::get_instance()->gallerypath; - $fs = C_Fs::get_instance(); - // If a gallery has been specified, then we'll - // append the slug - if ($gallery) { - $retval = $this->get_gallery_abspath($gallery); - } - // We need to make this an absolute path - if (strpos($retval, $fs->get_document_root('gallery')) !== 0) { - $retval = rtrim($fs->join_paths($fs->get_document_root('gallery'), $retval), "/\\"); + $x_i = imagesx($this->workingImage); + $y_i = imagesy($this->workingImage); + for ($x = 0; $x < $x_i; $x++) { + for ($y = 0; $y < $y_i; $y++) { + imagecopy($this->workingImage, $this->workingImage, $x, $y_i - $y - 1, $x, $y, 1, 1); + } } - // Convert slashes - return $this->object->convert_slashes($retval); } /** - * Get the gallery path persisted in the database for the gallery - * @param int|object|C_Gallery $gallery - * @return string + * Converts hexidecimal color value to rgb values and returns as array/string + * + * @param string $hex + * @param bool $asString + * @return array|string */ - function get_gallery_abspath($gallery) + function hex2rgb($hex, $asString = false) { - $retval = NULL; - $fs = C_Fs::get_instance(); - // Get the gallery entity from the database - if ($gallery) { - if (is_numeric($gallery)) { - $gallery = $this->object->_gallery_mapper->find($gallery); + // strip off any leading # + if (0 === strpos($hex, '#')) { + $hex = substr($hex, 1); + } else { + if (0 === strpos($hex, '&H')) { + $hex = substr($hex, 2); } } - // It just doesn't exist - if (!$gallery || is_numeric($gallery)) { - return $retval; - } - // We we have a gallery, determine it's path - if ($gallery) { - if (isset($gallery->path)) { - $retval = $gallery->path; - } elseif (isset($gallery->slug)) { - $fs = C_Fs::get_instance(); - $basepath = C_NextGen_Settings::get_instance()->gallerypath; - $retval = $fs->join_paths($basepath, sanitize_file_name(sanitize_title($gallery->slug))); - } - } - $root_type = defined('NGG_GALLERY_ROOT_TYPE') ? NGG_GALLERY_ROOT_TYPE : 'site'; - if ($root_type == 'content') { - // This requires explanation: in case our content root ends with the same directory name - // that the gallery path begins with we remove the duplicate name from $retval. This is - // necessary because the default WP_CONTENT_DIR setting ends in /wp-content/ and - // NextGEN's default gallery path begins with /wp-content/. This also allows gallery - // paths to also be expressed as simply "/gallery-name/" - $exploded_root = explode(DIRECTORY_SEPARATOR, trim($fs->get_document_root('content'), '/\\')); - $exploded_gallery = explode(DIRECTORY_SEPARATOR, trim($retval, '/\\')); - $exploded_gallery = array_values($exploded_gallery); - $last_gallery_dirname = $exploded_gallery[0]; - $last_root_dirname = end($exploded_root); - if ($last_root_dirname === $last_gallery_dirname) { - unset($exploded_gallery[0]); - $retval = implode(DIRECTORY_SEPARATOR, $exploded_gallery); - } - } - // Ensure that the path is absolute - if (strpos($retval, $fs->get_document_root('gallery')) !== 0) { - $retval = rtrim($fs->join_paths($fs->get_document_root('gallery'), $retval), "/\\"); - } - return $this->object->convert_slashes(rtrim($retval, "/\\")); + // break into hex 3-tuple + $cutpoint = ceil(strlen($hex) / 2) - 1; + $rgb = explode(':', wordwrap($hex, $cutpoint, ':', $cutpoint), 3); + // convert each tuple to decimal + $rgb[0] = isset($rgb[0]) ? hexdec($rgb[0]) : 0; + $rgb[1] = isset($rgb[1]) ? hexdec($rgb[1]) : 0; + $rgb[2] = isset($rgb[2]) ? hexdec($rgb[2]) : 0; + return $asString ? "{$rgb[0]} {$rgb[1]} {$rgb[2]}" : $rgb; } /** - * Gets the absolute path where the image is stored. Can optionally return the path for a particular sized image. - * @param int|object $image - * @param string $size (optional) Default = full - * @param bool $check_existance (optional) Default = false - * @return string + * Based on the Watermark function by Marek Malcherek + * http://www.malcherek.de + * + * @param string $color + * @param string $wmFont + * @param int $wmSize + * @param int $wmOpaque */ - function get_image_abspath($image, $size = 'full', $check_existance = FALSE) + function watermarkCreateText($color = '000000', $wmFont, $wmSize = 10, $wmOpaque = 90) { - $retval = NULL; - $fs = C_Fs::get_instance(); - // Ensure that we have a size - if (!$size) { - $size = 'full'; + // set font path + $wmFontPath = NGGALLERY_ABSPATH . "fonts/" . $wmFont; + if (!is_readable($wmFontPath)) { + return; } - // If we have the id, get the actual image entity - if (is_numeric($image)) { - $image = $this->object->_image_mapper->find($image); + // This function requires both the GD library and the FreeType library. + if (!function_exists('ImageTTFBBox')) { + return; } - // Ensure we have the image entity - user could have passed in an - // incorrect id - if (is_object($image)) { - if ($gallery_path = $this->object->get_gallery_abspath($image->galleryid)) { - $folder = $prefix = $size; - switch ($size) { - # Images are stored in the associated gallery folder - case 'full': - case 'original': - case 'image': - $retval = $fs->join_paths($gallery_path, $image->filename); - break; - case 'backup': - $retval = $fs->join_paths($gallery_path, $image->filename . '_backup'); - if ($check_existance && !@file_exists($retval)) { - $retval = $fs->join_paths($gallery_path, $image->filename); - } - break; - case 'thumbnails': - case 'thumbnail': - case 'thumb': - case 'thumbs': - $size = 'thumbnail'; - $folder = 'thumbs'; - $prefix = 'thumbs'; - // deliberately no break here - // We assume any other size of image is stored in the a - //subdirectory of the same name within the gallery folder - // gallery folder, but with the size appended to the filename - // deliberately no break here - // We assume any other size of image is stored in the a - //subdirectory of the same name within the gallery folder - // gallery folder, but with the size appended to the filename - default: - $image_path = $fs->join_paths($gallery_path, $folder); - // NGG 2.0 stores relative filenames in the meta data of - // an image. It does this because it uses filenames - // that follow conventional WordPress naming scheme. - if (isset($image->meta_data) && isset($image->meta_data[$size]) && isset($image->meta_data[$size]['filename'])) { - $image_path = $fs->join_paths($image_path, $image->meta_data[$size]['filename']); - } else { - $image_path = $fs->join_paths($image_path, "{$prefix}_{$image->filename}"); - } - $retval = $image_path; - break; + $words = preg_split('/ /', $this->watermarkText); + $lines = array(); + $line = ''; + $watermark_image_width = 0; + // attempt adding a new word until the width is too large; then start a new line and start again + foreach ($words as $word) { + // sanitize the text being input; imagettftext() can be sensitive + $TextSize = $this->ImageTTFBBoxDimensions($wmSize, 0, $this->correct_gd_unc_path($wmFontPath), $line . preg_replace('~^(&([a-zA-Z0-9]);)~', htmlentities('${1}'), mb_convert_encoding($word, "HTML-ENTITIES", "UTF-8"))); + if ($watermark_image_width == 0) { + $watermark_image_width = $TextSize['width']; + } + if ($TextSize['width'] > $this->newDimensions['newWidth']) { + $lines[] = trim($line); + $line = ''; + } else { + if ($TextSize['width'] > $watermark_image_width) { + $watermark_image_width = $TextSize['width']; } } + $line .= $word . ' '; } - // Check the existance of the file - if ($retval && $check_existance) { - if (!@file_exists($retval)) { - $retval = NULL; - } + $lines[] = trim($line); + // use this string to determine our largest possible line height + $line_dimensions = $this->ImageTTFBBoxDimensions($wmSize, 0, $this->correct_gd_unc_path($wmFontPath), 'MXQJALYmxqjabdfghjklpqry019`@$^&*(,!132'); + $line_height = $line_dimensions['height'] * 1.05; + // Create an image to apply our text to + $this->workingImage = ImageCreateTrueColor($watermark_image_width, count($lines) * $line_height); + ImageSaveAlpha($this->workingImage, true); + ImageAlphaBlending($this->workingImage, false); + $bgText = imagecolorallocatealpha($this->workingImage, 255, 255, 255, 127); + imagefill($this->workingImage, 0, 0, $bgText); + $wmTransp = 127 - $wmOpaque * 1.27; + $rgb = $this->hex2rgb($color, false); + $TextColor = imagecolorallocatealpha($this->workingImage, $rgb[0], $rgb[1], $rgb[2], $wmTransp); + // Put text on the image, line-by-line + $y_pos = $wmSize; + foreach ($lines as $line) { + imagettftext($this->workingImage, $wmSize, 0, 0, $y_pos, $TextColor, $this->correct_gd_unc_path($wmFontPath), $line); + $y_pos += $line_height; } - return $retval ? rtrim($retval, "/\\") : $retval; + $this->watermarkImgPath = $this->workingImage; + return; } /** - * Gets the url of a particular-sized image - * @param int|object $image - * @param string $size - * @return string + * Returns a path that can be used with imagettftext() and ImageTTFBBox() + * + * imagettftext() and ImageTTFBBox() cannot load resources from Windows UNC paths + * and require they be mangled to be like //server\filename instead of \\server\filename + * @param string $path Absolute file path + * @return string $path Mangled absolute file path */ - function get_image_url($image, $size = 'full', $check_existance = FALSE, $image_abspath = FALSE) + public function correct_gd_unc_path($path) { - $retval = NULL; - $fs = C_Fs::get_instance(); - $router = C_Router::get_instance(); - if (!$image_abspath) { - $image_abspath = $this->object->get_image_abspath($image, $size, $check_existance); - } - if ($image_abspath) { - // Use multibyte pathinfo() in case of UTF8 gallery or file names - $parts = M_I18n::mb_pathinfo($image_abspath); - $image_abspath = $parts['dirname'] . DIRECTORY_SEPARATOR . $parts['basename']; - $doc_root = $fs->get_document_root('gallery'); - if ($doc_root != null) { - $doc_root = rtrim($doc_root, "/\\") . DIRECTORY_SEPARATOR; - } - // if docroot is "/" we would generate urls like /wp-contentpluginsnextgen-galleryetcetc - if ($doc_root !== '/') { - $request_uri = str_replace($doc_root, '', $image_abspath); - } else { - $request_uri = $image_abspath; - } - $request_uri = '/' . ltrim(str_replace("\\", '/', $request_uri), "/"); - // Because like%@this.jpg is a valid directory and filename - $request_uri = explode('/', $request_uri); - foreach ($request_uri as $ndx => $segment) { - $request_uri[$ndx] = rawurlencode($segment); - } - $request_uri = implode('/', $request_uri); - $retval = $router->remove_url_segment('/index.php', $router->get_url($request_uri, FALSE, 'gallery')); + if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' && substr($path, 0, 2) === '\\\\') { + $path = ltrim($path, '\\\\'); + $path = '//' . $path; } - return apply_filters('ngg_get_image_url', $retval, $image, $size); + return $path; } /** - * Uploads an image for a particular gallerys - * @param int|object|C_Gallery $gallery - * @param string|bool $filename (optional) Specifies the name of the file - * @param string|bool $data (optional) If specified, expects base64 encoded string of data - * @return C_Image + * Calculates the width & height dimensions of ImageTTFBBox(). + * + * Note: ImageTTFBBox() is unreliable with large font sizes + * @param $wmSize + * @param $fontAngle + * @param $wmFontPath + * @param $text + * @return array */ - function upload_image($gallery, $filename = FALSE, $data = FALSE) + function ImageTTFBBoxDimensions($wmSize, $fontAngle, $wmFontPath, $text) { - $retval = NULL; - // Ensure that we have the data present that we require - if (isset($_FILES['file']) && $_FILES['file']['error'] == 0) { - // $_FILES = Array( - // [file] => Array ( - // [name] => Canada_landscape4.jpg - // [type] => image/jpeg - // [tmp_name] => /private/var/tmp/php6KO7Dc - // [error] => 0 - // [size] => 64975 - // ) - // - $file = $_FILES['file']; - if ($this->object->is_zip()) { - $retval = $this->object->upload_zip($gallery); - } else { - if ($this->is_image_file()) { - $retval = $this->object->upload_base64_image($gallery, file_get_contents($file['tmp_name']), $filename ? $filename : (isset($file['name']) ? $file['name'] : FALSE)); - } else { - // Remove the non-valid (and potentially insecure) file from the PHP upload directory - if (isset($_FILES['file']['tmp_name'])) { - $filename = $_FILES['file']['tmp_name']; - @unlink($filename); - } - throw new E_UploadException(__('Invalid image file. Acceptable formats: JPG, GIF, and PNG.', 'nggallery')); - } - } - } elseif ($data) { - $retval = $this->object->upload_base64_image($filename, $data); - } else { - throw new E_UploadException(); - } - return $retval; + $box = @ImageTTFBBox($wmSize, $fontAngle, $this->correct_gd_unc_path($wmFontPath), $text); + $max_x = max(array($box[0], $box[2], $box[4], $box[6])); + $max_y = max(array($box[1], $box[3], $box[5], $box[7])); + $min_x = min(array($box[0], $box[2], $box[4], $box[6])); + $min_y = min(array($box[1], $box[3], $box[5], $box[7])); + return array("width" => $max_x - $min_x, "height" => $max_y - $min_y); } - function get_image_size_params($image, $size, $params = null, $skip_defaults = false) + function applyFilter($filterType) { - // Get the image entity - if (is_numeric($image)) { - $image = $this->object->_image_mapper->find($image); - } - $params = apply_filters('ngg_get_image_size_params', $params, $size, $image); - // Ensure we have a valid image - if ($image) { - $settings = C_NextGen_Settings::get_instance(); - if (!$skip_defaults) { - // Get default settings - if ($size == 'full') { - if (!isset($params['quality'])) { - $params['quality'] = $settings->imgQuality; - } - } else { - if (!isset($params['crop'])) { - $params['crop'] = $settings->thumbfix; - } - if (!isset($params['quality'])) { - $params['quality'] = $settings->thumbquality; - } - } - // Not sure why this was here... commenting out for now, always require watermark parameters to be explicit - # if (!isset($params['watermark'])) { - # $params['watermark'] = $settings->wmType; - # } - } - // width and height when omitted make generate_image_clone create a clone with original size, so try find defaults regardless of $skip_defaults - if (!isset($params['width']) || !isset($params['height'])) { - // First test if this is a "known" image size, i.e. if we store these sizes somewhere when users re-generate these sizes from the UI...this is required to be compatible with legacy - // try the 2 default built-in sizes, first thumbnail... - if ($size == 'thumbnail') { - if (!isset($params['width'])) { - $params['width'] = $settings->thumbwidth; - } - if (!isset($params['height'])) { - $params['height'] = $settings->thumbheight; - } - } else { - if ($size == 'full') { - if (!isset($params['width'])) { - if ($settings->imgAutoResize) { - $params['width'] = $settings->imgWidth; - } - } - if (!isset($params['height'])) { - if ($settings->imgAutoResize) { - $params['height'] = $settings->imgHeight; - } - } - } else { - if (isset($image->meta_data) && isset($image->meta_data[$size])) { - $dimensions = $image->meta_data[$size]; - if (!isset($params['width'])) { - $params['width'] = $dimensions['width']; - } - if (!isset($params['height'])) { - $params['height'] = $dimensions['height']; - } - } - } + $args = func_get_args(); + array_unshift($args, $this->newImage); + return call_user_func_array('imagefilter', $args); + } + /** + * Modfied Watermark function by Steve Peart + * http://parasitehosting.com/ + * + * @param string $relPOS + * @param int $xPOS + * @param int $yPOS + */ + function watermarkImage($relPOS = 'botRight', $xPOS = 0, $yPOS = 0) + { + // if it's a resource ID take it as watermark text image + if (is_resource($this->watermarkImgPath)) { + $this->workingImage = $this->watermarkImgPath; + } else { + // (possibly) search for the file from the document root + if (!is_file($this->watermarkImgPath)) { + $fs = C_Fs::get_instance(); + if (is_file($fs->join_paths($fs->get_document_root('content'), $this->watermarkImgPath))) { + $this->watermarkImgPath = $fs->get_document_root('content') . $this->watermarkImgPath; } } - if (!isset($params['crop_frame'])) { - $crop_frame_size_name = 'thumbnail'; - if (isset($image->meta_data[$size]['crop_frame'])) { - $crop_frame_size_name = $size; - } - if (isset($image->meta_data[$crop_frame_size_name]['crop_frame'])) { - $params['crop_frame'] = $image->meta_data[$crop_frame_size_name]['crop_frame']; - if (!isset($params['crop_frame']['final_width'])) { - $params['crop_frame']['final_width'] = $image->meta_data[$crop_frame_size_name]['width']; - } - if (!isset($params['crop_frame']['final_height'])) { - $params['crop_frame']['final_height'] = $image->meta_data[$crop_frame_size_name]['height']; - } - } - } else { - if (!isset($params['crop_frame']['final_width'])) { - $params['crop_frame']['final_width'] = $params['width']; - } - if (!isset($params['crop_frame']['final_height'])) { - $params['crop_frame']['final_height'] = $params['height']; - } + // Would you really want to use anything other than a png? + $this->workingImage = @imagecreatefrompng($this->watermarkImgPath); + // if it's not a valid file die... + if (empty($this->workingImage) or !$this->workingImage) { + return; } } - return $params; + imagealphablending($this->workingImage, false); + imagesavealpha($this->workingImage, true); + $sourcefile_width = imageSX($this->oldImage); + $sourcefile_height = imageSY($this->oldImage); + $watermarkfile_width = imageSX($this->workingImage); + $watermarkfile_height = imageSY($this->workingImage); + switch (substr($relPOS, 0, 3)) { + case 'top': + $dest_y = 0 + $yPOS; + break; + case 'mid': + $dest_y = $sourcefile_height / 2 - $watermarkfile_height / 2; + break; + case 'bot': + $dest_y = $sourcefile_height - $watermarkfile_height - $yPOS; + break; + default: + $dest_y = 0; + break; + } + switch (substr($relPOS, 3)) { + case 'Left': + $dest_x = 0 + $xPOS; + break; + case 'Center': + $dest_x = $sourcefile_width / 2 - $watermarkfile_width / 2; + break; + case 'Right': + $dest_x = $sourcefile_width - $watermarkfile_width - $xPOS; + break; + default: + $dest_x = 0; + break; + } + // debug + // $this->errmsg = 'X '.$dest_x.' Y '.$dest_y; + // $this->showErrorImage(); + // if a gif, we have to upsample it to a truecolor image + if ($this->format == 'GIF') { + $tempimage = imagecreatetruecolor($sourcefile_width, $sourcefile_height); + imagecopy($tempimage, $this->oldImage, 0, 0, 0, 0, $sourcefile_width, $sourcefile_height); + $this->newImage = $tempimage; + } + $this->imagecopymerge_alpha($this->newImage, $this->workingImage, $dest_x, $dest_y, 0, 0, $watermarkfile_width, $watermarkfile_height, 100); } /** - * Returns an array of dimensional properties (width, height, real_width, real_height) of a resulting clone image if and when generated - * @param object|int $image Image ID or an image object - * @param string $size - * @param array $params - * @param bool $skip_defaults - * @return bool|array + * Wrapper to imagecopymerge() that allows PNG transparency */ - function calculate_image_size_dimensions($image, $size, $params = null, $skip_defaults = false) + function imagecopymerge_alpha($destination_image, $source_image, $destination_x, $destination_y, $source_x, $source_y, $source_w, $source_h, $pct) { - $retval = FALSE; - // Get the image entity - if (is_numeric($image)) { - $image = $this->object->_image_mapper->find($image); - } - // Ensure we have a valid image - if ($image) { - $params = $this->object->get_image_size_params($image, $size, $params, $skip_defaults); - // Get the image filename - $image_path = $this->object->get_original_abspath($image, 'original'); - $clone_path = $this->object->get_image_abspath($image, $size); - $retval = $this->object->calculate_image_clone_dimensions($image_path, $clone_path, $params); - } - return $retval; + $cut = imagecreatetruecolor($source_w, $source_h); + imagecopy($cut, $destination_image, 0, 0, $destination_x, $destination_y, $source_w, $source_h); + imagecopy($cut, $source_image, 0, 0, $source_x, $source_y, $source_w, $source_h); + imagecopymerge($destination_image, $cut, $destination_x, $destination_y, 0, 0, $source_w, $source_h, $pct); } /** - * Generates a specific size for an image - * @param int|object|C_Image $image - * @param string $size - * @param array|null $params (optional) - * @param bool $skip_defaults (optional) - * @return bool|object + * Modfied imagecopyresampled function to save transparent images + * See : http://www.akemapa.com/2008/07/10/php-gd-resize-transparent-image-png-gif/ + * @since 1.9.0 + * + * @param resource $dst_image + * @param resource $src_image + * @param int $dst_x + * @param int $dst_y + * @param int $src_x + * @param int $src_y + * @param int $dst_w + * @param int $dst_h + * @param int $src_w + * @param int $src_h + * @return bool */ - function generate_image_size($image, $size, $params = null, $skip_defaults = false) + function imagecopyresampled(&$dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) { - $retval = FALSE; - // Get the image entity - if (is_numeric($image)) { - $image = $this->object->_image_mapper->find($image); + // Check if this image is PNG or GIF, then set if Transparent + if ($this->format == 'GIF' || $this->format == 'PNG') { + imagealphablending($dst_image, false); + imagesavealpha($dst_image, true); + $transparent = imagecolorallocatealpha($dst_image, 255, 255, 255, 127); + imagefilledrectangle($dst_image, 0, 0, $dst_w, $dst_h, $transparent); } - // Ensure we have a valid image - if ($image) { - $params = $this->object->get_image_size_params($image, $size, $params, $skip_defaults); - $settings = C_NextGen_Settings::get_instance(); - // Get the image filename - $filename = $this->object->get_original_abspath($image, 'original'); - $thumbnail = null; - if ($size == 'full' && $settings->imgBackup == 1) { - // XXX change this? 'full' should be the resized path and 'original' the _backup path - $backup_path = $this->object->get_backup_abspath($image); - if (!@file_exists($backup_path)) { - @copy($filename, $backup_path); - } - } - // Generate the thumbnail using WordPress - $existing_image_abpath = $this->object->get_image_abspath($image, $size); - $existing_image_dir = dirname($existing_image_abpath); - // removing the old thumbnail is actually not needed as generate_image_clone() will replace it, leaving commented in as reminder in case there are issues in the future - if (@file_exists($existing_image_abpath)) { - //unlink($existing_image_abpath); - } - wp_mkdir_p($existing_image_dir); - $clone_path = $existing_image_abpath; - $thumbnail = $this->object->generate_image_clone($filename, $clone_path, $params); - // We successfully generated the thumbnail - if ($thumbnail != null) { - $clone_path = $thumbnail->fileName; - if (function_exists('getimagesize')) { - $dimensions = getimagesize($clone_path); - } else { - $dimensions = array($params['width'], $params['height']); - } - if (!isset($image->meta_data)) { - $image->meta_data = array(); - } - $size_meta = array('width' => $dimensions[0], 'height' => $dimensions[1], 'filename' => M_I18n::mb_basename($clone_path), 'generated' => microtime()); - if (isset($params['crop_frame'])) { - $size_meta['crop_frame'] = $params['crop_frame']; - } - $image->meta_data[$size] = $size_meta; - if ($size == 'full') { - $image->meta_data['width'] = $size_meta['width']; - $image->meta_data['height'] = $size_meta['height']; - } - $retval = $this->object->_image_mapper->save($image); - do_action('ngg_generated_image', $image, $size, $params); - if ($retval == 0) { - $retval = false; - } - if ($retval) { - $retval = $thumbnail; - } - } else { - // Something went wrong. Thumbnail generation failed! - } - } - return $retval; + imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); + return true; } +} +/** + * Basic gallery storage methods; please consult the other available mixin.gallerystorage_base_(.*).php files before + * adding new methods to this class: new methods may be more appropriately defined in other mixins. + */ +class Mixin_GalleryStorage_Base extends Mixin +{ /** - * Generates a thumbnail for an image - * @param int|stdClass|C_Image $image - * @return bool + * Gets the id of a gallery, regardless of whether an integer + * or object was passed as an argument + * @param mixed $gallery_obj_or_id + * @return null|int */ - function generate_thumbnail($image, $params = null, $skip_defaults = false) + function _get_gallery_id($gallery_obj_or_id) { - $sized_image = $this->object->generate_image_size($image, 'thumbnail', $params, $skip_defaults); - $retval = false; - if ($sized_image != null) { - $retval = true; - $sized_image->destruct(); + $retval = NULL; + $gallery_key = $this->object->_gallery_mapper->get_primary_key_column(); + if (is_object($gallery_obj_or_id)) { + if (isset($gallery_obj_or_id->{$gallery_key})) { + $retval = $gallery_obj_or_id->{$gallery_key}; + } + } elseif (is_numeric($gallery_obj_or_id)) { + $retval = $gallery_obj_or_id; } return $retval; } @@ -3734,152 +3442,6 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin } return false; } - function _delete_gallery_directory($abspath) - { - // Remove all image files and purge all empty directories left over - $iterator = new DirectoryIterator($abspath); - // Only delete image files! Other files may be stored incorrectly but it's not our place to delete them - $removable_extensions = apply_filters('ngg_allowed_file_types', array('jpeg', 'jpg', 'png', 'gif')); - foreach ($removable_extensions as $extension) { - $removable_extensions[] = $extension . '_backup'; - } - foreach ($iterator as $file) { - if (in_array($file->getBasename(), array('.', '..'))) { - continue; - } elseif ($file->isFile() || $file->isLink()) { - $extension = strtolower(pathinfo($file->getPathname(), PATHINFO_EXTENSION)); - if (in_array($extension, $removable_extensions, TRUE)) { - @unlink($file->getPathname()); - } - } elseif ($file->isDir()) { - $this->object->_delete_gallery_directory($file->getPathname()); - } - } - // DO NOT remove directories that still have files in them. Note: '.' and '..' are included with getSize() - $empty = TRUE; - foreach ($iterator as $file) { - if (in_array($file->getBasename(), array('.', '..'))) { - continue; - } - $empty = FALSE; - } - if ($empty) { - @rmdir($iterator->getPath()); - } - } - function delete_gallery($gallery) - { - $fs = C_Fs::get_instance(); - $safe_dirs = array(DIRECTORY_SEPARATOR, $fs->get_document_root('plugins'), $fs->get_document_root('plugins_mu'), $fs->get_document_root('templates'), $fs->get_document_root('stylesheets'), $fs->get_document_root('content'), $fs->get_document_root('galleries'), $fs->get_document_root()); - $abspath = $this->object->get_gallery_abspath($gallery); - if ($abspath && file_exists($abspath) && !in_array(stripslashes($abspath), $safe_dirs)) { - $this->object->_delete_gallery_directory($abspath); - } - } - function delete_image($image, $size = FALSE) - { - $retval = FALSE; - // Ensure that we have the image entity - if (is_numeric($image)) { - $image = $this->object->_image_mapper->find($image); - } - if ($image) { - $image_id = $image->{$image->id_field}; - do_action('ngg_delete_image', $image_id, $size); - // Delete only a particular image size - if ($size) { - $abspath = $this->object->get_image_abspath($image, $size); - if ($abspath && @file_exists($abspath)) { - unlink($abspath); - } - if (isset($image->meta_data) && isset($image->meta_data[$size])) { - unset($image->meta_data[$size]); - $this->object->_image_mapper->save($image); - } - } else { - // Get the paths to fullsize and thumbnail files - $abspaths = array($this->object->get_full_abspath($image), $this->object->get_thumb_abspath($image), $this->object->get_backup_abspath($image)); - if (isset($image->meta_data)) { - foreach (array_keys($image->meta_data) as $size) { - $abspaths[] = $this->object->get_image_abspath($image, $size); - } - } - // Delete each image - foreach ($abspaths as $abspath) { - if ($abspath && @file_exists($abspath)) { - unlink($abspath); - } - } - // Delete the entity - $this->object->_image_mapper->destroy($image); - } - $retval = TRUE; - } - return $retval; - } - /** - * Determines if the given NGG image id has been uploaded to the media library - * - * @param integer $imageId - * @retval FALSE|int attachment_id - */ - function is_in_media_library($imageId) - { - $retval = FALSE; - // Get the image - if (is_object($imageId)) { - $image = $imageId; - $imageId = $image->pid; - } - // Try to find an attachment for the given image_id - if ($imageId) { - $query = new WP_Query(array('post_type' => 'attachment', 'meta_key' => '_ngg_image_id', 'meta_value_num' => $imageId)); - foreach ($query->get_posts() as $post) { - $retval = $post->ID; - } - } - return $retval; - } - /** - * Copies a NGG image to the media library and returns the attachment_id - * @param C_Image $image - * @retval FALSE|int attachment_id - */ - function copy_to_media_library($image) - { - $retval = FALSE; - // Get the image - if (is_int($image)) { - $imageId = $image; - $mapper = C_Image_Mapper::get_instance(); - $image = $mapper->find($imageId); - } - if ($image) { - $wordpress_upload_dir = wp_upload_dir(); - // $wordpress_upload_dir['path'] is the full server path to wp-content/uploads/2017/05, for multisite works good as well - // $wordpress_upload_dir['url'] the absolute URL to the same folder, actually we do not need it, just to show the link to file - $i = 1; - // number of tries when the file with the same name is already exists - $image_abspath = C_Gallery_Storage::get_instance()->get_image_abspath($image, "full"); - $new_file_path = $wordpress_upload_dir['path'] . '/' . $image->filename; - $new_file_mime = mime_content_type($image_abspath); - while (file_exists($new_file_path)) { - $i++; - $new_file_path = $wordpress_upload_dir['path'] . '/' . $i . '_' . $image->filename; - } - if (@copy($image_abspath, $new_file_path)) { - $upload_id = wp_insert_attachment(array('guid' => $new_file_path, 'post_mime_type' => $new_file_mime, 'post_title' => preg_replace('/\\.[^.]+$/', '', $image->alttext), 'post_content' => '', 'post_status' => 'inherit'), $new_file_path); - update_post_meta($upload_id, '_ngg_image_id', intval($image->pid)); - // wp_generate_attachment_metadata() won't work if you do not include this file - require_once ABSPATH . 'wp-admin/includes/image.php'; - $image_meta = wp_generate_attachment_metadata($upload_id, $new_file_path); - // Generate and save the attachment metas into the database - wp_update_attachment_metadata($upload_id, $image_meta); - $retval = $upload_id; - } - } - return $retval; - } /** * Sets a NGG image as a post thumbnail for the given post */ @@ -3912,1297 +3474,1962 @@ class Mixin_NggLegacy_GalleryStorage_Driver extends Mixin } return $retval; } + function convert_slashes($path) + { + $search = array('/', "\\"); + $replace = array(DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR); + return str_replace($search, $replace, $path); + } /** - * Delete the given NGG image from the media library + * Empties the gallery cache directory of content + * @param object $gallery */ - function delete_from_media_library($imageId) + function flush_cache($gallery) { - // Get the image - if (!is_int($imageId)) { - $image = $imageId; - $imageId = $image->pid; - } - if ($postId = $this->object->is_in_media_library($imageId)) { - wp_delete_post($postId); - } + $cache = C_Cache::get_instance(); + $cache->flush_directory($this->object->get_cache_abspath($gallery)); } /** - * Copies (or moves) images into another gallery + * Sanitizes a directory path, replacing whitespace with dashes. * - * @param array $images - * @param int|object $gallery - * @param boolean $db optionally only copy the image files - * @param boolean $move move the image instead of copying - * @return mixed NULL on failure, array|image-ids on success + * Taken from WP' sanitize_file_name() and modified to not act on file extensions. + * + * Removes special characters that are illegal in filenames on certain + * operating systems and special characters requiring special escaping + * to manipulate at the command line. Replaces spaces and consecutive + * dashes with a single dash. Trims period, dash and underscore from beginning + * and end of filename. It is not guaranteed that this function will return a + * filename that is allowed to be uploaded. + * @param string $dirname The directory name to be sanitized + * @return string The sanitized directory name + */ + public function sanitize_directory_name($dirname) + { + $dirname_raw = $dirname; + $special_chars = array("?", "[", "]", "/", "\\", "=", "<", ">", ":", ";", ",", "'", "\"", "&", "\$", "#", "*", "(", ")", "|", "~", "`", "!", "{", "}", "%", "+", chr(0)); + $special_chars = apply_filters('sanitize_file_name_chars', $special_chars, $dirname_raw); + $dirname = preg_replace("#\\x{00a0}#siu", ' ', $dirname); + $dirname = str_replace($special_chars, '', $dirname); + $dirname = str_replace(array('%20', '+'), '-', $dirname); + $dirname = preg_replace('/[\\r\\n\\t -]+/', '-', $dirname); + $dirname = trim($dirname, '.-_'); + return $dirname; + } +} +/** + * Provides methods to C_Gallery_Storage related to dynamic images, thumbnails, clones, etc + */ +class Mixin_GalleryStorage_Base_Dynamic extends Mixin +{ + /** + * Returns an array of dimensional properties (width, height, real_width, real_height) of a resulting clone image if and when generated + * @param object|int $image Image ID or an image object + * @param string $size + * @param array $params + * @param bool $skip_defaults + * @return bool|array */ - function copy_images($images, $gallery, $db = TRUE, $move = FALSE) + function calculate_image_size_dimensions($image, $size, $params = null, $skip_defaults = false) { - $new_image_pids = array(); - // the return value - // legacy requires passing just a numeric ID - if (is_numeric($gallery)) { - $gallery = $this->object->_gallery_mapper->find($gallery); + $retval = FALSE; + // Get the image entity + if (is_numeric($image)) { + $image = $this->object->_image_mapper->find($image); } - // move_images() is a wrapper to this function so we implement both features here - $func = $move ? 'rename' : 'copy'; - // legacy allows for arrays of just the ID - if (!is_array($images)) { - $images = array($images); + // Ensure we have a valid image + if ($image) { + $params = $this->object->get_image_size_params($image, $size, $params, $skip_defaults); + // Get the image filename + $image_path = $this->object->get_original_abspath($image, 'original'); + $clone_path = $this->object->get_image_abspath($image, $size); + $retval = $this->object->calculate_image_clone_dimensions($image_path, $clone_path, $params); } - // Ensure we have a valid gallery - $gallery_id = $this->object->_get_gallery_id($gallery); - if (!$gallery_id) { - return array(); - } - $image_key = $this->object->_image_mapper->get_primary_key_column(); - $gallery_abspath = $this->object->get_gallery_abspath($gallery); - // Check for folder permission - if (!is_dir($gallery_abspath) && !wp_mkdir_p($gallery_abspath)) { - echo sprintf(__('Unable to create directory %s.', 'nggallery'), esc_html($gallery_abspath)); - return $new_image_pids; - } - if (!is_writable($gallery_abspath)) { - echo sprintf(__('Unable to write to directory %s. Is this directory writable by the server?', 'nggallery'), esc_html($gallery_abspath)); - return $new_image_pids; - } - $old_gallery_ids = array(); - $image_pid_map = array(); - foreach ($images as $image) { - if ($this->object->is_current_user_over_quota()) { - throw new E_NoSpaceAvailableException(__('Sorry, you have used your space allocation. Please delete some files to upload more files.', 'nggallery')); - } - // again legacy requires that it be able to pass just a numeric ID - if (is_numeric($image)) { - $image = $this->object->_image_mapper->find($image); - } - $old_gallery_ids[] = $image->galleryid; - $old_pid = $image->{$image_key}; - // update the DB if requested - $new_image = clone $image; - $new_pid = $old_pid; - if ($db) { - unset($new_image->extras_post_id); - $new_image->galleryid = $gallery_id; - if (!$move) { - $new_image->image_slug = nggdb::get_unique_slug(sanitize_title_with_dashes($image->alttext), 'image'); - unset($new_image->{$image_key}); + return $retval; + } + /** + * Generates a "clone" for an existing image, the clone can be altered using the $params array + * @param string $image_path + * @param string $clone_path + * @param array $params + * @return null|object + */ + function generate_image_clone($image_path, $clone_path, $params) + { + $crop = isset($params['crop']) ? $params['crop'] : NULL; + $watermark = isset($params['watermark']) ? $params['watermark'] : NULL; + $reflection = isset($params['reflection']) ? $params['reflection'] : NULL; + $rotation = isset($params['rotation']) ? $params['rotation'] : NULL; + $flip = isset($params['flip']) ? $params['flip'] : NULL; + $destpath = NULL; + $thumbnail = NULL; + $result = $this->object->calculate_image_clone_result($image_path, $clone_path, $params); + // XXX this should maybe be removed and extra settings go into $params? + $settings = apply_filters('ngg_settings_during_image_generation', C_NextGen_Settings::get_instance()->to_array()); + // Ensure we have a valid image + if ($image_path && @file_exists($image_path) && $result != null && !isset($result['error'])) { + $image_dir = dirname($image_path); + $clone_path = $result['clone_path']; + $clone_dir = $result['clone_directory']; + $clone_format = $result['clone_format']; + $format_list = $this->object->get_image_format_list(); + // Ensure target directory exists, but only create 1 subdirectory + if (!@file_exists($clone_dir)) { + if (strtolower(realpath($image_dir)) != strtolower(realpath($clone_dir))) { + if (strtolower(realpath($image_dir)) == strtolower(realpath(dirname($clone_dir)))) { + wp_mkdir_p($clone_dir); + } } - $new_pid = $this->object->_image_mapper->save($new_image); } - if (!$new_pid) { - echo sprintf(__('Failed to copy database row for picture %s', 'nggallery'), $old_pid) . '<br />'; - continue; + $method = $result['method']; + $width = $result['width']; + $height = $result['height']; + $quality = $result['quality']; + if ($quality == null) { + $quality = 100; } - // 'backup' is not included in get_image_sizes() - $sizes = $this->object->get_image_sizes(); - $sizes[] = 'backup'; - // Copy each image size - foreach ($sizes as $size) { - // if backups are off there's no backup file to copy - if (!C_NextGen_Settings::get_instance()->imgBackup && $size == 'backup') { - continue; + if ($method == 'wordpress') { + $original = wp_get_image_editor($image_path); + $destpath = $clone_path; + if (!is_wp_error($original)) { + $original->resize($width, $height, $crop); + $original->set_quality($quality); + $original->save($clone_path); } - $orig_path = $this->object->get_image_abspath($image, $size, TRUE); - if (!$orig_path || !@file_exists($orig_path)) { - echo sprintf(__('Failed to get image path for %s', 'nggallery'), esc_html(M_I18n::mb_basename($orig_path))) . '<br/>'; - continue; + } else { + if ($method == 'nextgen') { + $destpath = $clone_path; + $thumbnail = new C_NggLegacy_Thumbnail($image_path, true); + if (!$thumbnail->error) { + if ($crop) { + $crop_area = $result['crop_area']; + $crop_x = $crop_area['x']; + $crop_y = $crop_area['y']; + $crop_width = $crop_area['width']; + $crop_height = $crop_area['height']; + $thumbnail->crop($crop_x, $crop_y, $crop_width, $crop_height); + } + $thumbnail->resize($width, $height); + } else { + $thumbnail = NULL; + } } - $new_path = $this->object->get_image_abspath($new_image, $size, FALSE); - // Prevent duplicate filenames: check if the filename exists and begin appending '-#' - if (!ini_get('safe_mode') && @file_exists($new_path)) { - // prevent get_image_abspath() from using the thumbnail filename in metadata - unset($new_image->meta_data['thumbnail']['filename']); - $file_exists = TRUE; - $i = 0; - do { - $i++; - $parts = explode('.', $image->filename); - $extension = array_pop($parts); - $tmp_filename = implode('.', $parts) . '-' . $i . '.' . $extension; - $new_image->filename = $tmp_filename; - $tmp_path = $this->object->get_image_abspath($new_image, $size, FALSE); - if (!@file_exists($tmp_path)) { - $file_exists = FALSE; - $new_path = $tmp_path; - if ($db) { - $this->object->_image_mapper->save($new_image); + } + // We successfully generated the thumbnail + if (is_string($destpath) && (@file_exists($destpath) || $thumbnail != null)) { + if ($clone_format != null) { + if (isset($format_list[$clone_format])) { + $clone_format_extension = $format_list[$clone_format]; + $clone_format_extension_str = null; + if ($clone_format_extension != null) { + $clone_format_extension_str = '.' . $clone_format_extension; + } + $destpath_info = M_I18n::mb_pathinfo($destpath); + $destpath_extension = $destpath_info['extension']; + if (strtolower($destpath_extension) != strtolower($clone_format_extension)) { + $destpath_dir = $destpath_info['dirname']; + $destpath_basename = $destpath_info['filename']; + $destpath_new = $destpath_dir . DIRECTORY_SEPARATOR . $destpath_basename . $clone_format_extension_str; + if (@file_exists($destpath) && rename($destpath, $destpath_new) || $thumbnail != null) { + $destpath = $destpath_new; } } - } while ($file_exists == TRUE); + } + } + if (is_null($thumbnail)) { + $thumbnail = new C_NggLegacy_Thumbnail($destpath, true); + if ($thumbnail->error) { + $thumbnail = null; + return null; + } + } else { + $thumbnail->fileName = $destpath; + } + // This is quite odd, when watermark equals int(0) it seems all statements below ($watermark == 'image') and ($watermark == 'text') both evaluate as true + // so we set it at null if it evaluates to any null-like value + if ($watermark == null) { + $watermark = null; + } + if ($watermark == 1 || $watermark === true) { + $watermark_setting_keys = array('wmFont', 'wmType', 'wmPos', 'wmXpos', 'wmYpos', 'wmPath', 'wmText', 'wmOpaque', 'wmFont', 'wmSize', 'wmColor'); + foreach ($watermark_setting_keys as $watermark_key) { + if (!isset($params[$watermark_key])) { + $params[$watermark_key] = $settings[$watermark_key]; + } + } + if (in_array(strval($params['wmType']), array('image', 'text'))) { + $watermark = $params['wmType']; + } else { + $watermark = 'text'; + } + } + $watermark = strval($watermark); + if ($watermark == 'image') { + $thumbnail->watermarkImgPath = $params['wmPath']; + $thumbnail->watermarkImage($params['wmPos'], $params['wmXpos'], $params['wmYpos']); + } else { + if ($watermark == 'text') { + $thumbnail->watermarkText = $params['wmText']; + $thumbnail->watermarkCreateText($params['wmColor'], $params['wmFont'], $params['wmSize'], $params['wmOpaque']); + $thumbnail->watermarkImage($params['wmPos'], $params['wmXpos'], $params['wmYpos']); + } } - // Copy files - if (!@$func($orig_path, $new_path)) { - echo sprintf(__('Failed to copy image %1$s to %2$s', 'nggallery'), esc_html($orig_path), esc_html($new_path)) . '<br/>'; - continue; + if ($rotation && in_array(abs($rotation), array(90, 180, 270))) { + $thumbnail->rotateImageAngle($rotation); + $remove_orientation_exif = TRUE; + } else { + $remove_orientation_exif = FALSE; } - // disabling: this is a bit too verbose - // if (!empty($tmp_path)) - // echo sprintf(__('Image %1$s (%2$s) copied as image %3$s (%4$s) » The file already existed in the destination gallery.', 'nggallery'), $old_pid, esc_html($orig_path), $new_pid, esc_html($new_path)) . '<br />'; - // else - // echo sprintf(__('Image %1$s (%2$s) copied as image %3$s (%4$s)', 'nggallery'), $old_pid, esc_html($orig_path), $new_pid, esc_html($new_path)) . '<br />'; - // Copy tags - if ($db) { - $tags = wp_get_object_terms($old_pid, 'ngg_tag', 'fields=ids'); - $tags = array_map('intval', $tags); - wp_set_object_terms($new_pid, $tags, 'ngg_tag', true); + $flip = strtolower($flip); + if ($flip && in_array($flip, array('h', 'v', 'hv'))) { + $flip_h = in_array($flip, array('h', 'hv')); + $flip_v = in_array($flip, array('v', 'hv')); + $thumbnail->flipImage($flip_h, $flip_v); + } + if ($reflection) { + $thumbnail->createReflection(40, 40, 50, FALSE, '#a4a4a4'); } + if ($clone_format != null && isset($format_list[$clone_format])) { + // Force format + $thumbnail->format = strtoupper($format_list[$clone_format]); + } + $thumbnail = apply_filters('ngg_before_save_thumbnail', $thumbnail); + $exif_iptc = @C_Exif_Writer_Wrapper::read_metadata($image_path); + $thumbnail->save($destpath, $quality); + // We've just rotated the image however the EXIF metadata contains an Orientation tag. To prevent + // certain browsers from rotating our already-rotated image we reset the Orientation tag to the default. + if ($remove_orientation_exif && !empty($exif_iptc['exif'])) { + $exif_iptc['exif'] = @C_Exif_Writer_Wrapper::reset_orientation($exif_iptc['exif']); + } + @C_Exif_Writer_Wrapper::write_metadata($destpath, $exif_iptc); } - $new_image_pids[] = $new_pid; - $image_pid_map[$old_pid] = $new_pid; - } - $old_gallery_ids = array_unique($old_gallery_ids); - if ($move) { - do_action('ngg_moved_images', $images, $old_gallery_ids, $gallery_id); - } else { - do_action('ngg_copied_images', $image_pid_map, $old_gallery_ids, $gallery_id); - } - $title = '<a href="' . admin_url() . 'admin.php?page=nggallery-manage-gallery&mode=edit&gid=' . $gallery_id . '" >'; - $title .= $gallery->title; - $title .= '</a>'; - if ($move) { - $message = sprintf(__('Moved %1$s picture(s) to gallery %2$s .', 'nggallery'), count($new_image_pids), $title); - } else { - $message = sprintf(__('Copied %1$s picture(s) to gallery %2$s .', 'nggallery'), count($new_image_pids), $title); } - echo '<div class="updated fade" id="message"><p>' . $message . '</p></div>'; - // echo '<hr/>' . sprintf(__('Copied %1$s picture(s) to gallery %2$s .', 'nggallery'), count($new_image_pids), $title); - return $new_image_pids; + return $thumbnail; } /** - * Recover image from backup copy and reprocess it - * - * @param int|stdClass|C_Image $image - * @return bool|string result code + * Returns an array of dimensional properties (width, height, real_width, real_height) of a resulting clone image if and when generated + * @param string $image_path + * @param string $clone_path + * @param array $params + * @return null|array */ - function recover_image($image) + function calculate_image_clone_dimensions($image_path, $clone_path, $params) { - $retval = FALSE; - if (is_numeric($image)) { - $image = $this->object->_image_mapper->find($image); - } - if ($image) { - $full_abspath = $this->object->get_image_abspath($image); - $backup_abspath = $this->object->get_image_abspath($image, 'backup'); - if ($backup_abspath != $full_abspath && @file_exists($backup_abspath)) { - if (is_writable($full_abspath) && is_writable(dirname($full_abspath))) { - // Copy the backup - if (@copy($backup_abspath, $full_abspath)) { - // Re-create non-fullsize image sizes - foreach ($this->object->get_image_sizes($image) as $named_size) { - if ($named_size == 'full') { - continue; - } - $this->object->generate_image_clone($backup_abspath, $this->object->get_image_abspath($image, $named_size), $this->object->get_image_size_params($image, $named_size)); - } - do_action('ngg_recovered_image', $image); - // Reimport all metadata - $retval = $this->object->_image_mapper->reimport_metadata($image); - } - } - } + $retval = null; + $result = $this->object->calculate_image_clone_result($image_path, $clone_path, $params); + if ($result != null) { + $retval = array('width' => $result['width'], 'height' => $result['height'], 'real_width' => $result['real_width'], 'real_height' => $result['real_height']); } return $retval; } -} -/** - * Class C_NggLegacy_GalleryStorage_Driver - * @mixin Mixin_NggLegacy_GalleryStorage_Driver - */ -class C_NggLegacy_GalleryStorage_Driver extends C_GalleryStorage_Driver_Base -{ - function define($context = FALSE) - { - parent::define($context); - $this->add_mixin('Mixin_NggLegacy_GalleryStorage_Driver'); - } -} -/** - * gd.thumbnail.inc.php - * - * @author Ian Selby (ian@gen-x-design.com) - * @copyright Copyright 2006-2011 - * @version 1.3.0 (based on 1.1.3) - * @modded by Alex Rabe - * - */ -/** - * PHP class for dynamically resizing, cropping, and rotating images for thumbnail purposes and either displaying them on-the-fly or saving them. - * - */ -class C_NggLegacy_Thumbnail -{ - /** - * Error message to display, if any - * - * @var string - */ - var $errmsg; - /** - * Whether or not there is an error - * - * @var boolean - */ - var $error; - /** - * Format of the image file - * - * @var string - */ - var $format; - /** - * File name and path of the image file - * - * @var string - */ - var $fileName; - /** - * Current dimensions of working image - * - * @var array - */ - var $currentDimensions; - /** - * New dimensions of working image - * - * @var array - */ - var $newDimensions; /** - * Image resource for newly manipulated image - * - * @var resource - * @access private - */ - var $newImage; - /** - * Image resource for image before previous manipulation - * - * @var resource - * @access private + * Returns an array of properties of a resulting clone image if and when generated + * @param string $image_path + * @param string $clone_path + * @param array $params + * @return null|array */ - var $oldImage; - /** - * Image resource for image being currently manipulated - * - * @var resource - * @access private - */ - var $workingImage; - /** - * Percentage to resize image by - * - * @var int - * @access private - */ - var $percent; - /** - * Maximum width of image during resize - * - * @var int - * @access private - */ - var $maxWidth; - /** - * Maximum height of image during resize - * - * @var int - * @access private - */ - var $maxHeight; - /** - * Image for Watermark - * - * @var string - * - */ - var $watermarkImgPath; - /** - * Text for Watermark - * - * @var string - * - */ - var $watermarkText; - /** - * Image Resource ID for Watermark - * - * @var string - * - */ - function __construct($fileName, $no_ErrorImage = false) + function calculate_image_clone_result($image_path, $clone_path, $params) { - //make sure the GD library is installed - if (!function_exists("gd_info")) { - echo 'You do not have the GD Library installed. This class requires the GD library to function properly.' . "\n"; - echo 'visit http://us2.php.net/manual/en/ref.image.php for more information'; - throw new E_No_Image_Library_Exception(); - } - //initialize variables - $this->errmsg = ''; - $this->error = false; - $this->currentDimensions = array(); - $this->newDimensions = array(); - $this->fileName = $fileName; - $this->percent = 100; - $this->maxWidth = 0; - $this->maxHeight = 0; - $this->watermarkImgPath = ''; - $this->watermarkText = ''; - //check to see if file exists - if (!@file_exists($this->fileName)) { - $this->errmsg = 'File not found'; - $this->error = true; - } elseif (!is_readable($this->fileName)) { - $this->errmsg = 'File is not readable'; - $this->error = true; - } - $image_size = null; - //if there are no errors, determine the file format - if ($this->error == false) { - // set_time_limit(30); - @ini_set('memory_limit', -1); - $image_size = @getimagesize($this->fileName); - if (isset($image_size) && is_array($image_size)) { - $extensions = array('1' => 'GIF', '2' => 'JPG', '3' => 'PNG'); - $extension = array_key_exists($image_size[2], $extensions) ? $extensions[$image_size[2]] : ''; - if ($extension) { - $this->format = $extension; + $width = isset($params['width']) ? $params['width'] : NULL; + $height = isset($params['height']) ? $params['height'] : NULL; + $quality = isset($params['quality']) ? $params['quality'] : NULL; + $type = isset($params['type']) ? $params['type'] : NULL; + $crop = isset($params['crop']) ? $params['crop'] : NULL; + $watermark = isset($params['watermark']) ? $params['watermark'] : NULL; + $rotation = isset($params['rotation']) ? $params['rotation'] : NULL; + $reflection = isset($params['reflection']) ? $params['reflection'] : NULL; + $crop_frame = isset($params['crop_frame']) ? $params['crop_frame'] : NULL; + $result = NULL; + // Ensure we have a valid image + if ($image_path && @file_exists($image_path)) { + // Ensure target directory exists, but only create 1 subdirectory + $image_dir = dirname($image_path); + $clone_dir = dirname($clone_path); + $image_extension = M_I18n::mb_pathinfo($image_path, PATHINFO_EXTENSION); + $image_extension_str = null; + $clone_extension = M_I18n::mb_pathinfo($clone_path, PATHINFO_EXTENSION); + $clone_extension_str = null; + if ($image_extension != null) { + $image_extension_str = '.' . $image_extension; + } + if ($clone_extension != null) { + $clone_extension_str = '.' . $clone_extension; + } + $image_basename = M_I18n::mb_basename($image_path); + $clone_basename = M_I18n::mb_basename($clone_path); + // We use a default suffix as passing in null as the suffix will make WordPress use a default + $clone_suffix = null; + $format_list = $this->object->get_image_format_list(); + $clone_format = null; + // format is determined below and based on $type otherwise left to null + // suffix is only used to reconstruct paths for image_resize function + if (strpos($clone_basename, $image_basename) === 0) { + $clone_suffix = substr($clone_basename, strlen($image_basename)); + } + if ($clone_suffix != null && $clone_suffix[0] == '-') { + // WordPress adds '-' on its own + $clone_suffix = substr($clone_suffix, 1); + } + // Get original image dimensions + $dimensions = getimagesize($image_path); + if ($width == null && $height == null) { + if ($dimensions != null) { + if ($width == null) { + $width = $dimensions[0]; + } + if ($height == null) { + $height = $dimensions[1]; + } } else { - $this->errmsg = 'Unknown file format'; - $this->error = true; + // XXX Don't think there's any other option here but to fail miserably...use some hard-coded defaults maybe? + return null; } - } else { - $this->errmsg = 'File is not an image'; - $this->error = true; } - } - // increase memory-limit if possible, GD needs this for large images - if (!extension_loaded('suhosin')) { - @ini_set('memory_limit', '512M'); - } - if ($this->error == false) { - // Check memory consumption if file exists - $this->checkMemoryForImage($this->fileName); - } - //initialize resources if no errors - if ($this->error == false) { - $img_err = null; - switch ($this->format) { - case 'GIF': - if (function_exists('ImageCreateFromGif')) { - $this->oldImage = @ImageCreateFromGif($this->fileName); - } else { - $img_err = __('Support for GIF format is missing.', 'nggallery'); + if ($dimensions != null) { + $dimensions_ratio = $dimensions[0] / $dimensions[1]; + if ($width == null) { + $width = (int) round($height * $dimensions_ratio); + if ($width == $dimensions[0] - 1) { + $width = $dimensions[0]; } - break; - case 'JPG': - if (function_exists('ImageCreateFromJpeg')) { - $this->oldImage = @ImageCreateFromJpeg($this->fileName); - } else { - $img_err = __('Support for JPEG format is missing.', 'nggallery'); + } else { + if ($height == null) { + $height = (int) round($width / $dimensions_ratio); + if ($height == $dimensions[1] - 1) { + $height = $dimensions[1]; + } } - break; - case 'PNG': - if (function_exists('ImageCreateFromPng')) { - $this->oldImage = @ImageCreateFromPng($this->fileName); + } + if ($width > $dimensions[0]) { + $width = $dimensions[0]; + } + if ($height > $dimensions[1]) { + $height = $dimensions[1]; + } + $image_format = $dimensions[2]; + if ($type != null) { + if (is_string($type)) { + $type = strtolower($type); + // Indexes in the $format_list array correspond to IMAGETYPE_XXX values appropriately + if (($index = array_search($type, $format_list)) !== false) { + $type = $index; + if ($type != $image_format) { + // Note: this only changes the FORMAT of the image but not the extension + $clone_format = $type; + } + } + } + } + } + if ($width == null || $height == null) { + // Something went wrong... + return null; + } + $result['clone_path'] = $clone_path; + $result['clone_directory'] = $clone_dir; + $result['clone_suffix'] = $clone_suffix; + $result['clone_format'] = $clone_format; + $result['base_width'] = $dimensions[0]; + $result['base_height'] = $dimensions[1]; + // image_resize() has limitations: + // - no easy crop frame support + // - fails if the dimensions are unchanged + // - doesn't support filename prefix, only suffix so names like thumbs_original_name.jpg for $clone_path are not supported + // also suffix cannot be null as that will make WordPress use a default suffix...we could use an object that returns empty string from __toString() but for now just fallback to ngg generator + if (FALSE) { + // disabling the WordPress method for Iteration #6 + // if (($crop_frame == null || !$crop) && ($dimensions[0] != $width && $dimensions[1] != $height) && $clone_suffix != null) + $result['method'] = 'wordpress'; + $new_dims = image_resize_dimensions($dimensions[0], $dimensions[1], $width, $height, $crop); + if ($new_dims) { + list($dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) = $new_dims; + $width = $dst_w; + $height = $dst_h; + } else { + $result['error'] = new WP_Error('error_getting_dimensions', __('Could not calculate resized image dimensions')); + } + } else { + $result['method'] = 'nextgen'; + $original_width = $dimensions[0]; + $original_height = $dimensions[1]; + $aspect_ratio = $width / $height; + $orig_ratio_x = $original_width / $width; + $orig_ratio_y = $original_height / $height; + if ($crop) { + $algo = 'shrink'; + // either 'adapt' or 'shrink' + if ($crop_frame != null) { + $crop_x = (int) round($crop_frame['x']); + $crop_y = (int) round($crop_frame['y']); + $crop_width = (int) round($crop_frame['width']); + $crop_height = (int) round($crop_frame['height']); + $crop_final_width = (int) round($crop_frame['final_width']); + $crop_final_height = (int) round($crop_frame['final_height']); + $crop_width_orig = $crop_width; + $crop_height_orig = $crop_height; + $crop_factor_x = $crop_width / $crop_final_width; + $crop_factor_y = $crop_height / $crop_final_height; + $crop_ratio_x = $crop_width / $width; + $crop_ratio_y = $crop_height / $height; + if ($algo == 'adapt') { + // XXX not sure about this...don't use for now + # $crop_width = (int) round($width * $crop_factor_x); + # $crop_height = (int) round($height * $crop_factor_y); + } else { + if ($algo == 'shrink') { + if ($crop_ratio_x < $crop_ratio_y) { + $crop_width = max($crop_width, $width); + $crop_height = (int) round($crop_width / $aspect_ratio); + } else { + $crop_height = max($crop_height, $height); + $crop_width = (int) round($crop_height * $aspect_ratio); + } + if ($crop_width == $crop_width_orig - 1) { + $crop_width = $crop_width_orig; + } + if ($crop_height == $crop_height_orig - 1) { + $crop_height = $crop_height_orig; + } + } + } + $crop_diff_x = (int) round(($crop_width_orig - $crop_width) / 2); + $crop_diff_y = (int) round(($crop_height_orig - $crop_height) / 2); + $crop_x += $crop_diff_x; + $crop_y += $crop_diff_y; + $crop_max_x = $crop_x + $crop_width; + $crop_max_y = $crop_y + $crop_height; + // Check if we're overflowing borders + // + if ($crop_x < 0) { + $crop_x = 0; + } else { + if ($crop_max_x > $original_width) { + $crop_x -= $crop_max_x - $original_width; + } + } + if ($crop_y < 0) { + $crop_y = 0; + } else { + if ($crop_max_y > $original_height) { + $crop_y -= $crop_max_y - $original_height; + } + } } else { - $img_err = __('Support for PNG format is missing.', 'nggallery'); + if ($orig_ratio_x < $orig_ratio_y) { + $crop_width = $original_width; + $crop_height = (int) round($height * $orig_ratio_x); + } else { + $crop_height = $original_height; + $crop_width = (int) round($width * $orig_ratio_y); + } + if ($crop_width == $width - 1) { + $crop_width = $width; + } + if ($crop_height == $height - 1) { + $crop_height = $height; + } + $crop_x = (int) round(($original_width - $crop_width) / 2); + $crop_y = (int) round(($original_height - $crop_height) / 2); } - break; + $result['crop_area'] = array('x' => $crop_x, 'y' => $crop_y, 'width' => $crop_width, 'height' => $crop_height); + } else { + // Just constraint dimensions to ensure there's no stretching or deformations + list($width, $height) = wp_constrain_dimensions($original_width, $original_height, $width, $height); + } } - if (!$this->oldImage) { - if ($img_err == null) { - $img_err = __('Check memory limit', 'nggallery'); + $result['width'] = $width; + $result['height'] = $height; + $result['quality'] = $quality; + $real_width = $width; + $real_height = $height; + if ($rotation && in_array(abs($rotation), array(90, 270))) { + $real_width = $height; + $real_height = $width; + } + if ($reflection) { + // default for nextgen was 40%, this is used in generate_image_clone as well + $reflection_amount = 40; + // Note, round() would probably be best here but using the same code that C_NggLegacy_Thumbnail uses for compatibility + $reflection_height = intval($real_height * ($reflection_amount / 100)); + $real_height = $real_height + $reflection_height; + } + $result['real_width'] = $real_width; + $result['real_height'] = $real_height; + } + return $result; + } + /** + * Generates a specific size for an image + * @param int|object|C_Image $image + * @param string $size + * @param array|null $params (optional) + * @param bool $skip_defaults (optional) + * @return bool|object + */ + function generate_image_size($image, $size, $params = null, $skip_defaults = false) + { + $retval = FALSE; + // Get the image entity + if (is_numeric($image)) { + $image = $this->object->_image_mapper->find($image); + } + // Ensure we have a valid image + if ($image) { + $params = $this->object->get_image_size_params($image, $size, $params, $skip_defaults); + $settings = C_NextGen_Settings::get_instance(); + // Get the image filename + $filename = $this->object->get_original_abspath($image, 'original'); + $thumbnail = null; + if ($size == 'full' && $settings->imgBackup == 1) { + // XXX change this? 'full' should be the resized path and 'original' the _backup path + $backup_path = $this->object->get_backup_abspath($image); + if (!@file_exists($backup_path)) { + @copy($filename, $backup_path); + } + } + // Generate the thumbnail using WordPress + $existing_image_abpath = $this->object->get_image_abspath($image, $size); + $existing_image_dir = dirname($existing_image_abpath); + wp_mkdir_p($existing_image_dir); + $clone_path = $existing_image_abpath; + $thumbnail = $this->object->generate_image_clone($filename, $clone_path, $params); + // We successfully generated the thumbnail + if ($thumbnail != null) { + $clone_path = $thumbnail->fileName; + if (function_exists('getimagesize')) { + $dimensions = getimagesize($clone_path); + } else { + $dimensions = array($params['width'], $params['height']); + } + if (!isset($image->meta_data)) { + $image->meta_data = array(); + } + $size_meta = array('width' => $dimensions[0], 'height' => $dimensions[1], 'filename' => M_I18n::mb_basename($clone_path), 'generated' => microtime()); + if (isset($params['crop_frame'])) { + $size_meta['crop_frame'] = $params['crop_frame']; + } + $image->meta_data[$size] = $size_meta; + if ($size == 'full') { + $image->meta_data['width'] = $size_meta['width']; + $image->meta_data['height'] = $size_meta['height']; + } + $retval = $this->object->_image_mapper->save($image); + do_action('ngg_generated_image', $image, $size, $params); + if ($retval == 0) { + $retval = false; + } + if ($retval) { + $retval = $thumbnail; } - $this->errmsg = sprintf(__('Create Image failed. %1$s', 'nggallery'), $img_err); - $this->error = true; } else { - $this->currentDimensions = array('width' => $image_size[0], 'height' => $image_size[1]); - $this->newImage = $this->oldImage; + // Something went wrong. Thumbnail generation failed! } } - if ($this->error == true) { - if (!$no_ErrorImage) { - $this->showErrorImage(); - } - return; + return $retval; + } + function generate_resized_image($image, $save = TRUE) + { + $image_abspath = $this->object->get_image_abspath($image, 'full'); + $generated = $this->object->generate_image_clone($image_abspath, $image_abspath, $this->object->get_image_size_params($image, 'full')); + if ($generated && $save) { + $this->object->update_image_dimension_metadata($image, $image_abspath); } } - /** - * Calculate the memory limit - * @param string $filename - * - */ - function checkMemoryForImage($filename) + public function update_image_dimension_metadata($image, $image_abspath) { - $imageInfo = getimagesize($filename); - switch ($this->format) { - case 'GIF': - // measured factor 1 is better - $CHANNEL = 1; - break; - case 'JPG': - $CHANNEL = $imageInfo['channels']; - break; - case 'PNG': - // didn't get the channel for png - $CHANNEL = 3; - break; + // Ensure that fullsize dimensions are added to metadata array + $dimensions = getimagesize($image_abspath); + $full_meta = array('width' => $dimensions[0], 'height' => $dimensions[1], 'md5' => $this->object->get_image_checksum($image, 'full')); + if (!isset($image->meta_data) or is_string($image->meta_data) && strlen($image->meta_data) == 0 or is_bool($image->meta_data)) { + $image->meta_data = array(); } - $bits = !empty($imageInfo['bits']) ? $imageInfo['bits'] : 32; - // imgInfo[bits] is not always available - return $this->checkMemoryForData($imageInfo[0], $imageInfo[1], $CHANNEL, $bits); + $image->meta_data = array_merge($image->meta_data, $full_meta); + $image->meta_data['full'] = $full_meta; + // Don't forget to append the 'full' entry in meta_data in the db + $this->object->_image_mapper->save($image); } - function checkMemoryForData($width, $height, $channels = null, $bits = null) + /** + * Most major browsers do not honor the Orientation meta found in EXIF. To prevent display issues we inspect + * the EXIF data and rotate the image so that the EXIF field is not necessary to display the image correctly. + * Note: generate_image_clone() will handle the removal of the Orientation tag inside the image EXIF. + * Note: This only handles single-dimension rotation; at the time this method was written there are no known + * camera manufacturers that both rotate and flip images. + * @param $image + * @param bool $save + */ + public function correct_exif_rotation($image, $save = TRUE) { - $imageInfo = getimagesize($this->fileName); - if ($channels == null) { - switch ($this->format) { - case 'GIF': - // measured factor 1 is better - $channels = 1; - break; - case 'JPG': - $channels = $imageInfo['channels']; - break; - case 'PNG': - // didn't get the channel for png - $channels = 3; - break; - } + $image_abspath = $this->object->get_image_abspath($image, 'full'); + // This method is necessary + if (!function_exists('exif_read_data')) { + return; } - if ($bits == null) { - $bits = !empty($imageInfo['bits']) ? $imageInfo['bits'] : 32; + // We only need to continue if the Orientation tag is set + $exif = @exif_read_data($image_abspath, 'exif'); + if (empty($exif['Orientation']) || $exif['Orientation'] == 1) { + return; } - // imgInfo[bits] is not always available - if (function_exists('memory_get_usage') && ini_get('memory_limit')) { - $MB = 1048576; - // number of bytes in 1M - $K64 = 65536; - // number of bytes in 64K - $TWEAKFACTOR = 1.68; - // Or whatever works for you - $memoryNeeded = round((doubleval($width * $height * $bits * $channels) / 8 + $K64) * $TWEAKFACTOR); - $memoryNeeded = memory_get_usage() + $memoryNeeded; - // get memory limit - $memory_limit = ini_get('memory_limit'); - // PHP docs : Note that to have no memory limit, set this directive to -1. - if ($memory_limit == -1) { - return true; - } - // Just check megabyte limits, not higher - if (strtolower(substr($memory_limit, -1)) == 'm') { - if ($memory_limit != '') { - $memory_limit = intval(substr($memory_limit, 0, -1)) * 1024 * 1024; - } - if ($memoryNeeded > $memory_limit) { - $memoryNeeded = round($memoryNeeded / 1024 / 1024, 2); - $this->errmsg = 'Exceed Memory limit. Require : ' . $memoryNeeded . " MByte"; - $this->error = true; - return false; - } - } + $degree = 0; + if ($exif['Orientation'] == 3) { + $degree = 180; + } + if ($exif['Orientation'] == 6) { + $degree = 90; + } + if ($exif['Orientation'] == 8) { + $degree = 270; + } + $parameters = array('rotation' => $degree); + $generated = $this->object->generate_image_clone($image_abspath, $image_abspath, $this->object->get_image_size_params($image, 'full', $parameters), $parameters); + if ($generated && $save) { + $this->object->update_image_dimension_metadata($image, $image_abspath); } - return true; - } - function __destruct() - { - $this->destruct(); } /** - * Must be called to free up allocated memory after all manipulations are done - * + * Generates a thumbnail for an image + * @param int|stdClass|C_Image $image + * @return bool */ - function destruct() + function generate_thumbnail($image, $params = null, $skip_defaults = false) { - if (is_resource($this->newImage)) { - @ImageDestroy($this->newImage); - } - if (is_resource($this->oldImage)) { - @ImageDestroy($this->oldImage); - } - if (is_resource($this->workingImage)) { - @ImageDestroy($this->workingImage); + $sized_image = $this->object->generate_image_size($image, 'thumbnail', $params, $skip_defaults); + $retval = false; + if ($sized_image != null) { + $retval = true; + $sized_image->destruct(); } + return $retval; } +} +/** + * Provides getter methods to C_Gallery_Storage for determining absolute paths, URL, etc + */ +class Mixin_GalleryStorage_Base_Getters extends Mixin +{ + static $gallery_abspath_cache = array(); + static $image_abspath_cache = array(); + static $image_url_cache = array(); /** - * Returns the current width of the image - * - * @return int + * Flushes the cache we use for path/url calculation for images */ - function getCurrentWidth() + function flush_image_path_cache($image, $size) { - return $this->currentDimensions['width']; + $image = is_numeric($image) ? $image : $image->pid; + $key = strval($image) . $size; + unset(self::$image_abspath_cache[$key]); + unset(self::$image_url_cache[$key]); } /** - * Returns the current height of the image - * - * @return int + * Flushes the cache we use for path/url calculation for galleries */ - function getCurrentHeight() + function flush_gallery_path_cache($gallery) { - return $this->currentDimensions['height']; + $gallery = is_numeric($gallery) ? $gallery : $gallery->gid; + unset(self::$gallery_abspath_cache[$gallery]); } /** - * Calculates new image width - * - * @param int $width - * @param int $height - * @return array + * Gets the id of an image, regardless of whether an integer + * or object was passed as an argument + * @param object|int $image_obj_or_id + * @return null|int */ - function calcWidth($width, $height) + function _get_image_id($image_obj_or_id) { - $newWp = 100 * $this->maxWidth / $width; - $newHeight = $height * $newWp / 100; - if (intval($newHeight) == $this->maxHeight - 1) { - $newHeight = $this->maxHeight; + $retval = NULL; + $image_key = $this->object->_image_mapper->get_primary_key_column(); + if (is_object($image_obj_or_id)) { + if (isset($image_obj_or_id->{$image_key})) { + $retval = $image_obj_or_id->{$image_key}; + } + } elseif (is_numeric($image_obj_or_id)) { + $retval = $image_obj_or_id; } - return array('newWidth' => intval($this->maxWidth), 'newHeight' => intval($newHeight)); + return $retval; } /** - * Calculates new image height - * - * @param int $width - * @param int $height - * @return array + * Gets the absolute path of the backup of an original image + * @param string $image + * @return null|string */ - function calcHeight($width, $height) + function get_backup_abspath($image) { - $newHp = 100 * $this->maxHeight / $height; - $newWidth = $width * $newHp / 100; - if (intval($newWidth) == $this->maxWidth - 1) { - $newWidth = $this->maxWidth; + $retval = null; + if ($image_path = $this->object->get_image_abspath($image)) { + $retval = $image_path . '_backup'; } - return array('newWidth' => intval($newWidth), 'newHeight' => intval($this->maxHeight)); + return $retval; + } + function get_backup_dimensions($image) + { + return $this->object->get_image_dimensions($image, 'backup'); + } + function get_backup_url($image) + { + return $this->object->get_image_url($image, 'backup'); } /** - * Calculates new image size based on percentage + * Returns the absolute path to the cache directory of a gallery. * - * @param int $width - * @param int $height + * Without the gallery parameter the legacy (pre 2.0) shared directory is returned. + * + * @param int|object|false|C_Gallery $gallery (optional) + * @return string Absolute path to cache directory + */ + function get_cache_abspath($gallery = FALSE) + { + return path_join($this->object->get_gallery_abspath($gallery), 'cache'); + } + /** + * Gets the absolute path where the full-sized image is stored + * @param int|object $image + * @return null|string + */ + function get_full_abspath($image) + { + return $this->object->get_image_abspath($image, 'full'); + } + /** + * Alias to get_image_dimensions() + * @param int|object $image * @return array */ - function calcPercent($width, $height, $percent = -1) + function get_full_dimensions($image) { - if ($percent == -1) { - $percent = $this->percent; - } - $newWidth = $width * $percent / 100; - $newHeight = $height * $percent / 100; - return array('newWidth' => intval($newWidth), 'newHeight' => intval($newHeight)); + return $this->object->get_image_dimensions($image, 'full'); } /** - * Calculates new image size based on width and height, while constraining to maxWidth and maxHeight + * Alias to get_image_html() + * @param int|object $image + * @return string + */ + function get_full_html($image) + { + return $this->object->get_image_html($image, 'full'); + } + /** + * Alias for get_original_url() * - * @param int $width - * @param int $height + * @param int|stdClass|C_Image $image + * @return string */ - function calcImageSize($width, $height) + function get_full_url($image) { - // $width and $height are the CURRENT image resolutions - $ratio_w = $this->maxWidth / $width; - $ratio_h = $this->maxHeight / $height; - if ($ratio_w >= $ratio_h) { - $width = $this->maxWidth; - $height = (int) round($height * $ratio_h, 0); - } else { - $height = $this->maxHeight; - $width = (int) round($width * $ratio_w, 0); + return $this->object->get_image_url($image, 'full'); + } + function get_gallery_root() + { + return wp_normalize_path(NGG_GALLERY_ROOT_TYPE == 'content' ? WP_CONTENT_DIR : ABSPATH); + } + function _get_computed_gallery_abspath($gallery) + { + $retval = NULL; + $gallery_root = $this->get_gallery_root(); + // Get the gallery entity from the database + if ($gallery) { + if (is_numeric($gallery)) { + $gallery = $this->object->_gallery_mapper->find($gallery); + } } - $this->newDimensions = array('newWidth' => $width, 'newHeight' => $height); + // It just doesn't exist + if (!$gallery) { + return $retval; + } + // We we have a gallery, determine it's path + if ($gallery) { + if (isset($gallery->path)) { + $retval = $gallery->path; + } elseif (isset($gallery->slug)) { + $basepath = wp_normalize_path(C_NextGen_Settings::get_instance()->gallerypath); + $retval = path_join($basepath, $this->object->sanitize_directory_name(sanitize_title($gallery->slug))); + } + // Normalize the gallery path. If the gallery path starts with /wp-content, and + // NGG_GALLERY_ROOT_TYPE is set to 'content', then we need to strip out the /wp-content + // from the start of the gallery path + if (NGG_GALLERY_ROOT_TYPE === 'content') { + $retval = preg_replace("#^/?wp-content#", "", $retval); + } + // Ensure that the path is absolute + if (strpos($retval, $gallery_root) !== 0) { + // path_join() behaves funny - if the second argument starts with a slash, + // it won't join the two paths together + $retval = preg_replace("#^/#", "", $retval); + $retval = path_join($gallery_root, $retval); + } + $retval = wp_normalize_path($retval); + } + return $retval; } /** - * Calculates new image size based percentage - * - * @param int $width - * @param int $height + * Get the abspath to the gallery folder for the given gallery + * The gallery may or may not already be persisted + * @param int|object|C_Gallery $gallery + * @return string */ - function calcImageSizePercent($width, $height) + function get_gallery_abspath($gallery) { - if ($this->percent > 0) { - $this->newDimensions = $this->calcPercent($width, $height); + $gallery_id = is_numeric($gallery) ? $gallery : (is_object($gallery) && isset($gallery->gid) ? $gallery->gid : NULL); + if (!$gallery_id || !isset(self::$gallery_abspath_cache[$gallery_id])) { + self::$gallery_abspath_cache[$gallery_id] = $this->object->_get_computed_gallery_abspath($gallery); } + return self::$gallery_abspath_cache[$gallery_id]; } - /** - * Displays error image - * - */ - function showErrorImage() + function get_gallery_relpath($gallery) { - header('Content-type: image/png'); - $errImg = ImageCreate(220, 25); - $bgColor = imagecolorallocate($errImg, 0, 0, 0); - $fgColor1 = imagecolorallocate($errImg, 255, 255, 255); - $fgColor2 = imagecolorallocate($errImg, 255, 0, 0); - imagestring($errImg, 3, 6, 6, 'Error:', $fgColor2); - imagestring($errImg, 3, 55, 6, $this->errmsg, $fgColor1); - imagepng($errImg); - imagedestroy($errImg); + return str_replace($this->object->get_gallery_root(), '', $this->get_gallery_abspath($gallery)); } /** - * Resizes image to fixed Width x Height - * - * @param int $Width - * @param int $Height - * @param int $deprecated Unused + * Gets the absolute path where the image is stored. Can optionally return the path for a particular sized image. + * @param int|object $image + * @param string $size (optional) Default = full + * @return string */ - function resizeFix($Width = 0, $Height = 0, $deprecated = 3) + function _get_computed_image_abspath($image, $size = 'full', $check_existance = FALSE) { - if (!$this->checkMemoryForData($Width, $Height)) { - return; + $retval = NULL; + $fs = C_Fs::get_instance(); + // If we have the id, get the actual image entity + if (is_numeric($image)) { + $image = $this->object->_image_mapper->find($image); } - $this->newWidth = $Width; - $this->newHeight = $Height; - if (function_exists("ImageCreateTrueColor")) { - $this->workingImage = ImageCreateTrueColor($this->newWidth, $this->newHeight); - } else { - $this->workingImage = ImageCreate($this->newWidth, $this->newHeight); + // Ensure we have the image entity - user could have passed in an + // incorrect id + if (is_object($image)) { + if ($gallery_path = $this->object->get_gallery_abspath($image->galleryid)) { + $folder = $prefix = $size; + switch ($size) { + # Images are stored in the associated gallery folder + case 'full': + $retval = path_join($gallery_path, $image->filename); + break; + case 'backup': + $retval = path_join($gallery_path, $image->filename . '_backup'); + if (!@file_exists($retval)) { + $retval = path_join($gallery_path, $image->filename); + } + break; + case 'thumbnail': + $size = 'thumbnail'; + $folder = 'thumbs'; + $prefix = 'thumbs'; + // deliberately no break here + // deliberately no break here + default: + // NGG 2.0 stores relative filenames in the meta data of + // an image. It does this because it uses filenames + // that follow conventional WordPress naming scheme. + $image_path = NULL; + $dynthumbs = C_Dynamic_Thumbnails_Manager::get_instance(); + if (isset($image->meta_data) && isset($image->meta_data[$size]) && isset($image->meta_data[$size]['filename'])) { + if ($dynthumbs && $dynthumbs->is_size_dynamic($size)) { + $image_path = path_join($this->object->get_cache_abspath($image->galleryid), $image->meta_data[$size]['filename']); + } else { + $image_path = path_join($gallery_path, $folder); + $image_path = path_join($image_path, $image->meta_data[$size]['filename']); + } + } else { + if ($dynthumbs && $dynthumbs->is_size_dynamic($size)) { + $params = $dynthumbs->get_params_from_name($size, true); + $image_path = path_join($this->object->get_cache_abspath($image->galleryid), $dynthumbs->get_image_name($image, $params)); + // Filename is not found in meta, nor dynamic + } else { + $image_path = path_join($gallery_path, $folder); + $image_path = path_join($image_path, "{$prefix}_{$image->filename}"); + } + } + $retval = $image_path; + break; + } + } } - // ImageCopyResampled( - $this->imagecopyresampled($this->workingImage, $this->oldImage, 0, 0, 0, 0, $this->newWidth, $this->newHeight, $this->currentDimensions['width'], $this->currentDimensions['height']); - $this->oldImage = $this->workingImage; - $this->newImage = $this->workingImage; - $this->currentDimensions['width'] = $this->newWidth; - $this->currentDimensions['height'] = $this->newHeight; + if ($retval && $check_existance && !@file_exists($retval)) { + $retval = NULL; + } + return $retval; } /** - * Resizes image to maxWidth x maxHeight - * - * @param int $maxWidth - * @param int $maxHeight - * @param int $deprecated Unused + * Gets the absolute path where the image is stored. Can optionally return the path for a particular sized image. + * @param int|object $image + * @param string $size (optional) Default = full + * @param bool $check_existance (optional) Default = false + * @return string */ - function resize($maxWidth = 0, $maxHeight = 0, $deprecated = 3) + function get_image_abspath($image, $size = 'full', $check_existance = FALSE) { - if (!$this->checkMemoryForData($maxWidth, $maxHeight)) { - return; - } - $this->maxWidth = $maxWidth; - $this->maxHeight = $maxHeight; - $this->calcImageSize($this->currentDimensions['width'], $this->currentDimensions['height']); - if ($this->workingImage != null && $this->workingImage != $this->oldImage) { - ImageDestroy($this->workingImage); - $this->workingImage = null; + $image_id = is_numeric($image) ? $image : $image->pid; + $size = $this->object->normalize_image_size_name($size); + $key = strval($image_id) . $size; + if ($check_existance || !isset(self::$image_abspath_cache[$key])) { + $retval = $this->object->_get_computed_image_abspath($image, $size, $check_existance); + self::$image_abspath_cache[$key] = $retval; } - if (function_exists("ImageCreateTrueColor")) { - $this->workingImage = ImageCreateTrueColor($this->newDimensions['newWidth'], $this->newDimensions['newHeight']); - } else { - $this->workingImage = ImageCreate($this->newDimensions['newWidth'], $this->newDimensions['newHeight']); + $retval = self::$image_abspath_cache[$key]; + return $retval; + } + function get_image_checksum($image, $size = 'full') + { + $retval = NULL; + if ($image_abspath = $this->get_image_abspath($image, $size, TRUE)) { + $retval = md5_file($image_abspath); } - // ImageCopyResampled( - $this->imagecopyresampled($this->workingImage, $this->oldImage, 0, 0, 0, 0, $this->newDimensions['newWidth'], $this->newDimensions['newHeight'], $this->currentDimensions['width'], $this->currentDimensions['height']); - ImageDestroy($this->oldImage); - $this->oldImage = $this->workingImage; - $this->newImage = $this->workingImage; - $this->currentDimensions['width'] = $this->newDimensions['newWidth']; - $this->currentDimensions['height'] = $this->newDimensions['newHeight']; + return $retval; } /** - * Resizes the image by $percent percent + * Gets the dimensions for a particular-sized image * - * @param int $percent + * @param int|object $image + * @param string $size + * @return null|array */ - function resizePercent($percent = 0) + function get_image_dimensions($image, $size = 'full') { - $dims = $this->calcPercent($this->currentDimensions['width'], $this->currentDimensions['height'], $percent); - if (!$this->checkMemoryForData($dims['newWidth'], $dims['newHeight'])) { - return; + $retval = NULL; + // If an image id was provided, get the entity + if (is_numeric($image)) { + $image = $this->object->_image_mapper->find($image); } - $this->percent = $percent; - $this->calcImageSizePercent($this->currentDimensions['width'], $this->currentDimensions['height']); - if (function_exists("ImageCreateTrueColor")) { - $this->workingImage = ImageCreateTrueColor($this->newDimensions['newWidth'], $this->newDimensions['newHeight']); - } else { - $this->workingImage = ImageCreate($this->newDimensions['newWidth'], $this->newDimensions['newHeight']); + // Ensure we have a valid image + if ($image) { + $size = $this->normalize_image_size_name($size); + if (!$size) { + $size = 'full'; + } + // Image dimensions are stored in the $image->meta_data + // property for all implementations + if (isset($image->meta_data) && isset($image->meta_data[$size])) { + $retval = $image->meta_data[$size]; + } else { + $dynthumbs = C_Dynamic_Thumbnails_Manager::get_instance(); + $abspath = $this->object->get_image_abspath($image, $size, TRUE); + if ($abspath) { + $dims = getimagesize($abspath); + if ($dims) { + $retval['width'] = $dims[0]; + $retval['height'] = $dims[1]; + } + } elseif ($size == 'backup') { + $retval = $this->object->get_image_dimensions($image, 'full'); + } else { + if ($dynthumbs && $dynthumbs->is_size_dynamic($size)) { + $new_dims = $this->object->calculate_image_size_dimensions($image, $size); + $retval = array('width' => $new_dims['real_width'], 'height' => $new_dims['real_height']); + } + } + } } - $this->ImageCopyResampled($this->workingImage, $this->oldImage, 0, 0, 0, 0, $this->newDimensions['newWidth'], $this->newDimensions['newHeight'], $this->currentDimensions['width'], $this->currentDimensions['height']); - $this->oldImage = $this->workingImage; - $this->newImage = $this->workingImage; - $this->currentDimensions['width'] = $this->newDimensions['newWidth']; - $this->currentDimensions['height'] = $this->newDimensions['newHeight']; + return $retval; + } + function get_image_format_list() + { + $format_list = array(IMAGETYPE_GIF => 'gif', IMAGETYPE_JPEG => 'jpg', IMAGETYPE_PNG => 'png'); + return $format_list; } /** - * Crops the image from calculated center in a square of $cropSize pixels - * - * @param int $cropSize + * Gets the HTML for an image + * @param int|object $image + * @param string $size + * @param array $attributes (optional) + * @return string */ - function cropFromCenter($cropSize) + function get_image_html($image, $size = 'full', $attributes = array()) { - if ($cropSize > $this->currentDimensions['width']) { - $cropSize = $this->currentDimensions['width']; + $retval = ""; + if (is_numeric($image)) { + $image = $this->object->_image_mapper->find($image); } - if ($cropSize > $this->currentDimensions['height']) { - $cropSize = $this->currentDimensions['height']; + if ($image) { + // Set alt text if not already specified + if (!isset($attributes['alttext'])) { + $attributes['alt'] = esc_attr($image->alttext); + } + // Set the title if not already set + if (!isset($attributes['title'])) { + $attributes['title'] = esc_attr($image->alttext); + } + // Set the dimensions if not set already + if (!isset($attributes['width']) or !isset($attributes['height'])) { + $dimensions = $this->object->get_image_dimensions($image, $size); + if (!isset($attributes['width'])) { + $attributes['width'] = $dimensions['width']; + } + if (!isset($attributes['height'])) { + $attributes['height'] = $dimensions['height']; + } + } + // Set the url if not already specified + if (!isset($attributes['src'])) { + $attributes['src'] = $this->object->get_image_url($image, $size); + } + // Format attributes + $attribs = array(); + foreach ($attributes as $attrib => $value) { + $attribs[] = "{$attrib}=\"{$value}\""; + } + $attribs = implode(" ", $attribs); + // Return HTML string + $retval = "<img {$attribs} />"; } - $cropX = intval(($this->currentDimensions['width'] - $cropSize) / 2); - $cropY = intval(($this->currentDimensions['height'] - $cropSize) / 2); - if ($this->workingImage != null && $this->workingImage != $this->oldImage) { - ImageDestroy($this->workingImage); - $this->workingImage = null; + return $retval; + } + function _get_computed_image_url($image, $size = 'full') + { + $retval = NULL; + $dynthumbs = C_Dynamic_Thumbnails_Manager::get_instance(); + // Get the image abspath + $image_abspath = $this->object->get_image_abspath($image, $size); + if ($dynthumbs->is_size_dynamic($size) && !file_exists($image_abspath)) { + $params = array('watermark' => false, 'reflection' => false, 'crop' => true); + $result = $this->generate_image_size($image, $size, $params); + if ($result) { + $image_abspath = $this->object->get_image_abspath($image, $size); + } + } + // Assuming we have an abspath, we can translate that to a url + if ($image_abspath) { + // Replace the gallery root with the proper url segment + $gallery_root = preg_quote($this->get_gallery_root(), '#'); + $image_uri = preg_replace("#^{$gallery_root}#", "", $image_abspath); + // Url encode each uri segment + $segments = explode("/", $image_uri); + $segments = array_map('rawurlencode', $segments); + $image_uri = preg_replace("#^/#", "", implode("/", $segments)); + // Join gallery root and image uri + $gallery_root = trailingslashit(NGG_GALLERY_ROOT_TYPE == 'site' ? site_url() : WP_CONTENT_URL); + $gallery_root = is_ssl() ? str_replace('http:', 'https:', $gallery_root) : $gallery_root; + $retval = $gallery_root . $image_uri; } - if (function_exists("ImageCreateTrueColor")) { - $this->workingImage = ImageCreateTrueColor($cropSize, $cropSize); - } else { - $this->workingImage = ImageCreate($cropSize, $cropSize); + return $retval; + } + function normalize_image_size_name($size = 'full') + { + switch ($size) { + case 'full': + case 'original': + case 'image': + case 'orig': + case 'resized': + $size = 'full'; + break; + case 'thumbnails': + case 'thumbnail': + case 'thumb': + case 'thumbs': + $size = 'thumbnail'; + break; } - $this->imagecopyresampled($this->workingImage, $this->oldImage, 0, 0, $cropX, $cropY, $cropSize, $cropSize, $cropSize, $cropSize); - $this->oldImage = $this->workingImage; - $this->newImage = $this->workingImage; - $this->currentDimensions['width'] = $cropSize; - $this->currentDimensions['height'] = $cropSize; + return $size; } /** - * Advanced cropping function that crops an image using $startX and $startY as the upper-left hand corner. - * - * @param int $startX - * @param int $startY - * @param int $width - * @param int $height + * Gets the url of a particular-sized image + * @param int|object $image + * @param string $size + * @return string */ - function crop($startX, $startY, $width, $height) + function get_image_url($image, $size = 'full') { - if (!$this->checkMemoryForData($width, $height)) { - return; - } - //make sure the cropped area is not greater than the size of the image - if ($width > $this->currentDimensions['width']) { - $width = $this->currentDimensions['width']; - } - if ($height > $this->currentDimensions['height']) { - $height = $this->currentDimensions['height']; - } - //make sure not starting outside the image - if ($startX + $width > $this->currentDimensions['width']) { - $startX = $this->currentDimensions['width'] - $width; - } - if ($startY + $height > $this->currentDimensions['height']) { - $startY = $this->currentDimensions['height'] - $height; - } - if ($startX < 0) { - $startX = 0; - } - if ($startY < 0) { - $startY = 0; - } - if ($this->workingImage != null && $this->workingImage != $this->oldImage) { - ImageDestroy($this->workingImage); - $this->workingImage = null; - } - if (function_exists("ImageCreateTrueColor")) { - $this->workingImage = ImageCreateTrueColor($width, $height); - } else { - $this->workingImage = ImageCreate($width, $height); + $retval = NULL; + $image_id = is_numeric($image) ? $image : $image->pid; + $key = strval($image_id) . $size; + if (!isset(self::$image_url_cache[$key])) { + self::$image_url_cache[$key] = $this->object->_get_computed_image_url($image, $size); } - $this->imagecopyresampled($this->workingImage, $this->oldImage, 0, 0, $startX, $startY, $width, $height, $width, $height); - ImageDestroy($this->oldImage); - $this->oldImage = $this->workingImage; - $this->newImage = $this->workingImage; - $this->currentDimensions['width'] = $width; - $this->currentDimensions['height'] = $height; + $retval = self::$image_url_cache[$key]; + return apply_filters('ngg_get_image_url', $retval, $image, $size); } /** - * Outputs the image to the screen, or saves to $name if supplied. Quality of JPEG images can be controlled with the $quality variable - * - * @param int $quality - * @param string $name + * Returns the named sizes available for images + * @return array */ - function show($quality = 100, $name = '') + function get_image_sizes($image = FALSE) { - switch ($this->format) { - case 'GIF': - if ($name != '') { - @ImageGif($this->newImage, $name) or $this->error = true; - } else { - header('Content-type: image/gif'); - ImageGif($this->newImage); + $retval = array('full', 'thumbnail'); + if (is_numeric($image)) { + $image = C_Image_Mapper::get_instance()->find($image); + } + if ($image) { + if ($image->meta_data) { + $meta_data = is_object($image->meta_data) ? get_object_vars($image->meta_data) : $image->meta_data; + foreach ($meta_data as $key => $value) { + if (is_array($value) && isset($value['width'])) { + $retval[] = $key; + } } - break; - case 'JPG': - if ($name != '') { - @ImageJpeg($this->newImage, $name, $quality) or $this->error = true; + } + } + return $retval; + } + function get_image_size_params($image, $size, $params = array(), $skip_defaults = false) + { + // Get the image entity + if (is_numeric($image)) { + $image = $this->object->_image_mapper->find($image); + } + $dynthumbs = C_Dynamic_Thumbnails_Manager::get_instance(); + if ($dynthumbs && $dynthumbs->is_size_dynamic($size)) { + $named_params = $dynthumbs->get_params_from_name($size, true); + if (!$params) { + $params = array(); + } + $params = array_merge($params, $named_params); + } + $params = apply_filters('ngg_get_image_size_params', $params, $size, $image); + // Ensure we have a valid image + if ($image) { + $settings = C_NextGen_Settings::get_instance(); + if (!$skip_defaults) { + // Get default settings + if ($size == 'full') { + if (!isset($params['quality'])) { + $params['quality'] = $settings->imgQuality; + } } else { - header('Content-type: image/jpeg'); - ImageJpeg($this->newImage, NULL, $quality); + if (!isset($params['crop'])) { + $params['crop'] = $settings->thumbfix; + } + if (!isset($params['quality'])) { + $params['quality'] = $settings->thumbquality; + } } - break; - case 'PNG': - if ($name != '') { - @ImagePng($this->newImage, $name) or $this->error = true; + } + // width and height when omitted make generate_image_clone create a clone with original size, so try find defaults regardless of $skip_defaults + if (!isset($params['width']) || !isset($params['height'])) { + // First test if this is a "known" image size, i.e. if we store these sizes somewhere when users re-generate these sizes from the UI...this is required to be compatible with legacy + // try the 2 default built-in sizes, first thumbnail... + if ($size == 'thumbnail') { + if (!isset($params['width'])) { + $params['width'] = $settings->thumbwidth; + } + if (!isset($params['height'])) { + $params['height'] = $settings->thumbheight; + } } else { - header('Content-type: image/png'); - ImagePng($this->newImage); + if ($size == 'full') { + if (!isset($params['width'])) { + if ($settings->imgAutoResize) { + $params['width'] = $settings->imgWidth; + } + } + if (!isset($params['height'])) { + if ($settings->imgAutoResize) { + $params['height'] = $settings->imgHeight; + } + } + } else { + if (isset($image->meta_data) && isset($image->meta_data[$size])) { + $dimensions = $image->meta_data[$size]; + if (!isset($params['width'])) { + $params['width'] = $dimensions['width']; + } + if (!isset($params['height'])) { + $params['height'] = $dimensions['height']; + } + } + } } - break; + } + if (!isset($params['crop_frame'])) { + $crop_frame_size_name = 'thumbnail'; + if (isset($image->meta_data[$size]['crop_frame'])) { + $crop_frame_size_name = $size; + } + if (isset($image->meta_data[$crop_frame_size_name]['crop_frame'])) { + $params['crop_frame'] = $image->meta_data[$crop_frame_size_name]['crop_frame']; + if (!isset($params['crop_frame']['final_width'])) { + $params['crop_frame']['final_width'] = $image->meta_data[$crop_frame_size_name]['width']; + } + if (!isset($params['crop_frame']['final_height'])) { + $params['crop_frame']['final_height'] = $image->meta_data[$crop_frame_size_name]['height']; + } + } + } else { + if (!isset($params['crop_frame']['final_width'])) { + $params['crop_frame']['final_width'] = $params['width']; + } + if (!isset($params['crop_frame']['final_height'])) { + $params['crop_frame']['final_height'] = $params['height']; + } + } } + return $params; } /** - * Saves image as $name (can include file path), with quality of # percent if file is a jpeg - * - * @param string $name - * @param int $quality - * @return bool errorstate + * An alias for get_full_abspath() + * @param int|object $image + * @param bool $check_existance + * @return null|string */ - function save($name, $quality = 100) + function get_original_abspath($image, $check_existance = FALSE) { - $this->show($quality, $name); - if ($this->error == true) { - $this->errmsg = 'Create Image failed. Check safe mode settings'; - return false; - } - if (function_exists('do_action')) { - do_action('ngg_ajax_image_save', $name); - } - return true; + return $this->object->get_image_abspath($image, 'full', $check_existance); } /** - * Creates Apple-style reflection under image, optionally adding a border to main image - * - * @param int $percent - * @param int $reflection - * @param int $white - * @param bool $border - * @param string $borderColor + * Alias to get_image_dimensions() + * @param int|object $image + * @return array */ - function createReflection($percent, $reflection, $white, $border = true, $borderColor = '#a4a4a4') - { - $width = $this->currentDimensions['width']; - $height = $this->currentDimensions['height']; - $reflectionHeight = intval($height * ($reflection / 100)); - $newHeight = $height + $reflectionHeight; - $reflectedPart = $height * ($percent / 100); - $this->workingImage = ImageCreateTrueColor($width, $newHeight); - ImageAlphaBlending($this->workingImage, true); - $colorToPaint = ImageColorAllocateAlpha($this->workingImage, 255, 255, 255, 0); - ImageFilledRectangle($this->workingImage, 0, 0, $width, $newHeight, $colorToPaint); - imagecopyresampled($this->workingImage, $this->newImage, 0, 0, 0, $reflectedPart, $width, $reflectionHeight, $width, $height - $reflectedPart); - $this->imageFlipVertical(); - imagecopy($this->workingImage, $this->newImage, 0, 0, 0, 0, $width, $height); - imagealphablending($this->workingImage, true); - for ($i = 0; $i < $reflectionHeight; $i++) { - $colorToPaint = imagecolorallocatealpha($this->workingImage, 255, 255, 255, ($i / $reflectionHeight * -1 + 1) * $white); - imagefilledrectangle($this->workingImage, 0, $height + $i, $width, $height + $i, $colorToPaint); - } - if ($border == true) { - $rgb = $this->hex2rgb($borderColor, false); - $colorToPaint = imagecolorallocate($this->workingImage, $rgb[0], $rgb[1], $rgb[2]); - imageline($this->workingImage, 0, 0, $width, 0, $colorToPaint); - //top line - imageline($this->workingImage, 0, $height, $width, $height, $colorToPaint); - //bottom line - imageline($this->workingImage, 0, 0, 0, $height, $colorToPaint); - //left line - imageline($this->workingImage, $width - 1, 0, $width - 1, $height, $colorToPaint); - //right line - } - $this->oldImage = $this->workingImage; - $this->newImage = $this->workingImage; - $this->currentDimensions['width'] = $width; - $this->currentDimensions['height'] = $newHeight; - } - /** - * Flip an image. - * - * @param bool $horz flip the image in horizontal mode - * @param bool $vert flip the image in vertical mode - * @return true + function get_original_dimensions($image) + { + return $this->object->get_image_dimensions($image, 'full'); + } + /** + * Alias to get_image_html() + * @param int|object $image + * @return string */ - function flipImage($horz = false, $vert = false) + function get_original_html($image) { - $sx = $vert ? $this->currentDimensions['width'] - 1 : 0; - $sy = $horz ? $this->currentDimensions['height'] - 1 : 0; - $sw = $vert ? -$this->currentDimensions['width'] : $this->currentDimensions['width']; - $sh = $horz ? -$this->currentDimensions['height'] : $this->currentDimensions['height']; - $this->workingImage = imagecreatetruecolor($this->currentDimensions['width'], $this->currentDimensions['height']); - $this->imagecopyresampled($this->workingImage, $this->oldImage, 0, 0, $sx, $sy, $this->currentDimensions['width'], $this->currentDimensions['height'], $sw, $sh); - $this->oldImage = $this->workingImage; - $this->newImage = $this->workingImage; - return true; + return $this->object->get_image_html($image, 'full'); } /** - * Rotate an image clockwise or counter clockwise - * - * @param string $dir Either CW or CCW - * @return bool + * Gets the url to the original-sized image + * @param int|stdClass|C_Image $image + * @param bool $check_existance (optional) + * @return string */ - function rotateImage($dir = 'CW') + function get_original_url($image, $check_existance = FALSE) { - $angle = $dir == 'CW' ? 90 : -90; - return $this->rotateImageAngle($angle); + return $this->object->get_image_url($image, 'full', $check_existance); } /** - * Rotate an image clockwise or counter clockwise - * - * @param int $angle Degrees to rotate the target image - * @return bool + * @param object|bool $gallery (optional) + * @return string */ - function rotateImageAngle($angle = 90) + function get_upload_abspath($gallery = FALSE) { - if (function_exists('imagerotate')) { - $this->workingImage = imagerotate($this->oldImage, 360 - $angle, 0); - // imagerotate() rotates CCW - $this->currentDimensions['width'] = imagesx($this->workingImage); - $this->currentDimensions['height'] = imagesy($this->workingImage); - $this->oldImage = $this->workingImage; - $this->newImage = $this->workingImage; - return true; + // Base upload path + $retval = C_NextGen_Settings::get_instance()->gallerypath; + $fs = C_Fs::get_instance(); + // If a gallery has been specified, then we'll + // append the slug + if ($gallery) { + $retval = $this->get_gallery_abspath($gallery); } - $this->workingImage = imagecreatetruecolor($this->currentDimensions['height'], $this->currentDimensions['width']); - imagealphablending($this->workingImage, false); - imagesavealpha($this->workingImage, true); - switch ($angle) { - case 90: - for ($x = 0; $x < $this->currentDimensions['width']; $x++) { - for ($y = 0; $y < $this->currentDimensions['height']; $y++) { - if (!imagecopy($this->workingImage, $this->oldImage, $this->currentDimensions['height'] - $y - 1, $x, $x, $y, 1, 1)) { - return false; - } - } - } - break; - case -90: - for ($x = 0; $x < $this->currentDimensions['width']; $x++) { - for ($y = 0; $y < $this->currentDimensions['height']; $y++) { - if (!imagecopy($this->workingImage, $this->oldImage, $y, $this->currentDimensions['width'] - $x - 1, $x, $y, 1, 1)) { - return false; - } - } - } - break; - default: - return false; + // We need to make this an absolute path + if (strpos($retval, $fs->get_document_root('gallery')) !== 0) { + $retval = rtrim($fs->join_paths($fs->get_document_root('gallery'), $retval), "/\\"); } - $this->currentDimensions['width'] = imagesx($this->workingImage); - $this->currentDimensions['height'] = imagesy($this->workingImage); - $this->oldImage = $this->workingImage; - $this->newImage = $this->workingImage; - return true; + // Convert slashes + return wp_normalize_path($retval); } /** - * Inverts working image, used by reflection function - * - * @access private + * Gets the upload path, optionally for a particular gallery + * @param int|C_Gallery|object|false $gallery (optional) + * @return string */ - function imageFlipVertical() + function get_upload_relpath($gallery = FALSE) { - $x_i = imagesx($this->workingImage); - $y_i = imagesy($this->workingImage); - for ($x = 0; $x < $x_i; $x++) { - for ($y = 0; $y < $y_i; $y++) { - imagecopy($this->workingImage, $this->workingImage, $x, $y_i - $y - 1, $x, $y, 1, 1); - } - } + $fs = C_Fs::get_instance(); + $retval = str_replace($fs->get_document_root('gallery'), '', $this->object->get_upload_abspath($gallery)); + return '/' . wp_normalize_path(ltrim($retval, "/")); } +} +/** + * Provides the basic methods of gallery management to C_Gallery_Storage + */ +class Mixin_GalleryStorage_Base_Management extends Mixin +{ /** - * Converts hexidecimal color value to rgb values and returns as array/string + * Set correct file permissions (taken from wp core). Should be called + * after writing any file * - * @param string $hex - * @param bool $asString - * @return array|string + * @class nggAdmin + * @param string $filename + * @return bool $result */ - function hex2rgb($hex, $asString = false) + function _chmod($filename = '') { - // strip off any leading # - if (0 === strpos($hex, '#')) { - $hex = substr($hex, 1); - } else { - if (0 === strpos($hex, '&H')) { - $hex = substr($hex, 2); + $stat = @stat(dirname($filename)); + $perms = $stat['mode'] & 0666; + // Remove execute bits for files + if (@chmod($filename, $perms)) { + return TRUE; + } + return FALSE; + } + function _delete_gallery_directory($abspath) + { + // Remove all image files and purge all empty directories left over + $iterator = new DirectoryIterator($abspath); + // Only delete image files! Other files may be stored incorrectly but it's not our place to delete them + $removable_extensions = apply_filters('ngg_allowed_file_types', array('jpeg', 'jpg', 'png', 'gif')); + foreach ($removable_extensions as $extension) { + $removable_extensions[] = $extension . '_backup'; + } + foreach ($iterator as $file) { + if (in_array($file->getBasename(), array('.', '..'))) { + continue; + } elseif ($file->isFile() || $file->isLink()) { + $extension = strtolower(pathinfo($file->getPathname(), PATHINFO_EXTENSION)); + if (in_array($extension, $removable_extensions, TRUE)) { + @unlink($file->getPathname()); + } + } elseif ($file->isDir()) { + $this->object->_delete_gallery_directory($file->getPathname()); } } - // break into hex 3-tuple - $cutpoint = ceil(strlen($hex) / 2) - 1; - $rgb = explode(':', wordwrap($hex, $cutpoint, ':', $cutpoint), 3); - // convert each tuple to decimal - $rgb[0] = isset($rgb[0]) ? hexdec($rgb[0]) : 0; - $rgb[1] = isset($rgb[1]) ? hexdec($rgb[1]) : 0; - $rgb[2] = isset($rgb[2]) ? hexdec($rgb[2]) : 0; - return $asString ? "{$rgb[0]} {$rgb[1]} {$rgb[2]}" : $rgb; + // DO NOT remove directories that still have files in them. Note: '.' and '..' are included with getSize() + $empty = TRUE; + foreach ($iterator as $file) { + if (in_array($file->getBasename(), array('.', '..'))) { + continue; + } + $empty = FALSE; + } + if ($empty) { + @rmdir($iterator->getPath()); + } } /** - * Based on the Watermark function by Marek Malcherek - * http://www.malcherek.de + * Backs up an image file * - * @param string $color - * @param string $wmFont - * @param int $wmSize - * @param int $wmOpaque + * @param int|object $image + * @return bool */ - function watermarkCreateText($color = '000000', $wmFont, $wmSize = 10, $wmOpaque = 90) + function backup_image($image, $save = TRUE) { - // set font path - $wmFontPath = NGGALLERY_ABSPATH . "fonts/" . $wmFont; - if (!is_readable($wmFontPath)) { - return; - } - // This function requires both the GD library and the FreeType library. - if (!function_exists('ImageTTFBBox')) { - return; - } - $words = preg_split('/ /', $this->watermarkText); - $lines = array(); - $line = ''; - $watermark_image_width = 0; - // attempt adding a new word until the width is too large; then start a new line and start again - foreach ($words as $word) { - // sanitize the text being input; imagettftext() can be sensitive - $TextSize = $this->ImageTTFBBoxDimensions($wmSize, 0, $this->correct_gd_unc_path($wmFontPath), $line . preg_replace('~^(&([a-zA-Z0-9]);)~', htmlentities('${1}'), mb_convert_encoding($word, "HTML-ENTITIES", "UTF-8"))); - if ($watermark_image_width == 0) { - $watermark_image_width = $TextSize['width']; - } - if ($TextSize['width'] > $this->newDimensions['newWidth']) { - $lines[] = trim($line); - $line = ''; - } else { - if ($TextSize['width'] > $watermark_image_width) { - $watermark_image_width = $TextSize['width']; + $retval = FALSE; + $image_path = $this->object->get_image_abspath($image); + if ($image_path && @file_exists($image_path)) { + $retval = copy($image_path, $this->object->get_backup_abspath($image)); + // Store the dimensions of the image + if (function_exists('getimagesize')) { + $mapper = C_Image_Mapper::get_instance(); + if (!is_object($image)) { + $image = $mapper->find($image); + } + if ($image) { + if (!property_exists($image, 'meta_data')) { + $image->meta_data = array(); + } + $dimensions = getimagesize($image_path); + $image->meta_data['backup'] = array('filename' => basename($image_path), 'width' => $dimensions[0], 'height' => $dimensions[1], 'generated' => microtime()); + if ($save) { + $mapper->save($image); + } } } - $line .= $word . ' '; } - $lines[] = trim($line); - // use this string to determine our largest possible line height - $line_dimensions = $this->ImageTTFBBoxDimensions($wmSize, 0, $this->correct_gd_unc_path($wmFontPath), 'MXQJALYmxqjabdfghjklpqry019`@$^&*(,!132'); - $line_height = $line_dimensions['height'] * 1.05; - // Create an image to apply our text to - $this->workingImage = ImageCreateTrueColor($watermark_image_width, count($lines) * $line_height); - ImageSaveAlpha($this->workingImage, true); - ImageAlphaBlending($this->workingImage, false); - $bgText = imagecolorallocatealpha($this->workingImage, 255, 255, 255, 127); - imagefill($this->workingImage, 0, 0, $bgText); - $wmTransp = 127 - $wmOpaque * 1.27; - $rgb = $this->hex2rgb($color, false); - $TextColor = imagecolorallocatealpha($this->workingImage, $rgb[0], $rgb[1], $rgb[2], $wmTransp); - // Put text on the image, line-by-line - $y_pos = $wmSize; - foreach ($lines as $line) { - imagettftext($this->workingImage, $wmSize, 0, 0, $y_pos, $TextColor, $this->correct_gd_unc_path($wmFontPath), $line); - $y_pos += $line_height; + return $retval; + } + function copy_images($images, $dst_gallery) + { + $retval = array(); + // Ensure that the image ids we have are valid + $image_mapper = C_Image_Mapper::get_instance(); + foreach ($images as $image) { + if (is_numeric($image)) { + $image = $image_mapper->find($image); + } + if ($image_abspath = $this->object->get_image_abspath($image)) { + // Import the image + $new_image_id = $this->object->import_image_file($dst_gallery, $image_abspath, $image->filename); + if ($new_image_id) { + // Copy the properties of the old image + foreach (get_object_vars($image) as $key => $value) { + if (in_array($key, array('pid', 'galleryid', 'meta_data', 'filename', 'sortorder', 'extras_post_id'))) { + continue; + } + $new_image = $image_mapper->find($new_image_id); + $new_image->{$key} = $value; + $image_mapper->save($new_image); + } + // Copy tags + $tags = wp_get_object_terms($image->pid, 'ngg_tag', 'fields=ids'); + $tags = array_map('intval', $tags); + wp_set_object_terms($new_image_id, $tags, 'ngg_tag', true); + // Mark as done + $retval[] = $new_image_id; + } + } } - $this->watermarkImgPath = $this->workingImage; - return; + return $retval; } /** - * Returns a path that can be used with imagettftext() and ImageTTFBBox() - * - * imagettftext() and ImageTTFBBox() cannot load resources from Windows UNC paths - * and require they be mangled to be like //server\filename instead of \\server\filename - * @param string $path Absolute file path - * @return string $path Mangled absolute file path + * Moves images from to another gallery + * @param array $images + * @param int|object $gallery + * @param boolean $db optionally only move the image files, not the db entries + * @return boolean */ - public function correct_gd_unc_path($path) + function move_images($images, $gallery) { - if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' && substr($path, 0, 2) === '\\\\') { - $path = ltrim($path, '\\\\'); - $path = '//' . $path; + $retval = $this->object->copy_images($images, $gallery, TRUE); + if ($images) { + foreach ($images as $image_id) { + $this->object->delete_image($image_id); + } } - return $path; + return $retval; } - /** - * Calculates the width & height dimensions of ImageTTFBBox(). - * - * Note: ImageTTFBBox() is unreliable with large font sizes - * @param $wmSize - * @param $fontAngle - * @param $wmFontPath - * @param $text - * @return array - */ - function ImageTTFBBoxDimensions($wmSize, $fontAngle, $wmFontPath, $text) + function delete_directory($abspath) { - $box = @ImageTTFBBox($wmSize, $fontAngle, $this->correct_gd_unc_path($wmFontPath), $text); - $max_x = max(array($box[0], $box[2], $box[4], $box[6])); - $max_y = max(array($box[1], $box[3], $box[5], $box[7])); - $min_x = min(array($box[0], $box[2], $box[4], $box[6])); - $min_y = min(array($box[1], $box[3], $box[5], $box[7])); - return array("width" => $max_x - $min_x, "height" => $max_y - $min_y); + $retval = FALSE; + if (@file_exists($abspath)) { + $files = scandir($abspath); + array_shift($files); + array_shift($files); + foreach ($files as $file) { + $file_abspath = implode(DIRECTORY_SEPARATOR, array(rtrim($abspath, "/\\"), $file)); + if (is_dir($file_abspath)) { + $this->object->delete_directory($file_abspath); + } else { + unlink($file_abspath); + } + } + rmdir($abspath); + $retval = @file_exists($abspath); + } + return $retval; } - function applyFilter($filterType) + function delete_gallery($gallery) { - $args = func_get_args(); - array_unshift($args, $this->newImage); - return call_user_func_array('imagefilter', $args); + $fs = C_Fs::get_instance(); + $safe_dirs = array(DIRECTORY_SEPARATOR, $fs->get_document_root('plugins'), $fs->get_document_root('plugins_mu'), $fs->get_document_root('templates'), $fs->get_document_root('stylesheets'), $fs->get_document_root('content'), $fs->get_document_root('galleries'), $fs->get_document_root()); + $abspath = $this->object->get_gallery_abspath($gallery); + if ($abspath && file_exists($abspath) && !in_array(stripslashes($abspath), $safe_dirs)) { + $this->object->_delete_gallery_directory($abspath); + } + } + function delete_image($image, $size = FALSE) + { + $retval = FALSE; + // Ensure that we have the image entity + if (is_numeric($image)) { + $image = $this->object->_image_mapper->find($image); + } + if ($image) { + $image_id = $image->{$image->id_field}; + do_action('ngg_delete_image', $image_id, $size); + // Delete only a particular image size + if ($size) { + $abspath = $this->object->get_image_abspath($image, $size); + if ($abspath && @file_exists($abspath)) { + @unlink($abspath); + } + if (isset($image->meta_data) && isset($image->meta_data[$size])) { + unset($image->meta_data[$size]); + $this->object->_image_mapper->save($image); + } + } else { + foreach ($this->get_image_sizes($image) as $named_size) { + $image_abspath = $this->object->get_image_abspath($image, $named_size); + @unlink($image_abspath); + } + // Delete the entity + $this->object->_image_mapper->destroy($image); + } + $retval = TRUE; + } + return $retval; } /** - * Modfied Watermark function by Steve Peart - * http://parasitehosting.com/ + * Recover image from backup copy and reprocess it * - * @param string $relPOS - * @param int $xPOS - * @param int $yPOS + * @param int|stdClass|C_Image $image + * @return bool|string result code */ - function watermarkImage($relPOS = 'botRight', $xPOS = 0, $yPOS = 0) + function recover_image($image) { - // if it's a resource ID take it as watermark text image - if (is_resource($this->watermarkImgPath)) { - $this->workingImage = $this->watermarkImgPath; - } else { - // (possibly) search for the file from the document root - if (!is_file($this->watermarkImgPath)) { - $fs = C_Fs::get_instance(); - if (is_file($fs->join_paths($fs->get_document_root('content'), $this->watermarkImgPath))) { - $this->watermarkImgPath = $fs->get_document_root('content') . $this->watermarkImgPath; + $retval = FALSE; + if (is_numeric($image)) { + $image = $this->object->_image_mapper->find($image); + } + if ($image) { + $full_abspath = $this->object->get_image_abspath($image); + $backup_abspath = $this->object->get_image_abspath($image, 'backup'); + if ($backup_abspath != $full_abspath && @file_exists($backup_abspath)) { + if (is_writable($full_abspath) && is_writable(dirname($full_abspath))) { + // Copy the backup + if (@copy($backup_abspath, $full_abspath)) { + // Backup images are not altered at all; we must re-correct the EXIF/Orientation tag + $this->object->correct_exif_rotation($image, TRUE); + // Re-create non-fullsize image sizes + foreach ($this->object->get_image_sizes($image) as $named_size) { + if ($named_size == 'full') { + continue; + } + $this->object->generate_image_clone($full_abspath, $this->object->get_image_abspath($image, $named_size), $this->object->get_image_size_params($image, $named_size)); + } + do_action('ngg_recovered_image', $image); + // Reimport all metadata + $retval = $this->object->_image_mapper->reimport_metadata($image); + } } } - // Would you really want to use anything other than a png? - $this->workingImage = @imagecreatefrompng($this->watermarkImgPath); - // if it's not a valid file die... - if (empty($this->workingImage) or !$this->workingImage) { - return; - } - } - imagealphablending($this->workingImage, false); - imagesavealpha($this->workingImage, true); - $sourcefile_width = imageSX($this->oldImage); - $sourcefile_height = imageSY($this->oldImage); - $watermarkfile_width = imageSX($this->workingImage); - $watermarkfile_height = imageSY($this->workingImage); - switch (substr($relPOS, 0, 3)) { - case 'top': - $dest_y = 0 + $yPOS; - break; - case 'mid': - $dest_y = $sourcefile_height / 2 - $watermarkfile_height / 2; - break; - case 'bot': - $dest_y = $sourcefile_height - $watermarkfile_height - $yPOS; - break; - default: - $dest_y = 0; - break; - } - switch (substr($relPOS, 3)) { - case 'Left': - $dest_x = 0 + $xPOS; - break; - case 'Center': - $dest_x = $sourcefile_width / 2 - $watermarkfile_width / 2; - break; - case 'Right': - $dest_x = $sourcefile_width - $watermarkfile_width - $xPOS; - break; - default: - $dest_x = 0; - break; - } - // debug - // $this->errmsg = 'X '.$dest_x.' Y '.$dest_y; - // $this->showErrorImage(); - // if a gif, we have to upsample it to a truecolor image - if ($this->format == 'GIF') { - $tempimage = imagecreatetruecolor($sourcefile_width, $sourcefile_height); - imagecopy($tempimage, $this->oldImage, 0, 0, 0, 0, $sourcefile_width, $sourcefile_height); - $this->newImage = $tempimage; } - $this->imagecopymerge_alpha($this->newImage, $this->workingImage, $dest_x, $dest_y, 0, 0, $watermarkfile_width, $watermarkfile_height, 100); + return $retval; } +} +/** + * This class contains methods C_Gallery_Storage needs to interact with (like say, importing from) the WP Media Library + */ +class Mixin_GalleryStorage_Base_MediaLibrary extends Mixin +{ /** - * Wrapper to imagecopymerge() that allows PNG transparency + * Copies a NGG image to the media library and returns the attachment_id + * @param C_Image $image + * @retval FALSE|int attachment_id */ - function imagecopymerge_alpha($destination_image, $source_image, $destination_x, $destination_y, $source_x, $source_y, $source_w, $source_h, $pct) + function copy_to_media_library($image) { - $cut = imagecreatetruecolor($source_w, $source_h); - imagecopy($cut, $destination_image, 0, 0, $destination_x, $destination_y, $source_w, $source_h); - imagecopy($cut, $source_image, 0, 0, $source_x, $source_y, $source_w, $source_h); - imagecopymerge($destination_image, $cut, $destination_x, $destination_y, 0, 0, $source_w, $source_h, $pct); + $retval = FALSE; + // Get the image + if (is_int($image)) { + $imageId = $image; + $mapper = C_Image_Mapper::get_instance(); + $image = $mapper->find($imageId); + } + if ($image) { + $wordpress_upload_dir = wp_upload_dir(); + // $wordpress_upload_dir['path'] is the full server path to wp-content/uploads/2017/05, for multisite works good as well + // $wordpress_upload_dir['url'] the absolute URL to the same folder, actually we do not need it, just to show the link to file + $i = 1; + // number of tries when the file with the same name is already exists + $image_abspath = C_Gallery_Storage::get_instance()->get_image_abspath($image, "full"); + $new_file_path = $wordpress_upload_dir['path'] . '/' . $image->filename; + $new_file_mime = mime_content_type($image_abspath); + while (file_exists($new_file_path)) { + $i++; + $new_file_path = $wordpress_upload_dir['path'] . '/' . $i . '_' . $image->filename; + } + if (@copy($image_abspath, $new_file_path)) { + $upload_id = wp_insert_attachment(array('guid' => $new_file_path, 'post_mime_type' => $new_file_mime, 'post_title' => preg_replace('/\\.[^.]+$/', '', $image->alttext), 'post_content' => '', 'post_status' => 'inherit'), $new_file_path); + update_post_meta($upload_id, '_ngg_image_id', intval($image->pid)); + // wp_generate_attachment_metadata() won't work if you do not include this file + require_once ABSPATH . 'wp-admin/includes/image.php'; + $image_meta = wp_generate_attachment_metadata($upload_id, $new_file_path); + // Generate and save the attachment metas into the database + wp_update_attachment_metadata($upload_id, $image_meta); + $retval = $upload_id; + } + } + return $retval; } /** - * Modfied imagecopyresampled function to save transparent images - * See : http://www.akemapa.com/2008/07/10/php-gd-resize-transparent-image-png-gif/ - * @since 1.9.0 - * - * @param resource $dst_image - * @param resource $src_image - * @param int $dst_x - * @param int $dst_y - * @param int $src_x - * @param int $src_y - * @param int $dst_w - * @param int $dst_h - * @param int $src_w - * @param int $src_h - * @return bool + * Delete the given NGG image from the media library + */ + function delete_from_media_library($imageId) + { + // Get the image + if (!is_int($imageId)) { + $image = $imageId; + $imageId = $image->pid; + } + if ($postId = $this->object->is_in_media_library($imageId)) { + wp_delete_post($postId); + } + } + /** + * Determines if the given NGG image id has been uploaded to the media library + * + * @param integer $imageId + * @retval FALSE|int attachment_id */ - function imagecopyresampled(&$dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h) + function is_in_media_library($imageId) { - // Check if this image is PNG or GIF, then set if Transparent - if ($this->format == 'GIF' || $this->format == 'PNG') { - imagealphablending($dst_image, false); - imagesavealpha($dst_image, true); - $transparent = imagecolorallocatealpha($dst_image, 255, 255, 255, 127); - imagefilledrectangle($dst_image, 0, 0, $dst_w, $dst_h, $transparent); + $retval = FALSE; + // Get the image + if (is_object($imageId)) { + $image = $imageId; + $imageId = $image->pid; } - imagecopyresampled($dst_image, $src_image, $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h); - return true; + // Try to find an attachment for the given image_id + if ($imageId) { + $query = new WP_Query(array('post_type' => 'attachment', 'meta_key' => '_ngg_image_id', 'meta_value_num' => $imageId)); + foreach ($query->get_posts() as $post) { + $retval = $post->ID; + } + } + return $retval; } } -class Mixin_WordPress_GalleryStorage_Driver extends Mixin +/** + * Provides upload-related methods used by C_Gallery_Storage + */ +class Mixin_GalleryStorage_Base_Upload extends Mixin { /** - * Returns the named sizes available for images - * @global array $_wp_additional_image_sizese - * @return array + * @param string $abspath + * @param int $gallery_id + * @param bool $create_new_gallerypath + * @param null|string $gallery_title + * @param array[string] $filenames + * @return array|bool FALSE on failure */ - function get_image_sizes() + function import_gallery_from_fs($abspath, $gallery_id = NULL, $create_new_gallerypath = TRUE, $gallery_title = NULL, $filenames = array()) + { + if (@(!file_exists($abspath))) { + return FALSE; + } + $fs = C_Fs::get_instance(); + // Ensure that this folder has images + $i = 0; + $files = array(); + foreach (scandir($abspath) as $file) { + if ($file == '.' || $file == '..') { + continue; + } + $file_abspath = $fs->join_paths($abspath, $file); + // The first directory is considered valid + if (is_dir($file_abspath) && $i === 0) { + $files[] = $file_abspath; + } elseif ($this->is_image_file($file_abspath)) { + if ($filenames && array_search($file_abspath, $filenames) !== FALSE) { + $files[] = $file_abspath; + } else { + if (!$filenames) { + $files[] = $file_abspath; + } + } + } + } + if (empty($files)) { + return FALSE; + } + // Get needed utilities + $gallery_mapper = C_Gallery_Mapper::get_instance(); + // Sometimes users try importing a directory, which actually has all images under another directory + if (is_dir($files[0])) { + return $this->object->import_gallery_from_fs($files[0], $gallery_id, $create_new_gallerypath, $gallery_title, $filenames); + } + // If no gallery has been specified, then use the directory name as the gallery name + if (!$gallery_id) { + // Create the gallery + $gallery = $gallery_mapper->create(array('title' => $gallery_title ? $gallery_title : M_I18n::mb_basename($abspath))); + if (!$create_new_gallerypath) { + $gallery_root = $fs->get_document_root('gallery'); + $gallery->path = str_ireplace($gallery_root, '', $abspath); + } + // Save the gallery + if ($gallery->save()) { + $gallery_id = $gallery->id(); + } + } + // Ensure that we have a gallery id + if ($gallery_id) { + $retval = array('gallery_id' => $gallery_id, 'image_ids' => array()); + foreach ($files as $file_abspath) { + $basename = pathinfo($file_abspath, PATHINFO_BASENAME); + if ($image_id = $this->import_image_file($gallery_id, $file_abspath, $basename, FALSE, FALSE, FALSE)) { + $retval['image_ids'][] = $image_id; + } + } + // Add the gallery name to the result + if (!isset($gallery)) { + $gallery = $gallery_mapper->find($gallery_id); + } + $retval['gallery_name'] = $gallery->title; + return $retval; + } + return FALSE; + } + function is_current_user_over_quota() { - global $_wp_additional_image_sizes; - $_wp_additional_image_sizes[] = 'full'; - return $_wp_additional_image_sizes; + $retval = FALSE; + $settings = C_NextGen_Settings::get_instance(); + if (is_multisite() && $settings->get('wpmuQuotaCheck')) { + require_once ABSPATH . 'wp-admin/includes/ms.php'; + $retval = upload_is_user_over_quota(FALSE); + } + return $retval; } /** - * Gets the upload path for new images in this gallery - * This will always be the date-based directory - * @param bool|int|object $gallery - * @return bool|string + * @param string? $filename + * @return bool */ - function get_upload_abspath($gallery = FALSE) + function is_image_file($filename = NULL) + { + $retval = FALSE; + if (!$filename && isset($_FILES['file']) && $_FILES['file']['error'] == 0) { + $filename = $_FILES['file']['tmp_name']; + } + $valid_types = array('image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png'); + // If we can, we'll verify the mime type + if (function_exists('exif_imagetype')) { + if (($image_type = @exif_imagetype($filename)) !== FALSE) { + $retval = in_array(image_type_to_mime_type($image_type), $valid_types); + } + } else { + $file_info = @getimagesize($filename); + if (isset($file_info[2])) { + $retval = in_array(image_type_to_mime_type($file_info[2]), $valid_types); + } + } + return $retval; + } + function is_zip() { - // Gallery is used for this driver, as the upload path is - // the same, regardless of what gallery is used $retval = FALSE; - $dir = wp_upload_dir(time()); - if ($dir) { - $retval = $dir['path']; + if (isset($_FILES['file']) && $_FILES['file']['error'] == 0) { + $file_info = $_FILES['file']; + if (isset($file_info['type'])) { + $type = $file_info['type']; + $type_parts = explode('/', $type); + if (strtolower($type_parts[0]) == 'application') { + $spec = $type_parts[1]; + $spec_parts = explode('-', $spec); + $spec_parts = array_map('strtolower', $spec_parts); + if (in_array($spec, array('zip', 'octet-stream')) || in_array('zip', $spec_parts)) { + $retval = true; + } + } + } } return $retval; } + function maybe_base64_decode($data) + { + $decoded = base64_decode($data); + if ($decoded === FALSE) { + return $data; + } else { + if (base64_encode($decoded) == $data) { + return base64_decode($data); + } + } + return $data; + } + function get_unique_abspath($file_abspath) + { + $filename = basename($file_abspath); + $dir_abspath = dirname($file_abspath); + $num = 1; + $pattern = path_join($dir_abspath, "*_{$filename}"); + if ($found = glob($pattern)) { + natsort($found); + $last = array_pop($found); + $last = basename($last); + if (preg_match("/^(\\d+)_/", $last, $match)) { + $num = intval($match[1]) + 1; + } + } + return path_join($dir_abspath, "{$num}_{$filename}"); + } + function sanitize_filename_for_db($filename = NULL) + { + $filename = $filename ? $filename : uniqid('nextgen-gallery'); + $filename = preg_replace("#^/#", "", $filename); + $filename = sanitize_file_name($filename); + if (preg_match("/\\-(png|jpg|gif|jpeg)\$/i", $filename, $match)) { + $filename = str_replace($match[0], '.' . $match[1], $filename); + } + return $filename; + } + function import_image_file($dst_gallery, $image_abspath, $filename = NULL, $image = FALSE, $override = FALSE, $move = FALSE) + { + $image_abspath = wp_normalize_path($image_abspath); + if ($this->object->is_current_user_over_quota()) { + $message = sprintf(__('Sorry, you have used your space allocation. Please delete some files to upload more files.', 'nggallery')); + throw new E_NoSpaceAvailableException($message); + } + // Do we have a gallery to import to? + if ($dst_gallery) { + // Get the gallery abspath. This is where we will put the image files + $gallery_abspath = $this->object->get_gallery_abspath($dst_gallery); + // If we can't write to the directory, then there's no point in continuing + if (!@file_exists($gallery_abspath)) { + @wp_mkdir_p($gallery_abspath); + } + if (!is_writable($gallery_abspath)) { + throw new E_InsufficientWriteAccessException(FALSE, $gallery_abspath, FALSE); + } + // Sanitize the filename for storing in the DB + $filename = $this->sanitize_filename_for_db($filename); + // Ensure that the filename is valid + if (!preg_match("/(png|jpeg|jpg|gif)\$/i", $filename)) { + throw new E_UploadException(__('Invalid image file. Acceptable formats: JPG, GIF, and PNG.', 'nggallery')); + } + // Compute the destination folder + $new_image_abspath = path_join($gallery_abspath, $filename); + // Are the src and dst the same? If so, we don't have to copy or move files + if ($image_abspath != $new_image_abspath) { + // If we're not to override, ensure that the filename is unique + if (!$override && @file_exists($new_image_abspath)) { + $new_image_abspath = $this->object->get_unique_abspath($new_image_abspath); + $filename = $this->sanitize_filename_for_db(basename($new_image_abspath)); + } + // Try storing the file + $copied = copy($image_abspath, $new_image_abspath); + if ($copied && $move) { + unlink($image_abspath); + } + // Ensure that we're not vulerable to CVE-2017-2416 exploit + if (($dimensions = getimagesize($new_image_abspath)) !== FALSE) { + if (isset($dimensions[0]) && intval($dimensions[0]) > 30000 || isset($dimensions[1]) && intval($dimensions[1]) > 30000) { + unlink($new_image_abspath); + throw new E_UploadException(__('Image file too large. Maximum image dimensions supported are 30k x 30k.')); + } + } + } + // Save the image in the DB + $image_mapper = C_Image_Mapper::get_instance(); + $image_mapper->_use_cache = FALSE; + if ($image) { + if (is_numeric($image)) { + $image = $image_mapper->find($image); + } + } + if (!$image) { + $image = $image_mapper->create(); + } + $image->alttext = preg_replace("#\\.\\w{2,4}\$#", "", $filename); + $image->galleryid = is_numeric($dst_gallery) ? $dst_gallery : $dst_gallery->gid; + $image->filename = $filename; + $image->image_slug = nggdb::get_unique_slug(sanitize_title_with_dashes($image->alttext), 'image'); + $image_id = $image_mapper->save($image); + if (!$image_id) { + $exception = ''; + foreach ($image->get_errors() as $field => $errors) { + foreach ($errors as $error) { + if (!empty($exception)) { + $exception .= "<br/>"; + } + $exception .= __(sprintf("Error while uploading %s: %s", $filename, $error), 'nextgen-gallery'); + } + } + throw new E_UploadException($exception); + } + // Important: do not remove this line. The image mapper's save() routine imports metadata + // meaning we must re-acquire a new $image object after saving it above; if we do not our + // existing $image object will lose any metadata retrieved during said save() method. + $image = $image_mapper->find($image_id); + $image_mapper->_use_cache = TRUE; + $settings = C_NextGen_Settings::get_instance(); + // Backup the image + if ($settings->get('imgBackup', FALSE)) { + $this->object->backup_image($image, TRUE); + } + // Most browsers do not honor EXIF's Orientation header: rotate the image to prevent display issues + $this->object->correct_exif_rotation($image, TRUE); + // Create resized version of image + if ($settings->get('imgAutoResize', FALSE)) { + $this->object->generate_resized_image($image, TRUE); + } + // Generate a thumbnail for the image + $this->object->generate_thumbnail($image); + // Set gallery preview image if missing + C_Gallery_Mapper::get_instance()->set_preview_image($dst_gallery, $image_id, TRUE); + // Notify other plugins that an image has been added + do_action('ngg_added_new_image', $image); + // delete dirsize after adding new images + delete_transient('dirsize_cache'); + // Seems redundant to above hook. Maintaining for legacy purposes + do_action('ngg_after_new_images_added', is_numeric($dst_gallery) ? $dst_gallery : $dst_gallery->gid, array($image_id)); + return $image_id; + } else { + throw new E_EntityNotFoundException(); + } + return NULL; + } /** - * Will always return the same as get_upload_abspath(), as WordPress storage is not organized by gallery but by date - * @param int|object $gallery - * @return string + * Uploads base64 file to a gallery + * @param int|stdClass|C_Gallery $gallery + * @param $data base64-encoded string of data representing the image + * @param string|false (optional) $filename specifies the name of the file + * @param int|false $image_id (optional) + * @param bool $override (optional) + * @return C_Image */ - function get_gallery_abspath($gallery = FALSE) + function upload_base64_image($gallery, $data, $filename = FALSE, $image_id = FALSE, $override = FALSE, $move = FALSE) { - return $this->object->get_upload_abspath(); + try { + $temp_abspath = tempnam(sys_get_temp_dir(), ''); + // Try writing the image + $fp = fopen($temp_abspath, 'wb'); + fwrite($fp, $this->maybe_base64_decode($data)); + fclose($fp); + } catch (E_UploadException $ex) { + throw $ex; + } + return $this->object->import_image_file($gallery, $temp_abspath, $filename, $image_id, $override, $move); } /** - * Gets the url of a particular sized image - * @param int|object $image - * @param string $size - * @return string + * Uploads an image for a particular gallery + * @param int|object|C_Gallery $gallery + * @param string|bool $filename (optional) Specifies the name of the file + * @param string|bool $data (optional) If specified, expects base64 encoded string of data + * @return C_Image */ - function get_image_url($image = FALSE, $size = 'full') + function upload_image($gallery, $filename = FALSE, $data = FALSE) { $retval = NULL; - $image_key = C_Displayed_Gallery_Mapper::get_instance()->get_primary_key_column(); - if ($image && ($image_id = $this->object->_get_image_id($image))) { - $parts = wp_get_attachment_image_src($image->{$image_key}); - if ($parts) { - $retval = $parts['url']; + // Ensure that we have the data present that we require + if (isset($_FILES['file']) && $_FILES['file']['error'] == 0) { + // $_FILES = Array( + // [file] => Array ( + // [name] => Canada_landscape4.jpg + // [type] => image/jpeg + // [tmp_name] => /private/var/tmp/php6KO7Dc + // [error] => 0 + // [size] => 64975 + // ) + // + $file = $_FILES['file']; + if ($this->object->is_zip()) { + $retval = $this->object->upload_zip($gallery); + } else { + if ($this->is_image_file()) { + $retval = $this->object->import_image_file($gallery, $file['tmp_name'], $filename ? $filename : (isset($file['name']) ? $file['name'] : FALSE), FALSE, FALSE, TRUE); + } else { + // Remove the non-valid (and potentially insecure) file from the PHP upload directory + if (isset($_FILES['file']['tmp_name'])) { + $filename = $_FILES['file']['tmp_name']; + @unlink($filename); + } + throw new E_UploadException(__('Invalid image file. Acceptable formats: JPG, GIF, and PNG.', 'nggallery')); + } } + } elseif ($data) { + $retval = $this->object->upload_base64_image($gallery, $data, $filename); + } else { + throw new E_UploadException(); } - return apply_filters('ngg_get_image_url', $retval, $image, $size); + return $retval; } -} -/** - * Class C_WordPress_GalleryStorage_Driver - * @mixin Mixin_WordPress_GalleryStorage_Driver - */ -class C_WordPress_GalleryStorage_Driver extends C_GalleryStorage_Driver_Base -{ - function define($context = FALSE) + function upload_zip($gallery_id) { - parent::define($context); - $this->add_mixin('Mixin_WordPress_GalleryStorage_Driver'); + $memory_limit = intval(ini_get('memory_limit')); + if (!extension_loaded('suhosin') && $memory_limit < 256) { + @ini_set('memory_limit', '256M'); + } + $retval = FALSE; + if ($this->object->is_zip()) { + $fs = C_Fs::get_instance(); + // Uses the WordPress ZIP abstraction API + include_once $fs->join_paths(ABSPATH, 'wp-admin', 'includes', 'file.php'); + WP_Filesystem(FALSE, get_temp_dir(), TRUE); + // Ensure that we truly have the gallery id + $gallery_id = $this->_get_gallery_id($gallery_id); + $zipfile = $_FILES['file']['tmp_name']; + $dest_path = implode(DIRECTORY_SEPARATOR, array(rtrim(get_temp_dir(), "/\\"), 'unpacked-' . M_I18n::mb_basename($zipfile))); + wp_mkdir_p($dest_path); + if (unzip_file($zipfile, $dest_path) === TRUE) { + $dest_dir = $dest_path . DIRECTORY_SEPARATOR; + $files = glob($dest_dir . '*'); + $size = 0; + foreach ($files as $file) { + if (is_file($dest_dir . $file)) { + $size += filesize($dest_dir . $file); + } + } + if ($size == 0) { + $this->object->delete_directory($dest_path); + $destination = wp_upload_dir(); + $destination_path = $destination['basedir']; + $dest_path = implode(DIRECTORY_SEPARATOR, array(rtrim($destination_path, "/\\"), 'unpacked-' . M_I18n::mb_basename($zipfile))); + wp_mkdir_p($dest_path); + if (unzip_file($zipfile, $dest_path) === TRUE) { + $retval = $this->object->import_gallery_from_fs($dest_path, $gallery_id); + } + } else { + $retval = $this->object->import_gallery_from_fs($dest_path, $gallery_id); + } + } + $this->object->delete_directory($dest_path); + } + if (!extension_loaded('suhosin')) { + @ini_set('memory_limit', $memory_limit . 'M'); + } + return $retval; } } /** diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_data/pel-0.9.6/class.exif_writer.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_data/pel-0.9.6/class.exif_writer.php index f0a39173b..b4fe6e10c 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_data/pel-0.9.6/class.exif_writer.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_data/pel-0.9.6/class.exif_writer.php @@ -16,6 +16,8 @@ use lsolesen\pel\PelJpeg; use lsolesen\pel\PelTiff; use lsolesen\pel\PelExif; use lsolesen\pel\PelIfd; +use lsolesen\pel\PelTag; +use lsolesen\pel\PelEntryShort; use lsolesen\pel\PelInvalidArgumentException; use lsolesen\pel\PelIfdException; @@ -208,6 +210,33 @@ class C_Exif_Writer static public function is_jpeg_file($filename) { $extension = M_I18n::mb_pathinfo($filename, PATHINFO_EXTENSION); - return in_array(strtolower($extension), array('jpeg', 'jpg')) ? TRUE : FALSE; + return in_array(strtolower($extension), array('jpeg', 'jpg', 'jpeg_backup', 'jpg_backup')) ? TRUE : FALSE; + } + + /** + * Sets the EXIF' Orientation field to 1 aka Default or "TopLeft" + * + * This method is necessary to prevent images rotated by NextGen to appear even further rotated. + * @param array $exif + * @return array + */ + static public function reset_orientation($exif = array()) + { + $tiff = $exif->getTiff(); + if (empty($tiff)) + return $exif; + + $ifd0 = $tiff->getIfd(); + if (empty($ifd0)) + return $exif; + + $orientation = $ifd0->getEntry(PelTag::ORIENTATION); + if (empty($orientation)) + return $exif; + + $orientation = new PelEntryShort(PelTag::ORIENTATION, 1); + $ifd0->addEntry($orientation); + + return $exif; } } \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php index 020652b20..832cc7a19 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/module.nextgen_gallery_display.php @@ -23,10 +23,10 @@ class M_Gallery_Display extends C_Base_Module 'photocrati-nextgen_gallery_display', 'Gallery Display', 'Provides the ability to display gallery of images', - '3.1.4.2', + '3.1.19', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', - 'Imagely', - 'https://www.imagely.com' + 'Imagely', + 'https://www.imagely.com' ); C_Photocrati_Installer::add_handler($this->module_id, 'C_Display_Type_Installer'); @@ -511,7 +511,20 @@ class C_Display_Type_Installer function get_registry() { return C_Component_Registry::get_instance(); - } + } + + function delete_duplicates($name) + { + $mapper = C_Display_Type_Mapper::get_instance(); + $results = $mapper->find_all(array('name = %s', $name)); + if (count($results) > 0) { + $kept = array_pop($results); // the last should be the latest + foreach ($results as $display_type) { + $mapper->destroy($display_type); + } + } + $mapper->flush_query_cache(); + } /** * Installs a display type @@ -520,24 +533,24 @@ class C_Display_Type_Installer */ function install_display_type($name, $properties=array()) { + $this->delete_duplicates($name); + // Try to find the existing entity. If it doesn't exist, we'll create $fs = C_Fs::get_instance(); - $mapper = C_Display_Type_Mapper::get_instance(); - $display_type = $mapper->find_by_name($name); + $mapper = C_Display_Type_Mapper::get_instance(); + $display_type = $mapper->find_by_name($name); + $mapper->flush_query_cache(); if (!$display_type) $display_type = new stdClass; // Update the properties of the display type $properties['name'] = $name; $properties['installed_at_version'] = NGG_PLUGIN_VERSION; foreach ($properties as $key=>$val) { - if ($key == 'preview_image_relpath') { - $val = $fs->find_static_abspath($val, FALSE, TRUE); - } $display_type->$key = $val; } // Save the entity - $retval = $mapper->save($display_type); + $retval = $mapper->save($display_type); return $retval; } @@ -565,7 +578,16 @@ class C_Display_Type_Installer */ function install($reset=FALSE) { - // Display types are registered in other modules + // Note: NGG Display types are registered in other modules + + // Force Pro display types to register themselves + if (class_exists('C_NextGen_Pro_Installer')) { + $pro_installer = new C_NextGen_Pro_Installer(); + $pro_installer->install_display_types(); + } elseif (class_exists('C_NextGen_Plus_Installer')) { + $plus_installer = new C_NextGen_Plus_Installer(); + $plus_installer->install_display_types(); + } } /** diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/static/nextgen_gallery_display_settings.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/static/nextgen_gallery_display_settings.css index 31f02f1b2..e09ee918c 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/static/nextgen_gallery_display_settings.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/static/nextgen_gallery_display_settings.css @@ -53,4 +53,10 @@ .entity_errors ul li { list-style-type: disc; +} + +.ngg_field_ecommerce_enabled_ssl_warning { + font-size: 13px; + line-height: 1.4; + color: red; } \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/static/nextgen_gallery_display_settings.min.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/static/nextgen_gallery_display_settings.min.css index 685d7d221..adbeb8336 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/static/nextgen_gallery_display_settings.min.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_gallery_display/static/nextgen_gallery_display_settings.min.css @@ -1 +1 @@ -.gallery_page_ngg_display_settings table{height:100%}.gallery_page_ngg_display_settings table tr{height:28px}.gallery_page_ngg_display_settings table tr td:first-child{vertical-align:top;padding-right:7px;padding-top:5px}.gallery_page_ngg_display_settings textarea{height:60px}.gallery_page_ngg_display_settings input[type=text],.gallery_page_ngg_display_settings textarea{width:155px}.gallery_page_ngg_display_settings input[type=number]{text-align:center}.gallery_page_ngg_display_settings select{width:155px;text-align:center}.gallery_page_ngg_display_settings input.nextgen_settings_field_width_and_unit,.gallery_page_ngg_display_settings select.nextgen_settings_field_width_and_unit{text-align:center;width:75px}.gallery_page_ngg_display_settings input.nextgen_settings_field_width_and_height{width:65px}.entity_errors{color:red}.entity_errors ul{margin-left:30px}.entity_errors ul li{list-style-type:disc} \ No newline at end of file +.gallery_page_ngg_display_settings table{height:100%}.gallery_page_ngg_display_settings table tr{height:28px}.gallery_page_ngg_display_settings table tr td:first-child{vertical-align:top;padding-right:7px;padding-top:5px}.gallery_page_ngg_display_settings textarea{height:60px}.gallery_page_ngg_display_settings input[type=text],.gallery_page_ngg_display_settings textarea{width:155px}.gallery_page_ngg_display_settings input[type=number]{text-align:center}.gallery_page_ngg_display_settings select{width:155px;text-align:center}.gallery_page_ngg_display_settings input.nextgen_settings_field_width_and_unit,.gallery_page_ngg_display_settings select.nextgen_settings_field_width_and_unit{text-align:center;width:75px}.gallery_page_ngg_display_settings input.nextgen_settings_field_width_and_height{width:65px}.entity_errors{color:red}.entity_errors ul{margin-left:30px}.entity_errors ul li{list-style-type:disc}.ngg_field_ecommerce_enabled_ssl_warning{font-size:13px;line-height:1.4;color:red} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_other_options/module.nextgen_other_options.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_other_options/module.nextgen_other_options.php index 8bd53895b..e597f5258 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_other_options/module.nextgen_other_options.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_other_options/module.nextgen_other_options.php @@ -23,7 +23,7 @@ class M_NextGen_Other_Options extends C_Base_Module 'photocrati-nextgen_other_options', 'Other Options', 'NextGEN Gallery Others Options Page', - '3.1.6', + '3.1.19', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_other_options/package.module.nextgen_other_options.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_other_options/package.module.nextgen_other_options.php index aa86fc307..441ad2dbb 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_other_options/package.module.nextgen_other_options.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_other_options/package.module.nextgen_other_options.php @@ -282,7 +282,7 @@ class A_Lightbox_Manager_Form extends Mixin $selected = 'fancybox'; } // Render container tab - return $this->render_partial('photocrati-nextgen_other_options#lightbox_library_tab', array('lightbox_library_label' => __('What effect would you like to use?', 'nggallery'), 'libs' => C_Lightbox_Library_Manager::get_instance()->get_all(), 'selected' => $selected, 'sub_fields' => $sub_fields, 'lightbox_global' => $this->object->get_model()->thumbEffectContext), TRUE); + return $this->render_partial('photocrati-nextgen_other_options#lightbox_library_tab', array('lightbox_library_label' => __('What lightbox would you like to use?', 'nggallery'), 'libs' => C_Lightbox_Library_Manager::get_instance()->get_all(), 'selected' => $selected, 'sub_fields' => $sub_fields, 'lightbox_global' => $this->object->get_model()->thumbEffectContext), TRUE); } function save_action() { @@ -423,21 +423,13 @@ class A_Reset_Form extends Mixin if (defined('NGG_PRO_PLUGIN_VERSION') || defined('NEXTGEN_GALLERY_PRO_VERSION')) { C_Photocrati_Installer::uninstall('photocrati-nextgen-pro'); } + if (defined('NGG_PLUS_PLUGIN_VERSION')) { + C_Photocrati_Installer::uninstall('photocrati-nextgen-plus'); + } C_Photocrati_Installer::uninstall('photocrati-nextgen'); // removes all ngg_options entry in wp_options $settings->reset(); $settings->destroy(); - // clear NextGEN's capabilities from the roles system - $capabilities = array("NextGEN Gallery overview", "NextGEN Use TinyMCE", "NextGEN Upload images", "NextGEN Manage gallery", "NextGEN Manage others gallery", "NextGEN Manage tags", "NextGEN Edit album", "NextGEN Change style", "NextGEN Change options", "NextGEN Attach Interface"); - $roles = array("subscriber", "contributor", "author", "editor", "administrator"); - foreach ($roles as $role) { - $role = get_role($role); - foreach ($capabilities as $capability) { - if (!is_null($role)) { - $role->remove_cap($capability); - } - } - } // Some installations of NextGen that upgraded from 1.9x to 2.0x have duplicates installed, // so for now (as of 2.0.21) we explicitly remove all display types and lightboxes from the // db as a way of fixing this. @@ -445,8 +437,8 @@ class A_Reset_Form extends Mixin $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->posts} WHERE post_type = %s", 'lightbox_library')); // the installation will run on the next page load; so make our own request before reloading the browser wp_remote_get(admin_url('plugins.php'), array('timeout' => 180, 'blocking' => true, 'sslverify' => false)); - header('Location: ' . get_admin_url()); - throw new E_Clean_Exit(); + wp_redirect(get_admin_url()); + exit; } } /** @@ -554,9 +546,7 @@ class A_Stylesheet_Ajax_Actions extends Mixin */ function _authorized_for_stylesheet_action() { - $security = $this->get_registry()->get_utility('I_Security_Manager'); - $sec_actor = $security->get_current_actor(); - return $sec_actor->is_allowed('nextgen_edit_style'); + return M_Security::is_allowed('nextgen_edit_style'); } } /** @@ -603,24 +593,18 @@ class A_Watermarking_Ajax_Actions extends Mixin */ function get_watermark_preview_url_action() { - $security = $this->get_registry()->get_utility('I_Security_Manager'); - $sec_actor = $security->get_current_actor(); - if ($sec_actor->is_allowed('nextgen_edit_settings')) { + if (M_Security::is_allowed('nextgen_edit_settings')) { $settings = C_NextGen_Settings::get_instance(); $imagegen = C_Dynamic_Thumbnails_Manager::get_instance(); $mapper = C_Image_Mapper::get_instance(); $image = $mapper->find_first(); $storage = C_Gallery_Storage::get_instance(); - $sizeinfo = array('quality' => 100, 'height' => 250, 'crop' => FALSE, 'watermark' => TRUE); + $watermark_options = $this->param('watermark_options'); + $sizeinfo = array('quality' => 100, 'height' => 250, 'crop' => false, 'watermark' => true, 'wmFont' => trim(esc_sql($watermark_options['wmFont'])), 'wmType' => trim(esc_sql($watermark_options['wmType'])), 'wmPos' => trim(esc_sql($watermark_options['wmPos'])), 'wmXpos' => intval(trim($watermark_options['wmXpos'])), 'wmYpos' => intval(trim($watermark_options['wmYpos'])), 'wmPath' => trim(esc_sql($watermark_options['wmPath'])), 'wmText' => trim(esc_sql($watermark_options['wmText'])), 'wmOpaque' => intval(trim($watermark_options['wmOpaque'])), 'wmFont' => trim(esc_sql($watermark_options['wmFont'])), 'wmSize' => intval(trim($watermark_options['wmSize'])), 'wmColor' => trim(esc_sql($watermark_options['wmColor']))); $size = $imagegen->get_size_name($sizeinfo); + $storage->generate_image_size($image, $size, $sizeinfo); + $storage->flush_image_path_cache($image, $size); $thumbnail_url = $storage->get_image_url($image, $size); - // Temporarily update the watermark options. Generate a new image based on these settings - if ($watermark_options = $this->param('watermark_options')) { - $settings->set('wmFont', trim($watermark_options['wmFont'])); - $storage->generate_image_size($image, $size); - $thumbnail_url = $storage->get_image_url($image, $size); - $settings->load(); - } return array('thumbnail_url' => $thumbnail_url); } else { return array('thumbnail_url' => '', 'error' => 'You are not allowed to perform this operation'); @@ -712,7 +696,14 @@ class A_Watermarks_Form extends Mixin $storage = C_Gallery_Storage::get_instance(); $image = C_Image_Mapper::get_instance()->find_first(); $imagegen = C_Dynamic_Thumbnails_Manager::get_instance(); - $size = $imagegen->get_size_name(array('height' => 250, 'crop' => FALSE, 'watermark' => TRUE)); + $settings = C_NextGen_Settings::get_instance(); + $watermark_setting_keys = array('wmFont', 'wmType', 'wmPos', 'wmXpos', 'wmYpos', 'wmPath', 'wmText', 'wmOpaque', 'wmFont', 'wmSize', 'wmColor'); + $watermark_options = array(); + foreach ($watermark_setting_keys as $watermark_setting_key) { + $watermark_options[$watermark_setting_key] = $settings->get($watermark_setting_key); + } + $sizeinfo = array('quality' => 100, 'height' => 250, 'crop' => false, 'watermark' => true, 'wmFont' => trim(esc_sql($watermark_options['wmFont'])), 'wmType' => trim(esc_sql($watermark_options['wmType'])), 'wmPos' => trim(esc_sql($watermark_options['wmPos'])), 'wmXpos' => trim(intval($watermark_options['wmXpos'])), 'wmYpos' => trim(intval($watermark_options['wmYpos'])), 'wmPath' => trim(esc_sql($watermark_options['wmPath'])), 'wmText' => trim(esc_sql($watermark_options['wmText'])), 'wmOpaque' => intval(trim($watermark_options['wmOpaque'])), 'wmFont' => trim(esc_sql($watermark_options['wmFont'])), 'wmSize' => trim(intval($watermark_options['wmSize'])), 'wmColor' => trim(esc_sql($watermark_options['wmColor']))); + $size = $imagegen->get_size_name($sizeinfo); $url = $image ? $storage->get_image_url($image, $size) : NULL; $abspath = $image ? $storage->get_image_abspath($image, $size) : NULL; return array('url' => $url, 'abspath' => $abspath); diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php index 8c8a1b282..b772dcace 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_other_options/templates/lightbox_library_tab.php @@ -29,7 +29,7 @@ <?php if ( !defined('NGG_PRO_PLUGIN_VERSION') && !defined('NGG_PLUS_PLUGIN_VERSION') && !is_multisite() ) { ?> <tr> <td colspan="2" class="ngg_options_promo"> - <?php esc_html_e('Want a stunning lightbox with color options, image comments, social sharing, full screen, and more? Get the ', 'nggallery'); ?><a href="https://www.imagely.com/wordpress-gallery-plugin/pro-lightbox-demo/?utm_source=ngg&utm_medium=ngguser&utm_campaign=pro_lightbox" target="_blank"><?php esc_html_e('NextGEN Pro Lightbox!', 'nggallery'); ?></a> + <?php esc_html_e('Want more lightbox options? Get the ', 'nggallery'); ?><a href="https://www.imagely.com/wordpress-gallery-plugin/pro-lightbox-demo/?utm_source=ngg&utm_medium=ngguser&utm_campaign=pro_lightbox" target="_blank"><?php esc_html_e('NextGEN Pro Lightbox!', 'nggallery'); ?></a> </td> </tr> <?php } ?> diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/module.nextgen_pro_upgrade.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/module.nextgen_pro_upgrade.php index b335e584a..297df47f6 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/module.nextgen_pro_upgrade.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/module.nextgen_pro_upgrade.php @@ -21,7 +21,7 @@ class M_NextGen_Pro_Upgrade extends C_Base_Module 'photocrati-nextgen_pro_upgrade', 'NextGEN Pro Page', 'NextGEN Gallery Pro Upgrade Page', - '3.0.0', + '3.1.19', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/package.module.nextgen_pro_upgrade.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/package.module.nextgen_pro_upgrade.php index e5eb875be..447f03797 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/package.module.nextgen_pro_upgrade.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/package.module.nextgen_pro_upgrade.php @@ -48,7 +48,7 @@ class A_NextGen_Pro_Upgrade_Controller extends Mixin function get_i18n_strings() { $i18n = new stdClass(); - $i18n->plus_title = __('Setting a New Standard for WordPress Galleries', 'nggallery'); + $i18n->plus_title = __('Create Stunning Galleries with NextGEN Pro', 'nggallery'); $i18n->pro_title = __('Sell Photos + Adobe Lightroom', 'nggallery'); $i18n->plus_desc_first = __('Introducing the most powerful gallery system ever made for WordPress. Watch our 30 second video, or click below to learn more about NextGEN premium extensions and support.', 'nggallery'); $i18n->pro_desc = __('You\'re awesome! You\'ve already got NextGEN Plus. But why not go all the way? With NextGEN Pro, you can sell print and digital downloads, provide proofing galleries for clients, manage galleries directly from Adobe Lightroom, and more.', 'nggallery'); diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/static/style.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/static/style.css index 99173ff07..bee81bf66 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/static/style.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/static/style.css @@ -29,12 +29,13 @@ min-height: auto; margin: 30px 0; max-width: none; - color: #999; + color: black; width: 35%; float: left; max-width: 400px; box-sizing: border-box; font-size: 22px; + font-weight: 300; } #nextgen_pro_upgrade_page p span { @@ -71,25 +72,12 @@ #nextgen_pro_upgrade_page a.button-primary { font-size: 15px; - height: 2.8em; - line-height: 1.6em; line-height: 50px; height: 50px !important; padding: 0 30px !important; - /*from video redesign*/ font-size: 14px; - background-color: #9fbb1a; - border: none; - box-shadow: none; - text-transform: uppercase; - height: 50px; - width: 300px; max-width: 100%; - padding: 12px 22px; - text-shadow: none; - text-align: center; margin: 40px 0; - font-weight: bold; } @media (max-width: 1150px) { diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/static/style.min.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/static/style.min.css index cac9a35e5..fda0c5cc7 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/static/style.min.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/static/style.min.css @@ -1 +1 @@ -#ngg_page_content #nextgen_pro_upgrade_page .ngg_page_content_main{padding:20px 40px 200px}.gallery_page_ngg_pro_upgrade #update-nag,.gallery_page_ngg_pro_upgrade .update-nag{display:none}#nextgen_pro_upgrade_page{max-width:none}#nextgen_pro_upgrade_page .about-wrap .about-text{min-height:auto}#nextgen_pro_upgrade_page img{width:600px;max-width:100%}#nextgen_pro_upgrade_page h1{margin:40px 0 20px}#nextgen_pro_upgrade_page p{min-height:auto;margin:30px 0;color:#999;width:35%;float:left;max-width:400px;box-sizing:border-box;font-size:22px}#nextgen_pro_upgrade_page p span{font-family:Brush Script MT;color:#d5d5d5;font-size:34px;text-align:right;width:100%;margin-top:60px;display:none}#nextgen_pro_upgrade_page.nextgen_plus p span{margin-top:30px}#nextgen_pro_upgrade_page .feature-section{float:left;width:60%;margin-top:15px;box-sizing:border-box;margin-left:30px;padding:0;border:1px solid #eee;box-shadow:0 0 4px 2px rgba(0,0,0,.05)}#nextgen_pro_upgrade_page iframe{height:370px;width:650px;max-width:100%}#nextgen_pro_upgrade_page a.button-primary{line-height:1.6em;line-height:50px;height:50px!important;padding:0 30px!important;font-size:14px;background-color:#9fbb1a;border:none;box-shadow:none;text-transform:uppercase;width:300px;max-width:100%;text-shadow:none;text-align:center;margin:40px 0;font-weight:700}@media (max-width:1150px){#nextgen_pro_upgrade_page p span{display:none}#nextgen_pro_upgrade_page p{width:100%;max-width:100%;float:none}#nextgen_pro_upgrade_page .feature-section{float:none;width:100%;margin-left:0}#nextgen_pro_upgrade_page a.button-primary{margin:40px 0}} \ No newline at end of file +#ngg_page_content #nextgen_pro_upgrade_page .ngg_page_content_main{padding:20px 40px 200px}.gallery_page_ngg_pro_upgrade #update-nag,.gallery_page_ngg_pro_upgrade .update-nag{display:none}#nextgen_pro_upgrade_page{max-width:none}#nextgen_pro_upgrade_page .about-wrap .about-text{min-height:auto}#nextgen_pro_upgrade_page img{width:600px;max-width:100%}#nextgen_pro_upgrade_page h1{margin:40px 0 20px}#nextgen_pro_upgrade_page p{min-height:auto;margin:30px 0;color:#000;width:35%;float:left;max-width:400px;box-sizing:border-box;font-size:22px;font-weight:300}#nextgen_pro_upgrade_page p span{font-family:Brush Script MT;color:#d5d5d5;font-size:34px;text-align:right;width:100%;margin-top:60px;display:none}#nextgen_pro_upgrade_page.nextgen_plus p span{margin-top:30px}#nextgen_pro_upgrade_page .feature-section{float:left;width:60%;margin-top:15px;box-sizing:border-box;margin-left:30px;padding:0;border:1px solid #eee;box-shadow:0 0 4px 2px rgba(0,0,0,.05)}#nextgen_pro_upgrade_page iframe{height:370px;width:650px;max-width:100%}#nextgen_pro_upgrade_page a.button-primary{line-height:50px;height:50px!important;padding:0 30px!important;font-size:14px;max-width:100%;margin:40px 0}@media (max-width:1150px){#nextgen_pro_upgrade_page p span{display:none}#nextgen_pro_upgrade_page p{width:100%;max-width:100%;float:none}#nextgen_pro_upgrade_page .feature-section{float:none;width:100%;margin-left:0}#nextgen_pro_upgrade_page a.button-primary{margin:40px 0}} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/templates/plus.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/templates/plus.php index 41545aa64..f2fa73a57 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/templates/plus.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/templates/plus.php @@ -17,7 +17,7 @@ if ($action_status['message']!='') : ?> <span><?php esc_html_e($i18n->video); ?></span> </p> <div class="feature-section"> - <iframe src="https://www.youtube.com/embed/zmA-b_jiXN0" frameborder="0" allowfullscreen></iframe> + <iframe src="https://www.youtube.com/embed/ePnYGQX0Lf8" frameborder="0" allowfullscreen></iframe> </div> </div> diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/templates/pro.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/templates/pro.php index dd0d8c456..f035d282b 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/templates/pro.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_pro_upgrade/templates/pro.php @@ -20,7 +20,7 @@ if ($action_status['message']!='') : ?> <span><?php esc_html_e($i18n->video); ?></span> </p> <div class="feature-section"> - <iframe src="https://www.youtube.com/embed/zmA-b_jiXN0" frameborder="0" allowfullscreen></iframe> + <iframe src="https://www.youtube.com/embed/ePnYGQX0Lf8" frameborder="0" allowfullscreen></iframe> </div> </div> <!-- /#ngg_page_content_main --> diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php index 2d69ecdc4..ace59848a 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_settings/module.nextgen_settings.php @@ -18,7 +18,7 @@ class M_NextGen_Settings extends C_Base_Module 'photocrati-nextgen_settings', 'NextGEN Gallery Settings', 'Provides central management for NextGEN Gallery settings', - '3.1.6', + '3.1.8', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' @@ -53,10 +53,9 @@ class C_NextGen_Settings_Installer 'wpmuImportFolder' => FALSE, 'wpmuZipUpload' => FALSE, 'wpmuQuotaCheck' => FALSE, - 'datamapper_driver' => 'custom_table_datamapper', - 'gallerystorage_driver' => 'ngglegacy_gallery_storage', - 'maximum_entity_count' => 500, - 'router_param_slug' => 'nggallery' + 'datamapper_driver' => 'custom_table_datamapper', + 'maximum_entity_count' => 500, + 'router_param_slug' => 'nggallery' ); $this->_local_settings = array( diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_xmlrpc/module.nextgen_xmlrpc.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_xmlrpc/module.nextgen_xmlrpc.php index 01ae873c6..909f5b55d 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_xmlrpc/module.nextgen_xmlrpc.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_xmlrpc/module.nextgen_xmlrpc.php @@ -21,7 +21,7 @@ class M_NextGen_XmlRpc extends C_Base_Module 'photocrati-nextgen_xmlrpc', 'NextGEN Gallery XML-RPC', 'Provides an XML-RPC API for NextGEN Gallery', - '3.0.0', + '3.1.16', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_xmlrpc/package.module.nextgen_xmlrpc.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_xmlrpc/package.module.nextgen_xmlrpc.php index c160e86b6..efb5336cb 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_xmlrpc/package.module.nextgen_xmlrpc.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/nextgen_xmlrpc/package.module.nextgen_xmlrpc.php @@ -135,7 +135,6 @@ class A_NextGen_API_Ajax extends Mixin $response = array(); if ($user_obj != null && !is_a($user_obj, 'WP_Error')) { wp_set_current_user($user_obj->ID); - $security = $this->get_registry()->get_utility('I_Security_Manager'); $app_config = $this->object->param('app_config'); $task_list = $this->object->param('task_list'); $extra_data = $this->object->param('extra_data'); @@ -167,7 +166,7 @@ class A_NextGen_API_Ajax extends Mixin $task_auth = false; switch ($task_type) { case 'gallery_add': - $task_auth = $security->is_allowed('nextgen_edit_gallery'); + $task_auth = M_Security::is_allowed('nextgen_edit_gallery'); break; case 'gallery_remove': case 'gallery_edit': @@ -179,20 +178,19 @@ class A_NextGen_API_Ajax extends Mixin $gallery = $gallery_mapper->find($query_id); } if ($gallery != null) { - $actor = $security->get_current_actor(); - $task_auth = $actor->get_entity_id() == $gallery->author || $actor->is_allowed('nextgen_edit_gallery_unowned'); + $task_auth = wp_get_current_user()->ID == $gallery->author || M_Security::is_allowed('nextgen_edit_gallery_unowned'); } else { - $task_auth = $security->is_allowed('nextgen_edit_gallery'); + $task_auth = M_Security::is_allowed('nextgen_edit_gallery'); } break; case 'album_add': - $task_auth = $security->is_allowed('nextgen_edit_album'); + $task_auth = M_Security::is_allowed('nextgen_edit_album'); break; case 'album_remove': - $task_auth = $security->is_allowed('nextgen_edit_album'); + $task_auth = M_Security::is_allowed('nextgen_edit_album'); break; case 'album_edit': - $task_auth = $security->is_allowed('nextgen_edit_album'); + $task_auth = M_Security::is_allowed('nextgen_edit_album'); break; case 'image_list_move': break; @@ -865,7 +863,7 @@ class C_NextGen_API extends C_Component $ngg_image = $storage->upload_base64_image($gallery, $image_data, $image_filename, $image_id, true); if ($ngg_image != null) { $image_status = 'done'; - $image_id = $ngg_image->{$ngg_image->id_field}; + $image_id = is_int($ngg_image) ? $ngg_image : $ngg_image->{$ngg_image->id_field}; } } catch (E_NoSpaceAvailableException $e) { $image_error = __('No space available for image (%1$s).', 'nggallery'); @@ -1303,6 +1301,7 @@ class C_NextGen_API_XMLRPC extends C_Component try { $image = $storage->upload_base64_image($gallery, $data['bits'], $data['name'], $data['image_id'], $data['override']); if ($image) { + $image = is_int($image) ? C_Image_Mapper::get_instance()->find($image, TRUE) : $image; $storage = C_Gallery_Storage::get_instance(); $image->imageURL = $storage->get_image_url($image); $image->thumbURL = $storage->get_thumb_url($image); diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/admin.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/admin.php index 7a91f1976..5116814c2 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/admin.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/admin.php @@ -354,7 +354,7 @@ class nggAdminPanel{ switch ($_GET['page']) { case NGGFOLDER : - wp_add_inline_style( 'nggadmin', file_get_contents(C_Fs::get_instance()->find_static_abspath('photocrati-nextgen-legacy#overview.css') ) ); + wp_add_inline_style('nggadmin', file_get_contents(M_Static_Assets::get_static_abspath('photocrati-nextgen-legacy#overview.css'))); case "nggallery-about" : wp_enqueue_style( 'nggadmin' ); //TODO:Remove after WP 3.3 release diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/album.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/album.php index 5839184d1..1766cc85d 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/album.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/album.php @@ -523,7 +523,7 @@ function ngg_confirm_delete_album(form) { <?php } ?> <?php } else { ?> <?php if (nggGallery::current_user_can('NextGEN Add/Delete album')) { ?> - <span><?php esc_html_e('Add new album', 'nggallery'); ?> </span> + <span class="ngg_new_album"><?php esc_html_e('Add new album', 'nggallery'); ?> </span> <input class="search-input" id="newalbum" name="newalbum" type="text" value="" /> <input class="button-primary action" type="submit" name="add" value="<?php esc_attr_e('Add', 'nggallery'); ?>"/> <?php } ?> @@ -540,7 +540,7 @@ function ngg_confirm_delete_album(form) { | <a href="#" title="<?php esc_attr_e('Maximize the widget content','nggallery'); ?>" id="all_max"><?php esc_html_e('Maximize', 'nggallery'); ?></a> | <a href="#" title="<?php esc_attr_e('Minimize the widget content','nggallery'); ?>" id="all_min"><?php esc_html_e('Minimize', 'nggallery'); ?></a> </div> - <?php esc_html_e('After you create and select an album, you can drag and drop a gallery or another album into your new album below','nggallery'); ?> + <?php esc_html_e('After you create and select an album, you can drag and drop a gallery or another album into your new album below.','nggallery'); ?> </div> <br class="clear" /> diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/nggadmin.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/nggadmin.css index 655629fd6..f80c83d63 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/nggadmin.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/nggadmin.css @@ -47,16 +47,20 @@ #ngg_page_content .ngg_overview .ngg_page_content_main h2 { text-align: left; - font-size: 28px; - font-weight: 500; - color: #444; - margin: 20px 0; + font-size: 22px; + font-weight: 400; + color: black; + margin: 20px 0 20px; + text-transform: uppercase; + letter-spacing: 2px; } #ngg_page_content .ngg_overview .ngg_page_content_main .about-text { - font-size: 18px; + font-size: 17px; max-width: none; margin: 20px 0; + color: black; + font-weight: 400; } #ngg-gallery-wizard { @@ -69,17 +73,18 @@ line-height: 80px; color: #fff; font-size: 14px; - background: rgba(93, 134, 167, 0.18); margin-right: 0; - padding: 0 40px; - border-left: 1px solid #566b7c; - color: #a7b8c6; + color: black; + font-weight: 400; + letter-spacing: .5px; } -#ngg-gallery-wizard a { - font-weight: bold; - text-decoration: none; - margin-left: 20px; +#ngg_page_content #ngg-gallery-wizard a { + font-weight: bold; + text-decoration: none; + margin-left: 20px; + height: 50px !important; + line-height: 50px; } .warning { @@ -126,7 +131,14 @@ } .toplevel_page_nextgen-gallery .feature-video iframe { - box-shadow: 0 0 50px 25px rgba(0,0,0,.03); + box-shadow: 0 0 8px 4px rgba(0,0,0,.03); + width: 800px; + height: 450px; + max-width: 100%; +} + +div[data-id="welcome-link"] .about-text { + margin: 0 0 40px !important; } div[data-id="pro-link"] .feature-section { @@ -147,12 +159,9 @@ div[data-id="pro-link"] .feature-section iframe { } #ngg_page_content .button-primary.ngg-pro-upgrade { - text-transform: uppercase; height: 50px !important; padding: 0 40px !important; line-height: 50px; - font-weight: 600; - letter-spacing: .5px; } div[data-id="videos-link"] .feature-section, @@ -230,7 +239,7 @@ a.switch-expert { .ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content .notice, .ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.updated, .ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.error { - margin: -10px 0 40px 0; + margin: 10px 0 40px 0; } .ngg_admin_notice ul { @@ -268,6 +277,9 @@ a.switch-expert { float: left; margin: 0; line-height: 50px; + text-transform: uppercase; + font-size: 16px; + letter-spacing: 1.5px; } #gallerydiv span.toggle-indicator { @@ -304,6 +316,17 @@ a.switch-expert { } #ngg_page_content .ngg_manage_galleries .search-box { margin-bottom: 10px; + float: none; + position: relative; + left: 470px; + top: 47px; + margin-top: -40px; + width: 360px; +} +#ngg_page_content #editgalleries .displaying-num { + margin-right: 7px !important; + font-size: 14px; + letter-spacing: 1px; } #ngg_page_content .ngg_manage_galleries .tablenav.bottom { margin: 15px 0 0; @@ -325,17 +348,38 @@ a.switch-expert { width: 50px !important; } +#ngg_page_content .ngg_manage_images .tablenav .tablenav-pages { + margin-top: 0; +} + +#ngg_page_content .ngg_manage_galleries .tablenav .tablenav-pages { + margin-top: 6px; +} + #ngg_page_content .ngg_manage_galleries .tablenav .tablenav-pages a, #ngg_page_content .ngg_manage_images .tablenav .tablenav-pages a { - background: #9fbb1a; + background: black; border: none; color: #fff !important; margin: 0 2px; + text-decoration: none; + font-size: 20px; + padding: 4px; + line-height: 20px; + padding: 2px 8px 6px 8px; } #ngg_page_content .ngg_manage_images .tablenav input, #ngg_page_content .ngg_manage_images .tablenav select { width: auto; + margin-top: 0; +} + +#ngg_page_content .ngg_manage_images .tablenav input.current-page, +#ngg_page_content #ngg-manage-images-items-per-page { + padding: 4px !important; + text-align-last: center; + background-image: none; } @@ -346,11 +390,7 @@ a.switch-expert { #ngg_page_content .ngg_manage_galleries table thead, #ngg_page_content .ngg_manage_galleries table tfoot { - background-color: #38576f; -} - -#ngg_page_content .ngg_manage_galleries table tfoot { - background-color: #38576f; + background-color: black; } #ngg_page_content .ngg_manage_galleries table thead th, @@ -381,7 +421,9 @@ a.switch-expert { } .ngg_manage_galleries td.title { - font-weight: bold; + text-transform: uppercase; + font-weight: 400; + font-size: 13px !important; } .ngg_manage_galleries th#author { @@ -393,7 +435,7 @@ a.switch-expert { } #ngg_page_content .ngg_manage_galleries table tr.alternate { - background-color: rgb(247, 248, 243); + background-color: #f7f7f7; } #ngg_page_content .ngg_manage_galleries th a { @@ -443,13 +485,11 @@ table#ngg-listimages { #ngg-listimages thead, #ngg-listimages tfoot { - background: #f5f5f5; - background-color: #38576f; + background: black; } #ngg-listimages tfoot { - background: #f5f5f5; - background-color: #38576f; + background: black; } @@ -459,7 +499,7 @@ table#ngg-listimages { } #ngg-listimages tr.alternate { - background-color: rgb(247, 248, 243); + background-color: #f7f7f7; } #ngg-listimages td { @@ -552,7 +592,6 @@ table#ngg-listimages { #ngg-listimages .column-7 select { font-size: 12px; - height: 25px !important; } #ngg-listimages .row-actions { @@ -590,9 +629,9 @@ table#ngg-listimages { .gallery_page_nggallery-manage-gallery .ui-dialog { border: none; padding: 0; - width: 80% !important; + max-width: 95% !important; z-index: 10000 !important; - left: 10% !important; + margin: 0 auto !important; } .gallery_page_nggallery-manage-album .ui-dialog { @@ -621,6 +660,8 @@ table#ngg-listimages { line-height: 35px; width: auto !important; margin-right: 10px; + text-transform: uppercase; + letter-spacing: 1px; } .gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom button:hover, @@ -636,10 +677,16 @@ table#ngg-listimages { .gallery_page_nggallery-manage-gallery .ui-dialog-titlebar, .gallery_page_nggallery-manage-album .ui-dialog-titlebar{ - background: #143650; + background: black; padding: 10px; } +.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar .ui-dialog-title, +.gallery_page_nggallery-manage-album .ui-dialog-titlebar .ui-dialog-title { + text-transform: uppercase; + letter-spacing: 1px; +} + .gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button, .gallery_page_nggallery-manage-album .ui-dialog-titlebar button { background: #fff !important; @@ -791,16 +838,6 @@ div .progressbar span { /* SETTINGS FOR ALBUM PAGE */ -/* Quick fix to ensure js-filled album container is tall enough to contain content */ -/*#ngg_page_content .ngg_manage_albums .ngg_page_content_main { - min-height: 2000px; -}*/ - - -.gallery_page_nggallery-manage-album #ngg_page_content .wrap { - background: #f1f1f1; -} - .gallery_page_nggallery-manage-album .wrap>h2:first-child { display:none; } @@ -813,34 +850,32 @@ div .progressbar span { margin-bottom: 35px; } -.ngg_manage_albums { - color: #777; -} - .ngg_manage_albums .widget { box-sizing: border-box; border: 1px solid #eee; padding: 10px 10px 20px; - background: rgb(247, 248, 243); width: 32%; margin: 0 1% 0 0; float: left; -} - -.ngg_manage_albums .target-album { - width: 39%; -} - -.ngg_manage_albums .widget.widget-right { - width: 29%; + box-shadow: 0 0 4px 2px rgba(0 0 4px 2px rgba(0,0,0,.02)); } .container { margin-top: 10px; } +.ngg_manage_albums .container { + margin-top: 30px; +} + .ngg_select_album { margin: 0 50px 0 2px; + vertical-align: middle; +} + +#newalbum, +.ngg_new_album { + vertical-align: middle; } .albumnav select[name="act_album"] { @@ -855,7 +890,8 @@ div .progressbar span { box-shadow: none; background: transparent; border: none; - margin-bottom: 5px; + margin: -10px -10px 20px -10px; + background: #f7f7f7; } div .groupItem @@ -876,14 +912,11 @@ div .innerhandle { { background-color:#9fbb1a; color: #FFFFFF; - font-weight:bold; + font-weight:400; line-height: 28px; height: 28px; padding: 0 5px; - -moz-border-radius: 3px; - -khtml-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; + border-radius: 0; height: 40px; padding: 0 10px; line-height: 40px; @@ -891,7 +924,7 @@ div .innerhandle { #ngg_page_content .groupItem .album_obj { - background-color: #38576f; + background-color: black; } #ngg_page_content .groupItem .item_top a @@ -955,6 +988,8 @@ div.widget-top h3 { margin: 0; padding: 5px 12px; font-size: 13px; + letter-spacing: .5px; + text-transform: uppercase; } div.widget-top { @@ -1092,17 +1127,17 @@ DIV that shows the image as you drag it } } +@media (max-width: 1420px) { + #ngg_page_content .ngg_manage_galleries .search-box { + position: static; + } +} + @media (max-width: 1080px) { #ngg-gallery-wizard > span { display: none; } -} - -@media (max-width: 1024px) { - /* Manage Galleries */ - .ngg_manage_galleries .search-form { - display: none; - } + /* Manage Galleries */ .ngg_manage_galleries .tablenav.bottom { display: none; } @@ -1110,7 +1145,9 @@ DIV that shows the image as you drag it margin-bottom: 8px; } .ngg_manage_images #gallery_fields td:nth-of-type(odd) { - background: rgb(247, 248, 243); + background: #f7f7f7; + padding-left: 10px; + font-weight: bold; } .ngg_manage_images #gallery_fields, .ngg_manage_images #gallery_fields tbody, @@ -1121,9 +1158,6 @@ DIV that shows the image as you drag it box-sizing: border-box; } .ngg_manage_images #gallery_fields td { - /*display: block; - width: 100%;*/ - /*box-sizing: border-box;*/ padding: 10px 5px; border: 1px solid rgb(247, 248, 243); margin: 0; @@ -1217,14 +1251,12 @@ DIV that shows the image as you drag it #ngg-listimages td.column-3 { width: 55%; max-width: 300px; - /*height: 150px;*/ float: left; box-sizing: border-box; padding-bottom: 10px !important; } #ngg-listimages td.column-4 { width: 40% !important; - /*height: 150px;*/ float: left; box-sizing: border-box; } @@ -1258,6 +1290,14 @@ DIV that shows the image as you drag it #ngg-gallery-wizard { display: none; } + #ngg_page_content .ngg_manage_galleries .tablenav.top > div { + display: block; + width: 100%; + } + #ngg_page_content .ngg_manage_galleries .tablenav .tablenav-pages { + margin-top: 20px; + margin-bottom: 28px !important; + } } @media (max-width: 737px) { @@ -1289,7 +1329,7 @@ DIV that shows the image as you drag it } .ngg_manage_albums .target-album, .ngg_manage_albums .widget.widget-right { - width: 32%; + width: 32% !important; margin: .5% !important; padding: 5px 5px 10px; } diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/nggadmin.min.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/nggadmin.min.css index a15081355..1c4de4147 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/nggadmin.min.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/nggadmin.min.css @@ -1 +1 @@ -#iframely h2.title,.gallery_page_nggallery-manage-gallery #ngg_page_content>.wrap>h2{display:none}#gallerydiv span.toggle-indicator:hover,.show_details,div#poststuff #gallerydiv{cursor:pointer}.toplevel_page_nextgen-gallery #ngg_page_content{width:98%}.toplevel_page_nextgen-gallery #ngg_page_content .about-wrap.ngg_overview{width:100%}.toplevel_page_nextgen-gallery #ngg_page_content .ngg_page_content_main{padding-right:40px!important}#newversion{border-color:#CCC;border-style:solid;border-width:1px;margin-right:7px;margin-top:10px;padding:2px}.ngg-dashboard-widget ul.settings span{padding-left:10px;color:#2583AD;font-weight:700}.ngg-overview .postbox .handlediv{float:right;height:24px;width:24px}#ngg_page_content .ngg_overview .ngg_page_content_header h2{padding-top:2px}#ngg_page_content .ngg_overview .ngg_page_content_main h2{text-align:left;font-size:28px;font-weight:500;color:#444;margin:20px 0}#ngg_page_content .ngg_overview .ngg_page_content_main .about-text{font-size:18px;max-width:none;margin:20px 0}#ngg-gallery-wizard{min-height:auto;position:absolute;top:0;right:0;text-align:right;margin:0;line-height:80px;font-size:14px;background:rgba(93,134,167,.18);padding:0 40px;border-left:1px solid #566b7c;color:#a7b8c6}#ngg-gallery-wizard a{font-weight:700;text-decoration:none;margin-left:20px}.warning{color:#9F6000;background-color:#FEEFB3;border:1px solid;margin:5px 0;padding:5px}#donator_message,#wm-preview{border-style:solid;border-width:1px}#donator_message{background-color:#BDE5F8;border-color:#00529B;-moz-border-radius-bottomleft:3px;-moz-border-radius-bottomright:3px;-moz-border-radius-topleft:3px;-moz-border-radius-topright:3px;margin:5px 15px 2px;padding:0 .6em}#wm-preview h3,.wm-table tr{background:0 #F9F9F9}#donator_message p{line-height:1;margin:.5em 0;padding:2px 2px 10px}#donator_message span{padding-top:10px;float:right}#plugin_check img{float:right}#plugin_check p.message{font-size:90%;color:#666}.toplevel_page_nextgen-gallery .feature-video iframe{box-shadow:0 0 50px 25px rgba(0,0,0,.03)}div[data-id=pro-link] .feature-section{position:relative;margin:40px 0;padding-bottom:56.25%}div[data-id=pro-link] .feature-section iframe{max-width:100%;position:absolute;top:0;left:0;width:100%;height:100%}#ngg_page_content .button-primary.ngg-pro-upgrade{text-transform:uppercase;height:50px!important;padding:0 40px!important;line-height:50px;font-weight:600;letter-spacing:.5px}div[data-id=videos-link] .feature-section,div[data-id=videos-link] .feature-section .col,div[data-id=genesis-link] .feature-section,div[data-id=genesis-link] .feature-section .col{padding:0;margin:0}.ngg-admin .ui-dialog{max-width:100%}.ngg-options th{width:22%}a.switch-expert{text-decoration:none}#wm-preview{float:right;font-size:90%;width:35%;border-color:#EBEBEB #ccc #ccc #ebebeb;margin-bottom:10px;margin-left:10px;margin-right:8px;padding:2px}#wm-preview h3{font-size:14px;font-weight:700;margin:0 0 10px;padding:8px 5px}.wm-table td,.wm-table th{border-bottom:8px solid #FFF;padding:10px}#wm-position{width:100%;margin-left:40px}.wm-table{border-collapse:collapse;margin-top:1em;width:60%;clear:none}.wm-table td{line-height:20px;margin-bottom:9px}.wm-table th{text-align:left}.ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content .notice,.ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.error,.ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.updated{margin:-10px 0 40px}.ngg_admin_notice ul{list-style:circle inside;margin:0;padding:0}.gallery_page_nggallery-manage-gallery #ngg_page_content .ngg_page_content_main{padding-top:30px}.ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.updated#message{margin-bottom:35px}#ngg_page_content .ngg_manage_galleries .tablenav{margin:0 0 30px}#ngg_page_content .ngg_manage_images .handlediv{float:none;width:100%;height:50px}#gallerydiv h3,#gallerydiv span.toggle-indicator{display:inline-block;float:left;line-height:50px}#gallerydiv h3{height:50px;margin:0}#gallerydiv span.toggle-indicator:before{font-size:24px;margin:12px 20px 0 10px}#gallerydiv h3:active,#gallerydiv h3:focus,#gallerydiv span.toggle-indicator:active,#gallerydiv span.toggle-indicator:focus{outline:0;border:none;-moz-outline-style:none}#ngg_page_content .ngg_manage_images .tablenav{margin:50px 0 30px}#ngg_page_content .ngg_manage_galleries .search-box,#ngg_page_content .ngg_manage_galleries .tablenav.top>div,#ngg_page_content .ngg_manage_images .tablenav.top>div{margin-bottom:10px}#ngg_page_content .ngg_manage_galleries .tablenav.bottom{margin:15px 0 0}#ngg_page_content .ngg_manage_images .tablenav.bottom{margin:25px 0 0}.ngg-admin #ngg_page_content .ngg_manage_images td{vertical-align:top}#ngg_page_content .ngg_manage_galleries .tablenav input{height:28px;width:50px;padding:0 3px}#ngg_page_content .ngg_manage_galleries .tablenav input.current-page{width:50px!important}#ngg_page_content .ngg_manage_galleries .tablenav .tablenav-pages a,#ngg_page_content .ngg_manage_images .tablenav .tablenav-pages a{background:#9fbb1a;border:none;color:#fff!important;margin:0 2px}#ngg_page_content .ngg_manage_images .tablenav input,#ngg_page_content .ngg_manage_images .tablenav select{width:auto}#ngg_page_content .ngg_manage_galleries table{box-shadow:none;border:1px solid rgba(159,187,26,.08)!important}#ngg_page_content .ngg_manage_galleries table tfoot,#ngg_page_content .ngg_manage_galleries table thead{background-color:#38576f}#ngg_page_content .ngg_manage_galleries table tfoot td,#ngg_page_content .ngg_manage_galleries table tfoot th,#ngg_page_content .ngg_manage_galleries table thead td,#ngg_page_content .ngg_manage_galleries table thead th{background-color:transparent;border:none}#ngg_page_content .ngg_manage_galleries table td,#ngg_page_content .ngg_manage_galleries table th{padding:12px 10px;font-size:14px}#ngg_page_content .ngg_manage_galleries table th{font-weight:700!important;color:#fff}.ngg_manage_galleries th#id{width:33px}.ngg_manage_galleries th#title{min-width:140px}.ngg_manage_galleries td.title{font-weight:700}.ngg_manage_galleries th#author{min-width:80px}.ngg_manage_galleries th#page_id{min-width:60px}#ngg_page_content .ngg_manage_galleries table tr.alternate{background-color:#f7f8f3}#ngg_page_content .ngg_manage_galleries th a{padding:0!important;color:#fff}div#poststuff{min-width:auto}p#ngg-inlinebutton{float:right;margin:0;position:relative;top:-25pt}#gallery_fields{width:100%}#gallery_fields td{padding:5px;min-width:105px}#gallery_fields tr td:nth-of-type(2){padding-right:60px}#gallery_fields input[type=text],#gallery_fields select,#gallery_fields textarea{min-width:220px;width:99%;color:#888}table#ngg-listimages{border:1px solid #f7f7f7}#ngg-listimages tfoot,#ngg-listimages thead{background:#38576f}#ngg-listimages.widefat thead th,.ngg-admin #ngg_page_content .widefat tfoot th{padding:12px 10px!important}#ngg-listimages tr.alternate{background-color:#f7f8f3}#ngg-listimages td{padding:15px 5px!important}#ngg-listimages .iedit,#ngg-listimages .iedit td,#ngg-listimages th{border:none}#ngg-listimages .iedit td,#ngg-listimages th{padding:15px 5px}#ngg-listimages th{font-size:12px;font-weight:700}#ngg-listimages .column select{width:100%!important}#ngg-listimages .column-1 input{margin:0 0 0 8px}#ngg-listimages .column-1{width:24px}#ngg-listimages .column-2{width:30px}#ngg-listimages .column-3{min-width:80px;width:15%}#ngg-listimages .column-3 .thumb{max-height:100%;max-width:100%}#ngg-listimages .column-4{width:15%;max-width:220px;font-size:12px}#ngg-listimages .column-4 .meta,#ngg-listimages .column-4 label{font-size:10px;color:#888}#ngg-listimages .column-4 label input[type=checkbox]{margin:-2px 4px 0 0}#ngg-listimages .column-5 input[type=text],#ngg-listimages .column-5 textarea,#ngg-listimages .column-6 textarea{width:100%;padding:3px 5px;font-size:12px;color:#888;border:1px solid #eee;margin:1px 0;box-shadow:none}#ngg-listimages .column-5 input[type=text]{height:25px}#ngg-listimages .column-5 textarea{height:70px}#ngg-listimages .column-6 textarea{height:97px}#ngg-listimages .column-7 select{font-size:12px;height:25px!important}#ngg-listimages .row-actions{padding:0 0 6px 4px;margin-bottom:-2px;position:relative;bottom:4px;left:0;right:0}#ngg-listimages .row_actions,#ngg-listimages .row_actions td{border-top:none;padding:0!important}#ngg-listimages .row-actions a{font-size:12px}#ngg-listimages ul.imagify-datas-list .big{color:#9fbb1a}#ngg-listimages .imagify-datas-more-action a{background:#9fbb1a;color:#fff}.gallery_page_nggallery-manage-gallery .ui-dialog{border:none;padding:0;width:80%!important;z-index:10000!important;left:10%!important}.gallery_page_nggallery-manage-album .ui-dialog{border:none;padding:0;z-index:10000!important;width:650px!important;max-width:98%!important}.gallery_page_nggallery-manage-album .ui-dialog .button-primary,.gallery_page_nggallery-manage-album .ui-dialog .button-secondary,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-primary,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-secondary,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom button,.gallery_page_nggallery-manage-gallery .ui-dialog .button-primary,.gallery_page_nggallery-manage-gallery .ui-dialog .button-secondary,.gallery_page_nggallery-manage-gallery .ui-dialog button{background-color:#9fbb1a!important;color:#fff!important;border:none!important;box-shadow:none!important;text-shadow:none!important;height:35px!important;padding:0 15px!important;line-height:35px;width:auto!important;margin-right:10px}.gallery_page_nggallery-manage-album .ui-dialog .button-primary:hover,.gallery_page_nggallery-manage-album .ui-dialog .button-secondary:hover,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-primary:hover,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-secondary:hover,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom button:hover,.gallery_page_nggallery-manage-gallery .ui-dialog .button-secondary:hover,.gallery_page_nggallery-manage-gallery .ui-dialog button:hover .gallery_page_nggallery-manage-gallery .ui-dialog .button-primary:hover{background-color:#A9C524!important}.gallery_page_nggallery-manage-album .ui-dialog-titlebar,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar{background:#143650;padding:10px}.gallery_page_nggallery-manage-album .ui-dialog-titlebar button,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button{background:#fff!important;border:none!important;box-shadow:none!important;text-shadow:none!important;height:24px!important;width:24px!important;padding:0!important;line-height:1;float:none;margin-right:0;border-radius:50%;top:17px;right:10px}.gallery_page_nggallery-manage-album .ui-dialog-titlebar button:active,.gallery_page_nggallery-manage-album .ui-dialog-titlebar button:focus,.gallery_page_nggallery-manage-album .ui-dialog-titlebar button:hover,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button:active,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button:focus,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button:hover{background:#fff!important}.gallery_page_nggallery-manage-album .ui-dialog .ngg-overlay-dialog,.gallery_page_nggallery-manage-gallery .ui-dialog .ngg-overlay-dialog{padding:30px 20px;box-sizing:border-box;width:100%!important}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog table{border:none}.gallery_page_nggallery-manage-album .ngg-overlay-dialog #ngg-overlay-dialog-main,.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog #ngg-overlay-dialog-main{width:70%;padding:20px 20px 0}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog td small{display:block;text-align:center;width:200px;margin:0 auto 20px}.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom{text-align:center;padding:30px 0 0}.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom input[type=button]{float:none;margin-right:0}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog #thumbMsg{color:#693;font-size:11px;width:100%;display:inline-block;height:35px;line-height:35px;margin:10px 0}.gallery_page_nggallery-manage-gallery .ui-dialog form{margin-top:30px;margin-left:30px}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog input[type=radio]:focus{border:1px solid #b4b9be;box-shadow:none}.gallery_page_nggallery-manage-gallery input[type=checkbox]:checked:before{color:#9fbb1a}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog input[type=radio]:checked:before{background:#9fbb1a;width:14px;height:14px;margin:0}div .progressborder{border:1px solid #DDD;display:block;height:30px;background-color:#464646;width:100%;margin-top:15px;margin-bottom:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}div .progressbar{border:none;display:block;height:30px;background-color:#9fbb1a;width:0%;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}div .progressbar span{display:inline;position:absolute;color:#fff;font-weight:700;padding:5px 0 0 5px}.show_details{height:16px;line-height:20px;overflow:hidden;min-width:8em;padding:3px}.show_details span{border-bottom:1px solid #999;white-space:pre}.show_details:hover{height:auto;overflow:visible;border:1px solid #999}.gallery_page_nggallery-manage-album #ngg_page_content .wrap{background:#f1f1f1}.gallery_page_nggallery-manage-album .wrap>h2:first-child{display:none}.gallery_page_nggallery-manage-album #ngg_page_content div.updated{margin:0 0 15px}.gallery_page_nggallery-manage-album #ngg_page_content div.updated#message{margin-bottom:35px}.ngg_manage_albums{color:#777}.ngg_manage_albums .widget{box-sizing:border-box;border:1px solid #eee;padding:10px 10px 20px;background:#f7f8f3;width:32%;margin:0 1% 0 0;float:left}.ngg_manage_albums .target-album{width:39%}.ngg_manage_albums .widget.widget-right{width:29%}.container{margin-top:10px}.ngg_select_album{margin:0 50px 0 2px}.albumnav select[name=act_album]{width:150px}#editalbum select[name=pageid]{width:95%}#ngg_page_content .ngg_manage_albums .widget-top{box-shadow:none;background:0 0;border:none;margin-bottom:5px}div .groupItem{cursor:move;padding:2px;line-height:1.5;width:100%;margin:0;box-sizing:border-box}div .innerhandle{background-color:#FBFBFB}.groupItem .item_top{background-color:#9fbb1a;color:#FFF;font-weight:700;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;height:40px;padding:0 10px;line-height:40px}#ngg_page_content .groupItem .album_obj{background-color:#38576f}#ngg_page_content .groupItem .item_top a{color:#FFF;float:right;text-decoration:none}.groupItem .item_top a:hover{color:#FFF}.itemContent{border-color:#DFDFDF;border-style:none solid solid;border-width:0 1px 1px;padding:2px 0 20px 2px}.itemContent p{border:0;margin:0;padding:0}.inlinepicture{float:left;display:inline;margin:0;padding:0 3px 1px}.inlinepicture img{margin:3px;max-height:60px}.sort_placeholder{border:1px dashed #bba!important;margin:5px;background:#F9F9F9}.widget-holder{min-height:400px;padding-top:1px}.target{background-color:transparent}div.widget-top h3{text-align:center;line-height:25px;margin:0;padding:5px 12px;font-size:13px}div.widget-top{text-shadow:0 1px 0 #FFF;background-repeat:repeat-x;background-position:0 0;font-size:13px}.ui-autocomplete-start{background-position:99% center}#ngg_page_content .ngg_gallery_sort .tablenav{margin:15px 0}#ngg_page_content .ngg_gallery_sort ul.subsubsub{margin:10px 0 15px}#ngg_page_content .ngg_gallery_sort .imageBox_theImage{width:auto}#sortGallery{position:relative}p#sortButton{margin:0;position:absolute;right:0;top:0}.imageBox,.imageBoxHighlighted{width:130px;height:160px;float:left;overflow:hidden;text-overflow:ellipsis;padding:5px}.imageBox_theImage{width:110px;height:125px;background-position:center;background-repeat:no-repeat;margin:0 auto 2px}.imageBox_label{text-align:center;font-family:arial;font-size:11px;padding-top:2px;margin:0 auto}#insertionMarker{height:150px;width:6px;position:absolute}#insertionMarkerLine{width:6px;height:145px}#insertionMarker img{float:left}#dragDropContent{opacity:.4;filter:alpha(opacity=40);position:absolute;z-index:10;display:none}.error_inline{background:0 #FFEBE8;border:1px solid #C00;margin:5px auto;padding:10px}.ngg-list{font-size:11px;margin-left:15px;list-style-position:inside;list-style-type:disc}#ngg-manage-images-items-per-page-label{float:right;line-height:35px;margin-right:5px}#ngg-manage-images-items-per-page{float:right;margin-right:30px}@media (max-width:1200px){div[data-id=details-link] .two-col .col{width:100%;min-width:100%}}@media (max-width:1080px){#ngg-gallery-wizard>span{display:none}}@media (max-width:1024px){.ngg_manage_galleries .search-form,.ngg_manage_galleries .tablenav.bottom{display:none}.ngg_manage_images #gallery_fields td:nth-of-type(even){margin-bottom:8px}.ngg_manage_images #gallery_fields td:nth-of-type(odd){background:#f7f8f3}.ngg_manage_images #gallery_fields,.ngg_manage_images #gallery_fields tbody,.ngg_manage_images #gallery_fields td,.ngg_manage_images #gallery_fields tr{display:block;width:100%;box-sizing:border-box}.ngg_manage_images #gallery_fields td{padding:10px 5px;border:1px solid #f7f8f3;margin:0}}@media (max-width:900px){.ngg_manage_galleries tfoot{display:none}.ngg_manage_galleries .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){display:table-cell}.ngg_manage_galleries td.author,.ngg_manage_galleries td.id,.ngg_manage_galleries td.page_id,.ngg_manage_galleries th#author,.ngg_manage_galleries th#id,.ngg_manage_galleries th#page_id{display:none!important}#ngg-listimages td.column.column-2,#ngg-listimages td.column.column-6,#ngg-listimages td.column.column-8,#ngg-listimages tfoot,#ngg-listimages thead .column-1,#ngg-listimages thead .column-2,#ngg-listimages thead .column-4,#ngg-listimages thead .column-5,#ngg-listimages thead .column-6,#ngg-listimages thead .column-7,#ngg-listimages thead .column-8{display:none}#ngg-listimages .column-3{min-width:200px}table#ngg-listimages,table#ngg-listimages thead{display:block}#ngg-listimages .iedit td{padding-bottom:30px!important}}@media (max-width:800px){table#ngg-listimages,table#ngg-listimages tbody,table#ngg-listimages td,table#ngg-listimages tr{display:block}table#ngg-listimages tr{padding:10px 5px!important}#ngg-listimages thead,#ngg-listimages thead th{display:block;width:100%;box-sizing:border-box}#ngg-listimages .row_actions td:first-of-type,#ngg-listimages tfoot{display:none}#ngg-listimages .row_actions{display:none;display:block;clear:both;padding:0 8px 10px!important;border-bottom:1px solid #c1c97c}#ngg-listimages td.column-3,.ngg-listimages tr.iedit td{padding-bottom:10px!important;float:left;box-sizing:border-box}.ngg-listimages tr.iedit td{display:block!important}#ngg-manage-images-items-per-page,#ngg-manage-images-items-per-page-label,.ngg_manage_images .tablenav.bottom .displaying-num{display:none}#ngg-listimages td.column-1,#ngg-listimages td.column-2{width:10%!important;height:150px;float:left;box-sizing:border-box;display:none}#ngg-listimages td.column-3{width:55%;max-width:300px}#ngg-listimages td.column-4{width:40%!important;float:left;box-sizing:border-box}#ngg-listimages td.column-5,#ngg-listimages td.column-6,#ngg-listimages td.column-7{padding:0 5px!important}#ngg-listimages td.column-6{margin-top:-5px;margin-bottom:-8px}.ngg-listimages td.column-7{padding-bottom:15px}#ngg-listimages .column-6 textarea{height:60px}}@media (max-width:782px){#ngg-gallery-wizard{display:none}}@media (max-width:737px){.gallery_page_nggallery-manage-gallery input[type=checkbox]:checked:before{font-size:22px}.ngg-overlay-dialog input[type=radio]{height:16px;width:16px}#ngg-gallery-wizard{display:none}}@media (max-width:640px){.ngg_manage_galleries td.description,.ngg_manage_galleries th#description{display:none!important}.ngg_manage_albums .tablenav .actions{width:100%;float:none}.ngg_manage_albums .tablenav span{display:block}.ngg_manage_albums .target-album,.ngg_manage_albums .widget.widget-right{width:32%;margin:.5%!important;padding:5px 5px 10px}.groupItem .item_top{height:auto!important;line-height:1.5;padding:8px;font-size:12px}#ngg_page_content .groupItem .item_top a{display:none}.ngg_manage_albums div[style="float:right;"]{float:none!important}.gallery_page_nggallery-manage-gallery .ui-dialog{width:95%!important;left:2.5%!important}.gallery_page_nggallery-manage-gallery .ui-dialog .ngg-overlay-dialog{padding:30px 10px}.ngg-overlay-dialog td{display:block;width:100%!important;padding:0!important}.ngg-overlay-dialog input[type=radio]{margin:2px 5px;height:16px;width:16px}} \ No newline at end of file +#iframely h2.title,.gallery_page_nggallery-manage-gallery #ngg_page_content>.wrap>h2{display:none}#gallerydiv span.toggle-indicator:hover,.show_details,div#poststuff #gallerydiv{cursor:pointer}.toplevel_page_nextgen-gallery #ngg_page_content{width:98%}.toplevel_page_nextgen-gallery #ngg_page_content .about-wrap.ngg_overview{width:100%}.toplevel_page_nextgen-gallery #ngg_page_content .ngg_page_content_main{padding-right:40px!important}#newversion{border-color:#CCC;border-style:solid;border-width:1px;margin-right:7px;margin-top:10px;padding:2px}.ngg-dashboard-widget ul.settings span{padding-left:10px;color:#2583AD;font-weight:700}.ngg-overview .postbox .handlediv{float:right;height:24px;width:24px}#ngg_page_content .ngg_overview .ngg_page_content_header h2{padding-top:2px}#ngg_page_content .ngg_overview .ngg_page_content_main h2{text-align:left;font-size:22px;font-weight:400;color:#000;margin:20px 0;text-transform:uppercase;letter-spacing:2px}#ngg_page_content .ngg_overview .ngg_page_content_main .about-text{font-size:17px;max-width:none;margin:20px 0;color:#000;font-weight:400}#ngg-gallery-wizard{min-height:auto;position:absolute;top:0;right:0;text-align:right;margin:0;line-height:80px;font-size:14px;color:#000;font-weight:400;letter-spacing:.5px}#ngg_page_content #ngg-gallery-wizard a{font-weight:700;text-decoration:none;margin-left:20px;height:50px!important;line-height:50px}.warning{color:#9F6000;background-color:#FEEFB3;border:1px solid;margin:5px 0;padding:5px}#donator_message,#wm-preview{border-style:solid;border-width:1px}#donator_message{background-color:#BDE5F8;border-color:#00529B;-moz-border-radius-bottomleft:3px;-moz-border-radius-bottomright:3px;-moz-border-radius-topleft:3px;-moz-border-radius-topright:3px;margin:5px 15px 2px;padding:0 .6em}#wm-preview h3,.wm-table tr{background:0 #F9F9F9}#donator_message p{line-height:1;margin:.5em 0;padding:2px 2px 10px}#donator_message span{padding-top:10px;float:right}#plugin_check img{float:right}#plugin_check p.message{font-size:90%;color:#666}.toplevel_page_nextgen-gallery .feature-video iframe{box-shadow:0 0 8px 4px rgba(0,0,0,.03);width:800px;height:450px;max-width:100%}div[data-id=welcome-link] .about-text{margin:0 0 40px!important}div[data-id=pro-link] .feature-section{position:relative;margin:40px 0;padding-bottom:56.25%}div[data-id=pro-link] .feature-section iframe{max-width:100%;position:absolute;top:0;left:0;width:100%;height:100%}#ngg_page_content .button-primary.ngg-pro-upgrade{height:50px!important;padding:0 40px!important;line-height:50px}div[data-id=videos-link] .feature-section,div[data-id=videos-link] .feature-section .col,div[data-id=genesis-link] .feature-section,div[data-id=genesis-link] .feature-section .col{padding:0;margin:0}.ngg-admin .ui-dialog{max-width:100%}.ngg-options th{width:22%}a.switch-expert{text-decoration:none}#wm-preview{float:right;font-size:90%;width:35%;border-color:#EBEBEB #ccc #ccc #ebebeb;margin-bottom:10px;margin-left:10px;margin-right:8px;padding:2px}#wm-preview h3{font-size:14px;font-weight:700;margin:0 0 10px;padding:8px 5px}.wm-table td,.wm-table th{border-bottom:8px solid #FFF;padding:10px}#wm-position{width:100%;margin-left:40px}.wm-table{border-collapse:collapse;margin-top:1em;width:60%;clear:none}.wm-table td{line-height:20px;margin-bottom:9px}.wm-table th{text-align:left}.ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content .notice,.ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.error,.ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.updated{margin:10px 0 40px}.ngg_admin_notice ul{list-style:circle inside;margin:0;padding:0}.gallery_page_nggallery-manage-gallery #ngg_page_content .ngg_page_content_main{padding-top:30px}.ngg-admin.gallery_page_nggallery-manage-gallery #ngg_page_content div.updated#message{margin-bottom:35px}#ngg_page_content .ngg_manage_galleries .tablenav{margin:0 0 30px}#ngg_page_content .ngg_manage_images .handlediv{float:none;width:100%;height:50px}#gallerydiv h3,#gallerydiv span.toggle-indicator{display:inline-block;float:left;line-height:50px}#gallerydiv h3{height:50px;margin:0;text-transform:uppercase;font-size:16px;letter-spacing:1.5px}#gallerydiv span.toggle-indicator:before{font-size:24px;margin:12px 20px 0 10px}#gallerydiv h3:active,#gallerydiv h3:focus,#gallerydiv span.toggle-indicator:active,#gallerydiv span.toggle-indicator:focus{outline:0;border:none;-moz-outline-style:none}#ngg_page_content .ngg_manage_images .tablenav{margin:50px 0 30px}#ngg_page_content .ngg_manage_galleries .tablenav.top>div,#ngg_page_content .ngg_manage_images .tablenav.top>div{margin-bottom:10px}#ngg_page_content .ngg_manage_galleries .search-box{margin-bottom:10px;float:none;position:relative;left:470px;top:47px;margin-top:-40px;width:360px}#ngg_page_content #editgalleries .displaying-num{margin-right:7px!important;font-size:14px;letter-spacing:1px}#ngg_page_content .ngg_manage_galleries .tablenav.bottom{margin:15px 0 0}#ngg_page_content .ngg_manage_images .tablenav.bottom{margin:25px 0 0}.ngg-admin #ngg_page_content .ngg_manage_images td{vertical-align:top}#newalbum,.ngg_new_album,.ngg_select_album{vertical-align:middle}#ngg_page_content .ngg_manage_galleries .tablenav input{height:28px;width:50px;padding:0 3px}#ngg_page_content .ngg_manage_galleries .tablenav input.current-page{width:50px!important}#ngg_page_content .ngg_manage_images .tablenav .tablenav-pages{margin-top:0}#ngg_page_content .ngg_manage_galleries .tablenav .tablenav-pages{margin-top:6px}#ngg_page_content .ngg_manage_galleries .tablenav .tablenav-pages a,#ngg_page_content .ngg_manage_images .tablenav .tablenav-pages a{background:#000;border:none;color:#fff!important;margin:0 2px;text-decoration:none;font-size:20px;line-height:20px;padding:2px 8px 6px}#ngg_page_content .ngg_manage_images .tablenav input,#ngg_page_content .ngg_manage_images .tablenav select{width:auto;margin-top:0}#ngg_page_content #ngg-manage-images-items-per-page,#ngg_page_content .ngg_manage_images .tablenav input.current-page{padding:4px!important;text-align-last:center;background-image:none}#ngg_page_content .ngg_manage_galleries table{box-shadow:none;border:1px solid rgba(159,187,26,.08)!important}#ngg_page_content .ngg_manage_galleries table tfoot,#ngg_page_content .ngg_manage_galleries table thead{background-color:#000}#ngg_page_content .ngg_manage_galleries table tfoot td,#ngg_page_content .ngg_manage_galleries table tfoot th,#ngg_page_content .ngg_manage_galleries table thead td,#ngg_page_content .ngg_manage_galleries table thead th{background-color:transparent;border:none}#ngg_page_content .ngg_manage_galleries table td,#ngg_page_content .ngg_manage_galleries table th{padding:12px 10px;font-size:14px}#ngg_page_content .ngg_manage_galleries table th{font-weight:700!important;color:#fff}.ngg_manage_galleries th#id{width:33px}.ngg_manage_galleries th#title{min-width:140px}.ngg_manage_galleries td.title{text-transform:uppercase;font-weight:400;font-size:13px!important}.ngg_manage_galleries th#author{min-width:80px}.ngg_manage_galleries th#page_id{min-width:60px}#ngg_page_content .ngg_manage_galleries table tr.alternate{background-color:#f7f7f7}#ngg_page_content .ngg_manage_galleries th a{padding:0!important;color:#fff}div#poststuff{min-width:auto}p#ngg-inlinebutton{float:right;margin:0;position:relative;top:-25pt}#gallery_fields{width:100%}#gallery_fields td{padding:5px;min-width:105px}#gallery_fields tr td:nth-of-type(2){padding-right:60px}#gallery_fields input[type=text],#gallery_fields select,#gallery_fields textarea{min-width:220px;width:99%;color:#888}table#ngg-listimages{border:1px solid #f7f7f7}#ngg-listimages tfoot,#ngg-listimages thead{background:#000}#ngg-listimages.widefat thead th,.ngg-admin #ngg_page_content .widefat tfoot th{padding:12px 10px!important}#ngg-listimages tr.alternate{background-color:#f7f7f7}#ngg-listimages td{padding:15px 5px!important}#ngg-listimages .iedit,#ngg-listimages .iedit td,#ngg-listimages th{border:none}#ngg-listimages .iedit td,#ngg-listimages th{padding:15px 5px}#ngg-listimages th{font-size:12px;font-weight:700}#ngg-listimages .column select{width:100%!important}#ngg-listimages .column-1 input{margin:0 0 0 8px}#ngg-listimages .column-1{width:24px}#ngg-listimages .column-2{width:30px}#ngg-listimages .column-3{min-width:80px;width:15%}#ngg-listimages .column-3 .thumb{max-height:100%;max-width:100%}#ngg-listimages .column-4{width:15%;max-width:220px;font-size:12px}#ngg-listimages .column-4 .meta,#ngg-listimages .column-4 label{font-size:10px;color:#888}#ngg-listimages .column-7 select,#ngg-listimages .row-actions a{font-size:12px}#ngg-listimages .column-4 label input[type=checkbox]{margin:-2px 4px 0 0}#ngg-listimages .column-5 input[type=text],#ngg-listimages .column-5 textarea,#ngg-listimages .column-6 textarea{width:100%;padding:3px 5px;font-size:12px;color:#888;border:1px solid #eee;margin:1px 0;box-shadow:none}#ngg-listimages .column-5 input[type=text]{height:25px}#ngg-listimages .column-5 textarea{height:70px}#ngg-listimages .column-6 textarea{height:97px}#ngg-listimages .row-actions{padding:0 0 6px 4px;margin-bottom:-2px;position:relative;bottom:4px;left:0;right:0}#ngg-listimages .row_actions,#ngg-listimages .row_actions td{border-top:none;padding:0!important}#ngg-listimages ul.imagify-datas-list .big{color:#9fbb1a}#ngg-listimages .imagify-datas-more-action a{background:#9fbb1a;color:#fff}.gallery_page_nggallery-manage-gallery .ui-dialog{border:none;padding:0;max-width:95%!important;z-index:10000!important;margin:0 auto!important}.gallery_page_nggallery-manage-album .ui-dialog{border:none;padding:0;z-index:10000!important;width:650px!important;max-width:98%!important}.gallery_page_nggallery-manage-album .ui-dialog .button-primary,.gallery_page_nggallery-manage-album .ui-dialog .button-secondary,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-primary,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-secondary,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom button,.gallery_page_nggallery-manage-gallery .ui-dialog .button-primary,.gallery_page_nggallery-manage-gallery .ui-dialog .button-secondary,.gallery_page_nggallery-manage-gallery .ui-dialog button{background-color:#9fbb1a!important;color:#fff!important;border:none!important;box-shadow:none!important;text-shadow:none!important;height:35px!important;padding:0 15px!important;line-height:35px;width:auto!important;margin-right:10px;text-transform:uppercase;letter-spacing:1px}.gallery_page_nggallery-manage-album .ui-dialog .button-primary:hover,.gallery_page_nggallery-manage-album .ui-dialog .button-secondary:hover,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-primary:hover,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom .button-secondary:hover,.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom button:hover,.gallery_page_nggallery-manage-gallery .ui-dialog .button-secondary:hover,.gallery_page_nggallery-manage-gallery .ui-dialog button:hover .gallery_page_nggallery-manage-gallery .ui-dialog .button-primary:hover{background-color:#A9C524!important}.gallery_page_nggallery-manage-album .ui-dialog-titlebar,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar{background:#000;padding:10px}.gallery_page_nggallery-manage-album .ui-dialog-titlebar .ui-dialog-title,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar .ui-dialog-title{text-transform:uppercase;letter-spacing:1px}.gallery_page_nggallery-manage-album .ui-dialog-titlebar button,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button{background:#fff!important;border:none!important;box-shadow:none!important;text-shadow:none!important;height:24px!important;width:24px!important;padding:0!important;line-height:1;float:none;margin-right:0;border-radius:50%;top:17px;right:10px}.gallery_page_nggallery-manage-album .ui-dialog-titlebar button:active,.gallery_page_nggallery-manage-album .ui-dialog-titlebar button:focus,.gallery_page_nggallery-manage-album .ui-dialog-titlebar button:hover,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button:active,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button:focus,.gallery_page_nggallery-manage-gallery .ui-dialog-titlebar button:hover{background:#fff!important}.gallery_page_nggallery-manage-album .ui-dialog .ngg-overlay-dialog,.gallery_page_nggallery-manage-gallery .ui-dialog .ngg-overlay-dialog{padding:30px 20px;box-sizing:border-box;width:100%!important}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog table{border:none}.gallery_page_nggallery-manage-album .ngg-overlay-dialog #ngg-overlay-dialog-main,.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog #ngg-overlay-dialog-main{width:70%;padding:20px 20px 0}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog td small{display:block;text-align:center;width:200px;margin:0 auto 20px}.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom{text-align:center;padding:30px 0 0}.gallery_page_nggallery-manage-gallery #ngg-overlay-dialog-bottom input[type=button]{float:none;margin-right:0}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog #thumbMsg{color:#693;font-size:11px;width:100%;display:inline-block;height:35px;line-height:35px;margin:10px 0}.gallery_page_nggallery-manage-gallery .ui-dialog form{margin-top:30px;margin-left:30px}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog input[type=radio]:focus{border:1px solid #b4b9be;box-shadow:none}.gallery_page_nggallery-manage-gallery input[type=checkbox]:checked:before{color:#9fbb1a}.gallery_page_nggallery-manage-gallery .ngg-overlay-dialog input[type=radio]:checked:before{background:#9fbb1a;width:14px;height:14px;margin:0}div .progressborder{border:1px solid #DDD;display:block;height:30px;background-color:#464646;width:100%;margin-top:15px;margin-bottom:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}div .progressbar{border:none;display:block;height:30px;background-color:#9fbb1a;width:0%;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}div .progressbar span{display:inline;position:absolute;color:#fff;font-weight:700;padding:5px 0 0 5px}.show_details{height:16px;line-height:20px;overflow:hidden;min-width:8em;padding:3px}.show_details span{border-bottom:1px solid #999;white-space:pre}.show_details:hover{height:auto;overflow:visible;border:1px solid #999}.gallery_page_nggallery-manage-album .wrap>h2:first-child{display:none}.gallery_page_nggallery-manage-album #ngg_page_content div.updated{margin:0 0 15px}.gallery_page_nggallery-manage-album #ngg_page_content div.updated#message{margin-bottom:35px}.ngg_manage_albums .widget{box-sizing:border-box;border:1px solid #eee;padding:10px 10px 20px;width:32%;margin:0 1% 0 0;float:left;box-shadow:0 0 4px 2px rgba(0 0 4px 2px rgba(0,0,0,.02))}.container{margin-top:10px}.ngg_manage_albums .container{margin-top:30px}.ngg_select_album{margin:0 50px 0 2px}.albumnav select[name=act_album]{width:150px}#editalbum select[name=pageid]{width:95%}#ngg_page_content .ngg_manage_albums .widget-top{box-shadow:none;border:none;margin:-10px -10px 20px;background:#f7f7f7}div .groupItem{cursor:move;padding:2px;line-height:1.5;width:100%;margin:0;box-sizing:border-box}div .innerhandle{background-color:#FBFBFB}.groupItem .item_top{background-color:#9fbb1a;color:#FFF;font-weight:400;border-radius:0;height:40px;padding:0 10px;line-height:40px}#ngg_page_content .groupItem .album_obj{background-color:#000}#ngg_page_content .groupItem .item_top a{color:#FFF;float:right;text-decoration:none}.groupItem .item_top a:hover{color:#FFF}.itemContent{border-color:#DFDFDF;border-style:none solid solid;border-width:0 1px 1px;padding:2px 0 20px 2px}.itemContent p{border:0;margin:0;padding:0}.inlinepicture{float:left;display:inline;margin:0;padding:0 3px 1px}.inlinepicture img{margin:3px;max-height:60px}.sort_placeholder{border:1px dashed #bba!important;margin:5px;background:#F9F9F9}.widget-holder{min-height:400px;padding-top:1px}.target{background-color:transparent}div.widget-top h3{text-align:center;line-height:25px;margin:0;padding:5px 12px;font-size:13px;letter-spacing:.5px;text-transform:uppercase}div.widget-top{text-shadow:0 1px 0 #FFF;background-repeat:repeat-x;background-position:0 0;font-size:13px}.ui-autocomplete-start{background-position:99% center}#ngg_page_content .ngg_gallery_sort .tablenav{margin:15px 0}#ngg_page_content .ngg_gallery_sort ul.subsubsub{margin:10px 0 15px}#ngg_page_content .ngg_gallery_sort .imageBox_theImage{width:auto}#sortGallery{position:relative}p#sortButton{margin:0;position:absolute;right:0;top:0}.imageBox,.imageBoxHighlighted{width:130px;height:160px;float:left;overflow:hidden;text-overflow:ellipsis;padding:5px}.imageBox_theImage{width:110px;height:125px;background-position:center;background-repeat:no-repeat;margin:0 auto 2px}.imageBox_label{text-align:center;font-family:arial;font-size:11px;padding-top:2px;margin:0 auto}#insertionMarker{height:150px;width:6px;position:absolute}#insertionMarkerLine{width:6px;height:145px}#insertionMarker img{float:left}#dragDropContent{opacity:.4;filter:alpha(opacity=40);position:absolute;z-index:10;display:none}.error_inline{background:0 #FFEBE8;border:1px solid #C00;margin:5px auto;padding:10px}.ngg-list{font-size:11px;margin-left:15px;list-style-position:inside;list-style-type:disc}#ngg-manage-images-items-per-page-label{float:right;line-height:35px;margin-right:5px}#ngg-manage-images-items-per-page{float:right;margin-right:30px}@media (max-width:1200px){div[data-id=details-link] .two-col .col{width:100%;min-width:100%}}@media (max-width:1420px){#ngg_page_content .ngg_manage_galleries .search-box{position:static}}@media (max-width:1080px){#ngg-gallery-wizard>span,.ngg_manage_galleries .tablenav.bottom{display:none}.ngg_manage_images #gallery_fields td:nth-of-type(even){margin-bottom:8px}.ngg_manage_images #gallery_fields td:nth-of-type(odd){background:#f7f7f7;padding-left:10px;font-weight:700}.ngg_manage_images #gallery_fields,.ngg_manage_images #gallery_fields tbody,.ngg_manage_images #gallery_fields td,.ngg_manage_images #gallery_fields tr{display:block;width:100%;box-sizing:border-box}.ngg_manage_images #gallery_fields td{padding:10px 5px;border:1px solid #f7f8f3;margin:0}}@media (max-width:900px){.ngg_manage_galleries tfoot{display:none}.ngg_manage_galleries .wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){display:table-cell}.ngg_manage_galleries td.author,.ngg_manage_galleries td.id,.ngg_manage_galleries td.page_id,.ngg_manage_galleries th#author,.ngg_manage_galleries th#id,.ngg_manage_galleries th#page_id{display:none!important}#ngg-listimages td.column.column-2,#ngg-listimages td.column.column-6,#ngg-listimages td.column.column-8,#ngg-listimages tfoot,#ngg-listimages thead .column-1,#ngg-listimages thead .column-2,#ngg-listimages thead .column-4,#ngg-listimages thead .column-5,#ngg-listimages thead .column-6,#ngg-listimages thead .column-7,#ngg-listimages thead .column-8{display:none}#ngg-listimages .column-3{min-width:200px}table#ngg-listimages,table#ngg-listimages thead{display:block}#ngg-listimages .iedit td{padding-bottom:30px!important}}@media (max-width:800px){table#ngg-listimages,table#ngg-listimages tbody,table#ngg-listimages td,table#ngg-listimages tr{display:block}table#ngg-listimages tr{padding:10px 5px!important}#ngg-listimages thead,#ngg-listimages thead th{display:block;width:100%;box-sizing:border-box}#ngg-listimages .row_actions td:first-of-type,#ngg-listimages tfoot{display:none}#ngg-listimages .row_actions{display:none;display:block;clear:both;padding:0 8px 10px!important;border-bottom:1px solid #c1c97c}#ngg-listimages td.column-3,.ngg-listimages tr.iedit td{padding-bottom:10px!important;float:left;box-sizing:border-box}.ngg-listimages tr.iedit td{display:block!important}#ngg-manage-images-items-per-page,#ngg-manage-images-items-per-page-label,.ngg_manage_images .tablenav.bottom .displaying-num{display:none}#ngg-listimages td.column-1,#ngg-listimages td.column-2{width:10%!important;height:150px;float:left;box-sizing:border-box;display:none}#ngg-listimages td.column-3{width:55%;max-width:300px}#ngg-listimages td.column-4{width:40%!important;float:left;box-sizing:border-box}#ngg-listimages td.column-5,#ngg-listimages td.column-6,#ngg-listimages td.column-7{padding:0 5px!important}#ngg-listimages td.column-6{margin-top:-5px;margin-bottom:-8px}.ngg-listimages td.column-7{padding-bottom:15px}#ngg-listimages .column-6 textarea{height:60px}}@media (max-width:782px){#ngg-gallery-wizard{display:none}#ngg_page_content .ngg_manage_galleries .tablenav.top>div{display:block;width:100%}#ngg_page_content .ngg_manage_galleries .tablenav .tablenav-pages{margin-top:20px;margin-bottom:28px!important}}@media (max-width:737px){.gallery_page_nggallery-manage-gallery input[type=checkbox]:checked:before{font-size:22px}.ngg-overlay-dialog input[type=radio]{height:16px;width:16px}#ngg-gallery-wizard{display:none}}@media (max-width:640px){.ngg_manage_galleries td.description,.ngg_manage_galleries th#description{display:none!important}.ngg_manage_albums .tablenav .actions{width:100%;float:none}.ngg_manage_albums .tablenav span{display:block}.ngg_manage_albums .target-album,.ngg_manage_albums .widget.widget-right{width:32%!important;margin:.5%!important;padding:5px 5px 10px}.groupItem .item_top{height:auto!important;line-height:1.5;padding:8px;font-size:12px}#ngg_page_content .groupItem .item_top a{display:none}.ngg_manage_albums div[style="float:right;"]{float:none!important}.gallery_page_nggallery-manage-gallery .ui-dialog{width:95%!important;left:2.5%!important}.gallery_page_nggallery-manage-gallery .ui-dialog .ngg-overlay-dialog{padding:30px 10px}.ngg-overlay-dialog td{display:block;width:100%!important;padding:0!important}.ngg-overlay-dialog input[type=radio]{margin:2px 5px;height:16px;width:16px}} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/tags-admin.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/tags-admin.css index a846e0b6f..7a1a00675 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/tags-admin.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/tags-admin.css @@ -1,7 +1,3 @@ -.gallery_page_nggallery-tags #ngg_page_content .wrap { - background: #f1f1f1; -} - .gallery_page_nggallery-tags .wrap>h2:first-child { display:none; } @@ -29,7 +25,7 @@ width: 280px; vertical-align: top; padding: 20px !important; - background: rgb(247, 248, 243);; + background: #f7f7f7; } .ngg_wrap .list_tags #search{ @@ -40,6 +36,14 @@ margin: 25px 0 20px; } +#ngg_page_content .list_tags .navigation .button-primary { + width: 48% !important; + text-align: center; + margin: 0.5%; + font-size: 9px; + padding: 0 !important; +} + .ngg_wrap .forms_manage { vertical-align: top; padding-left: 30px; diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/tags-admin.min.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/tags-admin.min.css index d90c2c7e4..7a12614fe 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/tags-admin.min.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/css/tags-admin.min.css @@ -1 +1 @@ -.gallery_page_nggallery-tags #ngg_page_content .wrap{background:#f1f1f1}.gallery_page_nggallery-tags .wrap>h2:first-child{display:none}.gallery_page_nggallery-tags #ngg_page_content div.updated{margin:0 0 15px}.gallery_page_nggallery-tags #ngg_page_content div.updated#message{margin-bottom:35px}.ngg_manage_tags,.ngg_manage_tags label{color:#666}.ngg_wrap .auto_list{width:98%;margin:3px 0;padding:3px 5px}.ngg_wrap .list_tags{width:280px;vertical-align:top;padding:20px!important;background:#f7f8f3}.ngg_wrap .list_tags #search{width:200px}.ngg_wrap .list_tags .navigation{margin:25px 0 20px}.ngg_wrap .forms_manage{vertical-align:top;padding-left:30px}.ngg_wrap .forms_manage h3{margin-bottom:5px;margin-top:30px}.ngg_wrap .forms_manage td{padding:0}.ngg_wrap .forms_manage td p{margin-bottom:20px}.ngg_wrap .forms_manage .form-table{margin-top:0}.ngg_wrap .forms_manage .form-table td,.ngg_wrap .forms_manage .form-table th{vertical-align:middle;padding:0}.ngg_wrap .sort_order h3{margin:30px 0 10px}.ngg_wrap #ajax_area_tagslist ul{list-style:square;margin:10px 0 10px 20px;padding:0}.ngg_wrap #ajax_area_tagslist ul li{margin:0;padding:0;line-height:1.4}.ngg_wrap #ajax_area_tagslist ul li span{cursor:pointer}@media (max-width:640px){.ngg_wrap .forms_manage,.ngg_wrap .list_tags{width:100%;display:block;box-sizing:border-box}.ngg_wrap .forms_manage{padding:20px}.ngg_wrap .list_tags #search{width:200px;width:100%}} \ No newline at end of file +.gallery_page_nggallery-tags .wrap>h2:first-child{display:none}.gallery_page_nggallery-tags #ngg_page_content div.updated{margin:0 0 15px}.gallery_page_nggallery-tags #ngg_page_content div.updated#message{margin-bottom:35px}.ngg_manage_tags,.ngg_manage_tags label{color:#666}.ngg_wrap .auto_list{width:98%;margin:3px 0;padding:3px 5px}.ngg_wrap .list_tags{width:280px;vertical-align:top;padding:20px!important;background:#f7f7f7}.ngg_wrap .list_tags #search{width:200px}.ngg_wrap .list_tags .navigation{margin:25px 0 20px}#ngg_page_content .list_tags .navigation .button-primary{width:48%!important;text-align:center;margin:.5%;font-size:9px;padding:0!important}.ngg_wrap .forms_manage{vertical-align:top;padding-left:30px}.ngg_wrap .forms_manage h3{margin-bottom:5px;margin-top:30px}.ngg_wrap .forms_manage td{padding:0}.ngg_wrap .forms_manage td p{margin-bottom:20px}.ngg_wrap .forms_manage .form-table{margin-top:0}.ngg_wrap .forms_manage .form-table td,.ngg_wrap .forms_manage .form-table th{vertical-align:middle;padding:0}.ngg_wrap .sort_order h3{margin:30px 0 10px}.ngg_wrap #ajax_area_tagslist ul{list-style:square;margin:10px 0 10px 20px;padding:0}.ngg_wrap #ajax_area_tagslist ul li{margin:0;padding:0;line-height:1.4}.ngg_wrap #ajax_area_tagslist ul li span{cursor:pointer}@media (max-width:640px){.ngg_wrap .forms_manage,.ngg_wrap .list_tags{width:100%;display:block;box-sizing:border-box}.ngg_wrap .forms_manage{padding:20px}.ngg_wrap .list_tags #search{width:200px;width:100%}} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/edit-thumbnail.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/edit-thumbnail.php index 38061612c..c31a3eb90 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/edit-thumbnail.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/edit-thumbnail.php @@ -142,7 +142,7 @@ if ($thumbnail_crop_frame != null) jQuery('#thumbMsg').html("<?php _e('Thumbnail updated', 'nggallery') ?>"); jQuery('#thumbMsg').css({'display':'block'}); - setTimeout(function(){ jQuery('#thumbMsg').fadeOut('slow'); }, 1500); + setTimeout(function(){ jQuery('#thumbMsg').html(''); }, 1500); }, error: function() { jQuery('#thumbMsg').html("<?php _e('Error updating thumbnail', 'nggallery') ?>"); @@ -177,8 +177,8 @@ if ($thumbnail_crop_frame != null) </tr> </table> <div id="ngg-overlay-dialog-bottom"> + <div id="thumbMsg"></div> <input type="button" name="update" value="<?php esc_attr_e('Update', 'nggallery'); ?>" onclick="updateThumb()" class="button-secondary" /> - <div id="thumbMsg" ></div> </div> <script type="text/javascript"> diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/functions.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/functions.php index 1c68b917d..1af3dc1df 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/functions.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/functions.php @@ -31,7 +31,7 @@ class nggAdmin{ wp_get_current_user(); //cleanup pathname - $name = sanitize_file_name( sanitize_title($title) ); + $name = $storage->sanitize_directory_name( sanitize_title($title) ); $name = apply_filters('ngg_gallery_name', $name); $txt = ''; diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/images/imagely_icon.png b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/images/imagely_icon.png index 1422c73352f3699ea24b6ac825987abb6f973a38..385361ad5f84eee7e85e5b3a13c03e523bc6ad02 100644 GIT binary patch delta 6993 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 C!-dlT delta 9814 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 diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/install.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/install.php index eb7e4adb2..08693b9bf 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/install.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/install.php @@ -10,31 +10,11 @@ if(preg_match('#' . basename(__FILE__) . '#', $_SERVER['PHP_SELF'])) { die('You */ function nggallery_install($installer) { + global $wpdb; - global $wpdb , $wp_roles, $wp_version; - - // Set the capabilities for the administrator - $role = get_role('administrator'); - // We need this role, no other chance - if ( empty($role) ) { - update_option( "ngg_init_check", __('Sorry, NextGEN Gallery works only with a role called administrator',"nggallery") ); - return; - } - - $role->add_cap('NextGEN Gallery overview'); - $role->add_cap('NextGEN Use TinyMCE'); - $role->add_cap('NextGEN Upload images'); - $role->add_cap('NextGEN Manage gallery'); - $role->add_cap('NextGEN Manage tags'); - $role->add_cap('NextGEN Manage others gallery'); - $role->add_cap('NextGEN Edit album'); - $role->add_cap('NextGEN Change style'); - $role->add_cap('NextGEN Change options'); - $role->add_cap('NextGEN Attach Interface'); - - $nggpictures = $wpdb->prefix . 'ngg_pictures'; - $nggallery = $wpdb->prefix . 'ngg_gallery'; - $nggalbum = $wpdb->prefix . 'ngg_album'; + $nggpictures = $wpdb->prefix . 'ngg_pictures'; + $nggallery = $wpdb->prefix . 'ngg_gallery'; + $nggalbum = $wpdb->prefix . 'ngg_album'; // Create pictures table $sql = "CREATE TABLE " . $nggpictures . " ( @@ -95,7 +75,6 @@ function nggallery_install($installer) // if all is passed , save the DBVERSION add_option("ngg_db_version", NGG_DBVERSION); - } /** @@ -115,4 +94,4 @@ function ngg_remove_capability($capability){ $role->remove_cap($capability) ; } -} +} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php index 1f43bb9fe..0617852b1 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/manage-images.php @@ -6,6 +6,8 @@ function nggallery_picturelist($controller) { // *** show picture list global $wpdb, $nggdb, $user_ID, $ngg; + $settings = C_NextGen_Settings::get_instance(); + $action_status = array('message' => '', 'status' => 'ok'); // Look if its a search result @@ -58,10 +60,11 @@ function nggallery_picturelist($controller) { $total_number_of_images = count($image_mapper->select($image_mapper->get_primary_key_column())-> where(array("galleryid = %d", $act_gid))->run_query(FALSE, FALSE, TRUE)); - $picturelist = $image_mapper->select()-> - where(array("galleryid = %d", $act_gid))-> - order_by($ngg->options['galSort'], $ngg->options['galSortDir'])-> - limit($items_per_page, $start)->run_query(); + $image_mapper->select()->where(array("galleryid = %d", $act_gid)); + if (($galSort = $settings->get('galSort', FALSE)) && ($galSortDir = $settings->get('galSortDir', FALSE))) { + $image_mapper->order_by($galSort, $galSortDir); + } + $picturelist = $image_mapper->limit($items_per_page, $start)->run_query(); // get the current author $act_author_user = get_userdata((int)$gallery->author); @@ -158,6 +161,11 @@ jQuery(function (){ var height = ( results ) ? results[1] : 500; var container = window; + var screen_width = window.innerWidth - 120; + var screen_height = window.innerHeight - 200; + width = (width > screen_width) ? screen_width : width; + height = (height > screen_height) ? screen_height : height; + if (window.parent) { container = window.parent; } @@ -370,7 +378,7 @@ jQuery(document).ready( function($) { <?php if ( wpmu_enable_function('wpmuImportFolder') && nggGallery::current_user_can( 'NextGEN Import image folder' ) ) : ?> <input type="submit" class="button-primary" name="scanfolder" value="<?php _e("Scan Folder for new images",'nggallery'); ?> " /> <?php endif; ?> - <input type="submit" class="button-primary action" name="updatepictures" value="<?php _e("Save Changes",'nggallery'); ?>" /> + <input type="submit" class="button-primary action ngg_save_gallery_changes" name="updatepictures" value="<?php _e("Save Changes",'nggallery'); ?>" /> </div> </div> @@ -440,7 +448,7 @@ jQuery(document).ready( function($) { </select> <input class="button-primary" type="submit" name="showThickbox" value="<?php _e('Apply', 'nggallery'); ?>" onclick="if ( !checkSelected() ) return false;" /> - <?php if (($ngg->options['galSort'] == "sortorder") && (!$is_search) ) { ?> + <?php if (($settings->galSort == "sortorder") && (!$is_search) ) { ?> <input class="button-primary" type="submit" name="sortGallery" value="<?php _e('Sort gallery', 'nggallery');?>" /> <?php } ?> @@ -465,10 +473,10 @@ jQuery(document).ready( function($) { $thumbsize = ''; $storage = C_Gallery_Storage::get_instance(); - $gallery_mapper = C_Gallery_Mapper::get_instance(); + $gallery_mapper = C_Gallery_Mapper::get_instance(); - if ($ngg->options['thumbfix']) - $thumbsize = 'width="' . $ngg->options['thumbwidth'] . '" height="' . $ngg->options['thumbheight'] . '"'; + if ($settings->thumbfix) + $thumbsize = 'width="' . $settings->thumbwidth . '" height="' . $settings->thumbheight . '"'; foreach($picturelist as $picture) { @@ -582,7 +590,7 @@ jQuery(document).ready( function($) { <strong><?php _e('Resize Images to', 'nggallery'); ?>:</strong> </td> <td> - <input type="text" size="5" name="imgWidth" value="<?php echo $ngg->options['imgWidth']; ?>" /> x <input type="text" size="5" name="imgHeight" value="<?php echo $ngg->options['imgHeight']; ?>" /> + <input type="text" size="5" name="imgWidth" value="<?php echo $settings->imgWidth ?>" /> x <input type="text" size="5" name="imgHeight" value="<?php echo $settings->imgHeight; ?>" /> <br /><small><?php _e('Width x height (in pixel). NextGEN Gallery will keep ratio size','nggallery') ?></small> </td> </tr> @@ -614,7 +622,7 @@ jQuery(document).ready( function($) { </tr> <tr valign="top"> <th align="left"><?php _e('Set fix dimension','nggallery') ?></th> - <td><input type="checkbox" name="thumbfix" value="1" <?php checked('1', $ngg->options['thumbfix']); ?> /> + <td><input type="checkbox" name="thumbfix" value="1" <?php checked('1', $settings->thumbfix); ?> /> <br /><small><?php _e('Ignore the aspect ratio, no portrait thumbnails','nggallery') ?></small></td> </tr> <tr> @@ -631,7 +639,21 @@ jQuery(document).ready( function($) { <script type="text/javascript"> /* <![CDATA[ */ - jQuery(document).ready(function(){columns.init('nggallery-manage-images');}); + jQuery(document).ready(function($){ + columns.init('nggallery-manage-images'); + + // Ensure that thumb preview images are always up-to-date + $('#ngg-listimages img.thumb').each(function(){ + var $this = $(this); + var src = $this.attr('src'); + var matchData = src.match(/\?i=(\d+)$/) + if (matchData) { + var i = parseInt(matchData[1])+1 + src = src.replace(matchData[0], "?i="+i.toString()) + $this.attr('src', src); + } + }) + }); /* ]]> */ </script> <?php diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/manage.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/manage.php index 5d7384bb6..8c5ab916c 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/manage.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/manage.php @@ -621,7 +621,6 @@ class nggManageGallery { break; } } - if (isset ($_POST['addgallery']) && isset ($_POST['galleryname'])){ check_admin_referer('ngg_addgallery'); @@ -630,12 +629,20 @@ class nggManageGallery { wp_die(__('Cheatin’ uh?', 'nggallery')); // get the default path for a new gallery - $defaultpath = $ngg->options['gallerypath']; $newgallery = $_POST['galleryname']; - if ( !empty($newgallery) ) - nggAdmin::create_gallery($newgallery, $defaultpath); + if (!empty($newgallery)) + { + $gallery_mapper = C_Gallery_Mapper::get_instance(); + $gallery = $gallery_mapper->create(array('title' => $newgallery)); + if ($gallery->save() && !isset($_REQUEST['attach_to_post'])) + { + $url = admin_url() . 'admin.php?page=nggallery-manage-gallery&mode=edit&gid=' . $gallery->gid; + $message = sprintf(__('Gallery successfully created. <a href="%s" target="_blank">Manage gallery</a>', 'nggallery'), $url); + nggGallery::show_message($message, 'gallery_created_msg'); + } + } - do_action( 'ngg_update_addgallery_page' ); + do_action( 'ngg_update_addgallery_page' ); } if (isset ($_POST['TB_bulkaction']) && isset ($_POST['TB_ResizeImages'])) { @@ -949,14 +956,11 @@ class nggManageGallery { function can_user_manage_gallery() { $retval = FALSE; - $registry = C_Component_Registry::get_instance(); - $security = $registry->get_utility('I_Security_Manager'); - $actor = $security->get_current_actor(); - if ($this->gallery && $actor->get_entity_id()== $this->gallery->author) { + if ($this->gallery && wp_get_current_user()->ID == $this->gallery->author) { $retval = TRUE; } - elseif($actor->is_allowed('nextgen_edit_gallery_unowned')) { + elseif(M_Security::is_allowed('nextgen_edit_gallery_unowned')) { $retval = TRUE; } diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/overview.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/overview.php index 163b54d02..1459f4c9d 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/overview.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/overview.php @@ -211,7 +211,7 @@ function nggallery_admin_overview() </div> <div class="headline-feature feature-video"> - <iframe width="1050" height="590" src="https://www.youtube.com/embed/mNEnY23i9DE?rel=0" frameborder="0" allowfullscreen></iframe> + <iframe width="1050" height="590" src="https://www.youtube.com/embed/4Phvmm3etnw?rel=0" frameborder="0" allowfullscreen></iframe> </div> </div> @@ -222,7 +222,7 @@ function nggallery_admin_overview() </p> <div class="headline-feature feature-video"> - <iframe width="1280" height="720" src="https://www.youtube.com/embed/c664fvAZ1nI?list=PL9cmsdHslD0vIcJjBggJ-XMjtwvqrRgoM" frameborder="0" allowfullscreen></iframe> + <iframe width="1280" height="720" src="https://www.youtube.com/embed/4Phvmm3etnw?list=PL9cmsdHslD0vIcJjBggJ-XMjtwvqrRgoM" frameborder="0" allowfullscreen></iframe> </div> <div class="feature-section two-col"> @@ -262,7 +262,7 @@ function nggallery_admin_overview() <p class="about-text"><span style="font-weight: bold;"><?php _e( 'The most powerful gallery system ever built for WordPress. ', 'nggallery' ); ?></span><br><?php _e( 'Gorgeous new gallery displays, image protection, full screen lightbox, commenting and social sharing for individual images, proofing, ecommerce, digital downloads, and more.', 'nggallery' ); ?></p> <p class="about-text"><a href='https://www.imagely.com/wordpress-gallery-plugin/nextgen-pro/?utm_source=ngg&utm_medium=ngguser&utm_campaign=ngpro' target='_blank' class="button-primary ngg-pro-upgrade"><?php _e( 'Get NextGEN Pro Now', 'nggallery' ); ?></a></p> <div class="feature-section"> - <iframe src="https://www.youtube.com/embed/zmA-b_jiXN0" frameborder="0" allowfullscreen></iframe> + <iframe src="https://www.youtube.com/embed/ePnYGQX0Lf8" frameborder="0" allowfullscreen></iframe> </div> </div> @@ -370,6 +370,8 @@ function nggallery_admin_overview() <h3><?php _e( 'David Beckstead' ); ?></h3> <p><?php _e( 'Named one of the Top 10 Wedding Photographers in the World by American Photo magazine, David is a celebrated photographer and educator. He is also a mountain man with a enviable lifestyle: from his base in rural Washington, he travels all over the world teaching workshops, while sharing lessons with 16,000 photographers in the Abstract Canvas Facebook group.', 'nggallery' ); ?></p> </div> + <div class="col"></div> + <div class="col"></div> </div> </div> @@ -403,7 +405,7 @@ function nggallery_admin_overview() <div data-id="freedoms-link"> - <p class="about-description"><?php printf( __( 'NextGEN Gallery is Free and open source software, built by a small but dedicated team as well as community code contributions. It comes with awesome rights courtesy of its <a href="%s" target="_blank">license</a>, the GPL.' ), 'https://wordpress.org/about/license/' ); ?></p> + <p class="about-text"><?php printf( __( 'NextGEN Gallery is Free and open source software, built by a small but dedicated team as well as community code contributions. It comes with awesome rights courtesy of its <a href="%s" target="_blank">license</a>, the GPL.' ), 'https://wordpress.org/about/license/' ); ?></p> <ol start="0"> <li><p><?php _e( 'You have the freedom to run the program, for any purpose.' ); ?></p></li> diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/rotate.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/rotate.php index f91949c4b..e2b89dbcd 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/rotate.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/admin/rotate.php @@ -27,24 +27,10 @@ $id = (int) $_GET['id']; $picture = nggdb::find_image($id); include_once( nggGallery::graphic_library() ); -$ngg_options = get_option('ngg_options'); - -$thumb = new ngg_Thumbnail($picture->imagePath, TRUE); -$thumb->resize(450,350); - -// we need the new dimension -$resizedPreviewInfo = $thumb->newDimensions; -$thumb->destruct(); // Generate a url to a preview image -$storage = C_Gallery_Storage::get_instance(); -$thumbnail_manager = C_Dynamic_Thumbnails_Manager::get_instance(); -$dynamic_size = $thumbnail_manager->get_size_name(array( - 'width' => 300, - 'height' => 300, -)); -//$preview_image = trailingslashit( home_url() ) . 'index.php?callback=image&pid=' . $picture->pid . '&width=350&height=350'; -$preview_image = $storage->get_image_url($id, $dynamic_size); +$storage = C_Gallery_Storage::get_instance(); +$preview_image = $storage->get_image_url($id, 'full'); ?> <script type='text/javascript'> @@ -78,6 +64,7 @@ $preview_image = $storage->get_image_url($id, $dynamic_size); var d = new Date(); newUrl = jQuery("#imageToEdit").attr("src") + "?" + d.getTime(); + jQuery("#imageToEdit").attr("src" , newUrl); } @@ -86,7 +73,11 @@ $preview_image = $storage->get_image_url($id, $dynamic_size); <table align="center"> <tr> <td valign="middle" align="center" id="ngg-overlay-dialog-main"> - <img src="<?php echo nextgen_esc_url( $preview_image ); ?>" alt="" id="imageToEdit" /> + <img src="<?php echo nextgen_esc_url( $preview_image ); ?>" + alt="" + id="imageToEdit" + style="max-width: 450px; + max-height: 350px;"/> </td> <td> <input type="radio" name="ra" value="cw" /><?php esc_html_e('90° clockwise', 'nggallery'); ?><br /> diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/module.ngglegacy.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/module.ngglegacy.php index ea55fa79c..5f785d0c7 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/module.ngglegacy.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/module.ngglegacy.php @@ -23,7 +23,7 @@ class M_NggLegacy extends C_Base_Module 'photocrati-nextgen-legacy', 'NextGEN Legacy', 'Embeds the original version of NextGEN 1.9.3 by Alex Rabe', - '3.1.6', + '3.2.1', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' @@ -93,14 +93,16 @@ class C_NggLegacy_Installer } // now remove the capability - ngg_remove_capability("NextGEN Gallery overview"); - ngg_remove_capability("NextGEN Use TinyMCE"); - ngg_remove_capability("NextGEN Upload images"); - ngg_remove_capability("NextGEN Manage gallery"); - ngg_remove_capability("NextGEN Edit album"); - ngg_remove_capability("NextGEN Change style"); - ngg_remove_capability("NextGEN Change options"); - ngg_remove_capability("NextGEN Attach Interface"); + ngg_remove_capability("NextGEN Attach Interface"); + ngg_remove_capability("NextGEN Change options"); + ngg_remove_capability("NextGEN Change style"); + ngg_remove_capability("NextGEN Edit album"); + ngg_remove_capability("NextGEN Gallery overview"); + ngg_remove_capability("NextGEN Manage gallery"); + ngg_remove_capability("NextGEN Upload images"); + ngg_remove_capability("NextGEN Use TinyMCE"); + ngg_remove_capability('NextGEN Manage others gallery'); + ngg_remove_capability('NextGEN Manage tags'); $this->remove_transients(); } diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/static/overview.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/static/overview.css index ba8e79f58..e290c4d5c 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/static/overview.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/static/overview.css @@ -30,22 +30,34 @@ margin: 1em; } -.feature-video iframe, -.feature-video object, -.feature-video embed { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; +#ngg_page_content .feature-video iframe, +#ngg_page_content .feature-video object, +#ngg_page_content .feature-video embed { + max-width: 100%; } .ngg-theme-image { box-shadow: 0 0 8px #888888; } +@media only screen and (max-width: 1200px) { + #ngg_page_content .feature-video iframe, + #ngg_page_content .feature-video object, + #ngg_page_content .feature-video embed { + height: 400px; + } +} + @media only screen and (max-width: 700px) { #ngg-server-settings:nth-of-type(2) { margin-left: 0; } +} + +@media only screen and (max-width: 500px) { + #ngg_page_content .feature-video iframe, + #ngg_page_content .feature-video object, + #ngg_page_content .feature-video embed { + height: 300px; + } } \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/static/overview.min.css b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/static/overview.min.css index 74ab3df06..822613900 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/static/overview.min.css +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/ngglegacy/static/overview.min.css @@ -1 +1 @@ -.toplevel_page_nextgen-gallery .wp-badge{border:none;background:url(https://www.imagely.com/wp-content/uploads/2016/06/on-white-icon.png) no-repeat;background-size:140px 140px;box-shadow:none}.ngg-tab{display:none}.ngg-tab.active{display:block}#ngg-server-settings{float:left}#ngg-server-settings p{margin:0 0 .5em}#ngg-server-settings:nth-of-type(2){margin-left:20px}.about-text.centered{text-align:center;margin:1em}.feature-video embed,.feature-video iframe,.feature-video object{position:absolute;top:0;left:0;width:100%;height:100%}.ngg-theme-image{box-shadow:0 0 8px #888}@media only screen and (max-width:700px){#ngg-server-settings:nth-of-type(2){margin-left:0}} \ No newline at end of file +.toplevel_page_nextgen-gallery .wp-badge{border:none;background:url(https://www.imagely.com/wp-content/uploads/2016/06/on-white-icon.png) no-repeat;background-size:140px 140px;box-shadow:none}.ngg-tab{display:none}.ngg-tab.active{display:block}#ngg-server-settings{float:left}#ngg-server-settings p{margin:0 0 .5em}#ngg-server-settings:nth-of-type(2){margin-left:20px}.about-text.centered{text-align:center;margin:1em}#ngg_page_content .feature-video embed,#ngg_page_content .feature-video iframe,#ngg_page_content .feature-video object{max-width:100%}.ngg-theme-image{box-shadow:0 0 8px #888}@media only screen and (max-width:1200px){#ngg_page_content .feature-video embed,#ngg_page_content .feature-video iframe,#ngg_page_content .feature-video object{height:400px}}@media only screen and (max-width:700px){#ngg-server-settings:nth-of-type(2){margin-left:0}}@media only screen and (max-width:500px){#ngg_page_content .feature-video embed,#ngg_page_content .feature-video iframe,#ngg_page_content .feature-video object{height:300px}} \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/router/module.router.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/router/module.router.php index 638a94d94..5a98bd336 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/router/module.router.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/router/module.router.php @@ -15,7 +15,7 @@ class M_Router extends C_Base_Module 'photocrati-router', 'Router for Pope', 'Provides routing capabilities for Pope modules', - '3.0.0', + '3.1.7.1', 'https://www.imagely.com', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/router/package.module.router.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/router/package.module.router.php index dd5656808..a5fe11c3b 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/router/package.module.router.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/router/package.module.router.php @@ -149,13 +149,7 @@ class Mixin_Router extends Mixin */ function get_static_url($path, $module = FALSE) { - $fs = C_Fs::get_instance(); - $path = $fs->find_abspath($path, $module); - $base_url = $this->object->get_base_url(TRUE); - $base_url = $this->object->remove_url_segment('/index.php', $base_url); - $path = str_replace($fs->get_document_root('plugins'), $base_url, $path); - // adjust for possible windows hosts - return str_replace("\\", '/', $path); + return M_Static_Assets::get_static_url($path, $module); } /** * Gets the routed url diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/security/module.security.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/security/module.security.php index 267ffa842..ff63a48fd 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/security/module.security.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/security/module.security.php @@ -14,27 +14,117 @@ class M_Security extends C_Base_Module 'photocrati-security', 'Security', 'Provides utilities to check for credentials and security', - '3.0.0', + '3.1.8', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' ); + } + + static function get_mapped_cap($capability_name) + { + switch ($capability_name) + { + case 'nextgen_edit_settings': + { + $capability_name = 'NextGEN Change options'; + + break; + } + case 'nextgen_edit_style': + { + $capability_name = 'NextGEN Change style'; + + break; + } + case 'nextgen_edit_display_settings': + { + $capability_name = 'NextGEN Change options'; + + break; + } + case 'nextgen_edit_displayed_gallery': + { + $capability_name = 'NextGEN Attach Interface'; + + break; + } + case 'nextgen_edit_gallery': + { + $capability_name = 'NextGEN Manage gallery'; + + break; + } + case 'nextgen_edit_gallery_unowned': + { + $capability_name = 'NextGEN Manage others gallery'; + + break; + } + case 'nextgen_upload_image': + case 'nextgen_upload_images': + { + $capability_name = 'NextGEN Upload images'; + + break; + } + case 'nextgen_edit_album_settings': + { + $capability_name = 'NextGEN Edit album settings'; - if (isset($GLOBALS['_COOKIE_NG_COPY'])) { - $_COOKIE = $GLOBALS['_COOKIE_NG_COPY']; + break; + } + + case 'nextgen_edit_album': + { + $capability_name = 'NextGEN Edit album'; + + break; + } } + + return $capability_name; } + // TODO: Remove this function once Photocrati Pro 5.0.6 is out of circulation. + // Its the only thing which uses the security manager any more + function _register_utilities() + { + $this->get_registry()->add_utility('I_Security_Manager', 'C_WordPress_Security_Manager'); + } + + // TODO: Remove this function once Photocrati Pro 5.0.6 is out of circulation. + // Its the only thing which uses the security manager any more function _register_adapters() { $this->get_registry()->add_adapter('I_Component_Factory', 'A_Security_Factory'); } - function _register_utilities() + static function create_nonce($cap=-1) { - $this->get_registry()->add_utility('I_Security_Manager', 'C_WordPress_Security_Manager'); + return wp_create_nonce(self::get_mapped_cap($cap)); + } + + static function verify_nonce($nonce, $cap=-1) + { + return wp_verify_nonce($nonce, self::get_mapped_cap($cap)); + } + + static function is_allowed($capability_name, $user=FALSE) + { + $capability_name = self::get_mapped_cap($capability_name); + + if (!$user) { + if (function_exists('wp_get_current_user')) $user = wp_get_current_user(); + } else if (is_numeric($user)) { + $user = WP_User($user); + } + + return $user && $user->has_cap($capability_name); } + + function get_type_list() { return array( diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/static_assets/module.static_assets.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/static_assets/module.static_assets.php new file mode 100644 index 000000000..518162b58 --- /dev/null +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/static_assets/module.static_assets.php @@ -0,0 +1,118 @@ +<?php +class M_Static_Assets extends C_Base_Module +{ + function define($id = 'pope-module', + $name = 'Pope Module', + $description = '', + $version = '', + $uri = '', + $author = '', + $author_uri = '', + $context = FALSE) + { + parent::define( + 'photocrati-static_assets', + 'Static Assets', + 'Provides a means of finding static assets', + '3.1.8', + 'https://www.imagely.com', + 'Imagely', + 'https://www.imagely.com' + ); + } + + static function get_static_url($filename, $module=FALSE) + { + $retval = self::get_static_abspath($filename, $module); + $retval = str_replace(wp_normalize_path(WP_PLUGIN_DIR), WP_PLUGIN_URL, $retval); + $retval = is_ssl() ? str_replace('http:', 'https:', $retval) : $retval; + + return $retval; + } + + static function get_static_abspath($filename, $module=FALSE) + { + static $cache = array(); + $key = $filename.strval($module); + if (!isset($cache[$key])) { + $cache[$key] = self::get_computed_static_abspath($filename, $module); + } + return $cache[$key]; + } + + static function get_computed_static_abspath($filename, $module=FALSE) + { + $retval = ''; + + if (strpos($filename, '#') !== FALSE) { + $parts = explode("#", $filename); + if (count($parts) === 2) { + $filename = $parts[1]; + $module = $parts[0]; + } + else $filename = $parts[0]; + } + $filename = self::trim_preceding_slash($filename); + + if (!$module) die(sprintf( + "get_static_abspath requires a path and module. Received %s and %s", + $filename, + strval($module)) + ); + + $module_dir = wp_normalize_path(C_Component_Registry::get_instance()->get_module_dir($module)); + $static_dir = self::trim_preceding_slash(C_NextGen_Settings::get_instance()->mvc_static_dir); + + $override_dir = wp_normalize_path(self::get_static_override_dir($module)); + $override = path_join( + $override_dir, + $filename + ); + + if (!@stream_resolve_include_path($override)) { + $retval = path_join( + path_join($module_dir, $static_dir), + $filename + ); + } + + // Adjust for windows paths + return wp_normalize_path($retval); + } + + static function trim_preceding_slash($str) + { + return preg_replace("#^/{1,2}#", "", $str, 1); + } + + /** + * @param string $module_id + * + * @return string $dir + */ + static function get_static_override_dir($module_id = NULL) + { + $dir = path_join(WP_CONTENT_DIR, 'ngg'); + if (!@file_exists($dir)) + wp_mkdir_p($dir); + + $dir = path_join($dir, 'modules'); + if (!@file_exists($dir)) + wp_mkdir_p($dir); + + if ($module_id) + { + $dir = path_join($dir, $module_id); + if (!@file_exists($dir)) + wp_mkdir_p($dir); + + $dir = path_join($dir, 'static'); + if (!@file_exists($dir)) + wp_mkdir_p($dir); + } + + return $dir; + } +} + +new M_Static_Assets; \ No newline at end of file diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/static_assets/package.module.static_assets.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/static_assets/package.module.static_assets.php new file mode 100644 index 000000000..b3d9bbc7f --- /dev/null +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/static_assets/package.module.static_assets.php @@ -0,0 +1 @@ +<?php diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/third_party_compat/module.third_party_compat.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/third_party_compat/module.third_party_compat.php index 806ce6f5a..3d53a4207 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/third_party_compat/module.third_party_compat.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/third_party_compat/module.third_party_compat.php @@ -16,7 +16,7 @@ class M_Third_Party_Compat extends C_Base_Module 'photocrati-third_party_compat', 'Third Party Compatibility', "Adds Third party compatibility hacks, adjustments, and modifications", - '3.1.4.2', + '3.1.11.1', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' @@ -91,6 +91,12 @@ class M_Third_Party_Compat extends C_Base_Module if (!defined('NGG_DISABLE_FILTER_THE_CONTENT')) define('NGG_DISABLE_FILTER_THE_CONTENT', TRUE); if (!defined('NGG_DISABLE_RESOURCE_MANAGER')) define('NGG_DISABLE_RESOURCE_MANAGER', TRUE); } + + // Elementor's graphical builder is broken by our resource manager + if (defined('ELEMENTOR_VERSION')) + { + if (!defined('NGG_DISABLE_RESOURCE_MANAGER')) define('NGG_DISABLE_RESOURCE_MANAGER', TRUE); + } } function _register_adapters() diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/wordpress_routing/module.wordpress_routing.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/wordpress_routing/module.wordpress_routing.php index d23b01cc4..aeacf8d9d 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/wordpress_routing/module.wordpress_routing.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/wordpress_routing/module.wordpress_routing.php @@ -18,7 +18,7 @@ class M_WordPress_Routing extends C_Base_Module 'photocrati-wordpress_routing', 'WordPress Routing', "Integrates the MVC module's routing implementation with WordPress", - '3.1.0', + '3.1.8', 'https://www.imagely.com/wordpress-gallery-plugin/nextgen-gallery/', 'Imagely', 'https://www.imagely.com' diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/wordpress_routing/package.module.wordpress_routing.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/wordpress_routing/package.module.wordpress_routing.php index 66381380e..45857d85b 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/wordpress_routing/package.module.wordpress_routing.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/modules/wordpress_routing/package.module.wordpress_routing.php @@ -6,17 +6,29 @@ */ class A_WordPress_Base_Url extends Mixin { - function _add_index_dot_php_to_url($url) + static $_lookups = array(); + function initialize() { - if (strpos($url, '/index.php') === FALSE) { - $pattern = get_option('permalink_structure'); - if (!$pattern or strpos($pattern, '/index.php') !== FALSE) { - $url = $this->object->join_paths($url, '/index.php'); - } - } - return $url; + register_shutdown_function(array(&$this, 'cache_lookups')); + self::$_lookups = C_Photocrati_Transient_Manager::fetch($this->_get_cache_key(), array()); } - function get_base_url($site_url = FALSE) + function _get_cache_key() + { + return C_Photocrati_Transient_Manager::create_key('WordPress-Router', 'get_base_url'); + } + function cache_lookups() + { + C_Photocrati_Transient_Manager::update($this->_get_cache_key(), self::$_lookups); + } + function has_cached_base_url($type = FALSE) + { + return isset(self::$_lookups[$type]); + } + function get_cached_base_url($type = FALSE) + { + return self::$_lookups[$type]; + } + function get_computed_base_url($site_url = FALSE) { $retval = NULL; $add_index_dot_php = TRUE; @@ -50,7 +62,7 @@ class A_WordPress_Base_Url extends Mixin } $retval = set_url_scheme($retval, $scheme); } elseif (in_array($site_url, array('gallery', 'galleries'), TRUE)) { - $root_type = defined('NGG_GALLERY_ROOT_TYPE') ? NGG_GALLERY_ROOT_TYPE : 'site'; + $root_type = NGG_GALLERY_ROOT_TYPE; $add_index_dot_php = FALSE; if ($root_type === 'content') { $retval = content_url(); @@ -68,6 +80,23 @@ class A_WordPress_Base_Url extends Mixin } return $retval; } + function _add_index_dot_php_to_url($url) + { + if (strpos($url, '/index.php') === FALSE) { + $pattern = get_option('permalink_structure'); + if (!$pattern or strpos($pattern, '/index.php') !== FALSE) { + $url = $this->object->join_paths($url, '/index.php'); + } + } + return $url; + } + function get_base_url($type = FALSE) + { + if ($this->has_cached_base_url($type)) { + return $this->get_cached_base_url($type); + } + return $this->get_computed_base_url($type); + } } /** * Class A_WordPress_Router @@ -88,7 +117,7 @@ class A_WordPress_Router extends Mixin // If so, then we do NOT need /index.php as part of the url $base_url = $this->object->get_base_url(); $filename = str_replace($base_url, C_Fs::get_instance()->get_document_root(), $retval); - if ($retval && @file_exists($filename) && $retval != $base_url) { + if ($retval && $retval != $base_url && @file_exists($filename)) { // Remove index.php from the url $retval = $this->object->remove_url_segment('/index.php', $retval); // Static urls don't end with a slash diff --git a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/product.photocrati_nextgen.php b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/product.photocrati_nextgen.php index 8f4c40bba..aee4826fe 100644 --- a/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/product.photocrati_nextgen.php +++ b/wp-content/plugins/nextgen-gallery/products/photocrati_nextgen/product.photocrati_nextgen.php @@ -31,10 +31,10 @@ class P_Photocrati_NextGen extends C_Base_Product 'photocrati-dynamic_thumbnails' => 'always', 'photocrati-nextgen_admin' => 'always', 'photocrati-nextgen_gallery_display' => 'always', - 'photocrati-frame_communication' => 'always', + 'photocrati-frame_communication' => 'backend', 'photocrati-attach_to_post' => 'always', - 'photocrati-nextgen_addgallery_page' => 'always', - 'photocrati-nextgen_other_options' => 'always', + 'photocrati-nextgen_addgallery_page' => 'backend', + 'photocrati-nextgen_other_options' => 'backend', 'photocrati-nextgen_pagination' => 'always', // Front-end only @@ -72,10 +72,13 @@ class P_Photocrati_NextGen extends C_Base_Product case 'always': $retval[] = $module_name; break; - case 'backend': - if (is_admin()) - $retval[] = $module_name; + + // Hack. If this is a photocrati ajax request, is_admin() will evaluate to false. But + // we probably want to load the module if the ajax request is initiated from a wp-admin page + case ($condition == 'backend' && (is_admin() || strpos($_SERVER['REQUEST_URI'], 'ajax') !== FALSE || isset($_REQUEST['photocrati_ajax']))): + $retval[] = $module_name; break; + case 'frontend': if (!is_admin()) $retval[] = $module_name; diff --git a/wp-content/plugins/nextgen-gallery/readme.txt b/wp-content/plugins/nextgen-gallery/readme.txt index 7796ffa15..9c1ba0cd7 100644 --- a/wp-content/plugins/nextgen-gallery/readme.txt +++ b/wp-content/plugins/nextgen-gallery/readme.txt @@ -2,11 +2,11 @@ Contributors: photocrati, imagely Tags: wordpress gallery plugin, gallery, nextgen, nextgen gallery, photo gallery, image gallery, photography, slideshow, images, photo, photo album, watermark Requires at least: 4.0.0 -Stable tag: 3.1.6 -Tested up to: 5.0.2 +Stable tag: 3.2.2 +Tested up to: 5.2 License: GPLv2 -The most popular WordPress gallery plugin and one of the most popular plugins of all time with over 24 million downloads. +The most popular WordPress gallery plugin and one of the most popular plugins of all time with over 25 million downloads. == Description == @@ -16,19 +16,20 @@ NextGEN Gallery has been the industry's standard **WordPress gallery plugin** si On the back end, NextGEN offers a complete WordPress gallery management system with the ability to batch upload photos, import meta data, add/delete/rearrange/sort photos, edit thumbnails, group galleries into albums, and more. -On the front end, the free version of NextGEN provides two main gallery styles (slideshows and thumbnail galleries) and two album styles (compact and extended), all of which come with a wide array of options for controlling size, style, timing, transitions, controls, lightbox effects, and more. Learn more about <a href="https://www.imagely.com/wordpress-gallery-plugin/" target="_blank">NextGEN WordPress Gallery Plugin features.</a> +On the front end, the free version of NextGEN provides three main gallery styles (slideshow, thumbnail, and imagebrowser galleries) and two album styles (compact and extended), all of which come with a wide array of options for controlling size, style, timing, transitions, controls, lightbox effects, and more. Learn more about <a href="https://www.imagely.com/wordpress-gallery-plugin/" target="_blank">NextGEN WordPress Gallery Plugin features.</a> -https://www.youtube.com/embed/mNEnY23i9DE +https://www.youtube.com/embed/4Phvmm3etnw **NEXTGEN GALLERY DEMOS**<br> *<a href="https://www.imagely.com/wordpress-gallery-plugin/basic-thumbnail-gallery/" target="_blank">Basic Thumbnail Gallery</a><br> *<a href="https://www.imagely.com/wordpress-gallery-plugin/basic-slideshow-gallery/" target="_blank">Basic Slideshow Gallery</a><br> +*<a href="https://www.imagely.com/wordpress-gallery-plugin/basic-imagebrowser-gallery/" target="_blank">Basic Imagebrowser Gallery</a><br> *<a href="https://www.imagely.com/wordpress-gallery-plugin/basic-compact-album/" target="_blank">Basic Compact Album</a><br> *<a href="https://www.imagely.com/wordpress-gallery-plugin/basic-extended-album/" target="_blank">Basic List Album</a><br> **INTRODUCING NEXTGEN GALLERY PRO.** NextGEN Plus and NextGEN Pro are premium WordPress gallery plugin extensions for NextGEN Gallery that add new photo gallery displays, lightboxes, ecommerce, proofing, and pro support. Learn more about <a href="https://www.imagely.com/wordpress-gallery-plugin/" target="_blank">NextGEN Plus and NextGEN Pro photo plugin features.</a> -https://www.youtube.com/embed/zmA-b_jiXN0 +https://www.youtube.com/embed/ePnYGQX0Lf8 **NEXTGEN PRO DEMOS**<br> *<a href="https://www.imagely.com/wordpress-gallery-plugin/pro-mosaic-gallery/" target="_blank">Pro Mosaic Gallery</a><br> @@ -46,7 +47,7 @@ https://www.youtube.com/embed/zmA-b_jiXN0 = About Imagely = -NextGEN Gallery is maintained by Imagely. We're the WordPress photography experts. In addition to NextGEN Gallery, NextGEN Plus, and NextGEN Pro, we also make WordPress themes for photographers, provide turnkey websites for photographers, and run the WordPress Photography Podcast. +NextGEN Gallery is a WordPress gallery plugin maintained by Imagely. We're the WordPress photography experts. In addition to NextGEN Gallery, NextGEN Plus, and NextGEN Pro, we also make WordPress themes for photographers, provide turnkey websites for photographers, and run the WordPress Photography Podcast. Learn more or connect with us:<br> *<a href="https://www.imagely.com/" target="_blank">Imagely Website</a><br> @@ -65,33 +66,28 @@ Imagely 2016-2019 Photocrati Media 2012-2016<br> Alex Rabe 2007-2011 -This program is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +This program is free software released under the terms of the GNU General Public License. == Installation == INSTALLATION: The easiest way to start uploading your photos is to login to you WordPress dashboard, go to Plugins > Add New, search for NextGEN Gallery, and click to install the plugin. You can also download the plugin zip file from this page and upload it from the Plugins > Add New > Upload page. -HOW TO USE: Just go to a page or post and click the NextGEN Gallery icon or the Add Gallery button. From our Insert Gallery Window, you can create, manage, customize, and display your WordPress photo galleries. You can also manage your photo galleries and gallery settings from the central options area under the "Gallery" tab on your dashboard menu. +HOW TO USE: Just go to a page or post and add a NextGEN Gallery block. Within the block, click the Add Gallery button to open our Insert Gallery Window, where you can create, manage, customize, and display your WordPress photo galleries. You can also manage your photo galleries and gallery settings from the central options area under the "Gallery" tab on your dashboard menu. DOCUMENTATION: See <a href="https://www.imagely.com/docs/nextgen-gallery/" target="_blank">NextGEN Gallery Documentation</a>. That's it ... have fun! For more information, feel free to visit the official website for the NextGEN Gallery <a href="https://www.imagely.com/wordpress-gallery-plugin" target="_blank">WordPress Gallery Plugin</a>. -https://www.youtube.com/watch?v=qwNr5ZNGavo - == Screenshots == 1. Thumbnail Gallery 2. Slideshow Gallery -3. Manage Gallery Page -4. Insert Gallery Window -5. Gallery Settings Page +3. Imagebrowser Gallery +4. Manage Gallery Page +5. Insert Gallery Window +6. Gallery Settings Page -== Shortcode == +== Shortcodes == NextGEN Gallery offers an easy-to-use Insert Gallery Window, which means you never need to work with shortcodes again when inserting and manageing galleries - if you would prefer not too. @@ -123,7 +119,7 @@ Nope, we use no flash elements. = Are the galleries mobile friendly? = -Yes, we've put a lot of work into this and, NextGEN Galleries are compatible with Android, iOS. All photo galleries are also responsive, so galleries look good on diverse screen sizes. NextGEN Pro also includes a full screen, responsive Pro Lightbox with mobile gesture support. It's great for viewing photos on mobile devices. +Yes, we've put a lot of work into this and, NextGEN Galleries are compatible with phones and tablets, inluding Android and iOS operating systems. All photo galleries are also responsive, so galleries look good on diverse screen sizes. NextGEN Pro also includes a full screen, responsive Pro Lightbox with mobile gesture support. It's great for viewing photos on mobile devices. = What is the difference between a gallery and an album? = @@ -183,6 +179,54 @@ For more information, feel free to visit the official website for the NextGEN Ga == Changelog == += V3.2.2 - 05.09.2019 = +* Changed: Updated video Links +* Changed: Branding updates in Readme.txt file + += V3.2.1 - 05.08.2019 = +* Fixed: Missing settings after Reset with NextGEN Plus +* Fixed: Small styling issues with WordPress 5.2 + += V3.2.0 - 05.07.2019 = +* NEW: Branding update +* NEW: API methods for detecting NextGEN provided pages and custom post types +* Fixed: Missing menus after Reset +* Fixed: Ajax pagination with Simplelightbox +* Fixed: Datamapper query cache not purged after saving an entity +* Fixed: Gallery folder not created when using Manage Galleries -> New Gallery +* Fixed: Notifications not appearing on all Nextgen-provided pages +* Fixed: Gallery wizard conflicting with NextGEN Pro ecommerce wizard +* Fixed: Upgrade to pro button +* Fixed: NGG activation transient not given a time-to-live value + += V3.1.17 - 04.02.2019 = +* Fixed: Preview images for display types giving get_static_abspath error +* Fixed: Compatibility with the Imagely Lightroom plugin + += V3.1.14 - 03.26.2019 = +* Changed: Restored original behavior of ngg_after_new_images_added hook +* Changed: Images with EXIF rotation metadata are now rotated automatically at upload +* Changed: Moved confirmation message presented after editing a thumbnail +* Fixed: Ability to import zips of images +* Fixed: Gallery folder not created on filesystem after adding new gallery +* Fixed: IGW not working with Gutenberg / Block Editor +* Fixed: Compatibility with EWWW Image Optimizer +* Fixed: Compatibility with Elementor +* Fixed: Compatibility with Imagify +* Fixed: NextGen 3.1.11 passed an incorrect path to load_plugin_textdomain() +* Fixed: Simplelightbox initialization was opening more than once for certain images + += V3.1.11 - 03.020.2019 = +* NEW: Many performance enhancements +* Fixed: Broken Overview page on WordPress 5.1 +* Fixed: Problem with notices not being dismissible +* Fixed: Recover images from backup generating errors +* Fixed: Manage Tags the only menu option after activating +* Fixed: Compatibility with environments which don't have mime_content_type function + += V3.1.7 - 02.26.2019 = +* Changed: Upgraded Freemius SDK to latest release + = V3.1.6 - 01.16.2019 = * NEW: Option to control caching duration of random widget galleries * Secured: DB record serialization -- GitLab