Version Description
(06.04.2021) = * Fixed: Clearfy was blocking htaccess file overwriting in some cases, now the problem is fixed.
Download this release
Release Info
Developer | alexkovalevv |
Plugin | Clearfy – WordPress optimization plugin and disable ultimate tweaker |
Version | 1.8.9 |
Comparing to | |
See all releases |
Code changes from version 1.8.7 to 1.8.9
- admin/activation.php +2 -2
- admin/ajax/configurate.php +1 -1
- admin/ajax/import-settings.php +2 -2
- admin/assets/css/general.css +2 -2
- admin/assets/js/general.js +17 -17
- admin/assets/js/license-manager.js +4 -4
- admin/boot.php +12 -10
- admin/includes/compatibility.php +4 -4
- admin/pages/class-page.php +8 -8
- admin/pages/class-pages-advanced.php +1 -1
- admin/pages/class-pages-clearfy-settings.php +2 -2
- admin/pages/class-pages-components-license.php +5 -5
- admin/pages/class-pages-components.php +1 -1
- admin/pages/class-pages-defence-titan.php +3 -3
- admin/pages/class-pages-defence.php +2 -2
- admin/pages/class-pages-hide-login-page.php +3 -3
- admin/pages/class-pages-image-optimization.php +3 -3
- admin/pages/class-pages-license.php +3 -3
- admin/pages/class-pages-performance-cache.php +15 -3
- admin/pages/class-pages-performance-google.php +1 -1
- admin/pages/class-pages-quick-start.php +2 -2
- admin/pages/class-pages-seo-double-pages.php +1 -1
- admin/pages/class-pages-seo.php +1 -1
- admin/pages/class-pages-widgets.php +1 -1
- admin/pages/setup/class-pages-setup.php +4 -4
- admin/pages/setup/steps/class-step-congratulation.php +2 -2
- admin/pages/setup/steps/class-step-default.php +5 -5
- admin/pages/setup/steps/class-step-google-page-speed-after.php +2 -2
- admin/pages/setup/steps/class-step-google-page-speed-before.php +2 -2
- admin/pages/setup/steps/class-step-optimize-images.php +4 -4
- admin/pages/setup/steps/class-step-plugins.php +2 -2
- admin/pages/setup/steps/class-step-setting-seo-optimize.php +1 -1
- admin/pages/setup/steps/class-step-setting-speed-optimize.php +1 -1
- clearfy.php +10 -10
- components/assets-manager/admin/activation.php +2 -2
- components/assets-manager/admin/ajax/save-settings.php +47 -154
- components/assets-manager/admin/boot.php +2 -2
- components/assets-manager/admin/pages/class-pages-more-features.php +1 -1
- components/assets-manager/admin/pages/class-pages-settings.php +4 -4
- components/assets-manager/assets/js/wam-assets-conditions.js +78 -5
- components/assets-manager/assets/js/wam-assets-manager.js +1 -3
- components/assets-manager/gonzales.php +7 -7
- components/assets-manager/includes/class-plugin.php +3 -3
- components/assets-manager/includes/classes/class-assets-manager-global.php +24 -7
- components/assets-manager/includes/classes/class-check-conditions.php +154 -119
- components/assets-manager/includes/classes/class-views.php +4 -4
- components/assets-manager/migrations/010100.php +1 -1
- components/assets-manager/migrations/010108.php +1 -1
- components/assets-manager/migrations/020005.php +1 -1
- components/assets-manager/mu-plugins/assets-manager.php +54 -2
- components/assets-manager/views/conditions-logic-editor-template.php +72 -71
- components/comments-plus/admin/boot.php +1 -1
- components/comments-plus/admin/pages/class-page-comments.php +3 -3
- components/comments-plus/admin/pages/class-page-delete-comments.php +6 -6
- components/comments-plus/admin/pages/class-page-more-features.php +1 -1
- components/comments-plus/comments-plus.php +7 -7
- components/comments-plus/includes/class-plugin.php +3 -3
- components/comments-plus/includes/classes/class-configurate-comments.php +3 -3
- components/cyrlitera/admin/activation.php +2 -2
- components/cyrlitera/admin/boot.php +1 -1
- components/cyrlitera/admin/pages/class-page-cyrlitera.php +4 -4
- components/cyrlitera/admin/pages/class-page-more-features.php +1 -1
- components/cyrlitera/cyrlitera.php +7 -7
- components/cyrlitera/includes/class-plugin.php +3 -3
- components/cyrlitera/includes/classes/class-configurate-cyrlitera.php +2 -2
- components/cyrlitera/migrations/010004.php +1 -1
- components/disable-admin-notices/admin/boot.php +1 -1
- components/disable-admin-notices/admin/class-page-basic.php +4 -4
- components/disable-admin-notices/admin/options.php +2 -2
- components/disable-admin-notices/admin/pages/class-pages-edit-admin-bar.php +3 -3
- components/disable-admin-notices/admin/pages/class-pages-edit-redirects.php +3 -3
- components/disable-admin-notices/admin/pages/class-pages-license.php +3 -3
- components/disable-admin-notices/admin/pages/class-pages-notices.php +3 -3
- components/disable-admin-notices/admin/pages/class-pages-settings.php +6 -6
- components/disable-admin-notices/disable-admin-notices.php +8 -8
- components/disable-admin-notices/includes/class-plugin.php +4 -4
- components/disable-admin-notices/includes/classes/class-configurate-notices.php +1 -1
- components/disable-admin-notices/migrations/010007.php +1 -1
- components/ga-cache/admin/activation.php +2 -2
- components/ga-cache/admin/boot.php +2 -2
- components/ga-cache/admin/options.php +1 -1
- components/ga-cache/admin/pages/class-pages-general-settings.php +3 -3
- components/ga-cache/admin/pages/class-pages-more-features.php +1 -1
- components/ga-cache/includes/class-plugin.php +3 -3
- components/ga-cache/includes/classes/class-configurate-ga.php +1 -1
- components/ga-cache/migrations/030002.php +1 -1
- components/ga-cache/simple_google_analytics.php +6 -6
- components/html-minify/admin/pages/class-pages-settings.php +3 -3
- components/html-minify/html-minify.php +7 -7
- components/html-minify/includes/class-plugin.php +3 -3
- components/minify-and-combine/admin/pages/class-pages-settings.php +6 -6
- components/minify-and-combine/includes/class-plugin.php +3 -3
- components/minify-and-combine/includes/classes/class-cache.php +1 -1
- components/minify-and-combine/includes/classes/class-css-min.php +0 -1
- components/minify-and-combine/includes/classes/class-styles.php +344 -338
- components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Colors.php +152 -152
- components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Minifier.php +872 -910
- components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Utils.php +131 -136
- components/minify-and-combine/minify-and-combine.php +7 -7
- components/updates-manager/admin/activation.php +2 -2
- components/updates-manager/admin/assets/js/ajax-components.js +4 -4
- components/updates-manager/admin/boot.php +1 -1
- components/updates-manager/admin/includes/class-abstract-filters.php +1 -1
- components/updates-manager/admin/pages/class-page-advanced.php +5 -5
- components/updates-manager/admin/pages/class-page-more-features.php +1 -1
- components/updates-manager/admin/pages/class-page-plugins.php +5 -5
- components/updates-manager/admin/pages/class-page-themes.php +4 -4
- components/updates-manager/admin/pages/class-page-updates.php +5 -5
- components/updates-manager/includes/class-plugin.php +3 -3
- components/updates-manager/includes/classes/class-configurate-updates.php +1 -1
- components/updates-manager/migrations/010008.php +1 -1
- components/updates-manager/webcraftic-updates-manager.php +7 -7
- includes/boot.php +1 -1
- includes/class.plugin.php +5 -5
- includes/classes/3rd-party/boot.php +1 -1
- includes/classes/3rd-party/class-form-entity.php +3 -3
- includes/classes/class.configurate-advanced.php +1 -1
- includes/classes/class.configurate-google-performance.php +1 -1
- includes/classes/class.configurate-performance.php +1 -1
- includes/classes/class.configurate-privacy.php +37 -29
- includes/classes/class.configurate-security.php +1 -1
- includes/classes/class.configurate-seo.php +1 -1
- includes/helpers.php +14 -0
- libs/factory/adverts/boot.php +13 -13
- libs/factory/adverts/includes/class-base.php +6 -6
- libs/factory/adverts/includes/class-dashboard-widget.php +4 -4
- libs/factory/adverts/includes/class-rest-request.php +4 -4
- libs/factory/adverts/langs/{wbcr_factory_adverts_123-ru_RU.mo → wbcr_factory_adverts_124-ru_RU.mo} +0 -0
- libs/factory/adverts/langs/{wbcr_factory_adverts_123-ru_RU.po → wbcr_factory_adverts_124-ru_RU.po} +0 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +1 -1
- libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.dropdown.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.list.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js +1 -1
- libs/factory/bootstrap/boot.php +9 -9
- libs/factory/bootstrap/includes/functions.php +10 -10
- libs/factory/clearfy/assets/css/clearfy-base.css +25 -25
- libs/factory/clearfy/assets/css/components.css +24 -24
- libs/factory/clearfy/assets/css/libs/autocomplete.css +9 -9
- libs/factory/clearfy/assets/css/page-setup.css +102 -102
- libs/factory/clearfy/assets/js/clearfy-globals.js +26 -26
- libs/factory/clearfy/assets/js/clearfy-license-manager.js +4 -4
- libs/factory/clearfy/assets/js/clearfy-search-options.js +2 -2
- libs/factory/clearfy/assets/js/clearfy-widgets.js +4 -4
- libs/factory/clearfy/assets/js/libs/jquery.autocomplete.min.js +1 -1
- libs/factory/clearfy/boot.php +24 -24
- libs/factory/clearfy/includes/ajax-handlers.php +13 -13
- libs/factory/clearfy/includes/class-configurate.php +3 -3
- libs/factory/clearfy/includes/class-helpers.php +100 -85
- libs/factory/clearfy/includes/class-search-options.php +1 -1
- libs/factory/clearfy/langs/{wbcr_factory_clearfy_236-ru_RU.mo → wbcr_factory_clearfy_237-ru_RU.mo} +0 -0
- libs/factory/clearfy/langs/{wbcr_factory_clearfy_236-ru_RU.po → wbcr_factory_clearfy_237-ru_RU.po} +0 -0
- libs/factory/clearfy/pages/class-page-license.php +33 -33
- libs/factory/clearfy/pages/class-page-more-features.php +23 -23
- libs/factory/clearfy/pages/class-page-setup.php +18 -18
- libs/factory/clearfy/pages/class-pages-components.php +19 -19
- libs/factory/clearfy/pages/class-pages.php +55 -55
- libs/factory/clearfy/pages/setup-parts/class-step-custom.php +7 -7
- libs/factory/clearfy/pages/setup-parts/class-step-form.php +12 -12
- libs/factory/clearfy/pages/setup-parts/class-step.php +5 -5
- libs/factory/core/ajax/install-addons.php +10 -10
- libs/factory/core/assets/js/core-components.js +14 -14
- libs/factory/core/assets/js/core-general.js +6 -6
- libs/factory/core/boot.php +33 -33
- libs/factory/core/includes/activation/class-factory-activator.php +3 -3
- libs/factory/core/includes/activation/class-factory-update.php +3 -3
- libs/factory/core/includes/assets-managment/class-factory-assets-list.php +4 -4
- libs/factory/core/includes/assets-managment/class-factory-script-list.php +2 -2
- libs/factory/core/includes/assets-managment/class-factory-style-list.php +1 -1
- libs/factory/core/includes/class-check-compatibility.php +3 -3
- libs/factory/core/includes/class-factory-migrations.php +13 -13
- libs/factory/core/includes/class-factory-notices.php +5 -5
- libs/factory/core/includes/class-factory-options.php +2 -2
- libs/factory/core/includes/class-factory-plugin-abstract.php +70 -70
- libs/factory/core/includes/class-factory-plugin-base.php +25 -25
- libs/factory/core/includes/class-factory-requests.php +1 -1
- libs/factory/core/includes/class-factory-requirements.php +6 -6
- libs/factory/core/includes/components/class-delete-component-button.php +1 -1
- libs/factory/core/includes/components/class-install-component-button.php +11 -11
- libs/factory/core/includes/entities/class-factory-paths.php +1 -1
- libs/factory/core/includes/entities/class-factory-support.php +1 -1
- libs/factory/core/includes/functions.php +7 -7
- libs/factory/core/includes/premium/class-factory-license-interface.php +1 -1
- libs/factory/core/includes/premium/class-factory-manager.php +10 -10
- libs/factory/core/includes/premium/class-factory-provider-abstract.php +6 -6
- libs/factory/core/includes/updates/class-factory-premium-upgrader.php +11 -11
- libs/factory/core/includes/updates/class-factory-upgrader.php +10 -10
- libs/factory/core/includes/updates/repositories/class-factory-github.php +4 -4
- libs/factory/core/includes/updates/repositories/class-factory-repository-abstract.php +5 -5
- libs/factory/core/includes/updates/repositories/class-factory-wordpress.php +4 -4
- libs/factory/core/langs/{wbcr_factory_445-ru_RU.mo → wbcr_factory_446-ru_RU.mo} +0 -0
- libs/factory/core/langs/{wbcr_factory_445-ru_RU.po → wbcr_factory_446-ru_RU.po} +0 -0
- libs/factory/forms/boot.php +95 -95
- libs/factory/forms/controls/checkbox.php +4 -4
- libs/factory/forms/controls/color-and-opacity.php +4 -4
- libs/factory/forms/controls/color.php +2 -2
- libs/factory/forms/controls/customs/html.php +2 -2
- libs/factory/forms/controls/customs/separator.php +2 -2
- libs/factory/forms/controls/datepicker-range.php +4 -4
- libs/factory/forms/controls/dropdown-and-colors.php +6 -6
- libs/factory/forms/controls/dropdown.php +5 -5
- libs/factory/forms/controls/font.php +11 -11
- libs/factory/forms/controls/google-font.php +8 -8
- libs/factory/forms/controls/gradient.php +4 -4
- libs/factory/forms/controls/hidden.php +2 -2
- libs/factory/forms/controls/holders/accordion-item.php +2 -2
- libs/factory/forms/controls/holders/accordion.php +2 -2
- libs/factory/forms/controls/holders/columns.php +2 -2
- libs/factory/forms/controls/holders/control-group-item.php +2 -2
- libs/factory/forms/controls/holders/control-group.php +3 -3
- libs/factory/forms/controls/holders/div.php +2 -2
- libs/factory/forms/controls/holders/form-group.php +2 -2
- libs/factory/forms/controls/holders/more-link.php +2 -2
- libs/factory/forms/controls/holders/tab-item.php +2 -2
- libs/factory/forms/controls/holders/tab.php +4 -4
- libs/factory/forms/controls/integer.php +2 -2
- libs/factory/forms/controls/list.php +4 -4
- libs/factory/forms/controls/multiple-textbox.php +3 -3
- libs/factory/forms/controls/paddings-editor.php +3 -3
- libs/factory/forms/controls/pattern.php +9 -9
- libs/factory/forms/controls/radio-colors.php +2 -2
- libs/factory/forms/controls/radio.php +2 -2
- libs/factory/forms/controls/textarea.php +2 -2
- libs/factory/forms/controls/textbox.php +2 -2
- libs/factory/forms/controls/url.php +3 -3
- libs/factory/forms/controls/wp-editor.php +3 -3
- libs/factory/forms/includes/complex-control.class.php +4 -4
- libs/factory/forms/includes/control-holder.class.php +5 -5
- libs/factory/forms/includes/control.class.php +5 -5
- libs/factory/forms/includes/custom-element.class.php +2 -2
- libs/factory/forms/includes/form-element.class.php +7 -7
- libs/factory/forms/includes/form-layout.class.php +5 -5
- libs/factory/forms/includes/form.class.php +39 -39
- libs/factory/forms/includes/holder.class.php +6 -6
- libs/factory/forms/includes/html-builder.class.php +2 -2
- libs/factory/forms/includes/providers/meta-value-provider.class.php +2 -2
- libs/factory/forms/includes/providers/options-value-provider.class.php +3 -3
- libs/factory/forms/includes/providers/value-provider.interface.php +2 -2
- libs/factory/forms/langs/{wbcr_factory_forms_442-ru_RU.mo → wbcr_factory_forms_443-ru_RU.mo} +0 -0
- libs/factory/forms/langs/{wbcr_factory_forms_442-ru_RU.po → wbcr_factory_forms_443-ru_RU.po} +0 -0
- libs/factory/forms/layouts/bootstrap-3/bootstrap-3.php +7 -7
- libs/factory/freemius/boot.php +18 -18
- libs/factory/freemius/includes/class-freemius-api.php +7 -7
- libs/factory/freemius/includes/entities/class-freemius-entity.php +1 -1
- libs/factory/freemius/includes/entities/class-freemius-license.php +2 -2
- libs/factory/freemius/includes/entities/class-freemius-plugin.php +1 -1
- libs/factory/freemius/includes/entities/class-freemius-scope.php +1 -1
- libs/factory/freemius/includes/entities/class-freemius-site.php +1 -1
- libs/factory/freemius/includes/entities/class-freemius-user.php +1 -1
- libs/factory/freemius/includes/licensing/class-freemius-provider.php +18 -18
- libs/factory/freemius/includes/updates/class-freemius-repository.php +7 -7
- libs/factory/pages/boot.php +13 -12
- libs/factory/pages/includes/admin-page.class.php +6 -6
- libs/factory/pages/includes/page.class.php +7 -7
- libs/factory/pages/langs/{wbcr_factory_pages_444-fr_FR.mo → wbcr_factory_pages_445-fr_FR.mo} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_444-fr_FR.po → wbcr_factory_pages_445-fr_FR.po} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_444-ru_RU.mo → wbcr_factory_pages_445-ru_RU.mo} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_444-ru_RU.po → wbcr_factory_pages_445-ru_RU.po} +0 -0
- libs/factory/pages/pages.php +11 -11
- libs/factory/pages/templates/impressive-lite/assets/css/impressive-lite.page.template.css +552 -0
- libs/factory/pages/templates/impressive-lite/assets/css/impressive-lite.page.template.css.map +1 -0
admin/activation.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
* @copyright (c) 09.09.2017, Webcraftic
|
7 |
-
* @see
|
8 |
* @version 1.0
|
9 |
*/
|
10 |
|
@@ -13,7 +13,7 @@ if( !defined('ABSPATH') ) {
|
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
-
class WCL_Activation extends
|
17 |
|
18 |
/**
|
19 |
* Runs activation actions.
|
4 |
*
|
5 |
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
* @copyright (c) 09.09.2017, Webcraftic
|
7 |
+
* @see Factory446_Activator
|
8 |
* @version 1.0
|
9 |
*/
|
10 |
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
+
class WCL_Activation extends Wbcr_Factory446_Activator {
|
17 |
|
18 |
/**
|
19 |
* Runs activation actions.
|
admin/ajax/configurate.php
CHANGED
@@ -57,7 +57,7 @@
|
|
57 |
}
|
58 |
|
59 |
if( !$flush_redirect ) {
|
60 |
-
|
61 |
}
|
62 |
|
63 |
do_action('wbcr_clearfy_configurated_quick_mode', $mode_name);
|
57 |
}
|
58 |
|
59 |
if( !$flush_redirect ) {
|
60 |
+
WbcrFactoryClearfy237_Helpers::flushPageCache();
|
61 |
}
|
62 |
|
63 |
do_action('wbcr_clearfy_configurated_quick_mode', $mode_name);
|
admin/ajax/import-settings.php
CHANGED
@@ -62,7 +62,7 @@
|
|
62 |
}
|
63 |
|
64 |
if( is_array($option_value) || is_object($option_value) ) {
|
65 |
-
$option_value =
|
66 |
$option_value = maybe_serialize($option_value);
|
67 |
} else {
|
68 |
$option_value = wp_kses_post($option_value);
|
@@ -140,7 +140,7 @@
|
|
140 |
//$send_data['update_notice'] = $package_plugin->getUpdateNotice();
|
141 |
|
142 |
// Сбрасываем кеш для кеширующих плагинов
|
143 |
-
|
144 |
|
145 |
do_action('wbcr_clearfy_imported_settings');
|
146 |
|
62 |
}
|
63 |
|
64 |
if( is_array($option_value) || is_object($option_value) ) {
|
65 |
+
$option_value = WbcrFactoryClearfy237_Helpers::recursiveSanitizeArray($option_value, 'wp_kses_post');
|
66 |
$option_value = maybe_serialize($option_value);
|
67 |
} else {
|
68 |
$option_value = wp_kses_post($option_value);
|
140 |
//$send_data['update_notice'] = $package_plugin->getUpdateNotice();
|
141 |
|
142 |
// Сбрасываем кеш для кеширующих плагинов
|
143 |
+
WbcrFactoryClearfy237_Helpers::flushPageCache();
|
144 |
|
145 |
do_action('wbcr_clearfy_imported_settings');
|
146 |
|
admin/assets/css/general.css
CHANGED
@@ -33,10 +33,10 @@
|
|
33 |
//float: right;
|
34 |
}*/
|
35 |
}
|
36 |
-
#WBCR .wbcr-factory-pages-
|
37 |
height: 80px !important;
|
38 |
}
|
39 |
-
#WBCR .wbcr-factory-pages-
|
40 |
display: inline-block !important;
|
41 |
}
|
42 |
#WBCR .row {
|
33 |
//float: right;
|
34 |
}*/
|
35 |
}
|
36 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-page-header {
|
37 |
height: 80px !important;
|
38 |
}
|
39 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-logo span {
|
40 |
display: inline-block !important;
|
41 |
}
|
42 |
#WBCR .row {
|
admin/assets/js/general.js
CHANGED
@@ -13,7 +13,7 @@
|
|
13 |
this.qickStartAssistent();
|
14 |
this.importOptions();
|
15 |
|
16 |
-
/*$.
|
17 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
18 |
if( !$('#WBCR').length ) {
|
19 |
return false;
|
@@ -29,14 +29,14 @@
|
|
29 |
}
|
30 |
});*/
|
31 |
|
32 |
-
/*$.
|
33 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
34 |
-
if( !($('#WBCR').length && $.
|
35 |
return false;
|
36 |
}
|
37 |
|
38 |
if( response.data.need_rewrite_rules && !$('.wbcr-clr-need-rewrite-rules-message').length ) {
|
39 |
-
$.
|
40 |
}
|
41 |
|
42 |
});*/
|
@@ -115,13 +115,13 @@
|
|
115 |
* Хук выполняет проивольную функцию, после того как получен ajax ответ о том, что в
|
116 |
* результате конфигурации произошла ошибка Реализация системы фильтров и хуков в файле
|
117 |
* libs/clearfy/admin/assests/js/global.js Пример регистрации хука
|
118 |
-
* $.
|
119 |
* function(noticeId) {});
|
120 |
* @param {string} modeName - имя режима конфигурации
|
121 |
* @param {object} data
|
122 |
*/
|
123 |
|
124 |
-
$.
|
125 |
modeName,
|
126 |
data
|
127 |
]);
|
@@ -138,12 +138,12 @@
|
|
138 |
* Хук выполняет проивольную функцию, после того как получен ajax ответ об успешном выполнении
|
139 |
* конфигурации Реализация системы фильтров и хуков в файле
|
140 |
* libs/clearfy/admin/assests/js/global.js Пример регистрации хука
|
141 |
-
* $.
|
142 |
* {});
|
143 |
* @param {string} modeName - имя режима конфигурации
|
144 |
* @param {object} data
|
145 |
*/
|
146 |
-
$.
|
147 |
|
148 |
if( modeName !== 'reset' ) {
|
149 |
switcher.addClass('wbcr-clearfy-active');
|
@@ -211,12 +211,12 @@
|
|
211 |
$this = $(this);
|
212 |
|
213 |
if( !settings ) {
|
214 |
-
$.
|
215 |
return false;
|
216 |
}
|
217 |
|
218 |
if( void 0 === wbcr_clearfy_ajax || !wbcr_clearfy_ajax.import_options_nonce ) {
|
219 |
-
$.
|
220 |
return false;
|
221 |
}
|
222 |
|
@@ -231,7 +231,7 @@
|
|
231 |
|
232 |
if( response.data.update_notice ) {
|
233 |
if( !$('.wbcr-clr-update-package').length ) {
|
234 |
-
$.
|
235 |
}
|
236 |
} else {
|
237 |
if( $('.wbcr-clr-update-package').length ) {
|
@@ -268,15 +268,15 @@
|
|
268 |
console.log(data);
|
269 |
|
270 |
if( data ) {
|
271 |
-
noticeId = $.
|
272 |
} else {
|
273 |
if( void 0 !== wbcr_clearfy_ajax ) {
|
274 |
-
noticeId = $.
|
275 |
}
|
276 |
}
|
277 |
|
278 |
setTimeout(function() {
|
279 |
-
$.
|
280 |
}, 5000);
|
281 |
return;
|
282 |
}
|
@@ -285,10 +285,10 @@
|
|
285 |
|
286 |
if( !request_data.flush_redirect ) {
|
287 |
if( void 0 !== wbcr_clearfy_ajax ) {
|
288 |
-
noticeId = $.
|
289 |
|
290 |
setTimeout(function() {
|
291 |
-
$.
|
292 |
}, 5000);
|
293 |
}
|
294 |
return;
|
@@ -303,7 +303,7 @@
|
|
303 |
console.log(xhr.responseText);
|
304 |
console.log(thrownError);
|
305 |
|
306 |
-
var noticeId = $.
|
307 |
}
|
308 |
});
|
309 |
}
|
13 |
this.qickStartAssistent();
|
14 |
this.importOptions();
|
15 |
|
16 |
+
/*$.wfactory_446.hooks.add('core/components/pre_activate', function(button) {
|
17 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
18 |
if( !$('#WBCR').length ) {
|
19 |
return false;
|
29 |
}
|
30 |
});*/
|
31 |
|
32 |
+
/*$.wfactory_446.hooks.add('core/components/updated', function(button, data, response) {
|
33 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
34 |
+
if( !($('#WBCR').length && $.wbcr_factory_clearfy_237) ) {
|
35 |
return false;
|
36 |
}
|
37 |
|
38 |
if( response.data.need_rewrite_rules && !$('.wbcr-clr-need-rewrite-rules-message').length ) {
|
39 |
+
$.wbcr_factory_clearfy_237.app.showNotice(response.data.need_rewrite_rules, 'warning');
|
40 |
}
|
41 |
|
42 |
});*/
|
115 |
* Хук выполняет проивольную функцию, после того как получен ajax ответ о том, что в
|
116 |
* результате конфигурации произошла ошибка Реализация системы фильтров и хуков в файле
|
117 |
* libs/clearfy/admin/assests/js/global.js Пример регистрации хука
|
118 |
+
* $.wbcr_factory_clearfy_237.hooks.add('wbcr/factory_clearfy_237/updated',
|
119 |
* function(noticeId) {});
|
120 |
* @param {string} modeName - имя режима конфигурации
|
121 |
* @param {object} data
|
122 |
*/
|
123 |
|
124 |
+
$.wbcr_factory_clearfy_237.hooks.run('clearfy/quick_start/configurated_error', [
|
125 |
modeName,
|
126 |
data
|
127 |
]);
|
138 |
* Хук выполняет проивольную функцию, после того как получен ajax ответ об успешном выполнении
|
139 |
* конфигурации Реализация системы фильтров и хуков в файле
|
140 |
* libs/clearfy/admin/assests/js/global.js Пример регистрации хука
|
141 |
+
* $.wbcr_factory_clearfy_237.hooks.add('wbcr/factory_clearfy_237/updated', function(noticeId)
|
142 |
* {});
|
143 |
* @param {string} modeName - имя режима конфигурации
|
144 |
* @param {object} data
|
145 |
*/
|
146 |
+
$.wbcr_factory_clearfy_237.hooks.run('clearfy/quick_start/configurated', [modeName, data]);
|
147 |
|
148 |
if( modeName !== 'reset' ) {
|
149 |
switcher.addClass('wbcr-clearfy-active');
|
211 |
$this = $(this);
|
212 |
|
213 |
if( !settings ) {
|
214 |
+
$.wbcr_factory_clearfy_237.app.showNotice('Import options is empty!', 'danger');
|
215 |
return false;
|
216 |
}
|
217 |
|
218 |
if( void 0 === wbcr_clearfy_ajax || !wbcr_clearfy_ajax.import_options_nonce ) {
|
219 |
+
$.wbcr_factory_clearfy_237.app.showNotice('Unknown Javascript error, most likely the wbcr_clearfy_ajax variable does not exist!', 'danger');
|
220 |
return false;
|
221 |
}
|
222 |
|
231 |
|
232 |
if( response.data.update_notice ) {
|
233 |
if( !$('.wbcr-clr-update-package').length ) {
|
234 |
+
$.wbcr_factory_clearfy_237.app.showNotice(response.data.update_notice);
|
235 |
}
|
236 |
} else {
|
237 |
if( $('.wbcr-clr-update-package').length ) {
|
268 |
console.log(data);
|
269 |
|
270 |
if( data ) {
|
271 |
+
noticeId = $.wbcr_factory_clearfy_237.app.showNotice(data.error_message, 'danger');
|
272 |
} else {
|
273 |
if( void 0 !== wbcr_clearfy_ajax ) {
|
274 |
+
noticeId = $.wbcr_factory_clearfy_237.app.showNotice(wbcr_clearfy_ajax.i18n.unknown_error, 'danger');
|
275 |
}
|
276 |
}
|
277 |
|
278 |
setTimeout(function() {
|
279 |
+
$.wbcr_factory_clearfy_237.app.hideNotice(noticeId);
|
280 |
}, 5000);
|
281 |
return;
|
282 |
}
|
285 |
|
286 |
if( !request_data.flush_redirect ) {
|
287 |
if( void 0 !== wbcr_clearfy_ajax ) {
|
288 |
+
noticeId = $.wbcr_factory_clearfy_237.app.showNotice(wbcr_clearfy_ajax.i18n.success_update_settings, 'success');
|
289 |
|
290 |
setTimeout(function() {
|
291 |
+
$.wbcr_factory_clearfy_237.app.hideNotice(noticeId);
|
292 |
}, 5000);
|
293 |
}
|
294 |
return;
|
303 |
console.log(xhr.responseText);
|
304 |
console.log(thrownError);
|
305 |
|
306 |
+
var noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
|
307 |
}
|
308 |
});
|
309 |
}
|
admin/assets/js/license-manager.js
CHANGED
@@ -20,7 +20,7 @@ jQuery(function($) {
|
|
20 |
// Глобальные уведомления не трогаем
|
21 |
|
22 |
for( i = 0; i < allNotices.length; i++ ) {
|
23 |
-
$.
|
24 |
}
|
25 |
|
26 |
$('.wcl-control-btn').hide();
|
@@ -55,7 +55,7 @@ jQuery(function($) {
|
|
55 |
|
56 |
if( response.data ) {
|
57 |
console.log(response.data.error_message);
|
58 |
-
noticeId = $.
|
59 |
allNotices.push(noticeId);
|
60 |
} else {
|
61 |
console.log(response);
|
@@ -65,7 +65,7 @@ jQuery(function($) {
|
|
65 |
}
|
66 |
|
67 |
if( response.data && response.data.message ) {
|
68 |
-
noticeId = $.
|
69 |
allNotices.push(noticeId);
|
70 |
|
71 |
// todo: доработать генерацию формы, вместо перезагрузки страницы
|
@@ -82,7 +82,7 @@ jQuery(function($) {
|
|
82 |
console.log(xhr.responseText);
|
83 |
console.log(thrownError);
|
84 |
|
85 |
-
var noticeId = $.
|
86 |
|
87 |
allNotices.push(noticeId);
|
88 |
}
|
20 |
// Глобальные уведомления не трогаем
|
21 |
|
22 |
for( i = 0; i < allNotices.length; i++ ) {
|
23 |
+
$.wbcr_factory_clearfy_237.app.hideNotice(allNotices[i]);
|
24 |
}
|
25 |
|
26 |
$('.wcl-control-btn').hide();
|
55 |
|
56 |
if( response.data ) {
|
57 |
console.log(response.data.error_message);
|
58 |
+
noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
|
59 |
allNotices.push(noticeId);
|
60 |
} else {
|
61 |
console.log(response);
|
65 |
}
|
66 |
|
67 |
if( response.data && response.data.message ) {
|
68 |
+
noticeId = $.wbcr_factory_clearfy_237.app.showNotice(response.data.message, 'success');
|
69 |
allNotices.push(noticeId);
|
70 |
|
71 |
// todo: доработать генерацию формы, вместо перезагрузки страницы
|
82 |
console.log(xhr.responseText);
|
83 |
console.log(thrownError);
|
84 |
|
85 |
+
var noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
|
86 |
|
87 |
allNotices.push(noticeId);
|
88 |
}
|
admin/boot.php
CHANGED
@@ -21,7 +21,7 @@ if( !defined('ABSPATH') ) {
|
|
21 |
* Уведомление будет показано на всех страницах Clearfy и его компонентах.
|
22 |
*
|
23 |
* @param WCL_Plugin $plugin
|
24 |
-
* @param
|
25 |
*/
|
26 |
|
27 |
add_action('wbcr/factory/pages/impressive/print_all_notices', function ($plugin, $obj) {
|
@@ -50,7 +50,7 @@ add_action('admin_init', function () {
|
|
50 |
if( WCL_Helper::is_need_show_setup_page() ) {
|
51 |
try {
|
52 |
$redirect_url = '';
|
53 |
-
if( class_exists('
|
54 |
$redirect_url = WCL_Plugin::app()->getPluginPageUrl('setup', ['wclearfy_setup_page_viewed' => 1]);
|
55 |
}
|
56 |
if( $redirect_url ) {
|
@@ -84,8 +84,8 @@ add_action('wbcr/factory/pages/impressive/header', function ($plugin_name) {
|
|
84 |
|
85 |
/**
|
86 |
* @param $form
|
87 |
-
* @param
|
88 |
-
* @param
|
89 |
*/
|
90 |
function wbcr_clearfy_multisite_before_save($form, $plugin, $obj)
|
91 |
{
|
@@ -127,25 +127,27 @@ add_action('wbcr/factory/pages/impressive/plugin_title', 'wbcr_clearfy_branding'
|
|
127 |
wp_enqueue_style('wbcr-clearfy-install-components', WCL_PLUGIN_URL . '/admin/assets/css/install-addons.css', [], WCL_Plugin::app()->getPluginVersion());
|
128 |
wp_enqueue_script('wbcr-clearfy-install-components', WCL_PLUGIN_URL . '/admin/assets/js/install-addons.js', [
|
129 |
'jquery',
|
130 |
-
'wbcr-factory-clearfy-
|
131 |
], WCL_Plugin::app()->getPluginVersion());
|
132 |
});*/
|
133 |
|
134 |
/**
|
135 |
-
*
|
136 |
*/
|
137 |
-
function wbcr_clearfy_flush_rewrite_rules()
|
138 |
{
|
139 |
WCL_Plugin::app()->deletePopulateOption('need_rewrite_rules', 1);
|
|
|
|
|
140 |
}
|
141 |
|
142 |
-
|
143 |
|
144 |
/**
|
145 |
* Обновить постоынные ссылки, после выполнения быстрых настроек
|
146 |
*
|
147 |
* @param WHM_Plugin $plugin
|
148 |
-
* @param
|
149 |
*/
|
150 |
function wbcr_clearfy_after_form_save($plugin, $obj)
|
151 |
{
|
@@ -168,7 +170,7 @@ add_action('wbcr/factory/pages/impressive/after_form_save', 'wbcr_clearfy_after_
|
|
168 |
*
|
169 |
* @param array $widgets
|
170 |
* @param string $position
|
171 |
-
* @param
|
172 |
*/
|
173 |
|
174 |
add_filter('wbcr/factory/pages/impressive/widgets', function ($widgets, $position, $plugin) {
|
21 |
* Уведомление будет показано на всех страницах Clearfy и его компонентах.
|
22 |
*
|
23 |
* @param WCL_Plugin $plugin
|
24 |
+
* @param Wbcr_FactoryPages445_ImpressiveThemplate $obj
|
25 |
*/
|
26 |
|
27 |
add_action('wbcr/factory/pages/impressive/print_all_notices', function ($plugin, $obj) {
|
50 |
if( WCL_Helper::is_need_show_setup_page() ) {
|
51 |
try {
|
52 |
$redirect_url = '';
|
53 |
+
if( class_exists('Wbcr_FactoryPages445') ) {
|
54 |
$redirect_url = WCL_Plugin::app()->getPluginPageUrl('setup', ['wclearfy_setup_page_viewed' => 1]);
|
55 |
}
|
56 |
if( $redirect_url ) {
|
84 |
|
85 |
/**
|
86 |
* @param $form
|
87 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
88 |
+
* @param Wbcr_FactoryPages445_ImpressiveThemplate $obj
|
89 |
*/
|
90 |
function wbcr_clearfy_multisite_before_save($form, $plugin, $obj)
|
91 |
{
|
127 |
wp_enqueue_style('wbcr-clearfy-install-components', WCL_PLUGIN_URL . '/admin/assets/css/install-addons.css', [], WCL_Plugin::app()->getPluginVersion());
|
128 |
wp_enqueue_script('wbcr-clearfy-install-components', WCL_PLUGIN_URL . '/admin/assets/js/install-addons.js', [
|
129 |
'jquery',
|
130 |
+
'wbcr-factory-clearfy-237-global'
|
131 |
], WCL_Plugin::app()->getPluginVersion());
|
132 |
});*/
|
133 |
|
134 |
/**
|
135 |
+
* Удаляем уведомление Clearfy о том, что нужно перезаписать постоянные ссылоки.
|
136 |
*/
|
137 |
+
function wbcr_clearfy_flush_rewrite_rules($hard)
|
138 |
{
|
139 |
WCL_Plugin::app()->deletePopulateOption('need_rewrite_rules', 1);
|
140 |
+
|
141 |
+
return $hard;
|
142 |
}
|
143 |
|
144 |
+
add_filter('flush_rewrite_rules_hard', 'wbcr_clearfy_flush_rewrite_rules');
|
145 |
|
146 |
/**
|
147 |
* Обновить постоынные ссылки, после выполнения быстрых настроек
|
148 |
*
|
149 |
* @param WHM_Plugin $plugin
|
150 |
+
* @param Wbcr_FactoryPages445_ImpressiveThemplate $obj
|
151 |
*/
|
152 |
function wbcr_clearfy_after_form_save($plugin, $obj)
|
153 |
{
|
170 |
*
|
171 |
* @param array $widgets
|
172 |
* @param string $position
|
173 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
174 |
*/
|
175 |
|
176 |
add_filter('wbcr/factory/pages/impressive/widgets', function ($widgets, $position, $plugin) {
|
admin/includes/compatibility.php
CHANGED
@@ -22,8 +22,8 @@ add_action( 'plugins_loaded', function () {
|
|
22 |
* Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
|
23 |
* иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
|
24 |
*
|
25 |
-
* @param
|
26 |
-
* @param
|
27 |
*
|
28 |
* @return bool
|
29 |
*/
|
@@ -52,8 +52,8 @@ add_action( 'plugins_loaded', function () {
|
|
52 |
* Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
|
53 |
* иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
|
54 |
*
|
55 |
-
* @param
|
56 |
-
* @param
|
57 |
*
|
58 |
* @return bool
|
59 |
*/
|
22 |
* Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
|
23 |
* иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
|
24 |
*
|
25 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
26 |
+
* @param Wbcr_FactoryPages445_ImpressiveThemplate $obj
|
27 |
*
|
28 |
* @return bool
|
29 |
*/
|
52 |
* Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
|
53 |
* иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
|
54 |
*
|
55 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
56 |
+
* @param Wbcr_FactoryPages445_ImpressiveThemplate $obj
|
57 |
*
|
58 |
* @return bool
|
59 |
*/
|
admin/pages/class-page.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
|
10 |
-
class WCL_Page extends
|
11 |
|
12 |
/**
|
13 |
* Действие выполняется для всех страниц Clearfy и его компонентах.
|
@@ -20,15 +20,15 @@ class WCL_Page extends Wbcr_FactoryClearfy236_PageBase {
|
|
20 |
$license_page_url = $this->getBaseUrl('clearfy_license');
|
21 |
$upgrade_url = $this->plugin->get_support()->get_pricing_url(true, 'multisite_save_settings');
|
22 |
|
23 |
-
$html = '<div class="wbcr-factory-clearfy-
|
24 |
$html .= '<div class="wbcr-factory-inner-contanier">';
|
25 |
-
$html .= '<h3>' . __('Upgrade to Clearfy Business', '
|
26 |
-
$html .= '<p>' . __('Oops... Sorry for the inconvenience caused!', '
|
27 |
-
$html .= '<p>' . __('Complete multisite support is available in Clearfy Business and Clearfy Business Revolution packages only!', '
|
28 |
-
$html .= '<p>' . __('You can activate the plugin on each website and use it with zero limitations. But you can’t save the plugin’s settings under the Super Administrator role!', '
|
29 |
$html .= '<p style="margin-top:20px">';
|
30 |
-
$html .= '<a href="' . $license_page_url . '" class="wbcr-factory-activate-premium" rel="noopener">' . __('Activate license ', '
|
31 |
-
$html .= '<a href="' . $upgrade_url . '" class="wbcr-factory-purchase-premium" target="_blank" rel="noopener">' . __('Upgrade to Clearfy Business', '
|
32 |
$html .= '</p>';
|
33 |
$html .= '</div>';
|
34 |
$html .= '</div>';
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
|
10 |
+
class WCL_Page extends Wbcr_FactoryClearfy237_PageBase {
|
11 |
|
12 |
/**
|
13 |
* Действие выполняется для всех страниц Clearfy и его компонентах.
|
20 |
$license_page_url = $this->getBaseUrl('clearfy_license');
|
21 |
$upgrade_url = $this->plugin->get_support()->get_pricing_url(true, 'multisite_save_settings');
|
22 |
|
23 |
+
$html = '<div class="wbcr-factory-clearfy-237-multisite-suggetion">';
|
24 |
$html .= '<div class="wbcr-factory-inner-contanier">';
|
25 |
+
$html .= '<h3>' . __('Upgrade to Clearfy Business', 'wbcr_factory_clearfy_237') . '</h3>';
|
26 |
+
$html .= '<p>' . __('Oops... Sorry for the inconvenience caused!', 'wbcr_factory_clearfy_237') . '</p>';
|
27 |
+
$html .= '<p>' . __('Complete multisite support is available in Clearfy Business and Clearfy Business Revolution packages only!', 'wbcr_factory_clearfy_237') . '</p>';
|
28 |
+
$html .= '<p>' . __('You can activate the plugin on each website and use it with zero limitations. But you can’t save the plugin’s settings under the Super Administrator role!', 'wbcr_factory_clearfy_237') . '</p>';
|
29 |
$html .= '<p style="margin-top:20px">';
|
30 |
+
$html .= '<a href="' . $license_page_url . '" class="wbcr-factory-activate-premium" rel="noopener">' . __('Activate license ', 'wbcr_factory_clearfy_237') . '</a> ';
|
31 |
+
$html .= '<a href="' . $upgrade_url . '" class="wbcr-factory-purchase-premium" target="_blank" rel="noopener">' . __('Upgrade to Clearfy Business', 'wbcr_factory_clearfy_237') . '</a>';
|
32 |
$html .= '</p>';
|
33 |
$html .= '</div>';
|
34 |
$html .= '</div>';
|
admin/pages/class-pages-advanced.php
CHANGED
@@ -17,7 +17,7 @@ class WCL_AdvancedPage extends WCL_Page {
|
|
17 |
* The id of the page in the admin menu.
|
18 |
*
|
19 |
* Mainly used to navigate between pages.
|
20 |
-
* @see
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
* @var string
|
17 |
* The id of the page in the admin menu.
|
18 |
*
|
19 |
* Mainly used to navigate between pages.
|
20 |
+
* @see FactoryPages445_AdminPage
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
* @var string
|
admin/pages/class-pages-clearfy-settings.php
CHANGED
@@ -19,7 +19,7 @@ class WCL_ClearfySettingsPage extends WCL_Page {
|
|
19 |
* Mainly used to navigate between pages.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
-
* @see
|
23 |
*
|
24 |
* @var string
|
25 |
*/
|
@@ -59,7 +59,7 @@ class WCL_ClearfySettingsPage extends WCL_Page {
|
|
59 |
*
|
60 |
* @return void
|
61 |
* @since 1.0.0
|
62 |
-
* @see
|
63 |
*
|
64 |
*/
|
65 |
public function assets($scripts, $styles)
|
19 |
* Mainly used to navigate between pages.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
+
* @see FactoryPages445_AdminPage
|
23 |
*
|
24 |
* @var string
|
25 |
*/
|
59 |
*
|
60 |
* @return void
|
61 |
* @since 1.0.0
|
62 |
+
* @see FactoryPages445_AdminPage
|
63 |
*
|
64 |
*/
|
65 |
public function assets($scripts, $styles)
|
admin/pages/class-pages-components-license.php
CHANGED
@@ -55,12 +55,12 @@ class WCL_ComponentsLicensePage extends WCL_Page {
|
|
55 |
/**
|
56 |
* WCL_LicensePage constructor.
|
57 |
*
|
58 |
-
* @param \
|
59 |
*
|
60 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
61 |
*
|
62 |
*/
|
63 |
-
public function __construct(
|
64 |
{
|
65 |
$this->menu_title = __('License', 'robin-image-optimizer');
|
66 |
$this->page_menu_short_description = __('Product activation', 'robin-image-optimizer');
|
@@ -74,7 +74,7 @@ class WCL_ComponentsLicensePage extends WCL_Page {
|
|
74 |
*
|
75 |
* @return void
|
76 |
* @since 1.0.0
|
77 |
-
* @see
|
78 |
*
|
79 |
*/
|
80 |
public function assets($scripts, $styles)
|
@@ -84,8 +84,8 @@ class WCL_ComponentsLicensePage extends WCL_Page {
|
|
84 |
$this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/components.css');
|
85 |
|
86 |
/**
|
87 |
-
* @param
|
88 |
-
* @param
|
89 |
*
|
90 |
* @since 1.4.0
|
91 |
*
|
55 |
/**
|
56 |
* WCL_LicensePage constructor.
|
57 |
*
|
58 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
59 |
*
|
60 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
61 |
*
|
62 |
*/
|
63 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin)
|
64 |
{
|
65 |
$this->menu_title = __('License', 'robin-image-optimizer');
|
66 |
$this->page_menu_short_description = __('Product activation', 'robin-image-optimizer');
|
74 |
*
|
75 |
* @return void
|
76 |
* @since 1.0.0
|
77 |
+
* @see FactoryPages445_AdminPage
|
78 |
*
|
79 |
*/
|
80 |
public function assets($scripts, $styles)
|
84 |
$this->styles->add(WCL_PLUGIN_URL . '/admin/assets/css/components.css');
|
85 |
|
86 |
/**
|
87 |
+
* @param Wbcr_Factory446_StyleList $styles
|
88 |
+
* @param Wbcr_Factory446_ScriptList $scripts
|
89 |
*
|
90 |
* @since 1.4.0
|
91 |
*
|
admin/pages/class-pages-components.php
CHANGED
@@ -13,7 +13,7 @@ if( !defined('ABSPATH') ) {
|
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
-
class WCL_ComponentsPage extends \WBCR\
|
17 |
|
18 |
public function get_components()
|
19 |
{
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
+
class WCL_ComponentsPage extends \WBCR\FactoryClearfy237\Pages\Components {
|
17 |
|
18 |
public function get_components()
|
19 |
{
|
admin/pages/class-pages-defence-titan.php
CHANGED
@@ -19,7 +19,7 @@ class WCL_TitanSecurityPage extends WCL_Page {
|
|
19 |
* Mainly used to navigate between pages.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
-
* @see
|
23 |
*
|
24 |
* @var string
|
25 |
*/
|
@@ -83,7 +83,7 @@ class WCL_TitanSecurityPage extends WCL_Page {
|
|
83 |
?>
|
84 |
<script>
|
85 |
jQuery(document).ready(function($) {
|
86 |
-
$.
|
87 |
if( component_name.plugin_action === 'install' ) {
|
88 |
button.removeClass('wbcr-factory-purchase-premium');
|
89 |
button.addClass('wbcr-factory-activate-premium');
|
@@ -96,7 +96,7 @@ class WCL_TitanSecurityPage extends WCL_Page {
|
|
96 |
});
|
97 |
});
|
98 |
</script>
|
99 |
-
<div class="wbcr-factory-clearfy-
|
100 |
<div class="wbcr-factory-inner-contanier">
|
101 |
<h3>
|
102 |
<a href="https://wordpress.org/plugins/anti-spam" target="_blank"><?php _e('Install Firewall and Malware scanner (Titan sucurity) component', 'clearfy') ?></a>
|
19 |
* Mainly used to navigate between pages.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
+
* @see FactoryPages445_AdminPage
|
23 |
*
|
24 |
* @var string
|
25 |
*/
|
83 |
?>
|
84 |
<script>
|
85 |
jQuery(document).ready(function($) {
|
86 |
+
$.wfactory_446.hooks.add('core/components/updated', function(button, component_name) {
|
87 |
if( component_name.plugin_action === 'install' ) {
|
88 |
button.removeClass('wbcr-factory-purchase-premium');
|
89 |
button.addClass('wbcr-factory-activate-premium');
|
96 |
});
|
97 |
});
|
98 |
</script>
|
99 |
+
<div class="wbcr-factory-clearfy-237-multisite-suggetion">
|
100 |
<div class="wbcr-factory-inner-contanier">
|
101 |
<h3>
|
102 |
<a href="https://wordpress.org/plugins/anti-spam" target="_blank"><?php _e('Install Firewall and Malware scanner (Titan sucurity) component', 'clearfy') ?></a>
|
admin/pages/class-pages-defence.php
CHANGED
@@ -17,7 +17,7 @@ class WCL_DefencePage extends WCL_Page {
|
|
17 |
* The id of the page in the admin menu.
|
18 |
*
|
19 |
* Mainly used to navigate between pages.
|
20 |
-
* @see
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
* @var string
|
@@ -132,7 +132,7 @@ class WCL_DefencePage extends WCL_Page {
|
|
132 |
//'cssClass' => 'postbox'
|
133 |
);
|
134 |
|
135 |
-
return
|
136 |
$form_options,
|
137 |
$this
|
138 |
), '1.3.1', 'wbcr_clearfy_defence_form_options' );
|
17 |
* The id of the page in the admin menu.
|
18 |
*
|
19 |
* Mainly used to navigate between pages.
|
20 |
+
* @see FactoryPages445_AdminPage
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
* @var string
|
132 |
//'cssClass' => 'postbox'
|
133 |
);
|
134 |
|
135 |
+
return wbcr_factory_446_apply_filters_deprecated( 'wbcr_clr_defence_form_options', array(
|
136 |
$form_options,
|
137 |
$this
|
138 |
), '1.3.1', 'wbcr_clearfy_defence_form_options' );
|
admin/pages/class-pages-hide-login-page.php
CHANGED
@@ -17,7 +17,7 @@ class WCL_HideLoginPage extends WCL_Page {
|
|
17 |
* The id of the page in the admin menu.
|
18 |
*
|
19 |
* Mainly used to navigate between pages.
|
20 |
-
* @see
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
* @var string
|
@@ -78,7 +78,7 @@ class WCL_HideLoginPage extends WCL_Page {
|
|
78 |
?>
|
79 |
<script>
|
80 |
jQuery(document).ready(function($) {
|
81 |
-
$.
|
82 |
if( component_name.plugin_action === 'install' ) {
|
83 |
button.removeClass('wbcr-factory-purchase-premium');
|
84 |
button.addClass('wbcr-factory-activate-premium');
|
@@ -91,7 +91,7 @@ class WCL_HideLoginPage extends WCL_Page {
|
|
91 |
});
|
92 |
});
|
93 |
</script>
|
94 |
-
<div class="wbcr-factory-clearfy-
|
95 |
<div class="wbcr-factory-inner-contanier">
|
96 |
<h3><?php _e('Install Hide login page component', 'clearfy') ?></h3>
|
97 |
|
17 |
* The id of the page in the admin menu.
|
18 |
*
|
19 |
* Mainly used to navigate between pages.
|
20 |
+
* @see FactoryPages445_AdminPage
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
* @var string
|
78 |
?>
|
79 |
<script>
|
80 |
jQuery(document).ready(function($) {
|
81 |
+
$.wfactory_446.hooks.add('core/components/updated', function(button, component_name) {
|
82 |
if( component_name.plugin_action === 'install' ) {
|
83 |
button.removeClass('wbcr-factory-purchase-premium');
|
84 |
button.addClass('wbcr-factory-activate-premium');
|
91 |
});
|
92 |
});
|
93 |
</script>
|
94 |
+
<div class="wbcr-factory-clearfy-237-multisite-suggetion">
|
95 |
<div class="wbcr-factory-inner-contanier">
|
96 |
<h3><?php _e('Install Hide login page component', 'clearfy') ?></h3>
|
97 |
|
admin/pages/class-pages-image-optimization.php
CHANGED
@@ -19,7 +19,7 @@ class WCL_ImageOptimizationPage extends WCL_Page {
|
|
19 |
* Mainly used to navigate between pages.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
-
* @see
|
23 |
*
|
24 |
* @var string
|
25 |
*/
|
@@ -79,7 +79,7 @@ class WCL_ImageOptimizationPage extends WCL_Page {
|
|
79 |
?>
|
80 |
<script>
|
81 |
jQuery(document).ready(function($) {
|
82 |
-
$.
|
83 |
if( component_name.plugin_action === 'install' ) {
|
84 |
button.removeClass('wbcr-factory-purchase-premium');
|
85 |
button.addClass('wbcr-factory-activate-premium');
|
@@ -92,7 +92,7 @@ class WCL_ImageOptimizationPage extends WCL_Page {
|
|
92 |
});
|
93 |
});
|
94 |
</script>
|
95 |
-
<div class="wbcr-factory-clearfy-
|
96 |
<div class="wbcr-factory-inner-contanier">
|
97 |
<h3><?php _e( 'Install Robin Image Optimizer component', 'clearfy' ) ?></h3>
|
98 |
<p><?php _e( 'To start optimizing images, you need to install the additional component Robin image optimizer!', 'clearfy' ) ?></p>
|
19 |
* Mainly used to navigate between pages.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
+
* @see FactoryPages445_AdminPage
|
23 |
*
|
24 |
* @var string
|
25 |
*/
|
79 |
?>
|
80 |
<script>
|
81 |
jQuery(document).ready(function($) {
|
82 |
+
$.wfactory_446.hooks.add('core/components/updated', function(button, component_name) {
|
83 |
if( component_name.plugin_action === 'install' ) {
|
84 |
button.removeClass('wbcr-factory-purchase-premium');
|
85 |
button.addClass('wbcr-factory-activate-premium');
|
92 |
});
|
93 |
});
|
94 |
</script>
|
95 |
+
<div class="wbcr-factory-clearfy-237-multisite-suggetion">
|
96 |
<div class="wbcr-factory-inner-contanier">
|
97 |
<h3><?php _e( 'Install Robin Image Optimizer component', 'clearfy' ) ?></h3>
|
98 |
<p><?php _e( 'To start optimizing images, you need to install the additional component Robin image optimizer!', 'clearfy' ) ?></p>
|
admin/pages/class-pages-license.php
CHANGED
@@ -13,7 +13,7 @@
|
|
13 |
*
|
14 |
* @copyright (c) 2018 Webraftic Ltd
|
15 |
*/
|
16 |
-
class WCL_LicensePage extends
|
17 |
|
18 |
/**
|
19 |
* {@inheritdoc}
|
@@ -36,12 +36,12 @@
|
|
36 |
/**
|
37 |
* WCL_LicensePage constructor.
|
38 |
*
|
39 |
-
* @param \
|
40 |
*
|
41 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
42 |
*
|
43 |
*/
|
44 |
-
public function __construct(
|
45 |
$this->menu_title = __( 'License', 'robin-image-optimizer' );
|
46 |
$this->page_menu_short_description = __( 'Product activation', 'robin-image-optimizer' );
|
47 |
$this->plan_name = __( 'Clearfy Business', 'robin-image-optimizer' );
|
13 |
*
|
14 |
* @copyright (c) 2018 Webraftic Ltd
|
15 |
*/
|
16 |
+
class WCL_LicensePage extends Wbcr_FactoryClearfy237_LicensePage {
|
17 |
|
18 |
/**
|
19 |
* {@inheritdoc}
|
36 |
/**
|
37 |
* WCL_LicensePage constructor.
|
38 |
*
|
39 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
40 |
*
|
41 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
42 |
*
|
43 |
*/
|
44 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
45 |
$this->menu_title = __( 'License', 'robin-image-optimizer' );
|
46 |
$this->page_menu_short_description = __( 'Product activation', 'robin-image-optimizer' );
|
47 |
$this->plan_name = __( 'Clearfy Business', 'robin-image-optimizer' );
|
admin/pages/class-pages-performance-cache.php
CHANGED
@@ -228,6 +228,18 @@ spider
|
|
228 |
Yandex
|
229 |
'
|
230 |
];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
231 |
|
232 |
$form_options = [];
|
233 |
|
@@ -260,7 +272,7 @@ Yandex
|
|
260 |
?>
|
261 |
<script>
|
262 |
jQuery(document).ready(function($) {
|
263 |
-
$.
|
264 |
console.log(data);
|
265 |
|
266 |
if( data.plugin_action === 'install' ) {
|
@@ -270,14 +282,14 @@ Yandex
|
|
270 |
|
271 |
});
|
272 |
|
273 |
-
$.
|
274 |
button.remove();
|
275 |
window.location.href = '<?php echo $this->getBaseUrl('clearfy_cache'); ?>';
|
276 |
|
277 |
});
|
278 |
});
|
279 |
</script>
|
280 |
-
<div class="wbcr-factory-clearfy-
|
281 |
<div class="wbcr-factory-inner-contanier">
|
282 |
<h3><?php _e('Install Page Cache component', 'clearfy') ?></h3>
|
283 |
<p><?php _e('To start page caching, you need to install the additional component Cache!', 'clearfy') ?></p>
|
228 |
Yandex
|
229 |
'
|
230 |
];
|
231 |
+
$options[] = [
|
232 |
+
'type' => 'textarea',
|
233 |
+
'name' => 'cache_reject_uri',
|
234 |
+
'title' => __('Never Cache URL(s)', 'clearfy'),
|
235 |
+
//'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
|
236 |
+
'hint' => __('Specify URLs of pages or posts that should never be cached (one per line). The domain part of the URL will be stripped automatically.
|
237 |
+
Use (.*) wildcards to address multiple URLs under a given path.', 'clearfy'),
|
238 |
+
'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? [
|
239 |
+
'disabled' => 'disabled',
|
240 |
+
'placeholder' => '/members/(.*)'
|
241 |
+
] : ['placeholder' => '/members/(.*)'],
|
242 |
+
];
|
243 |
|
244 |
$form_options = [];
|
245 |
|
272 |
?>
|
273 |
<script>
|
274 |
jQuery(document).ready(function($) {
|
275 |
+
$.wfactory_446.hooks.add('core/components/updated', function(button, data) {
|
276 |
console.log(data);
|
277 |
|
278 |
if( data.plugin_action === 'install' ) {
|
282 |
|
283 |
});
|
284 |
|
285 |
+
$.wfactory_446.hooks.add('core/components/activated', function(button, data) {
|
286 |
button.remove();
|
287 |
window.location.href = '<?php echo $this->getBaseUrl('clearfy_cache'); ?>';
|
288 |
|
289 |
});
|
290 |
});
|
291 |
</script>
|
292 |
+
<div class="wbcr-factory-clearfy-237-multisite-suggetion">
|
293 |
<div class="wbcr-factory-inner-contanier">
|
294 |
<h3><?php _e('Install Page Cache component', 'clearfy') ?></h3>
|
295 |
<p><?php _e('To start page caching, you need to install the additional component Cache!', 'clearfy') ?></p>
|
admin/pages/class-pages-performance-google.php
CHANGED
@@ -16,7 +16,7 @@
|
|
16 |
* The id of the page in the admin menu.
|
17 |
*
|
18 |
* Mainly used to navigate between pages.
|
19 |
-
* @see
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
* @var string
|
16 |
* The id of the page in the admin menu.
|
17 |
*
|
18 |
* Mainly used to navigate between pages.
|
19 |
+
* @see FactoryPages445_AdminPage
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
* @var string
|
admin/pages/class-pages-quick-start.php
CHANGED
@@ -17,7 +17,7 @@ class WCL_QuickStartPage extends WCL_Page {
|
|
17 |
* The id of the page in the admin menu.
|
18 |
*
|
19 |
* Mainly used to navigate between pages.
|
20 |
-
* @see
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
* @var string
|
@@ -81,7 +81,7 @@ class WCL_QuickStartPage extends WCL_Page {
|
|
81 |
*
|
82 |
* @return void
|
83 |
* @since 1.0.0
|
84 |
-
* @see
|
85 |
*
|
86 |
*/
|
87 |
public function assets($scripts, $styles)
|
17 |
* The id of the page in the admin menu.
|
18 |
*
|
19 |
* Mainly used to navigate between pages.
|
20 |
+
* @see FactoryPages445_AdminPage
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
* @var string
|
81 |
*
|
82 |
* @return void
|
83 |
* @since 1.0.0
|
84 |
+
* @see FactoryPages445_AdminPage
|
85 |
*
|
86 |
*/
|
87 |
public function assets($scripts, $styles)
|
admin/pages/class-pages-seo-double-pages.php
CHANGED
@@ -16,7 +16,7 @@
|
|
16 |
* The id of the page in the admin menu.
|
17 |
*
|
18 |
* Mainly used to navigate between pages.
|
19 |
-
* @see
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
* @var string
|
16 |
* The id of the page in the admin menu.
|
17 |
*
|
18 |
* Mainly used to navigate between pages.
|
19 |
+
* @see FactoryPages445_AdminPage
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
* @var string
|
admin/pages/class-pages-seo.php
CHANGED
@@ -16,7 +16,7 @@
|
|
16 |
* The id of the page in the admin menu.
|
17 |
*
|
18 |
* Mainly used to navigate between pages.
|
19 |
-
* @see
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
* @var string
|
16 |
* The id of the page in the admin menu.
|
17 |
*
|
18 |
* Mainly used to navigate between pages.
|
19 |
+
* @see FactoryPages445_AdminPage
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
* @var string
|
admin/pages/class-pages-widgets.php
CHANGED
@@ -16,7 +16,7 @@ class WCL_WidgetsPage extends WCL_Page {
|
|
16 |
* The id of the page in the admin menu.
|
17 |
*
|
18 |
* Mainly used to navigate between pages.
|
19 |
-
* @see
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
* @var string
|
16 |
* The id of the page in the admin menu.
|
17 |
*
|
18 |
* Mainly used to navigate between pages.
|
19 |
+
* @see FactoryPages445_AdminPage
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
* @var string
|
admin/pages/setup/class-pages-setup.php
CHANGED
@@ -11,12 +11,12 @@ if( !defined('ABSPATH') ) {
|
|
11 |
exit;
|
12 |
}
|
13 |
|
14 |
-
class WCL_Setup extends WBCR\
|
15 |
|
16 |
/**
|
17 |
-
* @param \
|
18 |
*/
|
19 |
-
public function __construct(\
|
20 |
{
|
21 |
parent::__construct($plugin);
|
22 |
|
@@ -53,7 +53,7 @@ class WCL_Setup extends WBCR\FactoryClearfy236\Pages\Setup {
|
|
53 |
*
|
54 |
* @return void
|
55 |
* @since 1.0.0
|
56 |
-
* @see
|
57 |
*
|
58 |
*/
|
59 |
public function assets($scripts, $styles)
|
11 |
exit;
|
12 |
}
|
13 |
|
14 |
+
class WCL_Setup extends WBCR\FactoryClearfy237\Pages\Setup {
|
15 |
|
16 |
/**
|
17 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
18 |
*/
|
19 |
+
public function __construct(\Wbcr_Factory446_Plugin $plugin)
|
20 |
{
|
21 |
parent::__construct($plugin);
|
22 |
|
53 |
*
|
54 |
* @return void
|
55 |
* @since 1.0.0
|
56 |
+
* @see FactoryPages445_AdminPage
|
57 |
*
|
58 |
*/
|
59 |
public function assets($scripts, $styles)
|
admin/pages/setup/steps/class-step-congratulation.php
CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
|
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
-
class Step_Congratulation extends \WBCR\
|
12 |
|
13 |
protected $prev_id = 'step6';
|
14 |
protected $id = 'step7';
|
@@ -24,7 +24,7 @@ class Step_Congratulation extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
|
|
24 |
{
|
25 |
$pricing_page_url = $this->plugin->get_support()->get_pricing_url(true, 'setup_wizard');
|
26 |
?>
|
27 |
-
<div class="w-factory-clearfy-
|
28 |
<h3><?php echo __("Congratulations, the plugin configuration is complete!", "clearfy"); ?></h3>
|
29 |
<p style="text-align: left;">
|
30 |
<?php _e('You have successfully completed the basic plugin setup! You can go to the general plugin settings to enable other options that we did not offer you.', 'clearfy'); ?>
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
+
class Step_Congratulation extends \WBCR\FactoryClearfy237\Pages\Step_Custom {
|
12 |
|
13 |
protected $prev_id = 'step6';
|
14 |
protected $id = 'step7';
|
24 |
{
|
25 |
$pricing_page_url = $this->plugin->get_support()->get_pricing_url(true, 'setup_wizard');
|
26 |
?>
|
27 |
+
<div class="w-factory-clearfy-237-setup__inner-wrap">
|
28 |
<h3><?php echo __("Congratulations, the plugin configuration is complete!", "clearfy"); ?></h3>
|
29 |
<p style="text-align: left;">
|
30 |
<?php _e('You have successfully completed the basic plugin setup! You can go to the general plugin settings to enable other options that we did not offer you.', 'clearfy'); ?>
|
admin/pages/setup/steps/class-step-default.php
CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
|
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
-
class Step_Default extends \WBCR\
|
12 |
|
13 |
protected $id = 'step0';
|
14 |
protected $next_id = 'step1';
|
@@ -21,10 +21,10 @@ class Step_Default extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
|
|
21 |
public function html()
|
22 |
{
|
23 |
?>
|
24 |
-
<div class="w-factory-clearfy-
|
25 |
-
<div class="w-factory-clearfy-
|
26 |
-
<p class="w-factory-clearfy-
|
27 |
-
<h1 class="w-factory-clearfy-
|
28 |
<img src="<?php echo WCL_PLUGIN_URL ?>/admin/assets/img/clearfylogo-768x300.png" alt="Clearfy">
|
29 |
</h1>
|
30 |
<p><?php _e('Optimize your site even faster using the setup wizard!', 'clearfy') ?></p>
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
+
class Step_Default extends \WBCR\FactoryClearfy237\Pages\Step_Custom {
|
12 |
|
13 |
protected $id = 'step0';
|
14 |
protected $next_id = 'step1';
|
21 |
public function html()
|
22 |
{
|
23 |
?>
|
24 |
+
<div class="w-factory-clearfy-237-setup__inner-wrap">
|
25 |
+
<div class="w-factory-clearfy-237-setup-step__new_onboarding-wrapper">
|
26 |
+
<p class="w-factory-clearfy-237-setup-step__new_onboarding-welcome">Welcome to</p>
|
27 |
+
<h1 class="w-factory-clearfy-237-logo">
|
28 |
<img src="<?php echo WCL_PLUGIN_URL ?>/admin/assets/img/clearfylogo-768x300.png" alt="Clearfy">
|
29 |
</h1>
|
30 |
<p><?php _e('Optimize your site even faster using the setup wizard!', 'clearfy') ?></p>
|
admin/pages/setup/steps/class-step-google-page-speed-after.php
CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
|
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
-
class Step_Google_Page_Speed_After extends \WBCR\
|
12 |
|
13 |
protected $prev_id = 'step5';
|
14 |
protected $id = 'step6';
|
@@ -28,7 +28,7 @@ class Step_Google_Page_Speed_After extends \WBCR\FactoryClearfy236\Pages\Step_Cu
|
|
28 |
wclearfy_fetch_google_pagespeed_audit("<?php echo wp_create_nonce('fetch_google_page_speed_audit') ?>", true);
|
29 |
});
|
30 |
</script>
|
31 |
-
<div class="w-factory-clearfy-
|
32 |
<h3>Google Page Speed</h3>
|
33 |
<p style="text-align: left;">
|
34 |
We analyzed your site on the Google Page Speed service. You can see the test results below. Our plugin
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
+
class Step_Google_Page_Speed_After extends \WBCR\FactoryClearfy237\Pages\Step_Custom {
|
12 |
|
13 |
protected $prev_id = 'step5';
|
14 |
protected $id = 'step6';
|
28 |
wclearfy_fetch_google_pagespeed_audit("<?php echo wp_create_nonce('fetch_google_page_speed_audit') ?>", true);
|
29 |
});
|
30 |
</script>
|
31 |
+
<div class="w-factory-clearfy-237-setup__inner-wrap">
|
32 |
<h3>Google Page Speed</h3>
|
33 |
<p style="text-align: left;">
|
34 |
We analyzed your site on the Google Page Speed service. You can see the test results below. Our plugin
|
admin/pages/setup/steps/class-step-google-page-speed-before.php
CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
|
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
-
class Step_Google_Page_Speed_Before extends \WBCR\
|
12 |
|
13 |
protected $prev_id = 'step0';
|
14 |
protected $id = 'step1';
|
@@ -27,7 +27,7 @@ class Step_Google_Page_Speed_Before extends \WBCR\FactoryClearfy236\Pages\Step_C
|
|
27 |
wclearfy_fetch_google_pagespeed_audit("<?php echo wp_create_nonce('fetch_google_page_speed_audit') ?>");
|
28 |
});
|
29 |
</script>
|
30 |
-
<div class="w-factory-clearfy-
|
31 |
<h3><?php _e('Google Page Speed', 'clearfy') ?></h3>
|
32 |
<p style="text-align: left;">
|
33 |
<?php _e('We analyzed your site on the Google Page Speed service. You can see the test results below. Our plugin
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
+
class Step_Google_Page_Speed_Before extends \WBCR\FactoryClearfy237\Pages\Step_Custom {
|
12 |
|
13 |
protected $prev_id = 'step0';
|
14 |
protected $id = 'step1';
|
27 |
wclearfy_fetch_google_pagespeed_audit("<?php echo wp_create_nonce('fetch_google_page_speed_audit') ?>");
|
28 |
});
|
29 |
</script>
|
30 |
+
<div class="w-factory-clearfy-237-setup__inner-wrap">
|
31 |
<h3><?php _e('Google Page Speed', 'clearfy') ?></h3>
|
32 |
<p style="text-align: left;">
|
33 |
<?php _e('We analyzed your site on the Google Page Speed service. You can see the test results below. Our plugin
|
admin/pages/setup/steps/class-step-optimize-images.php
CHANGED
@@ -8,13 +8,13 @@ namespace WBCR\Clearfy\Pages;
|
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
-
class Step_Optimize_Images extends \WBCR\
|
12 |
|
13 |
protected $prev_id = 'step4';
|
14 |
protected $id = 'step5';
|
15 |
protected $next_id = 'step6';
|
16 |
|
17 |
-
public function __construct(\WBCR\
|
18 |
{
|
19 |
parent::__construct($page);
|
20 |
}
|
@@ -58,7 +58,7 @@ class Step_Optimize_Images extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
|
|
58 |
];
|
59 |
?>
|
60 |
|
61 |
-
<div class="w-factory-clearfy-
|
62 |
<h3><?php _e("Optimize images", "clearfy") ?></h3>
|
63 |
<p style="text-align: left;">
|
64 |
<?php _e("We found unoptimized images in your media library. You can run background image optimization with the Robin image optimizer component of the Clearfy plugin. Background optimization is a long process, your images will be optimized after some time, so you won't be able to immediately see the improvement in Google Page Speed, but when the images are fully optimized you will see a score increase in Google Page Speed.", "clearfy"); ?>
|
@@ -165,7 +165,7 @@ class Step_Optimize_Images extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
|
|
165 |
$install_robin_plugin_btn->add_class('wclearfy-setup__install-component-button');
|
166 |
|
167 |
?>
|
168 |
-
<div class="w-factory-clearfy-
|
169 |
<h3><?php _e("Optimize images", "clearfy") ?></h3>
|
170 |
<p style="text-align: left;">
|
171 |
<?php _e("Robin Image optimizer plugin isn't installed or activated, you need to install or activate it to optimize your images.", "clearfy"); ?>
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
+
class Step_Optimize_Images extends \WBCR\FactoryClearfy237\Pages\Step_Custom {
|
12 |
|
13 |
protected $prev_id = 'step4';
|
14 |
protected $id = 'step5';
|
15 |
protected $next_id = 'step6';
|
16 |
|
17 |
+
public function __construct(\WBCR\FactoryClearfy237\Pages\Setup $page)
|
18 |
{
|
19 |
parent::__construct($page);
|
20 |
}
|
58 |
];
|
59 |
?>
|
60 |
|
61 |
+
<div class="w-factory-clearfy-237-setup__inner-wrap">
|
62 |
<h3><?php _e("Optimize images", "clearfy") ?></h3>
|
63 |
<p style="text-align: left;">
|
64 |
<?php _e("We found unoptimized images in your media library. You can run background image optimization with the Robin image optimizer component of the Clearfy plugin. Background optimization is a long process, your images will be optimized after some time, so you won't be able to immediately see the improvement in Google Page Speed, but when the images are fully optimized you will see a score increase in Google Page Speed.", "clearfy"); ?>
|
165 |
$install_robin_plugin_btn->add_class('wclearfy-setup__install-component-button');
|
166 |
|
167 |
?>
|
168 |
+
<div class="w-factory-clearfy-237-setup__inner-wrap">
|
169 |
<h3><?php _e("Optimize images", "clearfy") ?></h3>
|
170 |
<p style="text-align: left;">
|
171 |
<?php _e("Robin Image optimizer plugin isn't installed or activated, you need to install or activate it to optimize your images.", "clearfy"); ?>
|
admin/pages/setup/steps/class-step-plugins.php
CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
|
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
-
class Step_Plugins extends \WBCR\
|
12 |
|
13 |
protected $prev_id = 'step1';
|
14 |
protected $id = 'step2';
|
@@ -26,7 +26,7 @@ class Step_Plugins extends \WBCR\FactoryClearfy236\Pages\Step_Custom {
|
|
26 |
$install_assets_manager_component_btn = $this->plugin->get_install_component_button('internal', 'assets_manager');
|
27 |
$install_minify_and_combine_component_btn = $this->plugin->get_install_component_button('internal', 'minify_and_combine');
|
28 |
?>
|
29 |
-
<div class="w-factory-clearfy-
|
30 |
<h3><?php _e('Installing plugins', 'clearfy') ?></h3>
|
31 |
<p style="text-align: left;"><?php _e('We analyzed your site and decided that in order to get the maximum result in
|
32 |
optimizing your site, you will need to install additional plugins.', 'clearfy') ?></p>
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
+
class Step_Plugins extends \WBCR\FactoryClearfy237\Pages\Step_Custom {
|
12 |
|
13 |
protected $prev_id = 'step1';
|
14 |
protected $id = 'step2';
|
26 |
$install_assets_manager_component_btn = $this->plugin->get_install_component_button('internal', 'assets_manager');
|
27 |
$install_minify_and_combine_component_btn = $this->plugin->get_install_component_button('internal', 'minify_and_combine');
|
28 |
?>
|
29 |
+
<div class="w-factory-clearfy-237-setup__inner-wrap">
|
30 |
<h3><?php _e('Installing plugins', 'clearfy') ?></h3>
|
31 |
<p style="text-align: left;"><?php _e('We analyzed your site and decided that in order to get the maximum result in
|
32 |
optimizing your site, you will need to install additional plugins.', 'clearfy') ?></p>
|
admin/pages/setup/steps/class-step-setting-seo-optimize.php
CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
|
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
-
class Step_Setting_Seo extends \WBCR\
|
12 |
|
13 |
protected $prev_id = 'step3';
|
14 |
protected $id = 'step4';
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
+
class Step_Setting_Seo extends \WBCR\FactoryClearfy237\Pages\Step_Form {
|
12 |
|
13 |
protected $prev_id = 'step3';
|
14 |
protected $id = 'step4';
|
admin/pages/setup/steps/class-step-setting-speed-optimize.php
CHANGED
@@ -8,7 +8,7 @@ namespace WBCR\Clearfy\Pages;
|
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
-
class Step_Setting_Speed_Optimize extends \WBCR\
|
12 |
|
13 |
protected $prev_id = 'step2';
|
14 |
protected $id = 'step3';
|
8 |
* @copyright (c) 23.07.2020, Webcraftic
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
+
class Step_Setting_Speed_Optimize extends \WBCR\FactoryClearfy237\Pages\Step_Form {
|
12 |
|
13 |
protected $prev_id = 'step2';
|
14 |
protected $id = 'step3';
|
clearfy.php
CHANGED
@@ -4,11 +4,11 @@
|
|
4 |
* Plugin URI: https://clearfy.pro
|
5 |
* Description: Disables unused Wordpress features, improves performance and increases SEO rankings, using Clearfy, which makes WordPress very easy.
|
6 |
* Author: Creative Motion <info@cm-wp.com>
|
7 |
-
* Version: 1.8.
|
8 |
* Text Domain: clearfy
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://cm-wp.com
|
11 |
-
* Framework Version:
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
@@ -89,12 +89,12 @@ $plugin_info = array(
|
|
89 |
),
|
90 |
// FRAMEWORK MODULES
|
91 |
'load_factory_modules' => array(
|
92 |
-
array('libs/factory/bootstrap', '
|
93 |
-
array('libs/factory/forms', '
|
94 |
-
array('libs/factory/pages', '
|
95 |
-
array('libs/factory/clearfy', '
|
96 |
-
array('libs/factory/freemius', '
|
97 |
-
array('libs/factory/adverts', '
|
98 |
),
|
99 |
'load_plugin_components' => array(
|
100 |
'disable_notices' => array(
|
@@ -134,7 +134,7 @@ $plugin_info = array(
|
|
134 |
|
135 |
|
136 |
|
137 |
-
$clearfy_compatibility = new
|
138 |
'plugin_already_activate' => defined('WCL_PLUGIN_ACTIVE'),
|
139 |
'required_php_version' => '7.0',
|
140 |
'required_wp_version' => '5.2.0',
|
@@ -165,7 +165,7 @@ define('WBCR_CLEARFY_PLUGIN_ACTIVE', true);
|
|
165 |
|
166 |
// Plugin version
|
167 |
define('WCL_PLUGIN_VERSION', $clearfy_compatibility->get_plugin_version());
|
168 |
-
define('WCL_FRAMEWORK_VER', '
|
169 |
|
170 |
define('WCL_PLUGIN_DIR', dirname(__FILE__));
|
171 |
define('WCL_PLUGIN_BASE', plugin_basename(__FILE__));
|
4 |
* Plugin URI: https://clearfy.pro
|
5 |
* Description: Disables unused Wordpress features, improves performance and increases SEO rankings, using Clearfy, which makes WordPress very easy.
|
6 |
* Author: Creative Motion <info@cm-wp.com>
|
7 |
+
* Version: 1.8.9
|
8 |
* Text Domain: clearfy
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://cm-wp.com
|
11 |
+
* Framework Version: FACTORY_446_VERSION
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
89 |
),
|
90 |
// FRAMEWORK MODULES
|
91 |
'load_factory_modules' => array(
|
92 |
+
array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
|
93 |
+
array('libs/factory/forms', 'factory_forms_443', 'admin'),
|
94 |
+
array('libs/factory/pages', 'factory_pages_445', 'admin'),
|
95 |
+
array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
|
96 |
+
array('libs/factory/freemius', 'factory_freemius_134', 'all'),
|
97 |
+
array('libs/factory/adverts', 'factory_adverts_124', 'admin')
|
98 |
),
|
99 |
'load_plugin_components' => array(
|
100 |
'disable_notices' => array(
|
134 |
|
135 |
|
136 |
|
137 |
+
$clearfy_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($plugin_info, array(
|
138 |
'plugin_already_activate' => defined('WCL_PLUGIN_ACTIVE'),
|
139 |
'required_php_version' => '7.0',
|
140 |
'required_wp_version' => '5.2.0',
|
165 |
|
166 |
// Plugin version
|
167 |
define('WCL_PLUGIN_VERSION', $clearfy_compatibility->get_plugin_version());
|
168 |
+
define('WCL_FRAMEWORK_VER', 'FACTORY_446_VERSION');
|
169 |
|
170 |
define('WCL_PLUGIN_DIR', dirname(__FILE__));
|
171 |
define('WCL_PLUGIN_BASE', plugin_basename(__FILE__));
|
components/assets-manager/admin/activation.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
*
|
6 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
7 |
* @copyright (c) 09.03.2018, Webcraftic
|
8 |
-
* @see
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
|
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
class WGNZ_Activation extends
|
18 |
|
19 |
/**
|
20 |
* Runs activation actions.
|
5 |
*
|
6 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
7 |
* @copyright (c) 09.03.2018, Webcraftic
|
8 |
+
* @see Wbcr_Factory446_Activator
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
class WGNZ_Activation extends Wbcr_Factory446_Activator {
|
18 |
|
19 |
/**
|
20 |
* Runs activation actions.
|
components/assets-manager/admin/ajax/save-settings.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
*/
|
9 |
|
10 |
// Exit if accessed directly
|
11 |
-
if
|
12 |
exit;
|
13 |
}
|
14 |
|
@@ -18,199 +18,92 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
18 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
19 |
* @since 2.0.0
|
20 |
*/
|
21 |
-
function wam_save_settings_action()
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
'
|
28 |
-
|
|
|
29 |
}
|
30 |
|
31 |
-
|
32 |
-
$
|
33 |
-
$
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
'
|
40 |
-
|
41 |
-
$headers = array(
|
42 |
-
'Cache-Control' => 'no-cache',
|
43 |
-
);
|
44 |
-
|
45 |
-
/** This filter is documented in wp-includes/class-wp-http-streams.php */ ///*$sslverify = apply_filters( 'https_local_ssl_verify', false );
|
46 |
-
//
|
47 |
-
//// Include Basic auth in loopback requests.
|
48 |
-
//if ( isset( $_SERVER['PHP_AUTH_USER'] ) && isset( $_SERVER['PHP_AUTH_PW'] ) ) {
|
49 |
-
// $headers['Authorization'] = 'Basic ' . base64_encode( wp_unslash( $_SERVER['PHP_AUTH_USER'] ) . ':' . wp_unslash( $_SERVER['PHP_AUTH_PW'] ) );
|
50 |
-
//}
|
51 |
-
//
|
52 |
-
//// Make sure PHP process doesn't die before loopback requests complete.
|
53 |
-
//set_time_limit( 300 );
|
54 |
-
//
|
55 |
-
//// Time to wait for loopback requests to finish.
|
56 |
-
//$timeout = 100;
|
57 |
-
//
|
58 |
-
//$needle_start = "###### wp_scraping_result_start:$scrape_key ######";
|
59 |
-
//$needle_end = "###### wp_scraping_result_end:$scrape_key ######";
|
60 |
-
//
|
61 |
-
//// Attempt loopback request to editor to see if user just whitescreened themselves.
|
62 |
-
//if ( $plugin ) {
|
63 |
-
// $url = add_query_arg( compact( 'plugin', 'file' ), admin_url( 'plugin-editor.php' ) );
|
64 |
-
//} elseif ( isset( $stylesheet ) ) {
|
65 |
-
// $url = add_query_arg(
|
66 |
-
// array(
|
67 |
-
// 'theme' => $stylesheet,
|
68 |
-
// 'file' => $file,
|
69 |
-
// ),
|
70 |
-
// admin_url( 'theme-editor.php' )
|
71 |
-
// );
|
72 |
-
//} else {
|
73 |
-
// $url = admin_url();
|
74 |
-
//}
|
75 |
-
//$url = add_query_arg( $scrape_params, $url );
|
76 |
-
//$r = wp_remote_get( $url, compact( 'cookies', 'headers', 'timeout', 'sslverify' ) );
|
77 |
-
//$body = wp_remote_retrieve_body( $r );
|
78 |
-
//$scrape_result_position = strpos( $body, $needle_start );
|
79 |
-
//
|
80 |
-
//$loopback_request_failure = array(
|
81 |
-
// 'code' => 'loopback_request_failed',
|
82 |
-
// 'message' => __( 'Unable to communicate back with site to check for fatal errors, so the PHP change was reverted. You will need to upload your PHP file change by some other means, such as by using SFTP.' ),
|
83 |
-
//);
|
84 |
-
//$json_parse_failure = array(
|
85 |
-
// 'code' => 'json_parse_error',
|
86 |
-
//);
|
87 |
-
//
|
88 |
-
//$result = null;
|
89 |
-
//if ( false === $scrape_result_position ) {
|
90 |
-
// $result = $loopback_request_failure;
|
91 |
-
//} else {
|
92 |
-
// $error_output = substr( $body, $scrape_result_position + strlen( $needle_start ) );
|
93 |
-
// $error_output = substr( $error_output, 0, strpos( $error_output, $needle_end ) );
|
94 |
-
// $result = json_decode( trim( $error_output ), true );
|
95 |
-
// if ( empty( $result ) ) {
|
96 |
-
// $result = $json_parse_failure;
|
97 |
-
// }
|
98 |
-
//}
|
99 |
-
//
|
100 |
-
//// Try making request to homepage as well to see if visitors have been whitescreened.
|
101 |
-
//if ( true === $result ) {
|
102 |
-
// $url = home_url( '/' );
|
103 |
-
// $url = add_query_arg( $scrape_params, $url );
|
104 |
-
// $r = wp_remote_get( $url, compact( 'cookies', 'headers', 'timeout' ) );
|
105 |
-
// $body = wp_remote_retrieve_body( $r );
|
106 |
-
// $scrape_result_position = strpos( $body, $needle_start );
|
107 |
-
//
|
108 |
-
// if ( false === $scrape_result_position ) {
|
109 |
-
// $result = $loopback_request_failure;
|
110 |
-
// } else {
|
111 |
-
// $error_output = substr( $body, $scrape_result_position + strlen( $needle_start ) );
|
112 |
-
// $error_output = substr( $error_output, 0, strpos( $error_output, $needle_end ) );
|
113 |
-
// $result = json_decode( trim( $error_output ), true );
|
114 |
-
// if ( empty( $result ) ) {
|
115 |
-
// $result = $json_parse_failure;
|
116 |
-
// }
|
117 |
-
// }
|
118 |
-
//}
|
119 |
-
//
|
120 |
-
//delete_transient( $transient );
|
121 |
-
//
|
122 |
-
//if ( true !== $result ) {
|
123 |
-
//
|
124 |
-
// // Roll-back file change.
|
125 |
-
// file_put_contents( $real_file, $previous_content );
|
126 |
-
// if ( function_exists( 'opcache_invalidate' ) ) {
|
127 |
-
// opcache_invalidate( $real_file, true );
|
128 |
-
// }
|
129 |
-
//
|
130 |
-
// if ( ! isset( $result['message'] ) ) {
|
131 |
-
// $message = __( 'Something went wrong.' );
|
132 |
-
// } else {
|
133 |
-
// $message = $result['message'];
|
134 |
-
// unset( $result['message'] );
|
135 |
-
// }
|
136 |
-
// return new WP_Error( 'php_error', $message, $result );
|
137 |
-
//}*/
|
138 |
-
|
139 |
-
$save_message_title = __( 'Settings saved successfully!', 'clearfy' );
|
140 |
-
$save_message_content = __( 'If you use test mode, do not forget to disable it. We also recommend that you flush the cache if you use caching plugins.', 'clearfy' );
|
141 |
-
$scope = WGZ_Plugin::app()->request->post( 'scope', 'frontend' );
|
142 |
-
$raw_updated_settings = WGZ_Plugin::app()->request->post( 'settings', [], true );
|
143 |
-
|
144 |
-
if ( ! empty( $raw_updated_settings ) ) {
|
145 |
-
if ( 'networkadmin' === $scope ) {
|
146 |
-
$settings = WGZ_Plugin::app()->getNetworkOption( 'backend_assets_states', [] );
|
147 |
-
} else if ( 'admin' === $scope ) {
|
148 |
-
$settings = WGZ_Plugin::app()->getOption( 'backend_assets_states', [] );
|
149 |
} else {
|
150 |
-
$settings = WGZ_Plugin::app()->getOption(
|
151 |
}
|
152 |
|
153 |
-
if
|
154 |
$settings['save_mode'] = false;
|
155 |
}
|
156 |
|
157 |
-
if
|
158 |
-
foreach
|
159 |
-
if
|
160 |
-
if
|
161 |
$plugin_group['visability'] = "";
|
162 |
} else {
|
163 |
-
foreach
|
164 |
-
if
|
165 |
-
foreach
|
166 |
-
$plugin_group[
|
167 |
}
|
168 |
}
|
169 |
}
|
170 |
}
|
171 |
}
|
172 |
|
173 |
-
$settings['plugins'][
|
174 |
}
|
175 |
}
|
176 |
|
177 |
-
if
|
178 |
$settings['theme'] = $raw_updated_settings['theme'];
|
179 |
}
|
180 |
|
181 |
-
if
|
182 |
$settings['misc'] = $raw_updated_settings['misc'];
|
183 |
}
|
184 |
|
185 |
/**
|
186 |
* Filter run before save settings.
|
187 |
*
|
188 |
-
* @param array
|
189 |
-
* @param array
|
190 |
* @param string $scope
|
191 |
*/
|
192 |
-
$settings = apply_filters(
|
193 |
|
194 |
-
if
|
195 |
-
WGZ_Plugin::app()->updateNetworkOption(
|
196 |
-
} else if
|
197 |
-
WGZ_Plugin::app()->updateOption(
|
198 |
} else {
|
199 |
-
WGZ_Plugin::app()->updateOption(
|
200 |
}
|
201 |
|
202 |
// If mu plugin does not exist, install it.
|
203 |
wbcr_gnz_deploy_mu_plugin();
|
204 |
|
205 |
// Flush cache for all cache plugins
|
206 |
-
|
207 |
}
|
208 |
|
209 |
-
wp_send_json_success(
|
210 |
-
'save_massage_title'
|
211 |
'save_message_content' => $save_message_content
|
212 |
-
]
|
213 |
}
|
214 |
|
215 |
-
add_action(
|
216 |
-
add_action(
|
8 |
*/
|
9 |
|
10 |
// Exit if accessed directly
|
11 |
+
if( !defined('ABSPATH') ) {
|
12 |
exit;
|
13 |
}
|
14 |
|
18 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
19 |
* @since 2.0.0
|
20 |
*/
|
21 |
+
function wam_save_settings_action()
|
22 |
+
{
|
23 |
+
check_ajax_referer('wam_save_settigns');
|
24 |
+
|
25 |
+
if( !current_user_can('manage_options') ) {
|
26 |
+
wp_send_json_error([
|
27 |
+
'error_message_title' => __('Save settings failed!', 'gonzales'),
|
28 |
+
'error_message_content' => __('You don\'t have enough capability to edit this information.', 'gonzales')
|
29 |
+
]);
|
30 |
}
|
31 |
|
32 |
+
$save_message_title = __('Settings saved successfully!', 'clearfy');
|
33 |
+
$save_message_content = __('If you use test mode, do not forget to disable it. We also recommend that you flush the cache if you use caching plugins.', 'clearfy');
|
34 |
+
$scope = WGZ_Plugin::app()->request->post('scope', 'frontend');
|
35 |
+
$raw_updated_settings = WGZ_Plugin::app()->request->post('settings', [], true);
|
36 |
+
|
37 |
+
if( !empty($raw_updated_settings) ) {
|
38 |
+
if( 'networkadmin' === $scope ) {
|
39 |
+
$settings = WGZ_Plugin::app()->getNetworkOption('backend_assets_states', []);
|
40 |
+
} else if( 'admin' === $scope ) {
|
41 |
+
$settings = WGZ_Plugin::app()->getOption('backend_assets_states', []);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
42 |
} else {
|
43 |
+
$settings = WGZ_Plugin::app()->getOption('assets_states', []);
|
44 |
}
|
45 |
|
46 |
+
if( !defined('WGZP_PLUGIN_ACTIVE') || (is_array($settings) && !isset($settings['save_mode'])) ) {
|
47 |
$settings['save_mode'] = false;
|
48 |
}
|
49 |
|
50 |
+
if( !empty($raw_updated_settings['plugins']) ) {
|
51 |
+
foreach((array)$raw_updated_settings['plugins'] as $plugin_name => $plugin_group) {
|
52 |
+
if( !empty($plugin_group['load_mode']) ) {
|
53 |
+
if( 'enable' == $plugin_group['load_mode'] ) {
|
54 |
$plugin_group['visability'] = "";
|
55 |
} else {
|
56 |
+
foreach(['js', 'css'] as $assets_type) {
|
57 |
+
if( !empty($plugin_group[$assets_type]) ) {
|
58 |
+
foreach($plugin_group[$assets_type] as $resource_handle => $resource_params) {
|
59 |
+
$plugin_group[$assets_type][$resource_handle]['visability'] = "";
|
60 |
}
|
61 |
}
|
62 |
}
|
63 |
}
|
64 |
}
|
65 |
|
66 |
+
$settings['plugins'][$plugin_name] = $plugin_group;
|
67 |
}
|
68 |
}
|
69 |
|
70 |
+
if( !empty($raw_updated_settings['theme']) ) {
|
71 |
$settings['theme'] = $raw_updated_settings['theme'];
|
72 |
}
|
73 |
|
74 |
+
if( !empty($raw_updated_settings['misc']) ) {
|
75 |
$settings['misc'] = $raw_updated_settings['misc'];
|
76 |
}
|
77 |
|
78 |
/**
|
79 |
* Filter run before save settings.
|
80 |
*
|
81 |
+
* @param array $settings
|
82 |
+
* @param array $raw_updated_settings
|
83 |
* @param string $scope
|
84 |
*/
|
85 |
+
$settings = apply_filters('wam/before_save_settings', $settings, $raw_updated_settings, $scope);
|
86 |
|
87 |
+
if( 'networkadmin' === $scope ) {
|
88 |
+
WGZ_Plugin::app()->updateNetworkOption('backend_assets_states', $settings);
|
89 |
+
} else if( 'admin' === $scope ) {
|
90 |
+
WGZ_Plugin::app()->updateOption('backend_assets_states', $settings);
|
91 |
} else {
|
92 |
+
WGZ_Plugin::app()->updateOption('assets_states', $settings);
|
93 |
}
|
94 |
|
95 |
// If mu plugin does not exist, install it.
|
96 |
wbcr_gnz_deploy_mu_plugin();
|
97 |
|
98 |
// Flush cache for all cache plugins
|
99 |
+
WbcrFactoryClearfy237_Helpers::flushPageCache();
|
100 |
}
|
101 |
|
102 |
+
wp_send_json_success([
|
103 |
+
'save_massage_title' => $save_message_title,
|
104 |
'save_message_content' => $save_message_content
|
105 |
+
]);
|
106 |
}
|
107 |
|
108 |
+
add_action('wp_ajax_nopriv_wam-save-settings', 'wam_save_settings_action');
|
109 |
+
add_action('wp_ajax_wam-save-settings', 'wam_save_settings_action');
|
components/assets-manager/admin/boot.php
CHANGED
@@ -147,7 +147,7 @@ if( defined('LOADING_ASSETS_MANAGER_AS_ADDON') ) {
|
|
147 |
*
|
148 |
* @param array $widgets
|
149 |
* @param string $position
|
150 |
-
* @param
|
151 |
*/
|
152 |
add_filter('wbcr/factory/pages/impressive/widgets', function ($widgets, $position, $plugin) {
|
153 |
if( $plugin->getPluginName() == WGZ_Plugin::app()->getPluginName() ) {
|
@@ -207,5 +207,5 @@ if( defined('LOADING_ASSETS_MANAGER_AS_ADDON') ) {
|
|
207 |
return $page_url;
|
208 |
}
|
209 |
|
210 |
-
add_filter('
|
211 |
}
|
147 |
*
|
148 |
* @param array $widgets
|
149 |
* @param string $position
|
150 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
151 |
*/
|
152 |
add_filter('wbcr/factory/pages/impressive/widgets', function ($widgets, $position, $plugin) {
|
153 |
if( $plugin->getPluginName() == WGZ_Plugin::app()->getPluginName() ) {
|
207 |
return $page_url;
|
208 |
}
|
209 |
|
210 |
+
add_filter('wbcr_factory_pages_445_imppage_rating_widget_url', 'wbcr_gnz_rating_widget_url', 10, 2);
|
211 |
}
|
components/assets-manager/admin/pages/class-pages-more-features.php
CHANGED
@@ -17,6 +17,6 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
17 |
*
|
18 |
* @copyright (c) 2018 Webraftic Ltd
|
19 |
*/
|
20 |
-
class WGZ_MoreFeaturesPage extends
|
21 |
|
22 |
}
|
17 |
*
|
18 |
* @copyright (c) 2018 Webraftic Ltd
|
19 |
*/
|
20 |
+
class WGZ_MoreFeaturesPage extends Wbcr_FactoryClearfy237_MoreFeaturesPage {
|
21 |
|
22 |
}
|
components/assets-manager/admin/pages/class-pages-settings.php
CHANGED
@@ -16,7 +16,7 @@ if( !defined('ABSPATH') ) {
|
|
16 |
*
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
-
class WGZ_AssetsManagerPage extends
|
20 |
|
21 |
/**
|
22 |
* The id of the page in the admin menu.
|
@@ -24,7 +24,7 @@ class WGZ_AssetsManagerPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
24 |
* Mainly used to navigate between pages.
|
25 |
*
|
26 |
* @since 1.0.0
|
27 |
-
* @see
|
28 |
*
|
29 |
* @var string
|
30 |
*/
|
@@ -48,9 +48,9 @@ class WGZ_AssetsManagerPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
48 |
public $available_for_multisite = true;
|
49 |
|
50 |
/**
|
51 |
-
* @param
|
52 |
*/
|
53 |
-
public function __construct(
|
54 |
{
|
55 |
$this->menu_title = __('Assets manager', 'gonzales');
|
56 |
|
16 |
*
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
+
class WGZ_AssetsManagerPage extends Wbcr_FactoryClearfy237_PageBase {
|
20 |
|
21 |
/**
|
22 |
* The id of the page in the admin menu.
|
24 |
* Mainly used to navigate between pages.
|
25 |
*
|
26 |
* @since 1.0.0
|
27 |
+
* @see FactoryPages445_AdminPage
|
28 |
*
|
29 |
* @var string
|
30 |
*/
|
48 |
public $available_for_multisite = true;
|
49 |
|
50 |
/**
|
51 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
52 |
*/
|
53 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin)
|
54 |
{
|
55 |
$this->menu_title = __('Assets manager', 'gonzales');
|
56 |
|
components/assets-manager/assets/js/wam-assets-conditions.js
CHANGED
@@ -29,9 +29,11 @@
|
|
29 |
let value = null;
|
30 |
|
31 |
if( 'select' === paramOptions['type'] ) {
|
32 |
-
value = this.
|
|
|
|
|
33 |
} else if( 'integer' === paramOptions['type'] ) {
|
34 |
-
value = this.
|
35 |
} else {
|
36 |
value = this._getTextValue(paramOptions);
|
37 |
}
|
@@ -106,6 +108,8 @@
|
|
106 |
operators = ['between'];
|
107 |
} else if( 'integer' === paramOptions['type'] ) {
|
108 |
operators = ['equals', 'notequal', 'less', 'greater', 'between'];
|
|
|
|
|
109 |
} else if( 'regexp' === paramOptions['type'] ) {
|
110 |
operators = ['equals'];
|
111 |
} else if( 'default' === paramOptions['type'] ) {
|
@@ -144,6 +148,8 @@
|
|
144 |
_createValueControl(paramOptions, isInit) {
|
145 |
if( 'select' === paramOptions['type'] ) {
|
146 |
this._createValueAsSelect(paramOptions, isInit);
|
|
|
|
|
147 |
} else if( 'integer' === paramOptions['type'] ) {
|
148 |
this._createValueAsInteger(paramOptions, isInit);
|
149 |
} else {
|
@@ -218,7 +224,7 @@
|
|
218 |
/**
|
219 |
* Returns a value for the select control.
|
220 |
*/
|
221 |
-
|
222 |
let $select = this._conditionElement.find(".wam-cleditor__condition-value select");
|
223 |
|
224 |
let value = $select.val();
|
@@ -275,7 +281,7 @@
|
|
275 |
/**
|
276 |
* Returns a value for the Integer control.
|
277 |
*/
|
278 |
-
|
279 |
let value = {};
|
280 |
|
281 |
let $operator = this._conditionElement.find(".wam-cleditor__operator-select");
|
@@ -309,6 +315,73 @@
|
|
309 |
}
|
310 |
}
|
311 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
312 |
// -------------------
|
313 |
// Text Control
|
314 |
// -------------------
|
@@ -400,7 +473,7 @@
|
|
400 |
description: optionElement.data('hint').trim()
|
401 |
};
|
402 |
|
403 |
-
if( "text" === type || "default" === type || "regexp" === type ) {
|
404 |
data['placeholder'] = optionElement.data('placeholder');
|
405 |
delete data['values'];
|
406 |
}
|
29 |
let value = null;
|
30 |
|
31 |
if( 'select' === paramOptions['type'] ) {
|
32 |
+
value = this._getSelectControlValue(paramOptions);
|
33 |
+
} else if( 'equals' === paramOptions['type'] ) {
|
34 |
+
value = this._getEqualsControlValue(paramOptions);
|
35 |
} else if( 'integer' === paramOptions['type'] ) {
|
36 |
+
value = this._getIntegerControlValue(paramOptions);
|
37 |
} else {
|
38 |
value = this._getTextValue(paramOptions);
|
39 |
}
|
108 |
operators = ['between'];
|
109 |
} else if( 'integer' === paramOptions['type'] ) {
|
110 |
operators = ['equals', 'notequal', 'less', 'greater', 'between'];
|
111 |
+
} else if( 'equals' === paramOptions['type'] ) {
|
112 |
+
operators = ['equals', 'notequal'];
|
113 |
} else if( 'regexp' === paramOptions['type'] ) {
|
114 |
operators = ['equals'];
|
115 |
} else if( 'default' === paramOptions['type'] ) {
|
148 |
_createValueControl(paramOptions, isInit) {
|
149 |
if( 'select' === paramOptions['type'] ) {
|
150 |
this._createValueAsSelect(paramOptions, isInit);
|
151 |
+
} else if( 'equals' === paramOptions['type'] ) {
|
152 |
+
this._createValueAsEquals(paramOptions, isInit);
|
153 |
} else if( 'integer' === paramOptions['type'] ) {
|
154 |
this._createValueAsInteger(paramOptions, isInit);
|
155 |
} else {
|
224 |
/**
|
225 |
* Returns a value for the select control.
|
226 |
*/
|
227 |
+
_getSelectControlValue() {
|
228 |
let $select = this._conditionElement.find(".wam-cleditor__condition-value select");
|
229 |
|
230 |
let value = $select.val();
|
281 |
/**
|
282 |
* Returns a value for the Integer control.
|
283 |
*/
|
284 |
+
_getIntegerControlValue() {
|
285 |
let value = {};
|
286 |
|
287 |
let $operator = this._conditionElement.find(".wam-cleditor__operator-select");
|
315 |
}
|
316 |
}
|
317 |
|
318 |
+
// -------------------
|
319 |
+
// Query string Control
|
320 |
+
// -------------------
|
321 |
+
|
322 |
+
/**
|
323 |
+
* Creates a control for the input linked with the integer.
|
324 |
+
*/
|
325 |
+
_createValueAsEquals(paramOptions, isInit) {
|
326 |
+
let self = this;
|
327 |
+
|
328 |
+
let $operator = this._conditionElement.find(".wam-cleditor__operator-select");
|
329 |
+
let $control;
|
330 |
+
|
331 |
+
$control = $("<span><input type='text' class='wam-cleditor__equals-value1' /> <span class='wam-cleditor__equals-icon'>=</span> <input type='text' class='wam-cleditor__equals-value2' /></span>");
|
332 |
+
|
333 |
+
if( paramOptions['placeholder'] && $.isArray(paramOptions['placeholder']) ) {
|
334 |
+
$control.find('.wam-cleditor__equals-value1').attr('placeholder', paramOptions['placeholder'][0]);
|
335 |
+
|
336 |
+
if( paramOptions['placeholder'][1] ) {
|
337 |
+
$control.find('.wam-cleditor__equals-value2').attr('placeholder', paramOptions['placeholder'][1]);
|
338 |
+
}
|
339 |
+
}
|
340 |
+
|
341 |
+
self._insertValueControl($control);
|
342 |
+
|
343 |
+
$operator.on('change', function() {
|
344 |
+
let currentOperator = $operator.val();
|
345 |
+
let equalIcon = $control.find('.wam-cleditor__equals-icon');
|
346 |
+
|
347 |
+
if( 'equals' === currentOperator ) {
|
348 |
+
equalIcon.text('=');
|
349 |
+
} else {
|
350 |
+
equalIcon.text('≠');
|
351 |
+
}
|
352 |
+
});
|
353 |
+
|
354 |
+
$operator.change();
|
355 |
+
|
356 |
+
if( isInit && this.options.value ) {
|
357 |
+
this._setEqualsControlValue(this.options.value);
|
358 |
+
}
|
359 |
+
}
|
360 |
+
|
361 |
+
/**
|
362 |
+
* Returns a value for the Integer control.
|
363 |
+
*/
|
364 |
+
_getEqualsControlValue() {
|
365 |
+
let value = {};
|
366 |
+
|
367 |
+
value.var_name = this._conditionElement.find(".wam-cleditor__equals-value1").val();
|
368 |
+
value.var_value = this._conditionElement.find(".wam-cleditor__equals-value2").val();
|
369 |
+
|
370 |
+
return value;
|
371 |
+
}
|
372 |
+
|
373 |
+
/**
|
374 |
+
* Sets a value for the Integer control.
|
375 |
+
*/
|
376 |
+
_setEqualsControlValue(value) {
|
377 |
+
if( !value ) {
|
378 |
+
value = {};
|
379 |
+
}
|
380 |
+
|
381 |
+
this._conditionElement.find(".wam-cleditor__equals-value1").val(value.var_name);
|
382 |
+
this._conditionElement.find(".wam-cleditor__equals-value2").val(value.var_value);
|
383 |
+
}
|
384 |
+
|
385 |
// -------------------
|
386 |
// Text Control
|
387 |
// -------------------
|
473 |
description: optionElement.data('hint').trim()
|
474 |
};
|
475 |
|
476 |
+
if( "text" === type || "default" === type || "regexp" === type || "equals" === type ) {
|
477 |
data['placeholder'] = optionElement.data('placeholder');
|
478 |
delete data['values'];
|
479 |
}
|
components/assets-manager/assets/js/wam-assets-manager.js
CHANGED
@@ -90,6 +90,7 @@
|
|
90 |
}
|
91 |
|
92 |
if( requires.length ) {
|
|
|
93 |
// show warning
|
94 |
var notice = WamPnotify.notice({
|
95 |
title: self.pluginVars.i18n.asset_canbe_required_title,
|
@@ -513,8 +514,6 @@ notice.on('pnotify.cancel', function() {
|
|
513 |
settings[groupType][recourceType][resourceHandle]['visability'] = $(this).val();
|
514 |
});
|
515 |
|
516 |
-
console.log(settings);
|
517 |
-
|
518 |
let stackBottomRight = {
|
519 |
'dir1': 'up',
|
520 |
'dir2': 'left',
|
@@ -544,7 +543,6 @@ notice.on('pnotify.cancel', function() {
|
|
544 |
|
545 |
if( !response || !response.success ) {
|
546 |
if( response.data ) {
|
547 |
-
console.log(response.data.error_message_content);
|
548 |
WamPnotify.alert({
|
549 |
title: response.data.error_message_title,
|
550 |
text: response.data.error_message_content,
|
90 |
}
|
91 |
|
92 |
if( requires.length ) {
|
93 |
+
|
94 |
// show warning
|
95 |
var notice = WamPnotify.notice({
|
96 |
title: self.pluginVars.i18n.asset_canbe_required_title,
|
514 |
settings[groupType][recourceType][resourceHandle]['visability'] = $(this).val();
|
515 |
});
|
516 |
|
|
|
|
|
517 |
let stackBottomRight = {
|
518 |
'dir1': 'up',
|
519 |
'dir2': 'left',
|
543 |
|
544 |
if( !response || !response.success ) {
|
545 |
if( response.data ) {
|
|
|
546 |
WamPnotify.alert({
|
547 |
title: response.data.error_message_title,
|
548 |
text: response.data.error_message_content,
|
components/assets-manager/gonzales.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
* Text Domain: gonzales
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
-
* Framework Version:
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
@@ -68,15 +68,15 @@ $wgnz_plugin_info = array(
|
|
68 |
|
69 |
// FRAMEWORK MODULES
|
70 |
'load_factory_modules' => array(
|
71 |
-
array('libs/factory/bootstrap', '
|
72 |
-
array('libs/factory/forms', '
|
73 |
-
array('libs/factory/pages', '
|
74 |
-
array('libs/factory/clearfy', '
|
75 |
-
array('libs/factory/adverts', '
|
76 |
)
|
77 |
);
|
78 |
|
79 |
-
$wgnz_compatibility = new
|
80 |
'plugin_already_activate' => defined('WGZ_PLUGIN_ACTIVE'),
|
81 |
'required_php_version' => '5.4',
|
82 |
'required_wp_version' => '4.2.0',
|
8 |
* Text Domain: gonzales
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
+
* Framework Version: FACTORY_446_VERSION
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
68 |
|
69 |
// FRAMEWORK MODULES
|
70 |
'load_factory_modules' => array(
|
71 |
+
array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
|
72 |
+
array('libs/factory/forms', 'factory_forms_443', 'admin'),
|
73 |
+
array('libs/factory/pages', 'factory_pages_445', 'admin'),
|
74 |
+
array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
|
75 |
+
array('libs/factory/adverts', 'factory_adverts_124', 'admin')
|
76 |
)
|
77 |
);
|
78 |
|
79 |
+
$wgnz_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($wgnz_plugin_info, array(
|
80 |
'plugin_already_activate' => defined('WGZ_PLUGIN_ACTIVE'),
|
81 |
'required_php_version' => '5.4',
|
82 |
'required_wp_version' => '4.2.0',
|
components/assets-manager/includes/class-plugin.php
CHANGED
@@ -11,11 +11,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
11 |
* @copyright (c) 19.02.2018, Webcraftic
|
12 |
* @version 1.0
|
13 |
*/
|
14 |
-
class WGZ_Plugin extends
|
15 |
|
16 |
/**
|
17 |
* @see self::app()
|
18 |
-
* @var
|
19 |
*/
|
20 |
private static $app;
|
21 |
|
@@ -53,7 +53,7 @@ class WGZ_Plugin extends Wbcr_Factory445_Plugin {
|
|
53 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
54 |
* классам.
|
55 |
*
|
56 |
-
* @return \
|
57 |
*/
|
58 |
public static function app() {
|
59 |
return self::$app;
|
11 |
* @copyright (c) 19.02.2018, Webcraftic
|
12 |
* @version 1.0
|
13 |
*/
|
14 |
+
class WGZ_Plugin extends Wbcr_Factory446_Plugin {
|
15 |
|
16 |
/**
|
17 |
* @see self::app()
|
18 |
+
* @var Wbcr_Factory446_Plugin
|
19 |
*/
|
20 |
private static $app;
|
21 |
|
53 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
54 |
* классам.
|
55 |
*
|
56 |
+
* @return \Wbcr_Factory446_Plugin|\WGZ_Plugin
|
57 |
*/
|
58 |
public static function app() {
|
59 |
return self::$app;
|
components/assets-manager/includes/classes/class-assets-manager-global.php
CHANGED
@@ -25,9 +25,9 @@ class WGZ_Assets_Manager_Public {
|
|
25 |
private $deregistered = [];
|
26 |
|
27 |
/**
|
28 |
-
* @param
|
29 |
*/
|
30 |
-
public function __construct(
|
31 |
{
|
32 |
$this->plugin = $plugin;
|
33 |
|
@@ -221,11 +221,13 @@ class WGZ_Assets_Manager_Public {
|
|
221 |
return;
|
222 |
}
|
223 |
?>
|
224 |
-
<
|
225 |
-
<
|
226 |
-
|
227 |
-
|
228 |
-
|
|
|
|
|
229 |
<?php
|
230 |
}
|
231 |
|
@@ -645,6 +647,7 @@ class WGZ_Assets_Manager_Public {
|
|
645 |
<script type='text/javascript' src='<?php echo WGZ_PLUGIN_URL . '/assets/js/wam-assets-conditions.js'; ?>'></script>
|
646 |
<script type='text/javascript' src='<?php echo WGZ_PLUGIN_URL . '/assets/js/wam-assets-manager.js'; ?>'></script>
|
647 |
<?php
|
|
|
648 |
}
|
649 |
|
650 |
/**
|
@@ -722,6 +725,7 @@ class WGZ_Assets_Manager_Public {
|
|
722 |
'wp-includes/js/admin-bar.min.js',
|
723 |
// --
|
724 |
'assets/js/wam-assets-manager.js',
|
|
|
725 |
'assets/js/wam-assets-conditions.js',
|
726 |
// --
|
727 |
'assets/js/libs/wam-pnotify.js',
|
@@ -998,6 +1002,12 @@ class WGZ_Assets_Manager_Public {
|
|
998 |
$s['move_to_footer'] = false;
|
999 |
}
|
1000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1001 |
if( 'disable' === $s['load_mode'] ) {
|
1002 |
$s['row_classes'] = " js-wam-table__tr--disabled-section";
|
1003 |
$s['select_control_classes'] = " js-wam-select--disable";
|
@@ -1204,6 +1214,13 @@ class WGZ_Assets_Manager_Public {
|
|
1204 |
'default_value' => $this->get_current_url_path(),
|
1205 |
'description' => __('Current Url', 'gonzales')
|
1206 |
],
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1207 |
[
|
1208 |
'id' => 'location-page',
|
1209 |
'title' => __('Custom URL', 'gonzales') . $pro_label,
|
25 |
private $deregistered = [];
|
26 |
|
27 |
/**
|
28 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
29 |
*/
|
30 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin)
|
31 |
{
|
32 |
$this->plugin = $plugin;
|
33 |
|
221 |
return;
|
222 |
}
|
223 |
?>
|
224 |
+
<div>
|
225 |
+
<label class="wam-table__label-move-to-footer-premium" style="display: inline-block">
|
226 |
+
<input type="checkbox" class="wam-checkbox wam-table__checkbox" disabled="disabled" <?php checked($item['move_to_footer']) ?>>
|
227 |
+
<?php _e('Move to footer (PRO)', 'gonzales') ?>
|
228 |
+
<i class="wam-help-hint wam-tooltip wam-tooltip--bottom" data-tooltip="<?php _e('This function will force a script or style from the header to the footer. This can fix problems of blocking page rendering.', 'gonzales') ?>"></i>
|
229 |
+
</label>
|
230 |
+
</div>
|
231 |
<?php
|
232 |
}
|
233 |
|
647 |
<script type='text/javascript' src='<?php echo WGZ_PLUGIN_URL . '/assets/js/wam-assets-conditions.js'; ?>'></script>
|
648 |
<script type='text/javascript' src='<?php echo WGZ_PLUGIN_URL . '/assets/js/wam-assets-manager.js'; ?>'></script>
|
649 |
<?php
|
650 |
+
do_action("wam/plugin_print_scripts");
|
651 |
}
|
652 |
|
653 |
/**
|
725 |
'wp-includes/js/admin-bar.min.js',
|
726 |
// --
|
727 |
'assets/js/wam-assets-manager.js',
|
728 |
+
'assets/js/wam-assets-manager-pro.js',
|
729 |
'assets/js/wam-assets-conditions.js',
|
730 |
// --
|
731 |
'assets/js/libs/wam-pnotify.js',
|
1002 |
$s['move_to_footer'] = false;
|
1003 |
}
|
1004 |
|
1005 |
+
if( isset($settings[$type]) && isset($settings[$type][$name]) && !empty($settings[$type][$name]['dns_prefetch']) ) {
|
1006 |
+
$s['dns_prefetch'] = "true" === $settings[$type][$name]['dns_prefetch'];
|
1007 |
+
} else {
|
1008 |
+
$s['dns_prefetch'] = false;
|
1009 |
+
}
|
1010 |
+
|
1011 |
if( 'disable' === $s['load_mode'] ) {
|
1012 |
$s['row_classes'] = " js-wam-table__tr--disabled-section";
|
1013 |
$s['select_control_classes'] = " js-wam-select--disable";
|
1214 |
'default_value' => $this->get_current_url_path(),
|
1215 |
'description' => __('Current Url', 'gonzales')
|
1216 |
],
|
1217 |
+
[
|
1218 |
+
'id' => 'query-string',
|
1219 |
+
'title' => __('Query string var', 'gonzales'),
|
1220 |
+
'type' => 'equals',
|
1221 |
+
'placeholder' => [__('Var name', 'gonzales'), __('Value', 'gonzales')],
|
1222 |
+
'description' => __('You can set this rule if the page url contains a query string. For example ?editor=classic&<b>type</b>=<b>float</b>. For example add the variable <b>"type"</b> to the first input field, and add <b>"float"</b> to the second input field. So field1: <b>type</b> = field2: <b>float</b>. Now, if you go to a page where there is a query string with the <b>"type"</b> variable equal to the <b>"float"</b> value, the script or style file will not be loaded.', 'gonzales')
|
1223 |
+
],
|
1224 |
[
|
1225 |
'id' => 'location-page',
|
1226 |
'title' => __('Custom URL', 'gonzales') . $pro_label,
|
components/assets-manager/includes/classes/class-check-conditions.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
// Exit if accessed directly
|
3 |
-
if
|
4 |
exit;
|
5 |
}
|
6 |
|
@@ -15,11 +15,12 @@ class WGZ_Check_Conditions {
|
|
15 |
|
16 |
protected $condition;
|
17 |
|
18 |
-
public function __construct(
|
19 |
-
|
|
|
20 |
$this->condition = [];
|
21 |
} else {
|
22 |
-
$condition
|
23 |
$this->condition = $condition;
|
24 |
}
|
25 |
}
|
@@ -27,28 +28,30 @@ class WGZ_Check_Conditions {
|
|
27 |
/**
|
28 |
* Проверяем в правильном ли формате нам передано условие
|
29 |
*
|
30 |
-
* @since 2.2.0
|
31 |
-
*
|
32 |
* @param \stdClass $condition
|
33 |
*
|
34 |
* @return bool
|
|
|
|
|
35 |
*/
|
36 |
-
protected function validate_condition_schema(
|
37 |
-
|
|
|
38 |
|
39 |
-
$allow_params = in_array(
|
40 |
'user-role',
|
41 |
'user-mobile',
|
42 |
'user-cookie-name',
|
43 |
'current-url',
|
|
|
44 |
'location-page',
|
45 |
'regular-expression',
|
46 |
'location-some-page',
|
47 |
'location-post-type',
|
48 |
'location-taxonomy'
|
49 |
-
]
|
50 |
|
51 |
-
$allow_operators = in_array(
|
52 |
'equals',
|
53 |
'notequal',
|
54 |
'less',
|
@@ -58,43 +61,44 @@ class WGZ_Check_Conditions {
|
|
58 |
'contains',
|
59 |
'notcontain',
|
60 |
'between'
|
61 |
-
]
|
62 |
|
63 |
-
$allow_types = in_array(
|
64 |
|
65 |
return $isset_attrs && $allow_params && $allow_operators && $allow_types;
|
66 |
}
|
67 |
|
68 |
/**
|
69 |
-
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
70 |
-
* @since 2.0.0
|
71 |
* @return bool
|
|
|
|
|
72 |
*/
|
73 |
-
public function validate()
|
74 |
-
|
|
|
75 |
return false;
|
76 |
}
|
77 |
|
78 |
$or = null;
|
79 |
-
foreach
|
80 |
-
if
|
81 |
$and = null;
|
82 |
-
foreach
|
83 |
-
if
|
84 |
-
$method_name = str_replace(
|
85 |
-
if
|
86 |
-
$and = $this->call_method(
|
87 |
} else {
|
88 |
-
$and = $and && $this->call_method(
|
89 |
}
|
90 |
}
|
91 |
}
|
92 |
|
93 |
-
$or = is_null(
|
94 |
}
|
95 |
}
|
96 |
|
97 |
-
return is_null(
|
98 |
}
|
99 |
|
100 |
/**
|
@@ -106,24 +110,26 @@ class WGZ_Check_Conditions {
|
|
106 |
*
|
107 |
* @return bool
|
108 |
*/
|
109 |
-
protected function call_method(
|
110 |
-
|
111 |
-
|
|
|
112 |
} else {
|
113 |
-
return apply_filters(
|
114 |
}
|
115 |
}
|
116 |
|
117 |
/**
|
118 |
-
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
119 |
-
* @since 2.0.0
|
120 |
-
*
|
121 |
* @param string $path
|
122 |
*
|
123 |
* @return string
|
|
|
|
|
|
|
124 |
*/
|
125 |
-
protected function get_admin_url_path(
|
126 |
-
|
|
|
127 |
}
|
128 |
|
129 |
/**
|
@@ -131,14 +137,15 @@ class WGZ_Check_Conditions {
|
|
131 |
*
|
132 |
* @return string
|
133 |
*/
|
134 |
-
protected function get_referer_url()
|
|
|
135 |
$out = "";
|
136 |
-
$url = explode(
|
137 |
-
if
|
138 |
-
$out = trim(
|
139 |
}
|
140 |
|
141 |
-
return $out ? urldecode(
|
142 |
}
|
143 |
|
144 |
/**
|
@@ -146,23 +153,24 @@ class WGZ_Check_Conditions {
|
|
146 |
*
|
147 |
* @return string
|
148 |
*/
|
149 |
-
protected function get_current_url_path(
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
|
|
154 |
} else {
|
155 |
$out = $url[0];
|
156 |
}
|
157 |
|
158 |
-
return "/" === $out ? "/" : untrailingslashit(
|
159 |
}
|
160 |
|
161 |
-
$removeble_args = array_merge(
|
162 |
|
163 |
-
$url = remove_query_arg(
|
164 |
|
165 |
-
return untrailingslashit(
|
166 |
}
|
167 |
|
168 |
/**
|
@@ -175,8 +183,9 @@ class WGZ_Check_Conditions {
|
|
175 |
*
|
176 |
* @return bool
|
177 |
*/
|
178 |
-
public function apply_operator(
|
179 |
-
|
|
|
180 |
case 'equals':
|
181 |
return $first === $second;
|
182 |
case 'notequal':
|
@@ -188,9 +197,9 @@ class WGZ_Check_Conditions {
|
|
188 |
case 'younger':
|
189 |
return $first < $second;
|
190 |
case 'contains':
|
191 |
-
return strpos(
|
192 |
case 'notcontain':
|
193 |
-
return strpos(
|
194 |
case 'between':
|
195 |
return $first < $second && $second < $third;
|
196 |
|
@@ -207,8 +216,9 @@ class WGZ_Check_Conditions {
|
|
207 |
*
|
208 |
* @return integer
|
209 |
*/
|
210 |
-
protected function get_timestamp(
|
211 |
-
|
|
|
212 |
case 'seconds':
|
213 |
return $count;
|
214 |
case 'minutes':
|
@@ -236,9 +246,10 @@ class WGZ_Check_Conditions {
|
|
236 |
*
|
237 |
* @return integer
|
238 |
*/
|
239 |
-
public function get_date_timestamp(
|
240 |
-
|
241 |
-
|
|
|
242 |
} else {
|
243 |
return $value;
|
244 |
}
|
@@ -252,12 +263,13 @@ class WGZ_Check_Conditions {
|
|
252 |
*
|
253 |
* @return boolean
|
254 |
*/
|
255 |
-
protected function location_some_page(
|
256 |
-
|
|
|
257 |
// For frontend area
|
258 |
-
switch
|
259 |
case 'base_web': // Basic - Entire Website
|
260 |
-
$result = !
|
261 |
break;
|
262 |
case 'base_sing': // Basic - All Singulars
|
263 |
$result = is_singular();
|
@@ -285,35 +297,35 @@ class WGZ_Check_Conditions {
|
|
285 |
break;
|
286 |
case 'post_all': // Posts - All Posts
|
287 |
case 'page_all': // Pages - All Pages
|
288 |
-
$result
|
289 |
-
$post_id = (
|
290 |
|
291 |
-
if
|
292 |
$post_type = 'post_all' == $value ? 'post' : 'page';
|
293 |
-
$result
|
294 |
}
|
295 |
break;
|
296 |
case 'post_arch': // Posts - All Posts Archive
|
297 |
case 'page_arch': // Pages - All Pages Archive
|
298 |
$result = false;
|
299 |
-
if
|
300 |
$post_type = 'post_arch' == $value ? 'post' : 'page';
|
301 |
-
$result
|
302 |
}
|
303 |
break;
|
304 |
case 'post_cat': // Posts - All Categories Archive
|
305 |
case 'post_tag': // Posts - All Tags Archive
|
306 |
$result = false;
|
307 |
-
if
|
308 |
$taxonomy = 'post_tag' == $value ? 'post_tag' : 'category';
|
309 |
-
$obj
|
310 |
|
311 |
$current_taxonomy = '';
|
312 |
-
if
|
313 |
$current_taxonomy = $obj->taxonomy;
|
314 |
}
|
315 |
|
316 |
-
if
|
317 |
$result = true;
|
318 |
}
|
319 |
}
|
@@ -324,106 +336,106 @@ class WGZ_Check_Conditions {
|
|
324 |
}
|
325 |
} else {
|
326 |
// For admin area
|
327 |
-
switch
|
328 |
case 'all_admin_area':
|
329 |
$result = is_admin();
|
330 |
break;
|
331 |
case 'dashboard_home':
|
332 |
-
$result = $this->get_current_url_path(
|
333 |
break;
|
334 |
case 'dashboard_wordpress_updates':
|
335 |
-
$result = $this->get_current_url_path(
|
336 |
break;
|
337 |
case 'posts_all':
|
338 |
-
$result = $this->get_current_url_path(
|
339 |
break;
|
340 |
case 'posts_add_new':
|
341 |
-
$result = $this->get_current_url_path(
|
342 |
break;
|
343 |
case 'posts_taxonomies':
|
344 |
-
$result = $this->get_current_url_path(
|
345 |
break;
|
346 |
case 'media_library':
|
347 |
-
$result = $this->get_current_url_path(
|
348 |
break;
|
349 |
case 'media_library_add_new':
|
350 |
-
$result = $this->get_current_url_path(
|
351 |
break;
|
352 |
case 'appearance_themes':
|
353 |
-
$result = $this->get_current_url_path(
|
354 |
break;
|
355 |
case 'appearance_customize':
|
356 |
-
$result = $this->get_current_url_path(
|
357 |
break;
|
358 |
case 'appearance_widgets':
|
359 |
-
$result = $this->get_current_url_path(
|
360 |
break;
|
361 |
case 'appearance_menus':
|
362 |
-
$result = $this->get_current_url_path(
|
363 |
break;
|
364 |
case 'appearance_theme_editor':
|
365 |
-
$result = $this->get_current_url_path(
|
366 |
break;
|
367 |
case 'plugins_installed':
|
368 |
-
$result = $this->get_current_url_path(
|
369 |
break;
|
370 |
case 'plugins_add_new':
|
371 |
-
$result = $this->get_current_url_path(
|
372 |
break;
|
373 |
case 'plugins_editor':
|
374 |
-
$result = $this->get_current_url_path(
|
375 |
break;
|
376 |
case 'users_all':
|
377 |
-
$result = $this->get_current_url_path(
|
378 |
break;
|
379 |
case 'users_add_new':
|
380 |
-
$result = $this->get_current_url_path(
|
381 |
break;
|
382 |
case 'users_your_profile':
|
383 |
-
$result = $this->get_current_url_path(
|
384 |
break;
|
385 |
case 'tools_available':
|
386 |
-
$result = $this->get_current_url_path(
|
387 |
break;
|
388 |
case 'tools_import':
|
389 |
-
$result = $this->get_current_url_path(
|
390 |
break;
|
391 |
case 'tools_export':
|
392 |
-
$result = $this->get_current_url_path(
|
393 |
break;
|
394 |
case 'tools_site_health':
|
395 |
-
$result = $this->get_current_url_path(
|
396 |
break;
|
397 |
case 'tools_export_personal_data':
|
398 |
-
$result = $this->get_current_url_path(
|
399 |
break;
|
400 |
case 'tools_erase_personal_data':
|
401 |
-
$result = $this->get_current_url_path(
|
402 |
break;
|
403 |
case 'settings_general':
|
404 |
-
$result = $this->get_current_url_path(
|
405 |
break;
|
406 |
case 'settings_writing':
|
407 |
-
$result = $this->get_current_url_path(
|
408 |
break;
|
409 |
case 'settings_reading':
|
410 |
-
$result = $this->get_current_url_path(
|
411 |
break;
|
412 |
case 'settings_media':
|
413 |
-
$result = $this->get_current_url_path(
|
414 |
break;
|
415 |
case 'settings_permalinks':
|
416 |
-
$result = $this->get_current_url_path(
|
417 |
break;
|
418 |
case 'settings_privacy':
|
419 |
-
$result = $this->get_current_url_path(
|
420 |
break;
|
421 |
default:
|
422 |
$result = true;
|
423 |
}
|
424 |
}
|
425 |
|
426 |
-
return $this->apply_operator(
|
427 |
}
|
428 |
|
429 |
/**
|
@@ -432,17 +444,18 @@ class WGZ_Check_Conditions {
|
|
432 |
* Если url в условии и url текущей страницы совпадают,
|
433 |
* условие будет выполнено успешно.
|
434 |
*
|
|
|
|
|
435 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
436 |
* @since 2.0.0
|
437 |
*
|
438 |
-
* @param string $operator
|
439 |
-
* @param string $value
|
440 |
*/
|
441 |
-
protected function current_url(
|
442 |
-
|
|
|
443 |
$current_url = $this->get_current_url_path();
|
444 |
|
445 |
-
return $this->apply_operator(
|
446 |
}
|
447 |
|
448 |
/**
|
@@ -453,9 +466,10 @@ class WGZ_Check_Conditions {
|
|
453 |
*
|
454 |
* @return boolean
|
455 |
*/
|
456 |
-
protected function location_post_type(
|
457 |
-
|
458 |
-
|
|
|
459 |
}
|
460 |
|
461 |
return false;
|
@@ -464,23 +478,44 @@ class WGZ_Check_Conditions {
|
|
464 |
/**
|
465 |
* A taxonomy of the current page
|
466 |
*
|
467 |
-
* @since 2.2.8 The bug is fixed, the condition was not checked
|
468 |
-
* for tachonomies, only posts.
|
469 |
-
*
|
470 |
* @param $operator
|
471 |
* @param $value
|
472 |
*
|
473 |
* @return boolean
|
|
|
|
|
|
|
474 |
*/
|
475 |
-
protected function location_taxonomy(
|
|
|
476 |
$taxonomy = null;
|
477 |
|
478 |
-
if
|
479 |
$taxonomy = get_queried_object()->taxonomy;
|
480 |
}
|
481 |
|
482 |
-
return $this->apply_operator(
|
483 |
}
|
484 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
485 |
|
|
|
|
|
486 |
}
|
1 |
<?php
|
2 |
// Exit if accessed directly
|
3 |
+
if( !defined('ABSPATH') ) {
|
4 |
exit;
|
5 |
}
|
6 |
|
15 |
|
16 |
protected $condition;
|
17 |
|
18 |
+
public function __construct($condition)
|
19 |
+
{
|
20 |
+
if( empty($condition) ) {
|
21 |
$this->condition = [];
|
22 |
} else {
|
23 |
+
$condition = @json_decode(stripslashes($condition));
|
24 |
$this->condition = $condition;
|
25 |
}
|
26 |
}
|
28 |
/**
|
29 |
* Проверяем в правильном ли формате нам передано условие
|
30 |
*
|
|
|
|
|
31 |
* @param \stdClass $condition
|
32 |
*
|
33 |
* @return bool
|
34 |
+
* @since 2.2.0
|
35 |
+
*
|
36 |
*/
|
37 |
+
protected function validate_condition_schema($condition)
|
38 |
+
{
|
39 |
+
$isset_attrs = !empty($condition->param) && !empty($condition->operator) && !empty($condition->type) && isset($condition->value);
|
40 |
|
41 |
+
$allow_params = in_array($condition->param, [
|
42 |
'user-role',
|
43 |
'user-mobile',
|
44 |
'user-cookie-name',
|
45 |
'current-url',
|
46 |
+
'query-string',
|
47 |
'location-page',
|
48 |
'regular-expression',
|
49 |
'location-some-page',
|
50 |
'location-post-type',
|
51 |
'location-taxonomy'
|
52 |
+
]);
|
53 |
|
54 |
+
$allow_operators = in_array($condition->operator, [
|
55 |
'equals',
|
56 |
'notequal',
|
57 |
'less',
|
61 |
'contains',
|
62 |
'notcontain',
|
63 |
'between'
|
64 |
+
]);
|
65 |
|
66 |
+
$allow_types = in_array($condition->type, ['select', 'text', 'default', 'regexp', 'equals']);
|
67 |
|
68 |
return $isset_attrs && $allow_params && $allow_operators && $allow_types;
|
69 |
}
|
70 |
|
71 |
/**
|
|
|
|
|
72 |
* @return bool
|
73 |
+
* @since 2.0.0
|
74 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
75 |
*/
|
76 |
+
public function validate()
|
77 |
+
{
|
78 |
+
if( empty($this->condition) && !is_array($this->condition) ) {
|
79 |
return false;
|
80 |
}
|
81 |
|
82 |
$or = null;
|
83 |
+
foreach($this->condition as $group_OR) {
|
84 |
+
if( !empty($group_OR->conditions) && is_array($group_OR->conditions) ) {
|
85 |
$and = null;
|
86 |
+
foreach($group_OR->conditions as $condition) {
|
87 |
+
if( $this->validate_condition_schema($condition) ) {
|
88 |
+
$method_name = str_replace('-', '_', $condition->param);
|
89 |
+
if( is_null($and) ) {
|
90 |
+
$and = $this->call_method($method_name, $condition->operator, $condition->value);
|
91 |
} else {
|
92 |
+
$and = $and && $this->call_method($method_name, $condition->operator, $condition->value);
|
93 |
}
|
94 |
}
|
95 |
}
|
96 |
|
97 |
+
$or = is_null($or) ? $and : $or || $and;
|
98 |
}
|
99 |
}
|
100 |
|
101 |
+
return is_null($or) ? false : $or;
|
102 |
}
|
103 |
|
104 |
/**
|
110 |
*
|
111 |
* @return bool
|
112 |
*/
|
113 |
+
protected function call_method($method_name, $operator, $value)
|
114 |
+
{
|
115 |
+
if( method_exists($this, $method_name) ) {
|
116 |
+
return $this->$method_name($operator, $value);
|
117 |
} else {
|
118 |
+
return apply_filters('wam/conditions/call_method', false, $method_name, $operator, $value);
|
119 |
}
|
120 |
}
|
121 |
|
122 |
/**
|
|
|
|
|
|
|
123 |
* @param string $path
|
124 |
*
|
125 |
* @return string
|
126 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
127 |
+
* @since 2.0.0
|
128 |
+
*
|
129 |
*/
|
130 |
+
protected function get_admin_url_path($path)
|
131 |
+
{
|
132 |
+
return str_replace(site_url(), '', admin_url($path));
|
133 |
}
|
134 |
|
135 |
/**
|
137 |
*
|
138 |
* @return string
|
139 |
*/
|
140 |
+
protected function get_referer_url()
|
141 |
+
{
|
142 |
$out = "";
|
143 |
+
$url = explode('?', str_replace(site_url(), '', $_SERVER['HTTP_REFERER']), 2);
|
144 |
+
if( isset($url[0]) ) {
|
145 |
+
$out = trim($url[0], '/');
|
146 |
}
|
147 |
|
148 |
+
return $out ? urldecode($out) : '/';
|
149 |
}
|
150 |
|
151 |
/**
|
153 |
*
|
154 |
* @return string
|
155 |
*/
|
156 |
+
protected function get_current_url_path($clear_query = false)
|
157 |
+
{
|
158 |
+
if( !is_admin() && !$clear_query ) {
|
159 |
+
$url = explode('?', $_SERVER['REQUEST_URI'], 2);
|
160 |
+
if( strlen($url[0]) > 1 ) {
|
161 |
+
$out = rtrim($url[0], '/');
|
162 |
} else {
|
163 |
$out = $url[0];
|
164 |
}
|
165 |
|
166 |
+
return "/" === $out ? "/" : untrailingslashit($out);
|
167 |
}
|
168 |
|
169 |
+
$removeble_args = array_merge(['wbcr_assets_manager'], wp_removable_query_args());
|
170 |
|
171 |
+
$url = remove_query_arg($removeble_args, $_SERVER['REQUEST_URI']);
|
172 |
|
173 |
+
return untrailingslashit($url);
|
174 |
}
|
175 |
|
176 |
/**
|
183 |
*
|
184 |
* @return bool
|
185 |
*/
|
186 |
+
public function apply_operator($operator, $first, $second, $third = false)
|
187 |
+
{
|
188 |
+
switch( $operator ) {
|
189 |
case 'equals':
|
190 |
return $first === $second;
|
191 |
case 'notequal':
|
197 |
case 'younger':
|
198 |
return $first < $second;
|
199 |
case 'contains':
|
200 |
+
return strpos($first, $second) !== false;
|
201 |
case 'notcontain':
|
202 |
+
return strpos($first, $second) === false;
|
203 |
case 'between':
|
204 |
return $first < $second && $second < $third;
|
205 |
|
216 |
*
|
217 |
* @return integer
|
218 |
*/
|
219 |
+
protected function get_timestamp($units, $count)
|
220 |
+
{
|
221 |
+
switch( $units ) {
|
222 |
case 'seconds':
|
223 |
return $count;
|
224 |
case 'minutes':
|
246 |
*
|
247 |
* @return integer
|
248 |
*/
|
249 |
+
public function get_date_timestamp($value)
|
250 |
+
{
|
251 |
+
if( is_object($value) ) {
|
252 |
+
return (current_time('timestamp') - $this->get_timestamp($value->units, $value->unitsCount)) * 1000;
|
253 |
} else {
|
254 |
return $value;
|
255 |
}
|
263 |
*
|
264 |
* @return boolean
|
265 |
*/
|
266 |
+
protected function location_some_page($operator, $value)
|
267 |
+
{
|
268 |
+
if( !is_admin() ) {
|
269 |
// For frontend area
|
270 |
+
switch( $value ) {
|
271 |
case 'base_web': // Basic - Entire Website
|
272 |
+
$result = !is_admin();
|
273 |
break;
|
274 |
case 'base_sing': // Basic - All Singulars
|
275 |
$result = is_singular();
|
297 |
break;
|
298 |
case 'post_all': // Posts - All Posts
|
299 |
case 'page_all': // Pages - All Pages
|
300 |
+
$result = false;
|
301 |
+
$post_id = (!is_404() && !is_search() && !is_archive() && !is_home()) ? get_the_ID() : false;
|
302 |
|
303 |
+
if( false !== $post_id ) {
|
304 |
$post_type = 'post_all' == $value ? 'post' : 'page';
|
305 |
+
$result = $post_type == get_post_type($post_id);
|
306 |
}
|
307 |
break;
|
308 |
case 'post_arch': // Posts - All Posts Archive
|
309 |
case 'page_arch': // Pages - All Pages Archive
|
310 |
$result = false;
|
311 |
+
if( is_archive() ) {
|
312 |
$post_type = 'post_arch' == $value ? 'post' : 'page';
|
313 |
+
$result = $post_type == get_post_type();
|
314 |
}
|
315 |
break;
|
316 |
case 'post_cat': // Posts - All Categories Archive
|
317 |
case 'post_tag': // Posts - All Tags Archive
|
318 |
$result = false;
|
319 |
+
if( is_archive() && 'post' == get_post_type() ) {
|
320 |
$taxonomy = 'post_tag' == $value ? 'post_tag' : 'category';
|
321 |
+
$obj = get_queried_object();
|
322 |
|
323 |
$current_taxonomy = '';
|
324 |
+
if( '' !== $obj && null !== $obj ) {
|
325 |
$current_taxonomy = $obj->taxonomy;
|
326 |
}
|
327 |
|
328 |
+
if( $current_taxonomy == $taxonomy ) {
|
329 |
$result = true;
|
330 |
}
|
331 |
}
|
336 |
}
|
337 |
} else {
|
338 |
// For admin area
|
339 |
+
switch( $value ) {
|
340 |
case 'all_admin_area':
|
341 |
$result = is_admin();
|
342 |
break;
|
343 |
case 'dashboard_home':
|
344 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('index.php');
|
345 |
break;
|
346 |
case 'dashboard_wordpress_updates':
|
347 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('update-core.php');
|
348 |
break;
|
349 |
case 'posts_all':
|
350 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('edit.php');
|
351 |
break;
|
352 |
case 'posts_add_new':
|
353 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('post-new.php');
|
354 |
break;
|
355 |
case 'posts_taxonomies':
|
356 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('edit-tags.php');
|
357 |
break;
|
358 |
case 'media_library':
|
359 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('upload.php');
|
360 |
break;
|
361 |
case 'media_library_add_new':
|
362 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('media-new.php');
|
363 |
break;
|
364 |
case 'appearance_themes':
|
365 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('themes.php');
|
366 |
break;
|
367 |
case 'appearance_customize':
|
368 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('customize.php');
|
369 |
break;
|
370 |
case 'appearance_widgets':
|
371 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('widgets.php');
|
372 |
break;
|
373 |
case 'appearance_menus':
|
374 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('nav-menus.php');
|
375 |
break;
|
376 |
case 'appearance_theme_editor':
|
377 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('theme-editor.php');
|
378 |
break;
|
379 |
case 'plugins_installed':
|
380 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('plugins.php');
|
381 |
break;
|
382 |
case 'plugins_add_new':
|
383 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('plugin-install.php');
|
384 |
break;
|
385 |
case 'plugins_editor':
|
386 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('plugin-editor.php');
|
387 |
break;
|
388 |
case 'users_all':
|
389 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('users.php');
|
390 |
break;
|
391 |
case 'users_add_new':
|
392 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('user-new.php');
|
393 |
break;
|
394 |
case 'users_your_profile':
|
395 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('profile.php');
|
396 |
break;
|
397 |
case 'tools_available':
|
398 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('tools.php');
|
399 |
break;
|
400 |
case 'tools_import':
|
401 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('import.php');
|
402 |
break;
|
403 |
case 'tools_export':
|
404 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('export.php');
|
405 |
break;
|
406 |
case 'tools_site_health':
|
407 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('site-health.php');
|
408 |
break;
|
409 |
case 'tools_export_personal_data':
|
410 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('tools.php');
|
411 |
break;
|
412 |
case 'tools_erase_personal_data':
|
413 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('tools.php');
|
414 |
break;
|
415 |
case 'settings_general':
|
416 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('options-general.php');
|
417 |
break;
|
418 |
case 'settings_writing':
|
419 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('options-writing.php');
|
420 |
break;
|
421 |
case 'settings_reading':
|
422 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('options-reading.php');
|
423 |
break;
|
424 |
case 'settings_media':
|
425 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('options-media.php');
|
426 |
break;
|
427 |
case 'settings_permalinks':
|
428 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('options-permalink.php');
|
429 |
break;
|
430 |
case 'settings_privacy':
|
431 |
+
$result = $this->get_current_url_path(true) === $this->get_admin_url_path('privacy.php');
|
432 |
break;
|
433 |
default:
|
434 |
$result = true;
|
435 |
}
|
436 |
}
|
437 |
|
438 |
+
return $this->apply_operator($operator, $result, true);
|
439 |
}
|
440 |
|
441 |
/**
|
444 |
* Если url в условии и url текущей страницы совпадают,
|
445 |
* условие будет выполнено успешно.
|
446 |
*
|
447 |
+
* @param string $operator
|
448 |
+
* @param string $value
|
449 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
450 |
* @since 2.0.0
|
451 |
*
|
|
|
|
|
452 |
*/
|
453 |
+
protected function current_url($operator, $value)
|
454 |
+
{
|
455 |
+
$value = ("/" === $value) ? "/" : untrailingslashit($value);
|
456 |
$current_url = $this->get_current_url_path();
|
457 |
|
458 |
+
return $this->apply_operator($operator, $value, $current_url);
|
459 |
}
|
460 |
|
461 |
/**
|
466 |
*
|
467 |
* @return boolean
|
468 |
*/
|
469 |
+
protected function location_post_type($operator, $value)
|
470 |
+
{
|
471 |
+
if( is_singular() ) {
|
472 |
+
return $this->apply_operator($operator, $value, get_post_type());
|
473 |
}
|
474 |
|
475 |
return false;
|
478 |
/**
|
479 |
* A taxonomy of the current page
|
480 |
*
|
|
|
|
|
|
|
481 |
* @param $operator
|
482 |
* @param $value
|
483 |
*
|
484 |
* @return boolean
|
485 |
+
* @since 2.2.8 The bug is fixed, the condition was not checked
|
486 |
+
* for tachonomies, only posts.
|
487 |
+
*
|
488 |
*/
|
489 |
+
protected function location_taxonomy($operator, $value)
|
490 |
+
{
|
491 |
$taxonomy = null;
|
492 |
|
493 |
+
if( is_tax() || is_tag() || is_category() ) {
|
494 |
$taxonomy = get_queried_object()->taxonomy;
|
495 |
}
|
496 |
|
497 |
+
return $this->apply_operator($operator, $taxonomy, $value);
|
498 |
}
|
499 |
|
500 |
+
/**
|
501 |
+
* Checking for the existence of a variable in a query string
|
502 |
+
*
|
503 |
+
* @param $operator
|
504 |
+
* @param $value
|
505 |
+
*
|
506 |
+
* @return boolean
|
507 |
+
* @since 2.2.8 The bug is fixed, the condition was not checked
|
508 |
+
* for tachonomies, only posts.
|
509 |
+
*
|
510 |
+
*/
|
511 |
+
protected function query_string($operator, $value)
|
512 |
+
{
|
513 |
+
if( is_object($value) ) {
|
514 |
+
if( !empty($value->var_name) && isset($_GET[$value->var_name]) ) {
|
515 |
+
return $this->apply_operator($operator, $_GET[$value->var_name], $value->var_value);
|
516 |
+
}
|
517 |
+
}
|
518 |
|
519 |
+
return false;
|
520 |
+
}
|
521 |
}
|
components/assets-manager/includes/classes/class-views.php
CHANGED
@@ -63,11 +63,11 @@ class WGZ_Views {
|
|
63 |
*
|
64 |
* @param string $template The template name.
|
65 |
* @param mixed $data Some data to pass to the template.
|
66 |
-
* @param
|
67 |
*
|
68 |
* @return bool|string The page contents. False if the template doesn't exist.
|
69 |
*/
|
70 |
-
public function get_template( $template, $data = [],
|
71 |
$template = str_replace( '_', '-', $template );
|
72 |
$path = $this->plugin_dir . '/views/' . $template . '.php';
|
73 |
|
@@ -92,9 +92,9 @@ class WGZ_Views {
|
|
92 |
*
|
93 |
* @param string $template The template name.
|
94 |
* @param mixed $data Some data to pass to the template.
|
95 |
-
* @param
|
96 |
*/
|
97 |
-
public function print_template( $template, $data = [],
|
98 |
echo $this->get_template( $template, $data, $page );
|
99 |
}
|
100 |
}
|
63 |
*
|
64 |
* @param string $template The template name.
|
65 |
* @param mixed $data Some data to pass to the template.
|
66 |
+
* @param Wbcr_FactoryClearfy237_PageBase $page
|
67 |
*
|
68 |
* @return bool|string The page contents. False if the template doesn't exist.
|
69 |
*/
|
70 |
+
public function get_template( $template, $data = [], Wbcr_FactoryClearfy237_PageBase $page = null ) {
|
71 |
$template = str_replace( '_', '-', $template );
|
72 |
$path = $this->plugin_dir . '/views/' . $template . '.php';
|
73 |
|
92 |
*
|
93 |
* @param string $template The template name.
|
94 |
* @param mixed $data Some data to pass to the template.
|
95 |
+
* @param Wbcr_FactoryClearfy237_PageBase $page
|
96 |
*/
|
97 |
+
public function print_template( $template, $data = [], Wbcr_FactoryClearfy237_PageBase $page = null ) {
|
98 |
echo $this->get_template( $template, $data, $page );
|
99 |
}
|
100 |
}
|
components/assets-manager/migrations/010100.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
-
class WGZUpdate010100 extends
|
8 |
|
9 |
public function install()
|
10 |
{
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
+
class WGZUpdate010100 extends Wbcr_Factory446_Update {
|
8 |
|
9 |
public function install()
|
10 |
{
|
components/assets-manager/migrations/010108.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
-
class WGZUpdate010108 extends
|
8 |
|
9 |
/**
|
10 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
+
class WGZUpdate010108 extends Wbcr_Factory446_Update {
|
8 |
|
9 |
/**
|
10 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
components/assets-manager/migrations/020005.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
-
class WGZUpdate020005 extends
|
8 |
|
9 |
public function install() {
|
10 |
$settings = get_option( $this->plugin->getPrefix() . 'assets_states', [] );
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
+
class WGZUpdate020005 extends Wbcr_Factory446_Update {
|
8 |
|
9 |
public function install() {
|
10 |
$settings = get_option( $this->plugin->getPrefix() . 'assets_states', [] );
|
components/assets-manager/mu-plugins/assets-manager.php
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
/**
|
3 |
* Webcraftic AM plugin load filter
|
4 |
* Dynamically activated only plugins that you have selected in each page. [Note] Webcraftic AM has been automatically installed/deleted by Activate/Deactivate of "load filter plugin".
|
5 |
-
* Version: 1.
|
6 |
-
* Framework Version:
|
7 |
*/
|
8 |
|
9 |
// todo: проверить, как работает кеширование
|
@@ -11,6 +11,58 @@
|
|
11 |
|
12 |
defined('ABSPATH') || exit;
|
13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
if( defined('WP_SETUP_CONFIG') || defined('WP_INSTALLING') || isset($_GET['wbcr_assets_manager']) ) {
|
15 |
return;
|
16 |
}
|
2 |
/**
|
3 |
* Webcraftic AM plugin load filter
|
4 |
* Dynamically activated only plugins that you have selected in each page. [Note] Webcraftic AM has been automatically installed/deleted by Activate/Deactivate of "load filter plugin".
|
5 |
+
* Version: 1.1.2
|
6 |
+
* Framework Version: FACTORY_446_VERSION
|
7 |
*/
|
8 |
|
9 |
// todo: проверить, как работает кеширование
|
11 |
|
12 |
defined('ABSPATH') || exit;
|
13 |
|
14 |
+
/**
|
15 |
+
* Stop optimizing scripts and caching the asset manager page.
|
16 |
+
*
|
17 |
+
* For some types of pages it is imperative to not be cached. Think of an e-commerce scenario:
|
18 |
+
* when a customer enters checkout, they wouldn’t want to see a cached page with some previous
|
19 |
+
* customer’s payment data.
|
20 |
+
*
|
21 |
+
* Elaborate plugins like WooCommerce (and many others) use the DONOTCACHEPAGE constant to let
|
22 |
+
* caching plugins know about certain pages or endpoints that should not be cached in any case.
|
23 |
+
* Accordingly, all popular caching plugins, including WP Rocket, support the constant and would
|
24 |
+
* not cache a request for which DONOTCACHEPAGE is defined as true.
|
25 |
+
*/
|
26 |
+
if( isset($_GET['wbcr_assets_manager']) ) {
|
27 |
+
// Disable Query monitor plugin on the assets manager pages to avoid conflicts.
|
28 |
+
if( !defined('QM_DISABLED') ) {
|
29 |
+
define('QM_DISABLED', true);
|
30 |
+
}
|
31 |
+
|
32 |
+
// Disable Cache Plugins
|
33 |
+
if( !defined('DONOTCACHEPAGE') ) {
|
34 |
+
define('DONOTCACHEPAGE', true);
|
35 |
+
}
|
36 |
+
|
37 |
+
if( !defined('DONOTCACHCEOBJECT') ) {
|
38 |
+
define('DONOTCACHCEOBJECT', true);
|
39 |
+
}
|
40 |
+
|
41 |
+
if( !defined('DONOTMINIFY') ) {
|
42 |
+
define('DONOTMINIFY', true);
|
43 |
+
}
|
44 |
+
|
45 |
+
if( !defined('DONOTROCKETOPTIMIZE') ) {
|
46 |
+
define('DONOTROCKETOPTIMIZE', true);
|
47 |
+
}
|
48 |
+
|
49 |
+
if( !defined('DONOTMINIFYJS') ) {
|
50 |
+
define('DONOTMINIFYJS', true);
|
51 |
+
}
|
52 |
+
|
53 |
+
if( !defined('DONOTASYNCCSS') ) {
|
54 |
+
define('DONOTASYNCCSS', true);
|
55 |
+
}
|
56 |
+
|
57 |
+
if( !defined('DONOTMINIFYCSS') ) {
|
58 |
+
define('DONOTMINIFYCSS', true);
|
59 |
+
}
|
60 |
+
|
61 |
+
if( !defined('WHM_DO_NOT_HIDE_WP') ) {
|
62 |
+
define('WHM_DO_NOT_HIDE_WP', true);
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
if( defined('WP_SETUP_CONFIG') || defined('WP_INSTALLING') || isset($_GET['wbcr_assets_manager']) ) {
|
67 |
return;
|
68 |
}
|
components/assets-manager/views/conditions-logic-editor-template.php
CHANGED
@@ -1,77 +1,78 @@
|
|
1 |
<?php
|
2 |
-
defined(
|
3 |
|
4 |
/**
|
5 |
-
* @var array
|
6 |
* @var WGZ_Views $this
|
7 |
*/
|
8 |
?>
|
9 |
<div class="wam-cleditor__empty wam-cleditor">
|
10 |
-
|
11 |
-
|
12 |
-
<?php _e(
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
<span class="wam-cleditor__first-group-title">
|
22 |
-
<?php _e(
|
23 |
</span>
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
<?php _e(
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
<?php _e(
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
<select class="wam-cleditor__param-select">
|
44 |
-
<?php if
|
45 |
-
<?php foreach
|
46 |
-
|
47 |
-
<?php foreach
|
48 |
<?php
|
49 |
-
$option_attrs
|
50 |
-
$option_attrs[] = 'data-type="' . esc_attr(
|
51 |
|
52 |
-
if
|
53 |
-
$option_attrs[] = 'data-default-value="' . esc_attr(
|
54 |
}
|
55 |
|
56 |
-
if
|
57 |
-
$
|
|
|
58 |
}
|
59 |
|
60 |
-
if
|
61 |
-
$option_attrs[] = 'data-params="' . esc_attr(
|
62 |
}
|
63 |
|
64 |
-
if
|
65 |
-
$option_attrs[] = 'data-only-equals="' . intval(
|
66 |
}
|
67 |
-
if
|
68 |
-
$option_attrs[] = 'data-hint="' . esc_attr(
|
69 |
}
|
70 |
|
71 |
-
$option_disabled = isset(
|
72 |
|
73 |
?>
|
74 |
-
|
75 |
<?php echo $param['title'] ?>
|
76 |
</option>
|
77 |
<?php } ?>
|
@@ -84,28 +85,28 @@ defined( 'ABSPATH' ) || die( 'Cheatin’ uh?' );
|
|
84 |
<span class="wam-cleditor__hint-content"></span>
|
85 |
</i>
|
86 |
</span>
|
87 |
-
|
88 |
<select class="wam-cleditor__operator-select">
|
89 |
-
<option value="equals"><?php _e(
|
90 |
-
<option value="notequal"><?php _e(
|
91 |
-
<option value="greater"><?php _e(
|
92 |
-
<option value="less"><?php _e(
|
93 |
-
<option value="older"><?php _e(
|
94 |
-
<option value="younger"><?php _e(
|
95 |
-
<option value="contains"><?php _e(
|
96 |
-
<option value="notcontain"><?php _e(
|
97 |
-
<option value="between"><?php _e(
|
98 |
</select>
|
99 |
</span>
|
100 |
-
|
101 |
-
|
102 |
-
<a href="#" class="wam-button wam-button--danger button-sm js-wam-cleditor__condition-remove"><?php _e(
|
103 |
-
<a href="#" class="wam-button wam-button--yellow button-sm js-wam-cleditor__condition-add-and"><?php _e(
|
104 |
</span>
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
<?php _e(
|
109 |
-
|
110 |
-
|
111 |
</div>
|
1 |
<?php
|
2 |
+
defined('ABSPATH') || die('Cheatin’ uh?');
|
3 |
|
4 |
/**
|
5 |
+
* @var array $data
|
6 |
* @var WGZ_Views $this
|
7 |
*/
|
8 |
?>
|
9 |
<div class="wam-cleditor__empty wam-cleditor">
|
10 |
+
<div class="wam-cleditor__wrap">
|
11 |
+
<div class="wam-cleditor__when-empty">
|
12 |
+
<?php _e('No filters specified.', 'gonzales') ?>
|
13 |
+
<a href="#" class="js-wam-cleditor__add-group"><?php _e('Click here', 'gonzales') ?></a> <?php _e('to add one.', 'gonzales') ?>
|
14 |
+
</div>
|
15 |
+
<div class="wam-cleditor__groups"></div>
|
16 |
+
</div>
|
17 |
+
<div class="wam-cleditor__group">
|
18 |
+
<div class="wam-cleditor__point"></div>
|
19 |
+
<div class="wam-cleditor__head">
|
20 |
+
<div class="wam-cleditor__head-left">
|
21 |
<span class="wam-cleditor__first-group-title">
|
22 |
+
<?php _e('Disable If', 'gonzales') ?>
|
23 |
</span>
|
24 |
+
<span class="wam-cleditor__group-type"><?php _e('OR', 'gonzales') ?></span>
|
25 |
+
</div>
|
26 |
+
<div class="wam-cleditor__head-right">
|
27 |
+
<button type="button" class="wam-button wam-button--small wam-button--danger js-wam-cleditor__remove-group">
|
28 |
+
<?php _e('Delete', 'gonzales'); ?>
|
29 |
+
</button>
|
30 |
+
</div>
|
31 |
+
</div>
|
32 |
+
<div class="wam-cleditor__box">
|
33 |
+
<div class="wam-cleditor__when-empty">
|
34 |
+
<?php _e('No filters specified.', 'gonzales') ?>
|
35 |
+
<a href="#" class="js-wam-cleditor__add-condition"><?php _e('Click here', 'gonzales') ?></a> <?php _e('to add one.', 'gonzales') ?>
|
36 |
+
</div>
|
37 |
+
<div class="wam-cleditor__conditions"></div>
|
38 |
+
</div>
|
39 |
+
</div>
|
40 |
+
<div class="wam-cleditor__condition">
|
41 |
+
<div class="wam-cleditor__operator-and"><span><?php _e('and', 'gonzales') ?></span></div>
|
42 |
+
<span class="wam-cleditor__params">
|
43 |
<select class="wam-cleditor__param-select">
|
44 |
+
<?php if( !empty($data['conditions_logic_params']) ): ?>
|
45 |
+
<?php foreach((array)$data['conditions_logic_params'] as $filter_param) { ?>
|
46 |
+
<optgroup label="<?php echo $filter_param['title'] ?>">
|
47 |
+
<?php foreach((array)$filter_param['items'] as $param) { ?>
|
48 |
<?php
|
49 |
+
$option_attrs = [];
|
50 |
+
$option_attrs[] = 'data-type="' . esc_attr($param['type']) . '"';
|
51 |
|
52 |
+
if( isset($param['default_value']) ) {
|
53 |
+
$option_attrs[] = 'data-default-value="' . esc_attr($param['default_value']) . '"';
|
54 |
}
|
55 |
|
56 |
+
if( isset($param['placeholder']) ) {
|
57 |
+
$placeholder = is_array($param['placeholder']) ? @json_encode($param['placeholder'], JSON_UNESCAPED_UNICODE, JSON_HEX_QUOT) : $param['placeholder'];
|
58 |
+
$option_attrs[] = 'data-placeholder="' . esc_attr($placeholder) . '"';
|
59 |
}
|
60 |
|
61 |
+
if( isset($param['params']) ) {
|
62 |
+
$option_attrs[] = 'data-params="' . esc_attr(@json_encode($param['params'], JSON_UNESCAPED_UNICODE, JSON_HEX_QUOT)) . '"';
|
63 |
}
|
64 |
|
65 |
+
if( isset($param['only_equals']) ) {
|
66 |
+
$option_attrs[] = 'data-only-equals="' . intval($param['only_equals']) . '"';
|
67 |
}
|
68 |
+
if( isset($param['description']) ) {
|
69 |
+
$option_attrs[] = 'data-hint="' . esc_attr($param['description']) . '"';
|
70 |
}
|
71 |
|
72 |
+
$option_disabled = isset($param['disabled']) ? $param['disabled'] : false;
|
73 |
|
74 |
?>
|
75 |
+
<option<?php echo ' ' . implode(' ', $option_attrs) ?> value="<?php echo esc_attr($param['id']) ?>"<?php disabled($option_disabled) ?>>
|
76 |
<?php echo $param['title'] ?>
|
77 |
</option>
|
78 |
<?php } ?>
|
85 |
<span class="wam-cleditor__hint-content"></span>
|
86 |
</i>
|
87 |
</span>
|
88 |
+
<span class="wam-cleditor__condition-operators">
|
89 |
<select class="wam-cleditor__operator-select">
|
90 |
+
<option value="equals"><?php _e('Equals', 'gonzales') ?></option>
|
91 |
+
<option value="notequal"><?php _e('Doesn\'t Equal', 'gonzales') ?></option>
|
92 |
+
<option value="greater"><?php _e('Greater Than', 'gonzales') ?></option>
|
93 |
+
<option value="less"><?php _e('Less Than', 'gonzales') ?></option>
|
94 |
+
<option value="older"><?php _e('Older Than', 'gonzales') ?></option>
|
95 |
+
<option value="younger"><?php _e('Younger Than', 'gonzales') ?></option>
|
96 |
+
<option value="contains"><?php _e('Contains', 'gonzales') ?></option>
|
97 |
+
<option value="notcontain"><?php _e('Doesn\'t Сontain', 'gonzales') ?></option>
|
98 |
+
<option value="between"><?php _e('Between', 'gonzales') ?></option>
|
99 |
</select>
|
100 |
</span>
|
101 |
+
<span class="wam-cleditor__condition-value"></span>
|
102 |
+
<span class="wam-cleditor__condition-actions">
|
103 |
+
<a href="#" class="wam-button wam-button--danger button-sm js-wam-cleditor__condition-remove"><?php _e('X', 'gonzales') ?></a>
|
104 |
+
<a href="#" class="wam-button wam-button--yellow button-sm js-wam-cleditor__condition-add-and"><?php _e('AND', 'gonzales') ?></a>
|
105 |
</span>
|
106 |
+
</div>
|
107 |
+
<div class="wam-cleditor__buttons-group">
|
108 |
+
<button type="button" class="wam-button wam-button--default wam-cleditor__button-left js-wam-cleditor__add-group">
|
109 |
+
<?php _e('Add new group', 'gonzales') ?>
|
110 |
+
</button>
|
111 |
+
</div>
|
112 |
</div>
|
components/comments-plus/admin/boot.php
CHANGED
@@ -101,7 +101,7 @@ if ( ! defined( 'LOADING_COMMENTS_PLUS_AS_ADDON' ) ) {
|
|
101 |
return $page_url;
|
102 |
}
|
103 |
|
104 |
-
add_filter( '
|
105 |
|
106 |
/**
|
107 |
* Удаляем лишние виджеты из правого сайдбара в интерфейсе плагина
|
101 |
return $page_url;
|
102 |
}
|
103 |
|
104 |
+
add_filter( 'wbcr_factory_pages_445_imppage_rating_widget_url', 'wbcr_cmp_rating_widget_url', 10, 2 );
|
105 |
|
106 |
/**
|
107 |
* Удаляем лишние виджеты из правого сайдбара в интерфейсе плагина
|
components/comments-plus/admin/pages/class-page-comments.php
CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
*
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
-
class WbcrCmp_CommentsPage extends
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
@@ -52,9 +52,9 @@ class WbcrCmp_CommentsPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
52 |
*
|
53 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
54 |
*
|
55 |
-
* @param \
|
56 |
*/
|
57 |
-
public function __construct(
|
58 |
$this->menu_title = __( 'Disable comments', 'comments-plus' );
|
59 |
$this->page_menu_short_description = __( 'Manage site comments', 'comments-plus' );
|
60 |
|
16 |
*
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
+
class WbcrCmp_CommentsPage extends Wbcr_FactoryClearfy237_PageBase {
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
52 |
*
|
53 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
54 |
*
|
55 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
56 |
*/
|
57 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
58 |
$this->menu_title = __( 'Disable comments', 'comments-plus' );
|
59 |
$this->page_menu_short_description = __( 'Manage site comments', 'comments-plus' );
|
60 |
|
components/comments-plus/admin/pages/class-page-delete-comments.php
CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
*
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
-
class WbcrCmp_DeleteCommentsPage extends
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
@@ -66,9 +66,9 @@ class WbcrCmp_DeleteCommentsPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
66 |
*
|
67 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
68 |
*
|
69 |
-
* @param \
|
70 |
*/
|
71 |
-
public function __construct(
|
72 |
$this->menu_title = __( 'Comments cleaner', 'comments-plus' );
|
73 |
|
74 |
parent::__construct( $plugin );
|
@@ -78,10 +78,10 @@ class WbcrCmp_DeleteCommentsPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
78 |
* {@inheritDoc}
|
79 |
*
|
80 |
* @param $notices
|
81 |
-
* @param
|
82 |
*
|
83 |
* @return array
|
84 |
-
* @see libs\factory\pages\themplates\
|
85 |
*/
|
86 |
public function getActionNotices( $notices ) {
|
87 |
|
@@ -200,7 +200,7 @@ class WbcrCmp_DeleteCommentsPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
200 |
/**
|
201 |
* Prints the content of the page
|
202 |
*
|
203 |
-
* @see libs\factory\pages\themplates\
|
204 |
*/
|
205 |
public function showPageContent() {
|
206 |
$stats = $this->getStats();
|
16 |
*
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
+
class WbcrCmp_DeleteCommentsPage extends Wbcr_FactoryClearfy237_PageBase {
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
66 |
*
|
67 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
68 |
*
|
69 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
70 |
*/
|
71 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
72 |
$this->menu_title = __( 'Comments cleaner', 'comments-plus' );
|
73 |
|
74 |
parent::__construct( $plugin );
|
78 |
* {@inheritDoc}
|
79 |
*
|
80 |
* @param $notices
|
81 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
82 |
*
|
83 |
* @return array
|
84 |
+
* @see libs\factory\pages\themplates\FactoryPages445_ImpressiveThemplate
|
85 |
*/
|
86 |
public function getActionNotices( $notices ) {
|
87 |
|
200 |
/**
|
201 |
* Prints the content of the page
|
202 |
*
|
203 |
+
* @see libs\factory\pages\themplates\FactoryPages445_ImpressiveThemplate
|
204 |
*/
|
205 |
public function showPageContent() {
|
206 |
$stats = $this->getStats();
|
components/comments-plus/admin/pages/class-page-more-features.php
CHANGED
@@ -19,6 +19,6 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
19 |
*
|
20 |
* @copyright (c) 2018 Webraftic Ltd
|
21 |
*/
|
22 |
-
class WbcrCmp_MoreFeaturesPage extends
|
23 |
|
24 |
}
|
19 |
*
|
20 |
* @copyright (c) 2018 Webraftic Ltd
|
21 |
*/
|
22 |
+
class WbcrCmp_MoreFeaturesPage extends Wbcr_FactoryClearfy237_MoreFeaturesPage {
|
23 |
|
24 |
}
|
components/comments-plus/comments-plus.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
* Text Domain: comments-plus
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
-
* Framework Version:
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
@@ -68,15 +68,15 @@ $wcm_plugin_info = array(
|
|
68 |
|
69 |
// FRAMEWORK MODULES
|
70 |
'load_factory_modules' => array(
|
71 |
-
array('libs/factory/bootstrap', '
|
72 |
-
array('libs/factory/forms', '
|
73 |
-
array('libs/factory/pages', '
|
74 |
-
array('libs/factory/clearfy', '
|
75 |
-
array('libs/factory/adverts', '
|
76 |
)
|
77 |
);
|
78 |
|
79 |
-
$wcm_compatibility = new
|
80 |
'plugin_already_activate' => defined('WCM_PLUGIN_ACTIVE'),
|
81 |
'required_php_version' => '5.4',
|
82 |
'required_wp_version' => '4.2.0',
|
8 |
* Text Domain: comments-plus
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
+
* Framework Version: FACTORY_446_VERSION
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
68 |
|
69 |
// FRAMEWORK MODULES
|
70 |
'load_factory_modules' => array(
|
71 |
+
array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
|
72 |
+
array('libs/factory/forms', 'factory_forms_443', 'admin'),
|
73 |
+
array('libs/factory/pages', 'factory_pages_445', 'admin'),
|
74 |
+
array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
|
75 |
+
array('libs/factory/adverts', 'factory_adverts_124', 'admin')
|
76 |
)
|
77 |
);
|
78 |
|
79 |
+
$wcm_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($wcm_plugin_info, array(
|
80 |
'plugin_already_activate' => defined('WCM_PLUGIN_ACTIVE'),
|
81 |
'required_php_version' => '5.4',
|
82 |
'required_wp_version' => '4.2.0',
|
components/comments-plus/includes/class-plugin.php
CHANGED
@@ -10,11 +10,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
10 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
11 |
* @copyright (c) 19.02.2018, Webcraftic
|
12 |
*/
|
13 |
-
class WCM_Plugin extends
|
14 |
|
15 |
/**
|
16 |
* @see self::app()
|
17 |
-
* @var
|
18 |
*/
|
19 |
private static $app;
|
20 |
|
@@ -59,7 +59,7 @@ class WCM_Plugin extends Wbcr_Factory445_Plugin {
|
|
59 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
60 |
* классам.
|
61 |
*
|
62 |
-
* @return \
|
63 |
*/
|
64 |
public static function app() {
|
65 |
return self::$app;
|
10 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
11 |
* @copyright (c) 19.02.2018, Webcraftic
|
12 |
*/
|
13 |
+
class WCM_Plugin extends Wbcr_Factory446_Plugin {
|
14 |
|
15 |
/**
|
16 |
* @see self::app()
|
17 |
+
* @var Wbcr_Factory446_Plugin
|
18 |
*/
|
19 |
private static $app;
|
20 |
|
59 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
60 |
* классам.
|
61 |
*
|
62 |
+
* @return \Wbcr_Factory446_Plugin|\WCM_Plugin
|
63 |
*/
|
64 |
public static function app() {
|
65 |
return self::$app;
|
components/comments-plus/includes/classes/class-configurate-comments.php
CHANGED
@@ -12,14 +12,14 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
*
|
13 |
* @copyright (c) 2017 Webraftic Ltd
|
14 |
*/
|
15 |
-
class WbcrCmp_ConfigComments extends
|
16 |
|
17 |
private $modified_types = [];
|
18 |
|
19 |
/**
|
20 |
-
* @param
|
21 |
*/
|
22 |
-
public function __construct(
|
23 |
parent::__construct( $plugin );
|
24 |
$this->plugin = $plugin;
|
25 |
}
|
12 |
*
|
13 |
* @copyright (c) 2017 Webraftic Ltd
|
14 |
*/
|
15 |
+
class WbcrCmp_ConfigComments extends Wbcr_FactoryClearfy237_Configurate {
|
16 |
|
17 |
private $modified_types = [];
|
18 |
|
19 |
/**
|
20 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
21 |
*/
|
22 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
23 |
parent::__construct( $plugin );
|
24 |
$this->plugin = $plugin;
|
25 |
}
|
components/cyrlitera/admin/activation.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
*
|
6 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
7 |
* @copyright (c) 09.03.2018, Webcraftic
|
8 |
-
* @see
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
|
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
class WCTR_Activation extends
|
18 |
|
19 |
/**
|
20 |
* Runs activation actions.
|
5 |
*
|
6 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
7 |
* @copyright (c) 09.03.2018, Webcraftic
|
8 |
+
* @see Wbcr_Factory446_Activator
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
class WCTR_Activation extends Wbcr_Factory446_Activator {
|
18 |
|
19 |
/**
|
20 |
* Runs activation actions.
|
components/cyrlitera/admin/boot.php
CHANGED
@@ -135,7 +135,7 @@ if ( ! defined( 'LOADING_CYRLITERA_AS_ADDON' ) ) {
|
|
135 |
return $page_url;
|
136 |
}
|
137 |
|
138 |
-
add_filter( '
|
139 |
|
140 |
/**
|
141 |
* Удаляем лишние виджеты из правого сайдбара в интерфейсе плагина
|
135 |
return $page_url;
|
136 |
}
|
137 |
|
138 |
+
add_filter( 'wbcr_factory_pages_445_imppage_rating_widget_url', 'wbcr_cyrlitera_rating_widget_url', 10, 2 );
|
139 |
|
140 |
/**
|
141 |
* Удаляем лишние виджеты из правого сайдбара в интерфейсе плагина
|
components/cyrlitera/admin/pages/class-page-cyrlitera.php
CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
* @copyright (c) 2018 Webraftic Ltd
|
17 |
* @version 1.0
|
18 |
*/
|
19 |
-
class WCTR_CyrliteraPage extends
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
@@ -59,9 +59,9 @@ class WCTR_CyrliteraPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
59 |
*
|
60 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
61 |
*
|
62 |
-
* @param \
|
63 |
*/
|
64 |
-
public function __construct(
|
65 |
$this->menu_title = __( 'Cyrlitera', 'cyrlitera' );
|
66 |
|
67 |
if ( ! defined( 'LOADING_CYRLITERA_AS_ADDON' ) ) {
|
@@ -203,7 +203,7 @@ class WCTR_CyrliteraPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
203 |
}
|
204 |
|
205 |
/**
|
206 |
-
* @param $html_builder
|
207 |
*/
|
208 |
public function rollbackButton( $html_builder ) {
|
209 |
$form_name = $html_builder->getFormName();
|
16 |
* @copyright (c) 2018 Webraftic Ltd
|
17 |
* @version 1.0
|
18 |
*/
|
19 |
+
class WCTR_CyrliteraPage extends Wbcr_FactoryClearfy237_PageBase {
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
59 |
*
|
60 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
61 |
*
|
62 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
63 |
*/
|
64 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
65 |
$this->menu_title = __( 'Cyrlitera', 'cyrlitera' );
|
66 |
|
67 |
if ( ! defined( 'LOADING_CYRLITERA_AS_ADDON' ) ) {
|
203 |
}
|
204 |
|
205 |
/**
|
206 |
+
* @param $html_builder Wbcr_FactoryForms443_Html
|
207 |
*/
|
208 |
public function rollbackButton( $html_builder ) {
|
209 |
$form_name = $html_builder->getFormName();
|
components/cyrlitera/admin/pages/class-page-more-features.php
CHANGED
@@ -18,6 +18,6 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
18 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
19 |
* @copyright (c) 2018 Webraftic Ltd
|
20 |
*/
|
21 |
-
class WCTR_MoreFeaturesPage extends
|
22 |
|
23 |
}
|
18 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
19 |
* @copyright (c) 2018 Webraftic Ltd
|
20 |
*/
|
21 |
+
class WCTR_MoreFeaturesPage extends Wbcr_FactoryClearfy237_MoreFeaturesPage {
|
22 |
|
23 |
}
|
components/cyrlitera/cyrlitera.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
* Text Domain: cyrlitera
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
-
* Framework Version:
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
@@ -68,15 +68,15 @@ $wctr_plugin_info = array(
|
|
68 |
|
69 |
// FRAMEWORK MODULES
|
70 |
'load_factory_modules' => array(
|
71 |
-
array('libs/factory/bootstrap', '
|
72 |
-
array('libs/factory/forms', '
|
73 |
-
array('libs/factory/pages', '
|
74 |
-
array('libs/factory/clearfy', '
|
75 |
-
array('libs/factory/adverts', '
|
76 |
)
|
77 |
);
|
78 |
|
79 |
-
$wctr_compatibility = new
|
80 |
'plugin_already_activate' => defined('WCTR_PLUGIN_ACTIVE'),
|
81 |
'required_php_version' => '5.4',
|
82 |
'required_wp_version' => '4.2.0',
|
8 |
* Text Domain: cyrlitera
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
+
* Framework Version: FACTORY_446_VERSION
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
68 |
|
69 |
// FRAMEWORK MODULES
|
70 |
'load_factory_modules' => array(
|
71 |
+
array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
|
72 |
+
array('libs/factory/forms', 'factory_forms_443', 'admin'),
|
73 |
+
array('libs/factory/pages', 'factory_pages_445', 'admin'),
|
74 |
+
array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
|
75 |
+
array('libs/factory/adverts', 'factory_adverts_124', 'admin')
|
76 |
)
|
77 |
);
|
78 |
|
79 |
+
$wctr_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($wctr_plugin_info, array(
|
80 |
'plugin_already_activate' => defined('WCTR_PLUGIN_ACTIVE'),
|
81 |
'required_php_version' => '5.4',
|
82 |
'required_wp_version' => '4.2.0',
|
components/cyrlitera/includes/class-plugin.php
CHANGED
@@ -10,11 +10,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
10 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
11 |
* @copyright (c) 19.02.2018, Webcraftic
|
12 |
*/
|
13 |
-
class WCTR_Plugin extends
|
14 |
|
15 |
/**
|
16 |
* @see self::app()
|
17 |
-
* @var
|
18 |
*/
|
19 |
private static $app;
|
20 |
|
@@ -57,7 +57,7 @@ class WCTR_Plugin extends Wbcr_Factory445_Plugin {
|
|
57 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
58 |
* классам.
|
59 |
*
|
60 |
-
* @return \
|
61 |
*/
|
62 |
public static function app() {
|
63 |
return self::$app;
|
10 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
11 |
* @copyright (c) 19.02.2018, Webcraftic
|
12 |
*/
|
13 |
+
class WCTR_Plugin extends Wbcr_Factory446_Plugin {
|
14 |
|
15 |
/**
|
16 |
* @see self::app()
|
17 |
+
* @var Wbcr_Factory446_Plugin
|
18 |
*/
|
19 |
private static $app;
|
20 |
|
57 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
58 |
* классам.
|
59 |
*
|
60 |
+
* @return \Wbcr_Factory446_Plugin|\WCTR_Plugin
|
61 |
*/
|
62 |
public static function app() {
|
63 |
return self::$app;
|
components/cyrlitera/includes/classes/class-configurate-cyrlitera.php
CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
-
class WCTR_ConfigurateCyrlitera extends
|
16 |
|
17 |
public function registerActionsAndFilters() {
|
18 |
|
@@ -235,7 +235,7 @@ class WCTR_ConfigurateCyrlitera extends Wbcr_FactoryClearfy236_Configurate {
|
|
235 |
* Перенаправление со старых url, которые были уже преобразованы
|
236 |
*/
|
237 |
public function redirectFromOldUrls() {
|
238 |
-
if ( !
|
239 |
return;
|
240 |
}
|
241 |
$is404 = is_404();
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
+
class WCTR_ConfigurateCyrlitera extends Wbcr_FactoryClearfy237_Configurate {
|
16 |
|
17 |
public function registerActionsAndFilters() {
|
18 |
|
235 |
* Перенаправление со старых url, которые были уже преобразованы
|
236 |
*/
|
237 |
public function redirectFromOldUrls() {
|
238 |
+
if ( ! WbcrFactoryClearfy237_Helpers::isPermalink() ) {
|
239 |
return;
|
240 |
}
|
241 |
$is404 = is_404();
|
components/cyrlitera/migrations/010004.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
-
class WCTR_Update010004 extends
|
8 |
|
9 |
public function install() {
|
10 |
WCTR_Plugin::app()->deletePopulateOption( 'custom_symbols_pack' );
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
+
class WCTR_Update010004 extends Wbcr_Factory446_Update {
|
8 |
|
9 |
public function install() {
|
10 |
WCTR_Plugin::app()->deletePopulateOption( 'custom_symbols_pack' );
|
components/disable-admin-notices/admin/boot.php
CHANGED
@@ -44,7 +44,7 @@ if ( ! defined( 'LOADING_DISABLE_ADMIN_NOTICES_AS_ADDON' ) ) {
|
|
44 |
*
|
45 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
46 |
*/
|
47 |
-
add_filter( '
|
48 |
if ( $plugin_name == WDN_Plugin::app()->getPluginName() ) {
|
49 |
return 'https://goo.gl/68ucHp';
|
50 |
}
|
44 |
*
|
45 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
46 |
*/
|
47 |
+
add_filter( 'wbcr_factory_pages_445_imppage_rating_widget_url', function ( $page_url, $plugin_name ) {
|
48 |
if ( $plugin_name == WDN_Plugin::app()->getPluginName() ) {
|
49 |
return 'https://goo.gl/68ucHp';
|
50 |
}
|
components/disable-admin-notices/admin/class-page-basic.php
CHANGED
@@ -19,16 +19,16 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
19 |
exit;
|
20 |
}
|
21 |
|
22 |
-
class WDN_Page extends
|
23 |
|
24 |
/**
|
25 |
* Requests assets (js and css) for the page.
|
26 |
*
|
27 |
-
* @param
|
28 |
-
* @param
|
29 |
*
|
30 |
* @return void
|
31 |
-
* @see
|
32 |
*
|
33 |
*/
|
34 |
public function assets( $scripts, $styles ) {
|
19 |
exit;
|
20 |
}
|
21 |
|
22 |
+
class WDN_Page extends Wbcr_FactoryClearfy237_PageBase {
|
23 |
|
24 |
/**
|
25 |
* Requests assets (js and css) for the page.
|
26 |
*
|
27 |
+
* @param Wbcr_Factory446_ScriptList $scripts
|
28 |
+
* @param Wbcr_Factory446_StyleList $styles
|
29 |
*
|
30 |
* @return void
|
31 |
+
* @see Wbcr_FactoryPages445_AdminPage
|
32 |
*
|
33 |
*/
|
34 |
public function assets( $scripts, $styles ) {
|
components/disable-admin-notices/admin/options.php
CHANGED
@@ -176,7 +176,7 @@ function wbcr_dan_is_active_clearfy_component() {
|
|
176 |
* с настройками этого плагина, потому что это ухудшает юзабилити.
|
177 |
*
|
178 |
* @param array $form Массив с группой настроек, страницы "Дополнительно" в плагине Clearfy
|
179 |
-
* @param
|
180 |
*
|
181 |
* @return mixed Отсортированный массив с группой опций
|
182 |
*/
|
@@ -203,7 +203,7 @@ add_filter( 'wbcr_clr_additionally_form_options', 'wbcr_dan_additionally_form_op
|
|
203 |
* Эта модикация является не стандартной, поэтому мы не можете реалировать ее
|
204 |
* через фреймворк.
|
205 |
*
|
206 |
-
* @param @param $html_builder
|
207 |
*
|
208 |
* @since 1.0
|
209 |
*
|
176 |
* с настройками этого плагина, потому что это ухудшает юзабилити.
|
177 |
*
|
178 |
* @param array $form Массив с группой настроек, страницы "Дополнительно" в плагине Clearfy
|
179 |
+
* @param Wbcr_FactoryPages445_ImpressiveThemplate $page Экземпляр страницы
|
180 |
*
|
181 |
* @return mixed Отсортированный массив с группой опций
|
182 |
*/
|
203 |
* Эта модикация является не стандартной, поэтому мы не можете реалировать ее
|
204 |
* через фреймворк.
|
205 |
*
|
206 |
+
* @param @param $html_builder Wbcr_FactoryForms443_Html
|
207 |
*
|
208 |
* @since 1.0
|
209 |
*
|
components/disable-admin-notices/admin/pages/class-pages-edit-admin-bar.php
CHANGED
@@ -63,11 +63,11 @@ class WDAN_Edit_Admin_Bar extends WDN_Page {
|
|
63 |
/**
|
64 |
* Requests assets (js and css) for the page.
|
65 |
*
|
66 |
-
* @param
|
67 |
-
* @param
|
68 |
*
|
69 |
* @return void
|
70 |
-
* @see
|
71 |
*
|
72 |
*/
|
73 |
public function assets( $scripts, $styles ) {
|
63 |
/**
|
64 |
* Requests assets (js and css) for the page.
|
65 |
*
|
66 |
+
* @param Wbcr_Factory446_ScriptList $scripts
|
67 |
+
* @param Wbcr_Factory446_StyleList $styles
|
68 |
*
|
69 |
* @return void
|
70 |
+
* @see Wbcr_FactoryPages445_AdminPage
|
71 |
*
|
72 |
*/
|
73 |
public function assets( $scripts, $styles ) {
|
components/disable-admin-notices/admin/pages/class-pages-edit-redirects.php
CHANGED
@@ -61,11 +61,11 @@ class WDAN_Block_Ad_Redirects extends WDN_Page {
|
|
61 |
/**
|
62 |
* Requests assets (js and css) for the page.
|
63 |
*
|
64 |
-
* @param
|
65 |
-
* @param
|
66 |
*
|
67 |
* @return void
|
68 |
-
* @see
|
69 |
*
|
70 |
*/
|
71 |
public function assets( $scripts, $styles ) {
|
61 |
/**
|
62 |
* Requests assets (js and css) for the page.
|
63 |
*
|
64 |
+
* @param Wbcr_Factory446_ScriptList $scripts
|
65 |
+
* @param Wbcr_Factory446_StyleList $styles
|
66 |
*
|
67 |
* @return void
|
68 |
+
* @see Wbcr_FactoryPages445_AdminPage
|
69 |
*
|
70 |
*/
|
71 |
public function assets( $scripts, $styles ) {
|
components/disable-admin-notices/admin/pages/class-pages-license.php
CHANGED
@@ -13,7 +13,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
*
|
14 |
* @copyright (c) 2018 Webraftic Ltd
|
15 |
*/
|
16 |
-
class WDN_LicensePage extends
|
17 |
|
18 |
/**
|
19 |
* {@inheritdoc}
|
@@ -36,12 +36,12 @@ class WDN_LicensePage extends Wbcr_FactoryClearfy236_LicensePage {
|
|
36 |
/**
|
37 |
* WCL_LicensePage constructor.
|
38 |
*
|
39 |
-
* @param \
|
40 |
*
|
41 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
42 |
*
|
43 |
*/
|
44 |
-
public function __construct(
|
45 |
$this->menu_title = __( 'License', 'robin-image-optimizer' );
|
46 |
$this->page_menu_short_description = __( 'Product activation', 'robin-image-optimizer' );
|
47 |
$this->plan_name = __( 'Disable admin notices premium', 'robin-image-optimizer' );
|
13 |
*
|
14 |
* @copyright (c) 2018 Webraftic Ltd
|
15 |
*/
|
16 |
+
class WDN_LicensePage extends Wbcr_FactoryClearfy237_LicensePage {
|
17 |
|
18 |
/**
|
19 |
* {@inheritdoc}
|
36 |
/**
|
37 |
* WCL_LicensePage constructor.
|
38 |
*
|
39 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
40 |
*
|
41 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
42 |
*
|
43 |
*/
|
44 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
45 |
$this->menu_title = __( 'License', 'robin-image-optimizer' );
|
46 |
$this->page_menu_short_description = __( 'Product activation', 'robin-image-optimizer' );
|
47 |
$this->plan_name = __( 'Disable admin notices premium', 'robin-image-optimizer' );
|
components/disable-admin-notices/admin/pages/class-pages-notices.php
CHANGED
@@ -59,11 +59,11 @@ class WDAN_Notices extends WDN_Page {
|
|
59 |
/**
|
60 |
* Requests assets (js and css) for the page.
|
61 |
*
|
62 |
-
* @param
|
63 |
-
* @param
|
64 |
*
|
65 |
* @return void
|
66 |
-
* @see
|
67 |
*
|
68 |
*/
|
69 |
public function assets( $scripts, $styles ) {
|
59 |
/**
|
60 |
* Requests assets (js and css) for the page.
|
61 |
*
|
62 |
+
* @param Wbcr_Factory446_ScriptList $scripts
|
63 |
+
* @param Wbcr_Factory446_StyleList $styles
|
64 |
*
|
65 |
* @return void
|
66 |
+
* @see Wbcr_FactoryPages445_AdminPage
|
67 |
*
|
68 |
*/
|
69 |
public function assets( $scripts, $styles ) {
|
components/disable-admin-notices/admin/pages/class-pages-settings.php
CHANGED
@@ -66,9 +66,9 @@ class WDN_Settings_Page extends WDN_Page {
|
|
66 |
|
67 |
|
68 |
/**
|
69 |
-
* @param
|
70 |
*/
|
71 |
-
public function __construct(
|
72 |
$this->menu_title = __( 'Hide admin notices', 'disable-admin-notices' );
|
73 |
$this->page_menu_short_description = __( 'General settings', 'disable-admin-notices' );
|
74 |
|
@@ -88,11 +88,11 @@ class WDN_Settings_Page extends WDN_Page {
|
|
88 |
/**
|
89 |
* Requests assets (js and css) for the page.
|
90 |
*
|
91 |
-
* @param
|
92 |
-
* @param
|
93 |
*
|
94 |
* @return void
|
95 |
-
* @see
|
96 |
*
|
97 |
*/
|
98 |
public function assets( $scripts, $styles ) {
|
@@ -122,7 +122,7 @@ class WDN_Settings_Page extends WDN_Page {
|
|
122 |
'wbcr_dan_code' => 'interal_error'
|
123 |
),
|
124 |
'type' => 'danger',
|
125 |
-
'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', '
|
126 |
);*/
|
127 |
|
128 |
return $notices;
|
66 |
|
67 |
|
68 |
/**
|
69 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
70 |
*/
|
71 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
72 |
$this->menu_title = __( 'Hide admin notices', 'disable-admin-notices' );
|
73 |
$this->page_menu_short_description = __( 'General settings', 'disable-admin-notices' );
|
74 |
|
88 |
/**
|
89 |
* Requests assets (js and css) for the page.
|
90 |
*
|
91 |
+
* @param Wbcr_Factory446_ScriptList $scripts
|
92 |
+
* @param Wbcr_Factory446_StyleList $styles
|
93 |
*
|
94 |
* @return void
|
95 |
+
* @see Wbcr_FactoryPages445_AdminPage
|
96 |
*
|
97 |
*/
|
98 |
public function assets( $scripts, $styles ) {
|
122 |
'wbcr_dan_code' => 'interal_error'
|
123 |
),
|
124 |
'type' => 'danger',
|
125 |
+
'message' => __('An error occurred while trying to delete comments. Internal error occured. Please try again later.', 'factory_pages_445')
|
126 |
);*/
|
127 |
|
128 |
return $notices;
|
components/disable-admin-notices/disable-admin-notices.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
* Text Domain: disable-admin-notices
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
-
* Framework Version:
|
12 |
*/
|
13 |
|
14 |
/**
|
@@ -85,17 +85,17 @@ $wdan_plugin_info = array(
|
|
85 |
|
86 |
// FRAMEWORK MODULES
|
87 |
'load_factory_modules' => array(
|
88 |
-
array('libs/factory/bootstrap', '
|
89 |
-
array('libs/factory/forms', '
|
90 |
-
array('libs/factory/pages', '
|
91 |
-
array('libs/factory/clearfy', '
|
92 |
-
array('libs/factory/freemius', '
|
93 |
-
array('libs/factory/adverts', '
|
94 |
//array('libs/factory/logger', 'factory_logger_000', 'all')
|
95 |
)
|
96 |
);
|
97 |
|
98 |
-
$wdan_compatibility = new
|
99 |
'plugin_already_activate' => defined('WDN_PLUGIN_ACTIVE'),
|
100 |
'required_php_version' => '5.4',
|
101 |
'required_wp_version' => '4.2.0',
|
8 |
* Text Domain: disable-admin-notices
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
+
* Framework Version: FACTORY_446_VERSION
|
12 |
*/
|
13 |
|
14 |
/**
|
85 |
|
86 |
// FRAMEWORK MODULES
|
87 |
'load_factory_modules' => array(
|
88 |
+
array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
|
89 |
+
array('libs/factory/forms', 'factory_forms_443', 'admin'),
|
90 |
+
array('libs/factory/pages', 'factory_pages_445', 'admin'),
|
91 |
+
array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
|
92 |
+
array('libs/factory/freemius', 'factory_freemius_134', 'all'),
|
93 |
+
array('libs/factory/adverts', 'factory_adverts_124', 'admin'),
|
94 |
//array('libs/factory/logger', 'factory_logger_000', 'all')
|
95 |
)
|
96 |
);
|
97 |
|
98 |
+
$wdan_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($wdan_plugin_info, array(
|
99 |
'plugin_already_activate' => defined('WDN_PLUGIN_ACTIVE'),
|
100 |
'required_php_version' => '5.4',
|
101 |
'required_wp_version' => '4.2.0',
|
components/disable-admin-notices/includes/class-plugin.php
CHANGED
@@ -9,16 +9,16 @@
|
|
9 |
*/
|
10 |
|
11 |
// Exit if accessed directly
|
12 |
-
//use WBCR\
|
13 |
|
14 |
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
exit;
|
16 |
}
|
17 |
|
18 |
-
class WDN_Plugin extends
|
19 |
|
20 |
/**
|
21 |
-
* @var
|
22 |
*/
|
23 |
private static $app;
|
24 |
private $plugin_data;
|
@@ -44,7 +44,7 @@ class WDN_Plugin extends Wbcr_Factory445_Plugin {
|
|
44 |
}
|
45 |
|
46 |
/**
|
47 |
-
* @return
|
48 |
*/
|
49 |
public static function app() {
|
50 |
return self::$app;
|
9 |
*/
|
10 |
|
11 |
// Exit if accessed directly
|
12 |
+
//use WBCR\Factory_Adverts_124\Base;
|
13 |
|
14 |
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
exit;
|
16 |
}
|
17 |
|
18 |
+
class WDN_Plugin extends Wbcr_Factory446_Plugin {
|
19 |
|
20 |
/**
|
21 |
+
* @var Wbcr_Factory446_Plugin
|
22 |
*/
|
23 |
private static $app;
|
24 |
private $plugin_data;
|
44 |
}
|
45 |
|
46 |
/**
|
47 |
+
* @return Wbcr_Factory446_Plugin
|
48 |
*/
|
49 |
public static function app() {
|
50 |
return self::$app;
|
components/disable-admin-notices/includes/classes/class-configurate-notices.php
CHANGED
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
15 |
exit;
|
16 |
}
|
17 |
|
18 |
-
class WDN_ConfigHideNotices extends
|
19 |
|
20 |
public function registerActionsAndFilters() {
|
21 |
if ( is_admin() ) {
|
15 |
exit;
|
16 |
}
|
17 |
|
18 |
+
class WDN_ConfigHideNotices extends Wbcr_FactoryClearfy237_Configurate {
|
19 |
|
20 |
public function registerActionsAndFilters() {
|
21 |
if ( is_admin() ) {
|
components/disable-admin-notices/migrations/010007.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
-
class WDNUpdate010007 extends
|
8 |
|
9 |
public function install()
|
10 |
{
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
+
class WDNUpdate010007 extends Wbcr_Factory446_Update {
|
8 |
|
9 |
public function install()
|
10 |
{
|
components/ga-cache/admin/activation.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
*
|
6 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
7 |
* @copyright (c) 09.09.2017, Webcraftic
|
8 |
-
* @see
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
|
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
class WGA_Activation extends
|
18 |
|
19 |
/**
|
20 |
* Runs activation actions.
|
5 |
*
|
6 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
7 |
* @copyright (c) 09.09.2017, Webcraftic
|
8 |
+
* @see Factory446_Activator
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
class WGA_Activation extends Wbcr_Factory446_Activator {
|
18 |
|
19 |
/**
|
20 |
* Runs activation actions.
|
components/ga-cache/admin/boot.php
CHANGED
@@ -21,9 +21,9 @@ if( !defined('ABSPATH') ) {
|
|
21 |
* options for analytic caching are enabled or not. If enabled,
|
22 |
* add cron task.
|
23 |
*
|
24 |
-
* @param
|
25 |
*
|
26 |
-
* @param
|
27 |
*
|
28 |
* @return void
|
29 |
* @since 3.0.1
|
21 |
* options for analytic caching are enabled or not. If enabled,
|
22 |
* add cron task.
|
23 |
*
|
24 |
+
* @param Wbcr_FactoryPages445_ImpressiveThemplate $page
|
25 |
*
|
26 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
27 |
*
|
28 |
* @return void
|
29 |
* @since 3.0.1
|
components/ga-cache/admin/options.php
CHANGED
@@ -117,7 +117,7 @@ function wbcr_ga_get_plugin_options() {
|
|
117 |
|
118 |
/**
|
119 |
* @param $form
|
120 |
-
* @param $page
|
121 |
*
|
122 |
* @return mixed
|
123 |
*/
|
117 |
|
118 |
/**
|
119 |
* @param $form
|
120 |
+
* @param $page Wbcr_FactoryPages445_ImpressiveThemplate
|
121 |
*
|
122 |
* @return mixed
|
123 |
*/
|
components/ga-cache/admin/pages/class-pages-general-settings.php
CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
* @copyright (c) 2018 Webraftic Ltd
|
17 |
* @version 1.0
|
18 |
*/
|
19 |
-
class WGA_CachePage extends
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
@@ -48,9 +48,9 @@ class WGA_CachePage extends Wbcr_FactoryClearfy236_PageBase {
|
|
48 |
public $show_right_sidebar_in_options = true;
|
49 |
|
50 |
/**
|
51 |
-
* @param
|
52 |
*/
|
53 |
-
public function __construct(
|
54 |
$this->menu_title = __( 'Local Google Analytics', 'simple-google-analytics' );
|
55 |
|
56 |
if ( ! defined( 'LOADING_GA_CACHE_AS_ADDON' ) ) {
|
16 |
* @copyright (c) 2018 Webraftic Ltd
|
17 |
* @version 1.0
|
18 |
*/
|
19 |
+
class WGA_CachePage extends Wbcr_FactoryClearfy237_PageBase {
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
48 |
public $show_right_sidebar_in_options = true;
|
49 |
|
50 |
/**
|
51 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
52 |
*/
|
53 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
54 |
$this->menu_title = __( 'Local Google Analytics', 'simple-google-analytics' );
|
55 |
|
56 |
if ( ! defined( 'LOADING_GA_CACHE_AS_ADDON' ) ) {
|
components/ga-cache/admin/pages/class-pages-more-features.php
CHANGED
@@ -16,6 +16,6 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
-
class WGA_MoreFeaturesPage extends
|
20 |
|
21 |
}
|
16 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
+
class WGA_MoreFeaturesPage extends Wbcr_FactoryClearfy237_MoreFeaturesPage {
|
20 |
|
21 |
}
|
components/ga-cache/includes/class-plugin.php
CHANGED
@@ -10,11 +10,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
10 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
11 |
* @copyright (c) 19.02.2018, Webcraftic
|
12 |
*/
|
13 |
-
class WGA_Plugin extends
|
14 |
|
15 |
/**
|
16 |
* @see self::app()
|
17 |
-
* @var
|
18 |
*/
|
19 |
private static $app;
|
20 |
|
@@ -58,7 +58,7 @@ class WGA_Plugin extends Wbcr_Factory445_Plugin {
|
|
58 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
59 |
* классам.
|
60 |
*
|
61 |
-
* @return \
|
62 |
*/
|
63 |
public static function app() {
|
64 |
return self::$app;
|
10 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
11 |
* @copyright (c) 19.02.2018, Webcraftic
|
12 |
*/
|
13 |
+
class WGA_Plugin extends Wbcr_Factory446_Plugin {
|
14 |
|
15 |
/**
|
16 |
* @see self::app()
|
17 |
+
* @var Wbcr_Factory446_Plugin
|
18 |
*/
|
19 |
private static $app;
|
20 |
|
58 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
59 |
* классам.
|
60 |
*
|
61 |
+
* @return \Wbcr_Factory446_Plugin|\WGA_Plugin
|
62 |
*/
|
63 |
public static function app() {
|
64 |
return self::$app;
|
components/ga-cache/includes/classes/class-configurate-ga.php
CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
-
class WGA_ConfigGACache extends
|
16 |
|
17 |
|
18 |
public function registerActionsAndFilters() {
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
+
class WGA_ConfigGACache extends Wbcr_FactoryClearfy237_Configurate {
|
16 |
|
17 |
|
18 |
public function registerActionsAndFilters() {
|
components/ga-cache/migrations/030002.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
-
class WGACUpdate030002 extends
|
8 |
|
9 |
public function install() {
|
10 |
/**
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
+
class WGACUpdate030002 extends Wbcr_Factory446_Update {
|
8 |
|
9 |
public function install() {
|
10 |
/**
|
components/ga-cache/simple_google_analytics.php
CHANGED
@@ -67,15 +67,15 @@ $plugin_info = array(
|
|
67 |
|
68 |
// FRAMEWORK MODULES
|
69 |
'load_factory_modules' => array(
|
70 |
-
array('libs/factory/bootstrap', '
|
71 |
-
array('libs/factory/forms', '
|
72 |
-
array('libs/factory/pages', '
|
73 |
-
array('libs/factory/clearfy', '
|
74 |
-
array('libs/factory/adverts', '
|
75 |
)
|
76 |
);
|
77 |
|
78 |
-
$wga_compatibility = new
|
79 |
'plugin_already_activate' => defined('WGA_PLUGIN_ACTIVE'),
|
80 |
'required_php_version' => '5.4',
|
81 |
'required_wp_version' => '4.2.0',
|
67 |
|
68 |
// FRAMEWORK MODULES
|
69 |
'load_factory_modules' => array(
|
70 |
+
array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
|
71 |
+
array('libs/factory/forms', 'factory_forms_443', 'admin'),
|
72 |
+
array('libs/factory/pages', 'factory_pages_445', 'admin'),
|
73 |
+
array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
|
74 |
+
array('libs/factory/adverts', 'factory_adverts_124', 'admin')
|
75 |
)
|
76 |
);
|
77 |
|
78 |
+
$wga_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($plugin_info, array(
|
79 |
'plugin_already_activate' => defined('WGA_PLUGIN_ACTIVE'),
|
80 |
'required_php_version' => '5.4',
|
81 |
'required_wp_version' => '4.2.0',
|
components/html-minify/admin/pages/class-pages-settings.php
CHANGED
@@ -9,7 +9,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
9 |
*
|
10 |
* @since 1.0.0
|
11 |
*/
|
12 |
-
class WHTM_SettingsPage extends
|
13 |
|
14 |
/**
|
15 |
* {@inheritDoc}
|
@@ -52,9 +52,9 @@ class WHTM_SettingsPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
52 |
*
|
53 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
54 |
*
|
55 |
-
* @param \
|
56 |
*/
|
57 |
-
public function __construct(
|
58 |
// Заголовок страницы
|
59 |
$this->menu_title = __( 'HTML Minify', 'html-minify' );
|
60 |
|
9 |
*
|
10 |
* @since 1.0.0
|
11 |
*/
|
12 |
+
class WHTM_SettingsPage extends Wbcr_FactoryClearfy237_PageBase {
|
13 |
|
14 |
/**
|
15 |
* {@inheritDoc}
|
52 |
*
|
53 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
54 |
*
|
55 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
56 |
*/
|
57 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
58 |
// Заголовок страницы
|
59 |
$this->menu_title = __( 'HTML Minify', 'html-minify' );
|
60 |
|
components/html-minify/html-minify.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
* Text Domain: html-minify
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
-
* Framework Version:
|
12 |
*/
|
13 |
|
14 |
/*
|
@@ -59,15 +59,15 @@ $whtml_plugin_info = array(
|
|
59 |
|
60 |
// FRAMEWORK MODULES
|
61 |
'load_factory_modules' => array(
|
62 |
-
array( 'libs/factory/bootstrap', '
|
63 |
-
array( 'libs/factory/forms', '
|
64 |
-
array( 'libs/factory/pages', '
|
65 |
-
array( 'libs/factory/clearfy', '
|
66 |
-
array( 'libs/factory/adverts', '
|
67 |
)
|
68 |
);
|
69 |
|
70 |
-
$whtml_compatibility = new
|
71 |
'plugin_already_activate' => defined( 'WHTM_PLUGIN_ACTIVE' ),
|
72 |
'required_php_version' => '5.4',
|
73 |
'required_wp_version' => '4.2.0',
|
8 |
* Text Domain: html-minify
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
+
* Framework Version: FACTORY_446_VERSION
|
12 |
*/
|
13 |
|
14 |
/*
|
59 |
|
60 |
// FRAMEWORK MODULES
|
61 |
'load_factory_modules' => array(
|
62 |
+
array( 'libs/factory/bootstrap', 'factory_bootstrap_446', 'admin' ),
|
63 |
+
array( 'libs/factory/forms', 'factory_forms_443', 'admin' ),
|
64 |
+
array( 'libs/factory/pages', 'factory_pages_445', 'admin' ),
|
65 |
+
array( 'libs/factory/clearfy', 'factory_clearfy_237', 'all' ),
|
66 |
+
array( 'libs/factory/adverts', 'factory_adverts_124', 'admin')
|
67 |
)
|
68 |
);
|
69 |
|
70 |
+
$whtml_compatibility = new Wbcr_Factory446_Requirements( __FILE__, array_merge( $whtml_plugin_info, array(
|
71 |
'plugin_already_activate' => defined( 'WHTM_PLUGIN_ACTIVE' ),
|
72 |
'required_php_version' => '5.4',
|
73 |
'required_wp_version' => '4.2.0',
|
components/html-minify/includes/class-plugin.php
CHANGED
@@ -13,11 +13,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
}
|
14 |
|
15 |
|
16 |
-
class WHTM_Plugin extends
|
17 |
|
18 |
/**
|
19 |
* @see self::app()
|
20 |
-
* @var
|
21 |
*/
|
22 |
private static $app;
|
23 |
|
@@ -53,7 +53,7 @@ class WHTM_Plugin extends Wbcr_Factory445_Plugin {
|
|
53 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
54 |
* классам.
|
55 |
*
|
56 |
-
* @return \
|
57 |
*/
|
58 |
public static function app() {
|
59 |
return self::$app;
|
13 |
}
|
14 |
|
15 |
|
16 |
+
class WHTM_Plugin extends Wbcr_Factory446_Plugin {
|
17 |
|
18 |
/**
|
19 |
* @see self::app()
|
20 |
+
* @var Wbcr_Factory446_Plugin
|
21 |
*/
|
22 |
private static $app;
|
23 |
|
53 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
54 |
* классам.
|
55 |
*
|
56 |
+
* @return \Wbcr_Factory446_Plugin|\WCM_Plugin
|
57 |
*/
|
58 |
public static function app() {
|
59 |
return self::$app;
|
components/minify-and-combine/admin/pages/class-pages-settings.php
CHANGED
@@ -9,7 +9,7 @@ if( !defined('ABSPATH') ) {
|
|
9 |
*
|
10 |
* @since 1.0.0
|
11 |
*/
|
12 |
-
class WMAC_MinifyAndCombineSettingsPage extends
|
13 |
|
14 |
/**
|
15 |
* {@inheritDoc}
|
@@ -50,12 +50,12 @@ class WMAC_MinifyAndCombineSettingsPage extends Wbcr_FactoryClearfy236_PageBase
|
|
50 |
/**
|
51 |
* WMAC_MinifyAndCombineSettingsPage constructor.
|
52 |
*
|
53 |
-
* @param \
|
54 |
*
|
55 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
56 |
*
|
57 |
*/
|
58 |
-
public function __construct(
|
59 |
{
|
60 |
$this->menu_title = __('Minify (JS/CSS)', 'minify-and-combine');
|
61 |
|
@@ -84,11 +84,11 @@ class WMAC_MinifyAndCombineSettingsPage extends Wbcr_FactoryClearfy236_PageBase
|
|
84 |
/**
|
85 |
* Requests assets (js and css) for the page.
|
86 |
*
|
87 |
-
* @param
|
88 |
-
* @param
|
89 |
*
|
90 |
* @return void
|
91 |
-
* @see
|
92 |
*
|
93 |
*/
|
94 |
public function assets($scripts, $styles)
|
9 |
*
|
10 |
* @since 1.0.0
|
11 |
*/
|
12 |
+
class WMAC_MinifyAndCombineSettingsPage extends Wbcr_FactoryClearfy237_PageBase {
|
13 |
|
14 |
/**
|
15 |
* {@inheritDoc}
|
50 |
/**
|
51 |
* WMAC_MinifyAndCombineSettingsPage constructor.
|
52 |
*
|
53 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
54 |
*
|
55 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
56 |
*
|
57 |
*/
|
58 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin)
|
59 |
{
|
60 |
$this->menu_title = __('Minify (JS/CSS)', 'minify-and-combine');
|
61 |
|
84 |
/**
|
85 |
* Requests assets (js and css) for the page.
|
86 |
*
|
87 |
+
* @param Wbcr_Factory446_ScriptList $scripts
|
88 |
+
* @param Wbcr_Factory446_StyleList $styles
|
89 |
*
|
90 |
* @return void
|
91 |
+
* @see Wbcr_FactoryPages445_AdminPage
|
92 |
*
|
93 |
*/
|
94 |
public function assets($scripts, $styles)
|
components/minify-and-combine/includes/class-plugin.php
CHANGED
@@ -13,11 +13,11 @@ if( !defined('ABSPATH') ) {
|
|
13 |
}
|
14 |
|
15 |
|
16 |
-
class WMAC_Plugin extends
|
17 |
|
18 |
/**
|
19 |
* @see self::app()
|
20 |
-
* @var
|
21 |
*/
|
22 |
private static $app;
|
23 |
|
@@ -56,7 +56,7 @@ class WMAC_Plugin extends Wbcr_Factory445_Plugin {
|
|
56 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
57 |
* классам.
|
58 |
*
|
59 |
-
* @return \
|
60 |
*/
|
61 |
public static function app()
|
62 |
{
|
13 |
}
|
14 |
|
15 |
|
16 |
+
class WMAC_Plugin extends Wbcr_Factory446_Plugin {
|
17 |
|
18 |
/**
|
19 |
* @see self::app()
|
20 |
+
* @var Wbcr_Factory446_Plugin
|
21 |
*/
|
22 |
private static $app;
|
23 |
|
56 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
57 |
* классам.
|
58 |
*
|
59 |
+
* @return \Wbcr_Factory446_Plugin|\WCM_Plugin
|
60 |
*/
|
61 |
public static function app()
|
62 |
{
|
components/minify-and-combine/includes/classes/class-cache.php
CHANGED
@@ -385,7 +385,7 @@ class WMAC_PluginCache {
|
|
385 |
}
|
386 |
}
|
387 |
add_action( 'shutdown', 'wmac_do_cachepurged_action', 11 );
|
388 |
-
add_action( 'wmac_action_cachepurged', [ '
|
389 |
}
|
390 |
|
391 |
// Warm cache (part of speedupper)!
|
385 |
}
|
386 |
}
|
387 |
add_action( 'shutdown', 'wmac_do_cachepurged_action', 11 );
|
388 |
+
add_action( 'wmac_action_cachepurged', [ 'WbcrFactoryClearfy237_Helpers', 'flushPageCache' ], 10, 0 );
|
389 |
}
|
390 |
|
391 |
// Warm cache (part of speedupper)!
|
components/minify-and-combine/includes/classes/class-css-min.php
CHANGED
@@ -41,7 +41,6 @@ class WMAC_PluginCSSmin {
|
|
41 |
* @return string
|
42 |
*/
|
43 |
public function run( $css ) {
|
44 |
-
$this->minifier->removeImportantComments();
|
45 |
$result = $this->minifier->run( $css );
|
46 |
|
47 |
return $result;
|
41 |
* @return string
|
42 |
*/
|
43 |
public function run( $css ) {
|
|
|
44 |
$result = $this->minifier->run( $css );
|
45 |
|
46 |
return $result;
|
components/minify-and-combine/includes/classes/class-styles.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
|
10 |
-
if
|
11 |
exit;
|
12 |
}
|
13 |
|
@@ -64,26 +64,27 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
64 |
*
|
65 |
* @return bool
|
66 |
*/
|
67 |
-
public function read(
|
68 |
-
|
69 |
-
|
|
|
70 |
return false;
|
71 |
}
|
72 |
|
73 |
-
$whitelistCSS = apply_filters(
|
74 |
-
if
|
75 |
-
$this->whitelist = array_filter(
|
76 |
}
|
77 |
|
78 |
-
$removableCSS = apply_filters(
|
79 |
-
if
|
80 |
-
$this->cssremovables = array_filter(
|
81 |
}
|
82 |
|
83 |
-
$this->cssinlinesize = apply_filters(
|
84 |
|
85 |
// filter to "late inject minified CSS", default to true for now (it is faster).
|
86 |
-
$this->inject_min_late = apply_filters(
|
87 |
|
88 |
// Remove everything that's not the header.
|
89 |
/*if ( apply_filters( 'wmac_filter_css_justhead', $options['justhead'] ) ) {
|
@@ -93,23 +94,23 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
93 |
}*/
|
94 |
|
95 |
// Determine whether we're doing CSS-files aggregation or not.
|
96 |
-
if
|
97 |
$this->aggregate = false;
|
98 |
}
|
99 |
// Returning true for "dontaggregate" turns off aggregation.
|
100 |
-
if
|
101 |
$this->aggregate = false;
|
102 |
}
|
103 |
|
104 |
// include inline?
|
105 |
-
if
|
106 |
$this->include_inline = true;
|
107 |
}
|
108 |
|
109 |
// List of CSS strings which are excluded from autoptimization.
|
110 |
-
$excludeCSS = apply_filters(
|
111 |
-
if
|
112 |
-
$this->dontmove = array_filter(
|
113 |
} else {
|
114 |
$this->dontmove = [];
|
115 |
}
|
@@ -120,7 +121,7 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
120 |
// Should we defer css?
|
121 |
// value: true / false.
|
122 |
$this->defer = $options['defer'];
|
123 |
-
$this->defer = apply_filters(
|
124 |
|
125 |
// Should we inline while deferring?
|
126 |
// value: inlined CSS.
|
@@ -129,38 +130,38 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
129 |
// Should we inline?
|
130 |
// value: true / false.
|
131 |
$this->inline = $options['inline'];
|
132 |
-
$this->inline = apply_filters(
|
133 |
|
134 |
// Store data: URIs setting for later use.
|
135 |
$this->datauris = $options['datauris'];
|
136 |
|
137 |
// noptimize me.
|
138 |
-
$this->content = $this->hideNoptimize(
|
139 |
|
140 |
// Exclude (no)script, as those may contain CSS which should be left as is.
|
141 |
-
$this->content = $this->replaceContentsWithMarkerIfExists(
|
142 |
|
143 |
// Save IE hacks.
|
144 |
-
$this->content = $this->hideIehacks(
|
145 |
|
146 |
// Hide HTML comments.
|
147 |
-
$this->content = $this->hideComments(
|
148 |
|
149 |
// Get <style> and <link>.
|
150 |
-
if
|
151 |
|
152 |
-
foreach
|
153 |
-
if
|
154 |
-
$this->content = str_replace(
|
155 |
-
} else if
|
156 |
// Get the media.
|
157 |
-
if
|
158 |
-
preg_match(
|
159 |
-
$medias = explode(
|
160 |
-
$media
|
161 |
-
foreach
|
162 |
/* $media[] = current(explode(' ',trim($elem),2)); */
|
163 |
-
if
|
164 |
$elem = 'all';
|
165 |
}
|
166 |
|
@@ -168,75 +169,75 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
168 |
}
|
169 |
} else {
|
170 |
// No media specified - applies to all.
|
171 |
-
$media = [
|
172 |
}
|
173 |
|
174 |
-
$media = apply_filters(
|
175 |
|
176 |
-
if
|
177 |
// <link>.
|
178 |
-
$url
|
179 |
-
$path = $this->getpath(
|
180 |
|
181 |
-
if
|
182 |
// Good link.
|
183 |
-
$this->css[] = [
|
184 |
} else {
|
185 |
// Link is dynamic (.php etc).
|
186 |
$tag = '';
|
187 |
}
|
188 |
} else {
|
189 |
// Inline css in style tags can be wrapped in comment tags, so restore comments.
|
190 |
-
$tag = $this->restoreComments(
|
191 |
-
preg_match(
|
192 |
|
193 |
// And re-hide them to be able to to the removal based on tag.
|
194 |
-
$tag = $this->hideComments(
|
195 |
|
196 |
-
if
|
197 |
-
$code
|
198 |
-
$this->css[] = [
|
199 |
} else {
|
200 |
$tag = '';
|
201 |
}
|
202 |
}
|
203 |
|
204 |
// Remove the original style tag.
|
205 |
-
$this->content = str_replace(
|
206 |
} else {
|
207 |
// Excluded CSS, minify if getpath and filter says so...
|
208 |
-
if
|
209 |
-
$exploded_url = explode(
|
210 |
-
$url
|
211 |
-
$path
|
212 |
-
|
213 |
-
if
|
214 |
-
$minified_url = $this->minifySingle(
|
215 |
-
if
|
216 |
// Replace orig URL with cached minified URL.
|
217 |
-
$new_tag = str_replace(
|
218 |
} else {
|
219 |
$new_tag = $tag;
|
220 |
}
|
221 |
|
222 |
// Removes querystring from URL.
|
223 |
-
if
|
224 |
-
$new_tag = str_replace(
|
225 |
}
|
226 |
|
227 |
// Defer single CSS if "inline & defer" is on.
|
228 |
-
if
|
229 |
// Get/ set (via filter) the JS to be triggers onload of the preloaded CSS.
|
230 |
-
$_preload_onload = apply_filters(
|
231 |
// Adapt original <link> element for CSS to be preloaded and add <noscript>-version for fallback.
|
232 |
-
$new_tag = '<noscript>' . $new_tag . '</noscript>' . str_replace(
|
233 |
"rel='stylesheet'",
|
234 |
'rel="stylesheet"',
|
235 |
-
], "rel='preload' as='style' onload=\"" . $_preload_onload . "\"", $new_tag
|
236 |
}
|
237 |
|
238 |
// And replace!
|
239 |
-
$this->content = str_replace(
|
240 |
}
|
241 |
}
|
242 |
}
|
@@ -257,20 +258,21 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
257 |
*
|
258 |
* @return boolean
|
259 |
*/
|
260 |
-
private function isDatauriCandidate(
|
|
|
261 |
// Call only once since it's called from a loop.
|
262 |
static $max_size = null;
|
263 |
-
if
|
264 |
$max_size = $this->getDatauriMaxsize();
|
265 |
}
|
266 |
|
267 |
-
if
|
268 |
|
269 |
// Seems we have a candidate.
|
270 |
$is_candidate = true;
|
271 |
} else {
|
272 |
// Filter allows overriding default decision (which checks for local file existence).
|
273 |
-
$is_candidate = apply_filters(
|
274 |
}
|
275 |
|
276 |
return $is_candidate;
|
@@ -283,7 +285,8 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
283 |
*
|
284 |
* @return mixed
|
285 |
*/
|
286 |
-
private function getDatauriMaxsize()
|
|
|
287 |
static $max_size = null;
|
288 |
|
289 |
/**
|
@@ -294,8 +297,8 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
294 |
* of thing you're probably better of building assets completely
|
295 |
* outside of WordPress anyway.
|
296 |
*/
|
297 |
-
if
|
298 |
-
$max_size = (int)
|
299 |
}
|
300 |
|
301 |
return $max_size;
|
@@ -306,21 +309,22 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
306 |
*
|
307 |
* @return bool
|
308 |
*/
|
309 |
-
private function checkDatauriExcludeList(
|
|
|
310 |
static $exclude_list = null;
|
311 |
$no_datauris = [];
|
312 |
|
313 |
// Again, skip doing certain stuff repeatedly when loop-called.
|
314 |
-
if
|
315 |
-
$exclude_list = apply_filters(
|
316 |
-
$no_datauris
|
317 |
}
|
318 |
|
319 |
$matched = false;
|
320 |
|
321 |
-
if
|
322 |
-
foreach
|
323 |
-
if
|
324 |
$matched = true;
|
325 |
break;
|
326 |
}
|
@@ -335,7 +339,8 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
335 |
*
|
336 |
* @return array
|
337 |
*/
|
338 |
-
private function buildOrGetDatauriImage(
|
|
|
339 |
/**
|
340 |
* TODO/FIXME: document the required return array format, or better yet,
|
341 |
* use a string, since we don't really need an array for this. That would, however,
|
@@ -343,27 +348,27 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
343 |
*/
|
344 |
|
345 |
// Allows short-circuiting datauri generation for an image.
|
346 |
-
$result = apply_filters(
|
347 |
-
if
|
348 |
-
if
|
349 |
return $result;
|
350 |
}
|
351 |
}
|
352 |
|
353 |
-
$hash
|
354 |
-
$check = new WMAC_PluginCache(
|
355 |
-
if
|
356 |
// we have the base64 image in cache.
|
357 |
$headAndData = $check->retrieve();
|
358 |
-
$_base64data = explode(
|
359 |
-
$base64data
|
360 |
-
unset(
|
361 |
} else {
|
362 |
// It's an image and we don't have it in cache, get the type by extension.
|
363 |
-
$exploded_path = explode(
|
364 |
-
$type
|
365 |
|
366 |
-
switch
|
367 |
case 'jpg':
|
368 |
case 'jpeg':
|
369 |
$dataurihead = 'data:image/jpeg;base64,';
|
@@ -385,15 +390,15 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
385 |
}
|
386 |
|
387 |
// Encode the data.
|
388 |
-
$base64data
|
389 |
$headAndData = $dataurihead . $base64data;
|
390 |
|
391 |
// Save in cache.
|
392 |
-
$check->cache(
|
393 |
}
|
394 |
-
unset(
|
395 |
|
396 |
-
return [
|
397 |
}
|
398 |
|
399 |
/**
|
@@ -405,12 +410,13 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
405 |
*
|
406 |
* @return string
|
407 |
*/
|
408 |
-
protected static function replaceLongestMatchesFirst(
|
409 |
-
|
|
|
410 |
// Sort the replacements array by key length in desc order (so that the longest strings are replaced first).
|
411 |
-
$keys = array_map(
|
412 |
-
array_multisort(
|
413 |
-
$string = str_replace(
|
414 |
}
|
415 |
|
416 |
return $string;
|
@@ -424,21 +430,22 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
424 |
*
|
425 |
* @return string
|
426 |
*/
|
427 |
-
public function replaceUrls(
|
|
|
428 |
$replacements = [];
|
429 |
|
430 |
-
preg_match_all(
|
431 |
-
if
|
432 |
-
foreach
|
433 |
// Removes quotes and other cruft.
|
434 |
-
$url = trim(
|
435 |
|
436 |
// Prepare replacements array.
|
437 |
-
$replacements[
|
438 |
}
|
439 |
}
|
440 |
|
441 |
-
$code = self::replaceLongestMatchesFirst(
|
442 |
|
443 |
return $code;
|
444 |
}
|
@@ -450,18 +457,19 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
450 |
*
|
451 |
* @return string
|
452 |
*/
|
453 |
-
public function hideFontface(
|
|
|
454 |
// Proceed only if @font-face declarations exist within $code.
|
455 |
-
preg_match_all(
|
456 |
-
if
|
457 |
|
458 |
-
foreach
|
459 |
// Keep original match so we can search/replace it.
|
460 |
$match_search = $full_match;
|
461 |
|
462 |
// Replace declaration with its base64 encoded string.
|
463 |
-
$replacement = self::buildMarker(
|
464 |
-
$code
|
465 |
}
|
466 |
}
|
467 |
|
@@ -476,8 +484,9 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
476 |
*
|
477 |
* @return string
|
478 |
*/
|
479 |
-
public function restoreFontface(
|
480 |
-
|
|
|
481 |
}
|
482 |
|
483 |
/**
|
@@ -487,9 +496,10 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
487 |
*
|
488 |
* @return string
|
489 |
*/
|
490 |
-
public function rewriteAssets(
|
|
|
491 |
// Handle @font-face rules by hiding and processing them separately.
|
492 |
-
$code = $this->hideFontface(
|
493 |
|
494 |
/**
|
495 |
* TODO/FIXME:
|
@@ -503,43 +513,43 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
503 |
|
504 |
// Re-write (and/or inline) URLs
|
505 |
$url_src_matches = [];
|
506 |
-
$imgreplace
|
507 |
// Matches and captures anything specified within the literal `url()` and excludes those containing data: URIs.
|
508 |
-
preg_match_all(
|
509 |
-
if
|
510 |
-
foreach
|
511 |
// Removes quotes and other cruft.
|
512 |
-
$url = trim(
|
513 |
|
514 |
// If datauri inlining is turned on, do it.
|
515 |
-
if
|
516 |
$iurl = $url;
|
517 |
-
if
|
518 |
-
$iurl = strtok(
|
519 |
}
|
520 |
|
521 |
-
$ipath = $this->getpath(
|
522 |
|
523 |
-
$excluded = $this->checkDatauriExcludeList(
|
524 |
-
if
|
525 |
-
$is_datauri_candidate = $this->isDatauriCandidate(
|
526 |
-
if
|
527 |
-
$datauri = $this->buildOrGetDatauriImage(
|
528 |
//$base64data = $datauri['base64data'];
|
529 |
// Add it to the list for replacement.
|
530 |
-
$imgreplace[
|
531 |
}
|
532 |
}
|
533 |
}
|
534 |
|
535 |
-
$imgreplace[
|
536 |
}
|
537 |
}
|
538 |
|
539 |
-
$code = self::replaceLongestMatchesFirst(
|
540 |
|
541 |
// Replace back font-face markers with actual font-face declarations.
|
542 |
-
$code = $this->restoreFontface(
|
543 |
|
544 |
return $code;
|
545 |
}
|
@@ -549,30 +559,31 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
549 |
*
|
550 |
* @return bool
|
551 |
*/
|
552 |
-
public function minify()
|
553 |
-
|
554 |
-
|
555 |
-
|
|
|
556 |
// <style>.
|
557 |
-
$css
|
558 |
-
$css
|
559 |
-
$tmpstyle = apply_filters(
|
560 |
-
if
|
561 |
-
$css
|
562 |
$this->alreadyminified = true;
|
563 |
}
|
564 |
} else {
|
565 |
// <link>
|
566 |
-
if
|
567 |
-
$cssPath
|
568 |
-
$css
|
569 |
-
$css
|
570 |
-
$tmpstyle = apply_filters(
|
571 |
-
if
|
572 |
-
$css
|
573 |
$this->alreadyminified = true;
|
574 |
-
} else if
|
575 |
-
$css = self::buildInjectlaterMarker(
|
576 |
}
|
577 |
} else {
|
578 |
// Couldn't read CSS. Maybe getpath isn't working?
|
@@ -580,131 +591,131 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
580 |
}
|
581 |
}
|
582 |
|
583 |
-
foreach
|
584 |
-
if
|
585 |
-
if
|
586 |
-
$this->csscode[
|
587 |
}
|
588 |
-
$this->csscode[
|
589 |
}
|
590 |
}
|
591 |
}
|
592 |
|
593 |
// Check for duplicate code.
|
594 |
$md5list = [];
|
595 |
-
$tmpcss
|
596 |
-
foreach
|
597 |
-
$md5sum
|
598 |
$medianame = $media;
|
599 |
-
foreach
|
600 |
// If same code.
|
601 |
-
if
|
602 |
// Add the merged code.
|
603 |
-
$medianame
|
604 |
-
$this->csscode[
|
605 |
-
$md5list[
|
606 |
-
unset(
|
607 |
}
|
608 |
}
|
609 |
-
$md5list[
|
610 |
}
|
611 |
-
unset(
|
612 |
|
613 |
// Manage @imports, while is for recursive import management.
|
614 |
-
foreach
|
615 |
// Flag to trigger import reconstitution and var to hold external imports.
|
616 |
-
$fiximports
|
617 |
$external_imports = '';
|
618 |
|
619 |
// remove comments to avoid importing commented-out imports.
|
620 |
-
$thiscss_nocomments = preg_replace(
|
621 |
-
while
|
622 |
-
foreach
|
623 |
-
if
|
624 |
-
$thiscss
|
625 |
$import_ok = true;
|
626 |
} else {
|
627 |
-
$url
|
628 |
-
$path
|
629 |
$import_ok = false;
|
630 |
-
if
|
631 |
-
$code
|
632 |
-
$code
|
633 |
-
$tmpstyle = apply_filters(
|
634 |
-
if
|
635 |
-
$code
|
636 |
$this->alreadyminified = true;
|
637 |
-
} else if
|
638 |
-
$code = self::buildInjectlaterMarker(
|
639 |
}
|
640 |
|
641 |
-
if
|
642 |
-
$tmp_thiscss = preg_replace(
|
643 |
-
if
|
644 |
-
$thiscss
|
645 |
$import_ok = true;
|
646 |
-
unset(
|
647 |
}
|
648 |
}
|
649 |
-
unset(
|
650 |
}
|
651 |
}
|
652 |
-
if
|
653 |
// External imports and general fall-back.
|
654 |
$external_imports .= $import;
|
655 |
|
656 |
-
$thiscss
|
657 |
$fiximports = true;
|
658 |
}
|
659 |
}
|
660 |
-
$thiscss = preg_replace(
|
661 |
-
$thiscss = preg_replace(
|
662 |
|
663 |
// and update $thiscss_nocomments before going into next iteration in while loop.
|
664 |
-
$thiscss_nocomments = preg_replace(
|
665 |
}
|
666 |
-
unset(
|
667 |
|
668 |
// Add external imports to top of aggregated CSS.
|
669 |
-
if
|
670 |
$thiscss = $external_imports . $thiscss;
|
671 |
}
|
672 |
}
|
673 |
-
unset(
|
674 |
|
675 |
// $this->csscode has all the uncompressed code now.
|
676 |
-
foreach
|
677 |
// Check for already-minified code.
|
678 |
-
$hash = md5(
|
679 |
-
do_action(
|
680 |
-
$ccheck = new WMAC_PluginCache(
|
681 |
-
if
|
682 |
-
$code
|
683 |
-
$this->hashmap[
|
684 |
continue;
|
685 |
}
|
686 |
-
unset(
|
687 |
|
688 |
// Rewrite and/or inline referenced assets.
|
689 |
-
$code = $this->rewriteAssets(
|
690 |
|
691 |
// Minify.
|
692 |
-
$code = $this->runMinifierOn(
|
693 |
|
694 |
// Bring back INJECTLATER stuff.
|
695 |
-
$code = $this->injectMinified(
|
696 |
|
697 |
// Filter results.
|
698 |
-
$tmp_code = apply_filters(
|
699 |
-
if
|
700 |
$code = $tmp_code;
|
701 |
-
unset(
|
702 |
}
|
703 |
|
704 |
-
$this->hashmap[
|
705 |
}
|
706 |
|
707 |
-
unset(
|
708 |
|
709 |
return true;
|
710 |
}
|
@@ -714,17 +725,18 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
714 |
*
|
715 |
* @return string
|
716 |
*/
|
717 |
-
public function runMinifierOn(
|
718 |
-
|
719 |
-
|
|
|
720 |
|
721 |
-
if
|
722 |
-
$cssmin
|
723 |
-
$tmp_code = trim(
|
724 |
|
725 |
-
if
|
726 |
$code = $tmp_code;
|
727 |
-
unset(
|
728 |
}
|
729 |
}
|
730 |
}
|
@@ -735,16 +747,17 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
735 |
/**
|
736 |
* Caches the CSS in uncompressed, deflated and gzipped form.
|
737 |
*/
|
738 |
-
public function cache()
|
|
|
739 |
// CSS cache.
|
740 |
-
foreach
|
741 |
-
$md5
|
742 |
-
$cache = new WMAC_PluginCache(
|
743 |
-
if
|
744 |
// Cache our code.
|
745 |
-
$cache->cache(
|
746 |
}
|
747 |
-
$this->url[
|
748 |
}
|
749 |
}
|
750 |
|
@@ -753,73 +766,74 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
753 |
*
|
754 |
* @return string
|
755 |
*/
|
756 |
-
public function getContent()
|
|
|
757 |
// restore IE hacks.
|
758 |
-
$this->content = $this->restoreIehacks(
|
759 |
|
760 |
// restore comments.
|
761 |
-
$this->content = $this->restoreComments(
|
762 |
|
763 |
// restore (no)script.
|
764 |
-
$this->content = $this->restoreMarkedContent(
|
765 |
|
766 |
// Restore noptimize.
|
767 |
-
$this->content = $this->restoreNoptimize(
|
768 |
|
769 |
-
$preloadCssBlock
|
770 |
$noScriptCssBlock = '';
|
771 |
|
772 |
// Restore the full content.
|
773 |
-
if
|
774 |
-
$this->content
|
775 |
$this->restofcontent = '';
|
776 |
}
|
777 |
|
778 |
// Inject the new stylesheets.
|
779 |
-
$replaceTag = [
|
780 |
-
$replaceTag = apply_filters(
|
781 |
|
782 |
-
if
|
783 |
-
foreach
|
784 |
-
$this->injectInHtml(
|
785 |
}
|
786 |
} else {
|
787 |
-
if
|
788 |
-
$preloadCssBlock
|
789 |
$noScriptCssBlock = "<noscript id=\"aonoscrcss\">";
|
790 |
}
|
791 |
|
792 |
-
foreach
|
793 |
// Add the stylesheet either deferred (import at bottom) or normal links in head.
|
794 |
-
if
|
795 |
$preloadOnLoad = $this->getAoCssPreloadOnload();
|
796 |
|
797 |
-
$preloadCssBlock
|
798 |
$noScriptCssBlock .= '<link type="text/css" media="' . $media . '" href="' . $url . '" rel="stylesheet" />';
|
799 |
} else {
|
800 |
-
if
|
801 |
-
$this->injectInHtml(
|
802 |
-
} else if
|
803 |
-
$this->injectInHtml(
|
804 |
}
|
805 |
}
|
806 |
}
|
807 |
|
808 |
-
if
|
809 |
$preload_polyfill = $this->getAoCssPreloadPolyfill();
|
810 |
$noScriptCssBlock .= '</noscript>';
|
811 |
-
$this->injectInHtml(
|
812 |
|
813 |
// Adds preload polyfill at end of body tag.
|
814 |
-
$this->injectInHtml(
|
815 |
'</body>',
|
816 |
'before'
|
817 |
-
]
|
818 |
}
|
819 |
}
|
820 |
|
821 |
-
if
|
822 |
-
$this->injectInHtml(
|
823 |
}
|
824 |
|
825 |
// Return the modified stylesheet.
|
@@ -832,44 +846,45 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
832 |
*
|
833 |
* @return mixed|string
|
834 |
*/
|
835 |
-
static function fixUrls(
|
|
|
836 |
// Switch all imports to the url() syntax.
|
837 |
-
$code = preg_replace(
|
838 |
|
839 |
-
if
|
840 |
-
$file = str_replace(
|
841 |
/**
|
842 |
* rollback as per https://github.com/futtta/autoptimize/issues/94
|
843 |
* $file = str_replace( WMAC_WP_CONTENT_NAME, '', $file );
|
844 |
*/
|
845 |
-
$dir = dirname(
|
846 |
|
847 |
/**
|
848 |
* $dir should not contain backslashes, since it's used to replace
|
849 |
* urls, but it can contain them when running on Windows because
|
850 |
* fixUrls() is sometimes called with `ABSPATH . 'index.php'`
|
851 |
*/
|
852 |
-
$dir = str_replace(
|
853 |
-
unset(
|
854 |
|
855 |
$replace = [];
|
856 |
-
foreach
|
857 |
// Remove quotes.
|
858 |
-
$url
|
859 |
-
$noQurl = trim(
|
860 |
-
if
|
861 |
$removedQuotes = true;
|
862 |
} else {
|
863 |
$removedQuotes = false;
|
864 |
}
|
865 |
|
866 |
-
if
|
867 |
continue;
|
868 |
}
|
869 |
|
870 |
$url = $noQurl;
|
871 |
|
872 |
-
if
|
873 |
// URL is protocol-relative, host-relative or something we don't touch.
|
874 |
continue;
|
875 |
} else {
|
@@ -878,26 +893,26 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
878 |
* rollback as per https://github.com/futtta/autoptimize/issues/94
|
879 |
* $newurl = preg_replace( '/https?:/', '', str_replace( ' ', '%20', WMAC_PluginMain::getContentUrl() . str_replace( '//', '/', $dir . '/' . $url ) ) );
|
880 |
*/
|
881 |
-
$newurl = preg_replace(
|
882 |
-
$newurl = apply_filters(
|
883 |
|
884 |
/**
|
885 |
* Hash the url + whatever was behind potentially for replacement
|
886 |
* We must do this, or different css classes referencing the same bg image (but
|
887 |
* different parts of it, say, in sprites and such) loose their stuff...
|
888 |
*/
|
889 |
-
$hash = md5(
|
890 |
-
$code = str_replace(
|
891 |
|
892 |
-
if
|
893 |
-
$replace[
|
894 |
} else {
|
895 |
-
$replace[
|
896 |
}
|
897 |
}
|
898 |
}
|
899 |
|
900 |
-
$code = self::replaceLongestMatchesFirst(
|
901 |
}
|
902 |
|
903 |
return $code;
|
@@ -908,14 +923,15 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
908 |
*
|
909 |
* @return bool
|
910 |
*/
|
911 |
-
private function isMovable(
|
912 |
-
|
|
|
913 |
return false;
|
914 |
}
|
915 |
|
916 |
-
if
|
917 |
-
foreach
|
918 |
-
if
|
919 |
return true;
|
920 |
}
|
921 |
}
|
@@ -923,9 +939,9 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
923 |
// no match with whitelist.
|
924 |
return false;
|
925 |
} else {
|
926 |
-
if
|
927 |
-
foreach
|
928 |
-
if
|
929 |
// Matched something.
|
930 |
return false;
|
931 |
}
|
@@ -943,21 +959,19 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
943 |
*
|
944 |
* @return bool
|
945 |
*/
|
946 |
-
private
|
947 |
-
|
948 |
-
$
|
949 |
-
|
950 |
-
$consider_minified_array = apply_filters( 'wmac_filter_css_consider_minified', false, $cssPath );
|
951 |
-
if ( true !== $this->inject_min_late ) {
|
952 |
// late-inject turned off.
|
953 |
return false;
|
954 |
-
} else if
|
955 |
// file not minified based on filename & filter.
|
956 |
return false;
|
957 |
-
} else if
|
958 |
// can't late-inject files with imports as those need to be aggregated.
|
959 |
return false;
|
960 |
-
} else if
|
961 |
// don't late-inject CSS with images if image inlining is on.
|
962 |
return false;
|
963 |
} else {
|
@@ -975,34 +989,32 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
975 |
*
|
976 |
* @return bool|string Url pointing to the minified css file or false.
|
977 |
*/
|
978 |
-
public
|
979 |
-
|
980 |
-
$
|
981 |
-
) {
|
982 |
-
$contents = $this->prepareMinifySingle( $filepath );
|
983 |
|
984 |
-
if
|
985 |
return false;
|
986 |
}
|
987 |
|
988 |
// Check cache.
|
989 |
-
$hash
|
990 |
-
$cache = new WMAC_PluginCache(
|
991 |
|
992 |
// If not in cache already, minify...
|
993 |
-
if
|
994 |
// Fixurls...
|
995 |
-
$contents = self::fixUrls(
|
996 |
// replace any referenced assets if needed...
|
997 |
-
$contents = $this->replaceUrls(
|
998 |
// Now minify...
|
999 |
-
$cssmin
|
1000 |
-
$contents = trim(
|
1001 |
// Store in cache.
|
1002 |
-
$cache->cache(
|
1003 |
}
|
1004 |
|
1005 |
-
$url = $this->buildMinifySingleUrl(
|
1006 |
|
1007 |
return $url;
|
1008 |
}
|
@@ -1012,9 +1024,9 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
1012 |
*
|
1013 |
* @return string
|
1014 |
*/
|
1015 |
-
public
|
1016 |
-
|
1017 |
-
$preload_onload = apply_filters(
|
1018 |
|
1019 |
return $preload_onload;
|
1020 |
}
|
@@ -1024,9 +1036,9 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
1024 |
*
|
1025 |
* @return string
|
1026 |
*/
|
1027 |
-
public
|
1028 |
-
|
1029 |
-
$preload_poly = apply_filters(
|
1030 |
|
1031 |
return $preload_poly;
|
1032 |
}
|
@@ -1036,26 +1048,24 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
1036 |
*
|
1037 |
* @return bool
|
1038 |
*/
|
1039 |
-
public
|
1040 |
-
|
1041 |
return $this->aggregate;
|
1042 |
}
|
1043 |
|
1044 |
/**
|
1045 |
* @return array
|
1046 |
*/
|
1047 |
-
public
|
1048 |
-
|
1049 |
return $this->options;
|
1050 |
}
|
1051 |
|
1052 |
/**
|
1053 |
* @param $options
|
1054 |
*/
|
1055 |
-
public
|
1056 |
-
|
1057 |
-
$options
|
1058 |
-
) {
|
1059 |
$this->options = $options;
|
1060 |
}
|
1061 |
|
@@ -1063,12 +1073,10 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
1063 |
* @param $name
|
1064 |
* @param $value
|
1065 |
*/
|
1066 |
-
public
|
1067 |
-
|
1068 |
-
$name
|
1069 |
-
|
1070 |
-
$this->options[ $name ] = $value;
|
1071 |
-
$this->$name = $value;
|
1072 |
}
|
1073 |
|
1074 |
/**
|
@@ -1076,10 +1084,8 @@ class WMAC_PluginStyles extends WMAC_PluginBase {
|
|
1076 |
*
|
1077 |
* @return mixed
|
1078 |
*/
|
1079 |
-
public
|
1080 |
-
|
1081 |
-
$name
|
1082 |
-
) {
|
1083 |
-
return $this->options[ $name ];
|
1084 |
}
|
1085 |
}
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
|
10 |
+
if( !defined('ABSPATH') ) {
|
11 |
exit;
|
12 |
}
|
13 |
|
64 |
*
|
65 |
* @return bool
|
66 |
*/
|
67 |
+
public function read($options)
|
68 |
+
{
|
69 |
+
$noptimizeCSS = apply_filters('wmac_filter_css_noptimize', false, $this->content);
|
70 |
+
if( $noptimizeCSS ) {
|
71 |
return false;
|
72 |
}
|
73 |
|
74 |
+
$whitelistCSS = apply_filters('wmac_filter_css_whitelist', '', $this->content);
|
75 |
+
if( !empty($whitelistCSS) ) {
|
76 |
+
$this->whitelist = array_filter(array_map('trim', explode(',', $whitelistCSS)));
|
77 |
}
|
78 |
|
79 |
+
$removableCSS = apply_filters('wmac_filter_css_removables', '');
|
80 |
+
if( !empty($removableCSS) ) {
|
81 |
+
$this->cssremovables = array_filter(array_map('trim', explode(',', $removableCSS)));
|
82 |
}
|
83 |
|
84 |
+
$this->cssinlinesize = apply_filters('wmac_filter_css_inlinesize', 256);
|
85 |
|
86 |
// filter to "late inject minified CSS", default to true for now (it is faster).
|
87 |
+
$this->inject_min_late = apply_filters('wmac_filter_css_inject_min_late', true);
|
88 |
|
89 |
// Remove everything that's not the header.
|
90 |
/*if ( apply_filters( 'wmac_filter_css_justhead', $options['justhead'] ) ) {
|
94 |
}*/
|
95 |
|
96 |
// Determine whether we're doing CSS-files aggregation or not.
|
97 |
+
if( isset($options['aggregate']) && !$options['aggregate'] ) {
|
98 |
$this->aggregate = false;
|
99 |
}
|
100 |
// Returning true for "dontaggregate" turns off aggregation.
|
101 |
+
if( $this->aggregate && apply_filters('wmac_filter_css_dontaggregate', false) ) {
|
102 |
$this->aggregate = false;
|
103 |
}
|
104 |
|
105 |
// include inline?
|
106 |
+
if( apply_filters('wmac_css_include_inline', $options['include_inline']) ) {
|
107 |
$this->include_inline = true;
|
108 |
}
|
109 |
|
110 |
// List of CSS strings which are excluded from autoptimization.
|
111 |
+
$excludeCSS = apply_filters('wmac_filter_css_exclude', $options['css_exclude'], $this->content);
|
112 |
+
if( '' !== $excludeCSS ) {
|
113 |
+
$this->dontmove = array_filter(array_map('trim', explode(',', $excludeCSS)));
|
114 |
} else {
|
115 |
$this->dontmove = [];
|
116 |
}
|
121 |
// Should we defer css?
|
122 |
// value: true / false.
|
123 |
$this->defer = $options['defer'];
|
124 |
+
$this->defer = apply_filters('wmac_filter_css_defer', $this->defer, $this->content);
|
125 |
|
126 |
// Should we inline while deferring?
|
127 |
// value: inlined CSS.
|
130 |
// Should we inline?
|
131 |
// value: true / false.
|
132 |
$this->inline = $options['inline'];
|
133 |
+
$this->inline = apply_filters('wmac_filter_css_inline', $this->inline, $this->content);
|
134 |
|
135 |
// Store data: URIs setting for later use.
|
136 |
$this->datauris = $options['datauris'];
|
137 |
|
138 |
// noptimize me.
|
139 |
+
$this->content = $this->hideNoptimize($this->content);
|
140 |
|
141 |
// Exclude (no)script, as those may contain CSS which should be left as is.
|
142 |
+
$this->content = $this->replaceContentsWithMarkerIfExists('SCRIPT', '<script', '#<(?:no)?script.*?<\/(?:no)?script>#is', $this->content);
|
143 |
|
144 |
// Save IE hacks.
|
145 |
+
$this->content = $this->hideIehacks($this->content);
|
146 |
|
147 |
// Hide HTML comments.
|
148 |
+
$this->content = $this->hideComments($this->content);
|
149 |
|
150 |
// Get <style> and <link>.
|
151 |
+
if( preg_match_all('#(<style[^>]*>.*</style>)|(<link[^>]*stylesheet[^>]*>)#Usmi', $this->content, $matches) ) {
|
152 |
|
153 |
+
foreach($matches[0] as $tag) {
|
154 |
+
if( $this->isremovable($tag, $this->cssremovables) ) {
|
155 |
+
$this->content = str_replace($tag, '', $this->content);
|
156 |
+
} else if( $this->isMovable($tag) ) {
|
157 |
// Get the media.
|
158 |
+
if( false !== strpos($tag, 'media=') ) {
|
159 |
+
preg_match('#media=(?:"|\')([^>]*)(?:"|\')#Ui', $tag, $medias);
|
160 |
+
$medias = explode(',', $medias[1]);
|
161 |
+
$media = [];
|
162 |
+
foreach($medias as $elem) {
|
163 |
/* $media[] = current(explode(' ',trim($elem),2)); */
|
164 |
+
if( empty($elem) ) {
|
165 |
$elem = 'all';
|
166 |
}
|
167 |
|
169 |
}
|
170 |
} else {
|
171 |
// No media specified - applies to all.
|
172 |
+
$media = ['all'];
|
173 |
}
|
174 |
|
175 |
+
$media = apply_filters('wmac_filter_css_tagmedia', $media, $tag);
|
176 |
|
177 |
+
if( preg_match('#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source) ) {
|
178 |
// <link>.
|
179 |
+
$url = current(explode('?', $source[2], 2));
|
180 |
+
$path = $this->getpath($url);
|
181 |
|
182 |
+
if( false !== $path && preg_match('#\.css$#', $path) ) {
|
183 |
// Good link.
|
184 |
+
$this->css[] = [$media, $path];
|
185 |
} else {
|
186 |
// Link is dynamic (.php etc).
|
187 |
$tag = '';
|
188 |
}
|
189 |
} else {
|
190 |
// Inline css in style tags can be wrapped in comment tags, so restore comments.
|
191 |
+
$tag = $this->restoreComments($tag);
|
192 |
+
preg_match('#<style.*>(.*)</style>#Usmi', $tag, $code);
|
193 |
|
194 |
// And re-hide them to be able to to the removal based on tag.
|
195 |
+
$tag = $this->hideComments($tag);
|
196 |
|
197 |
+
if( $this->include_inline ) {
|
198 |
+
$code = preg_replace('#^.*<!\[CDATA\[(?:\s*\*/)?(.*)(?://|/\*)\s*?\]\]>.*$#sm', '$1', $code[1]);
|
199 |
+
$this->css[] = [$media, 'INLINE;' . $code];
|
200 |
} else {
|
201 |
$tag = '';
|
202 |
}
|
203 |
}
|
204 |
|
205 |
// Remove the original style tag.
|
206 |
+
$this->content = str_replace($tag, '', $this->content);
|
207 |
} else {
|
208 |
// Excluded CSS, minify if getpath and filter says so...
|
209 |
+
if( preg_match('#<link.*href=("|\')(.*)("|\')#Usmi', $tag, $source) ) {
|
210 |
+
$exploded_url = explode('?', $source[2], 2);
|
211 |
+
$url = $exploded_url[0];
|
212 |
+
$path = $this->getpath($url);
|
213 |
+
|
214 |
+
if( $path && apply_filters('wmac_filter_css_minify_excluded', true, $url) ) {
|
215 |
+
$minified_url = $this->minifySingle($path);
|
216 |
+
if( !empty($minified_url) ) {
|
217 |
// Replace orig URL with cached minified URL.
|
218 |
+
$new_tag = str_replace($url, $minified_url, $tag);
|
219 |
} else {
|
220 |
$new_tag = $tag;
|
221 |
}
|
222 |
|
223 |
// Removes querystring from URL.
|
224 |
+
if( !empty($exploded_url[1]) ) {
|
225 |
+
$new_tag = str_replace('?' . $exploded_url[1], '', $new_tag);
|
226 |
}
|
227 |
|
228 |
// Defer single CSS if "inline & defer" is on.
|
229 |
+
if( $this->defer ) {
|
230 |
// Get/ set (via filter) the JS to be triggers onload of the preloaded CSS.
|
231 |
+
$_preload_onload = apply_filters('wmac_filter_css_preload_onload', "this.onload=null;this.rel='stylesheet'", $url);
|
232 |
// Adapt original <link> element for CSS to be preloaded and add <noscript>-version for fallback.
|
233 |
+
$new_tag = '<noscript>' . $new_tag . '</noscript>' . str_replace([
|
234 |
"rel='stylesheet'",
|
235 |
'rel="stylesheet"',
|
236 |
+
], "rel='preload' as='style' onload=\"" . $_preload_onload . "\"", $new_tag);
|
237 |
}
|
238 |
|
239 |
// And replace!
|
240 |
+
$this->content = str_replace($tag, $new_tag, $this->content);
|
241 |
}
|
242 |
}
|
243 |
}
|
258 |
*
|
259 |
* @return boolean
|
260 |
*/
|
261 |
+
private function isDatauriCandidate($path)
|
262 |
+
{
|
263 |
// Call only once since it's called from a loop.
|
264 |
static $max_size = null;
|
265 |
+
if( null === $max_size ) {
|
266 |
$max_size = $this->getDatauriMaxsize();
|
267 |
}
|
268 |
|
269 |
+
if( $path && preg_match('#\.(jpe?g|png|gif|webp|bmp)$#i', $path) && file_exists($path) && is_readable($path) && filesize($path) <= $max_size ) {
|
270 |
|
271 |
// Seems we have a candidate.
|
272 |
$is_candidate = true;
|
273 |
} else {
|
274 |
// Filter allows overriding default decision (which checks for local file existence).
|
275 |
+
$is_candidate = apply_filters('wmac_filter_css_is_datauri_candidate', false, $path);
|
276 |
}
|
277 |
|
278 |
return $is_candidate;
|
285 |
*
|
286 |
* @return mixed
|
287 |
*/
|
288 |
+
private function getDatauriMaxsize()
|
289 |
+
{
|
290 |
static $max_size = null;
|
291 |
|
292 |
/**
|
297 |
* of thing you're probably better of building assets completely
|
298 |
* outside of WordPress anyway.
|
299 |
*/
|
300 |
+
if( null === $max_size ) {
|
301 |
+
$max_size = (int)apply_filters('wmac_filter_css_datauri_maxsize', 4096);
|
302 |
}
|
303 |
|
304 |
return $max_size;
|
309 |
*
|
310 |
* @return bool
|
311 |
*/
|
312 |
+
private function checkDatauriExcludeList($url)
|
313 |
+
{
|
314 |
static $exclude_list = null;
|
315 |
$no_datauris = [];
|
316 |
|
317 |
// Again, skip doing certain stuff repeatedly when loop-called.
|
318 |
+
if( null === $exclude_list ) {
|
319 |
+
$exclude_list = apply_filters('wmac_filter_css_datauri_exclude', '');
|
320 |
+
$no_datauris = array_filter(array_map('trim', explode(',', $exclude_list)));
|
321 |
}
|
322 |
|
323 |
$matched = false;
|
324 |
|
325 |
+
if( !empty($exclude_list) ) {
|
326 |
+
foreach($no_datauris as $no_datauri) {
|
327 |
+
if( false !== strpos($url, $no_datauri) ) {
|
328 |
$matched = true;
|
329 |
break;
|
330 |
}
|
339 |
*
|
340 |
* @return array
|
341 |
*/
|
342 |
+
private function buildOrGetDatauriImage($path)
|
343 |
+
{
|
344 |
/**
|
345 |
* TODO/FIXME: document the required return array format, or better yet,
|
346 |
* use a string, since we don't really need an array for this. That would, however,
|
348 |
*/
|
349 |
|
350 |
// Allows short-circuiting datauri generation for an image.
|
351 |
+
$result = apply_filters('wmac_filter_css_datauri_image', [], $path);
|
352 |
+
if( !empty($result) ) {
|
353 |
+
if( is_array($result) && isset($result['full']) && isset($result['base64data']) ) {
|
354 |
return $result;
|
355 |
}
|
356 |
}
|
357 |
|
358 |
+
$hash = md5($path);
|
359 |
+
$check = new WMAC_PluginCache($hash, 'img');
|
360 |
+
if( $check->check() ) {
|
361 |
// we have the base64 image in cache.
|
362 |
$headAndData = $check->retrieve();
|
363 |
+
$_base64data = explode(';base64,', $headAndData);
|
364 |
+
$base64data = $_base64data[1];
|
365 |
+
unset($_base64data);
|
366 |
} else {
|
367 |
// It's an image and we don't have it in cache, get the type by extension.
|
368 |
+
$exploded_path = explode('.', $path);
|
369 |
+
$type = end($exploded_path);
|
370 |
|
371 |
+
switch( $type ) {
|
372 |
case 'jpg':
|
373 |
case 'jpeg':
|
374 |
$dataurihead = 'data:image/jpeg;base64,';
|
390 |
}
|
391 |
|
392 |
// Encode the data.
|
393 |
+
$base64data = base64_encode(file_get_contents($path));
|
394 |
$headAndData = $dataurihead . $base64data;
|
395 |
|
396 |
// Save in cache.
|
397 |
+
$check->cache($headAndData, 'text/plain');
|
398 |
}
|
399 |
+
unset($check);
|
400 |
|
401 |
+
return ['full' => $headAndData, 'base64data' => $base64data];
|
402 |
}
|
403 |
|
404 |
/**
|
410 |
*
|
411 |
* @return string
|
412 |
*/
|
413 |
+
protected static function replaceLongestMatchesFirst($string, $replacements = [])
|
414 |
+
{
|
415 |
+
if( !empty($replacements) ) {
|
416 |
// Sort the replacements array by key length in desc order (so that the longest strings are replaced first).
|
417 |
+
$keys = array_map('strlen', array_keys($replacements));
|
418 |
+
array_multisort($keys, SORT_DESC, $replacements);
|
419 |
+
$string = str_replace(array_keys($replacements), array_values($replacements), $string);
|
420 |
}
|
421 |
|
422 |
return $string;
|
430 |
*
|
431 |
* @return string
|
432 |
*/
|
433 |
+
public function replaceUrls($code = '')
|
434 |
+
{
|
435 |
$replacements = [];
|
436 |
|
437 |
+
preg_match_all(self::ASSETS_REGEX, $code, $url_src_matches);
|
438 |
+
if( is_array($url_src_matches) && !empty($url_src_matches) ) {
|
439 |
+
foreach($url_src_matches[1] as $count => $original_url) {
|
440 |
// Removes quotes and other cruft.
|
441 |
+
$url = trim($original_url, " \t\n\r\0\x0B\"'");
|
442 |
|
443 |
// Prepare replacements array.
|
444 |
+
$replacements[$url_src_matches[1][$count]] = str_replace($original_url, $url, $url_src_matches[1][$count]);
|
445 |
}
|
446 |
}
|
447 |
|
448 |
+
$code = self::replaceLongestMatchesFirst($code, $replacements);
|
449 |
|
450 |
return $code;
|
451 |
}
|
457 |
*
|
458 |
* @return string
|
459 |
*/
|
460 |
+
public function hideFontface($code)
|
461 |
+
{
|
462 |
// Proceed only if @font-face declarations exist within $code.
|
463 |
+
preg_match_all(self::FONT_FACE_REGEX, $code, $fontfaces);
|
464 |
+
if( isset($fontfaces[0]) ) {
|
465 |
|
466 |
+
foreach($fontfaces[0] as $full_match) {
|
467 |
// Keep original match so we can search/replace it.
|
468 |
$match_search = $full_match;
|
469 |
|
470 |
// Replace declaration with its base64 encoded string.
|
471 |
+
$replacement = self::buildMarker('FONTFACE', $full_match);
|
472 |
+
$code = str_replace($match_search, $replacement, $code);
|
473 |
}
|
474 |
}
|
475 |
|
484 |
*
|
485 |
* @return string
|
486 |
*/
|
487 |
+
public function restoreFontface($code)
|
488 |
+
{
|
489 |
+
return $this->restoreMarkedContent('FONTFACE', $code);
|
490 |
}
|
491 |
|
492 |
/**
|
496 |
*
|
497 |
* @return string
|
498 |
*/
|
499 |
+
public function rewriteAssets($code)
|
500 |
+
{
|
501 |
// Handle @font-face rules by hiding and processing them separately.
|
502 |
+
$code = $this->hideFontface($code);
|
503 |
|
504 |
/**
|
505 |
* TODO/FIXME:
|
513 |
|
514 |
// Re-write (and/or inline) URLs
|
515 |
$url_src_matches = [];
|
516 |
+
$imgreplace = [];
|
517 |
// Matches and captures anything specified within the literal `url()` and excludes those containing data: URIs.
|
518 |
+
preg_match_all(self::ASSETS_REGEX, $code, $url_src_matches);
|
519 |
+
if( is_array($url_src_matches) && !empty($url_src_matches) ) {
|
520 |
+
foreach($url_src_matches[1] as $count => $original_url) {
|
521 |
// Removes quotes and other cruft.
|
522 |
+
$url = trim($original_url, " \t\n\r\0\x0B\"'");
|
523 |
|
524 |
// If datauri inlining is turned on, do it.
|
525 |
+
if( $this->datauris ) {
|
526 |
$iurl = $url;
|
527 |
+
if( false !== strpos($iurl, '?') ) {
|
528 |
+
$iurl = strtok($iurl, '?');
|
529 |
}
|
530 |
|
531 |
+
$ipath = $this->getpath($iurl);
|
532 |
|
533 |
+
$excluded = $this->checkDatauriExcludeList($ipath);
|
534 |
+
if( !$excluded ) {
|
535 |
+
$is_datauri_candidate = $this->isDatauriCandidate($ipath);
|
536 |
+
if( $is_datauri_candidate ) {
|
537 |
+
$datauri = $this->buildOrGetDatauriImage($ipath);
|
538 |
//$base64data = $datauri['base64data'];
|
539 |
// Add it to the list for replacement.
|
540 |
+
$imgreplace[$url_src_matches[1][$count]] = str_replace($original_url, $datauri['full'], $url_src_matches[1][$count]);
|
541 |
}
|
542 |
}
|
543 |
}
|
544 |
|
545 |
+
$imgreplace[$url_src_matches[1][$count]] = str_replace($original_url, $url, $url_src_matches[1][$count]);
|
546 |
}
|
547 |
}
|
548 |
|
549 |
+
$code = self::replaceLongestMatchesFirst($code, $imgreplace);
|
550 |
|
551 |
// Replace back font-face markers with actual font-face declarations.
|
552 |
+
$code = $this->restoreFontface($code);
|
553 |
|
554 |
return $code;
|
555 |
}
|
559 |
*
|
560 |
* @return bool
|
561 |
*/
|
562 |
+
public function minify()
|
563 |
+
{
|
564 |
+
foreach($this->css as $group) {
|
565 |
+
list($media, $css) = $group;
|
566 |
+
if( preg_match('#^INLINE;#', $css) ) {
|
567 |
// <style>.
|
568 |
+
$css = preg_replace('#^INLINE;#', '', $css);
|
569 |
+
$css = self::fixUrls(ABSPATH . 'index.php', $css); // ABSPATH already contains a trailing slash.
|
570 |
+
$tmpstyle = apply_filters('wmac_css_individual_style', $css, '');
|
571 |
+
if( has_filter('wmac_css_individual_style') && !empty($tmpstyle) ) {
|
572 |
+
$css = $tmpstyle;
|
573 |
$this->alreadyminified = true;
|
574 |
}
|
575 |
} else {
|
576 |
// <link>
|
577 |
+
if( false !== $css && file_exists($css) && is_readable($css) ) {
|
578 |
+
$cssPath = $css;
|
579 |
+
$css = self::fixUrls($cssPath, file_get_contents($cssPath));
|
580 |
+
$css = preg_replace('/\x{EF}\x{BB}\x{BF}/', '', $css);
|
581 |
+
$tmpstyle = apply_filters('wmac_css_individual_style', $css, $cssPath);
|
582 |
+
if( has_filter('wmac_css_individual_style') && !empty($tmpstyle) ) {
|
583 |
+
$css = $tmpstyle;
|
584 |
$this->alreadyminified = true;
|
585 |
+
} else if( $this->canInjectLate($cssPath, $css) ) {
|
586 |
+
$css = self::buildInjectlaterMarker($cssPath, md5($css));
|
587 |
}
|
588 |
} else {
|
589 |
// Couldn't read CSS. Maybe getpath isn't working?
|
591 |
}
|
592 |
}
|
593 |
|
594 |
+
foreach($media as $elem) {
|
595 |
+
if( !empty($css) ) {
|
596 |
+
if( !isset($this->csscode[$elem]) ) {
|
597 |
+
$this->csscode[$elem] = '';
|
598 |
}
|
599 |
+
$this->csscode[$elem] .= "\n/*FILESTART*/" . $css;
|
600 |
}
|
601 |
}
|
602 |
}
|
603 |
|
604 |
// Check for duplicate code.
|
605 |
$md5list = [];
|
606 |
+
$tmpcss = $this->csscode;
|
607 |
+
foreach($tmpcss as $media => $code) {
|
608 |
+
$md5sum = md5($code);
|
609 |
$medianame = $media;
|
610 |
+
foreach($md5list as $med => $sum) {
|
611 |
// If same code.
|
612 |
+
if( $sum === $md5sum ) {
|
613 |
// Add the merged code.
|
614 |
+
$medianame = $med . ', ' . $media;
|
615 |
+
$this->csscode[$medianame] = $code;
|
616 |
+
$md5list[$medianame] = $md5list[$med];
|
617 |
+
unset($this->csscode[$med], $this->csscode[$media], $md5list[$med]);
|
618 |
}
|
619 |
}
|
620 |
+
$md5list[$medianame] = $md5sum;
|
621 |
}
|
622 |
+
unset($tmpcss);
|
623 |
|
624 |
// Manage @imports, while is for recursive import management.
|
625 |
+
foreach($this->csscode as &$thiscss) {
|
626 |
// Flag to trigger import reconstitution and var to hold external imports.
|
627 |
+
$fiximports = false;
|
628 |
$external_imports = '';
|
629 |
|
630 |
// remove comments to avoid importing commented-out imports.
|
631 |
+
$thiscss_nocomments = preg_replace('#/\*.*\*/#Us', '', $thiscss);
|
632 |
+
while( preg_match_all('#@import +(?:url)?(?:(?:\((["\']?)(?:[^"\')]+)\1\)|(["\'])(?:[^"\']+)\2)(?:[^,;"\']+(?:,[^,;"\']+)*)?)(?:;)#mi', $thiscss_nocomments, $matches) ) {
|
633 |
+
foreach($matches[0] as $import) {
|
634 |
+
if( $this->isremovable($import, $this->cssremovables) ) {
|
635 |
+
$thiscss = str_replace($import, '', $thiscss);
|
636 |
$import_ok = true;
|
637 |
} else {
|
638 |
+
$url = trim(preg_replace('#^.*((?:https?:|ftp:)?//.*\.css).*$#', '$1', trim($import)), " \t\n\r\0\x0B\"'");
|
639 |
+
$path = $this->getpath($url);
|
640 |
$import_ok = false;
|
641 |
+
if( file_exists($path) && is_readable($path) ) {
|
642 |
+
$code = addcslashes(self::fixUrls($path, file_get_contents($path)), "\\");
|
643 |
+
$code = preg_replace('/\x{EF}\x{BB}\x{BF}/', '', $code);
|
644 |
+
$tmpstyle = apply_filters('wmac_css_individual_style', $code, '');
|
645 |
+
if( has_filter('wmac_css_individual_style') && !empty($tmpstyle) ) {
|
646 |
+
$code = $tmpstyle;
|
647 |
$this->alreadyminified = true;
|
648 |
+
} else if( $this->canInjectLate($path, $code) ) {
|
649 |
+
$code = self::buildInjectlaterMarker($path, md5($code));
|
650 |
}
|
651 |
|
652 |
+
if( !empty($code) ) {
|
653 |
+
$tmp_thiscss = preg_replace('#(/\*FILESTART\*/.*)' . preg_quote($import, '#') . '#Us', '/*FILESTART2*/' . $code . '$1', $thiscss);
|
654 |
+
if( !empty($tmp_thiscss) ) {
|
655 |
+
$thiscss = $tmp_thiscss;
|
656 |
$import_ok = true;
|
657 |
+
unset($tmp_thiscss);
|
658 |
}
|
659 |
}
|
660 |
+
unset($code);
|
661 |
}
|
662 |
}
|
663 |
+
if( !$import_ok ) {
|
664 |
// External imports and general fall-back.
|
665 |
$external_imports .= $import;
|
666 |
|
667 |
+
$thiscss = str_replace($import, '', $thiscss);
|
668 |
$fiximports = true;
|
669 |
}
|
670 |
}
|
671 |
+
$thiscss = preg_replace('#/\*FILESTART\*/#', '', $thiscss);
|
672 |
+
$thiscss = preg_replace('#/\*FILESTART2\*/#', '/*FILESTART*/', $thiscss);
|
673 |
|
674 |
// and update $thiscss_nocomments before going into next iteration in while loop.
|
675 |
+
$thiscss_nocomments = preg_replace('#/\*.*\*/#Us', '', $thiscss);
|
676 |
}
|
677 |
+
unset($thiscss_nocomments);
|
678 |
|
679 |
// Add external imports to top of aggregated CSS.
|
680 |
+
if( $fiximports ) {
|
681 |
$thiscss = $external_imports . $thiscss;
|
682 |
}
|
683 |
}
|
684 |
+
unset($thiscss);
|
685 |
|
686 |
// $this->csscode has all the uncompressed code now.
|
687 |
+
foreach($this->csscode as &$code) {
|
688 |
// Check for already-minified code.
|
689 |
+
$hash = md5($code);
|
690 |
+
do_action('wmac_action_css_hash', $hash);
|
691 |
+
$ccheck = new WMAC_PluginCache($hash, 'css');
|
692 |
+
if( $ccheck->check() ) {
|
693 |
+
$code = $ccheck->retrieve();
|
694 |
+
$this->hashmap[md5($code)] = $hash;
|
695 |
continue;
|
696 |
}
|
697 |
+
unset($ccheck);
|
698 |
|
699 |
// Rewrite and/or inline referenced assets.
|
700 |
+
$code = $this->rewriteAssets($code);
|
701 |
|
702 |
// Minify.
|
703 |
+
$code = $this->runMinifierOn($code);
|
704 |
|
705 |
// Bring back INJECTLATER stuff.
|
706 |
+
$code = $this->injectMinified($code);
|
707 |
|
708 |
// Filter results.
|
709 |
+
$tmp_code = apply_filters('wmac_css_after_minify', $code);
|
710 |
+
if( !empty($tmp_code) ) {
|
711 |
$code = $tmp_code;
|
712 |
+
unset($tmp_code);
|
713 |
}
|
714 |
|
715 |
+
$this->hashmap[md5($code)] = $hash;
|
716 |
}
|
717 |
|
718 |
+
unset($code);
|
719 |
|
720 |
return true;
|
721 |
}
|
725 |
*
|
726 |
* @return string
|
727 |
*/
|
728 |
+
public function runMinifierOn($code)
|
729 |
+
{
|
730 |
+
if( !$this->alreadyminified ) {
|
731 |
+
$do_minify = apply_filters('wmac_css_do_minify', true);
|
732 |
|
733 |
+
if( $do_minify ) {
|
734 |
+
$cssmin = new WMAC_PluginCSSmin();
|
735 |
+
$tmp_code = trim($cssmin->run($code));
|
736 |
|
737 |
+
if( !empty($tmp_code) ) {
|
738 |
$code = $tmp_code;
|
739 |
+
unset($tmp_code);
|
740 |
}
|
741 |
}
|
742 |
}
|
747 |
/**
|
748 |
* Caches the CSS in uncompressed, deflated and gzipped form.
|
749 |
*/
|
750 |
+
public function cache()
|
751 |
+
{
|
752 |
// CSS cache.
|
753 |
+
foreach($this->csscode as $media => $code) {
|
754 |
+
$md5 = $this->hashmap[md5($code)];
|
755 |
+
$cache = new WMAC_PluginCache($md5, 'css');
|
756 |
+
if( !$cache->check() ) {
|
757 |
// Cache our code.
|
758 |
+
$cache->cache($code, 'text/css');
|
759 |
}
|
760 |
+
$this->url[$media] = WMAC_PluginCache::getCacheUrl() . $cache->getname();
|
761 |
}
|
762 |
}
|
763 |
|
766 |
*
|
767 |
* @return string
|
768 |
*/
|
769 |
+
public function getContent()
|
770 |
+
{
|
771 |
// restore IE hacks.
|
772 |
+
$this->content = $this->restoreIehacks($this->content);
|
773 |
|
774 |
// restore comments.
|
775 |
+
$this->content = $this->restoreComments($this->content);
|
776 |
|
777 |
// restore (no)script.
|
778 |
+
$this->content = $this->restoreMarkedContent('SCRIPT', $this->content);
|
779 |
|
780 |
// Restore noptimize.
|
781 |
+
$this->content = $this->restoreNoptimize($this->content);
|
782 |
|
783 |
+
$preloadCssBlock = '';
|
784 |
$noScriptCssBlock = '';
|
785 |
|
786 |
// Restore the full content.
|
787 |
+
if( !empty($this->restofcontent) ) {
|
788 |
+
$this->content .= $this->restofcontent;
|
789 |
$this->restofcontent = '';
|
790 |
}
|
791 |
|
792 |
// Inject the new stylesheets.
|
793 |
+
$replaceTag = ['<title', 'before'];
|
794 |
+
$replaceTag = apply_filters('wmac_filter_css_replacetag', $replaceTag, $this->content);
|
795 |
|
796 |
+
if( $this->inline ) {
|
797 |
+
foreach($this->csscode as $media => $code) {
|
798 |
+
$this->injectInHtml('<style type="text/css" media="' . $media . '">' . $code . '</style>', $replaceTag);
|
799 |
}
|
800 |
} else {
|
801 |
+
if( $this->defer ) {
|
802 |
+
$preloadCssBlock = '';
|
803 |
$noScriptCssBlock = "<noscript id=\"aonoscrcss\">";
|
804 |
}
|
805 |
|
806 |
+
foreach($this->url as $media => $url) {
|
807 |
// Add the stylesheet either deferred (import at bottom) or normal links in head.
|
808 |
+
if( $this->defer ) {
|
809 |
$preloadOnLoad = $this->getAoCssPreloadOnload();
|
810 |
|
811 |
+
$preloadCssBlock .= '<link rel="preload" as="style" media="' . $media . '" href="' . $url . '" onload="' . $preloadOnLoad . '" />';
|
812 |
$noScriptCssBlock .= '<link type="text/css" media="' . $media . '" href="' . $url . '" rel="stylesheet" />';
|
813 |
} else {
|
814 |
+
if( strlen($this->csscode[$media]) > $this->cssinlinesize ) {
|
815 |
+
$this->injectInHtml('<link type="text/css" media="' . $media . '" href="' . $url . '" rel="stylesheet" />', $replaceTag);
|
816 |
+
} else if( strlen($this->csscode[$media]) > 0 ) {
|
817 |
+
$this->injectInHtml('<style type="text/css" media="' . $media . '">' . $this->csscode[$media] . '</style>', $replaceTag);
|
818 |
}
|
819 |
}
|
820 |
}
|
821 |
|
822 |
+
if( $this->defer ) {
|
823 |
$preload_polyfill = $this->getAoCssPreloadPolyfill();
|
824 |
$noScriptCssBlock .= '</noscript>';
|
825 |
+
$this->injectInHtml($preloadCssBlock . $noScriptCssBlock, $replaceTag);
|
826 |
|
827 |
// Adds preload polyfill at end of body tag.
|
828 |
+
$this->injectInHtml(apply_filters('wmac_css_preload_polyfill', $preload_polyfill), [
|
829 |
'</body>',
|
830 |
'before'
|
831 |
+
]);
|
832 |
}
|
833 |
}
|
834 |
|
835 |
+
if( !empty($this->css_critical_style) ) {
|
836 |
+
$this->injectInHtml("<style type='text/css'>{$this->css_critical_style}</style>", $replaceTag);
|
837 |
}
|
838 |
|
839 |
// Return the modified stylesheet.
|
846 |
*
|
847 |
* @return mixed|string
|
848 |
*/
|
849 |
+
static function fixUrls($file, $code)
|
850 |
+
{
|
851 |
// Switch all imports to the url() syntax.
|
852 |
+
$code = preg_replace('#@import ("|\')(.+?)\.css.*?("|\')#', '@import url("${2}.css")', $code);
|
853 |
|
854 |
+
if( preg_match_all(self::ASSETS_REGEX, $code, $matches) ) {
|
855 |
+
$file = str_replace(WMAC_ROOT_DIR, '/', $file);
|
856 |
/**
|
857 |
* rollback as per https://github.com/futtta/autoptimize/issues/94
|
858 |
* $file = str_replace( WMAC_WP_CONTENT_NAME, '', $file );
|
859 |
*/
|
860 |
+
$dir = dirname($file); // Like /themes/expound/css.
|
861 |
|
862 |
/**
|
863 |
* $dir should not contain backslashes, since it's used to replace
|
864 |
* urls, but it can contain them when running on Windows because
|
865 |
* fixUrls() is sometimes called with `ABSPATH . 'index.php'`
|
866 |
*/
|
867 |
+
$dir = str_replace('\\', '/', $dir);
|
868 |
+
unset($file); // not used below at all.
|
869 |
|
870 |
$replace = [];
|
871 |
+
foreach($matches[1] as $k => $url) {
|
872 |
// Remove quotes.
|
873 |
+
$url = trim($url, " \t\n\r\0\x0B\"'");
|
874 |
+
$noQurl = trim($url, "\"'");
|
875 |
+
if( $url !== $noQurl ) {
|
876 |
$removedQuotes = true;
|
877 |
} else {
|
878 |
$removedQuotes = false;
|
879 |
}
|
880 |
|
881 |
+
if( '' === $noQurl ) {
|
882 |
continue;
|
883 |
}
|
884 |
|
885 |
$url = $noQurl;
|
886 |
|
887 |
+
if( '/' === $url[0] || preg_match('#^(https?://|ftp://|data:)#i', $url) ) {
|
888 |
// URL is protocol-relative, host-relative or something we don't touch.
|
889 |
continue;
|
890 |
} else {
|
893 |
* rollback as per https://github.com/futtta/autoptimize/issues/94
|
894 |
* $newurl = preg_replace( '/https?:/', '', str_replace( ' ', '%20', WMAC_PluginMain::getContentUrl() . str_replace( '//', '/', $dir . '/' . $url ) ) );
|
895 |
*/
|
896 |
+
$newurl = preg_replace('/https?:/', '', str_replace(' ', '%20', WMAC_WP_ROOT_URL . str_replace('//', '/', $dir . '/' . $url)));
|
897 |
+
$newurl = apply_filters('wbcr/mac/css_fixurl_newurl', $newurl);
|
898 |
|
899 |
/**
|
900 |
* Hash the url + whatever was behind potentially for replacement
|
901 |
* We must do this, or different css classes referencing the same bg image (but
|
902 |
* different parts of it, say, in sprites and such) loose their stuff...
|
903 |
*/
|
904 |
+
$hash = md5($url . $matches[2][$k]);
|
905 |
+
$code = str_replace($matches[0][$k], $hash, $code);
|
906 |
|
907 |
+
if( $removedQuotes ) {
|
908 |
+
$replace[$hash] = "url('" . $newurl . "')" . $matches[2][$k];
|
909 |
} else {
|
910 |
+
$replace[$hash] = 'url(' . $newurl . ')' . $matches[2][$k];
|
911 |
}
|
912 |
}
|
913 |
}
|
914 |
|
915 |
+
$code = self::replaceLongestMatchesFirst($code, $replace);
|
916 |
}
|
917 |
|
918 |
return $code;
|
923 |
*
|
924 |
* @return bool
|
925 |
*/
|
926 |
+
private function isMovable($tag)
|
927 |
+
{
|
928 |
+
if( !$this->aggregate ) {
|
929 |
return false;
|
930 |
}
|
931 |
|
932 |
+
if( !empty($this->whitelist) ) {
|
933 |
+
foreach($this->whitelist as $match) {
|
934 |
+
if( false !== strpos($tag, $match) ) {
|
935 |
return true;
|
936 |
}
|
937 |
}
|
939 |
// no match with whitelist.
|
940 |
return false;
|
941 |
} else {
|
942 |
+
if( is_array($this->dontmove) && !empty($this->dontmove) ) {
|
943 |
+
foreach($this->dontmove as $match) {
|
944 |
+
if( false !== strpos($tag, $match) ) {
|
945 |
// Matched something.
|
946 |
return false;
|
947 |
}
|
959 |
*
|
960 |
* @return bool
|
961 |
*/
|
962 |
+
private function canInjectLate($cssPath, $css)
|
963 |
+
{
|
964 |
+
$consider_minified_array = apply_filters('wmac_filter_css_consider_minified', false, $cssPath);
|
965 |
+
if( true !== $this->inject_min_late ) {
|
|
|
|
|
966 |
// late-inject turned off.
|
967 |
return false;
|
968 |
+
} else if( (false === strpos($cssPath, 'min.css')) && (str_replace($consider_minified_array, '', $cssPath) === $cssPath) ) {
|
969 |
// file not minified based on filename & filter.
|
970 |
return false;
|
971 |
+
} else if( false !== strpos($css, '@import') ) {
|
972 |
// can't late-inject files with imports as those need to be aggregated.
|
973 |
return false;
|
974 |
+
} else if( ($this->datauris == true) && preg_match('#background[^;}]*url\(#Ui', $css) ) {
|
975 |
// don't late-inject CSS with images if image inlining is on.
|
976 |
return false;
|
977 |
} else {
|
989 |
*
|
990 |
* @return bool|string Url pointing to the minified css file or false.
|
991 |
*/
|
992 |
+
public function minifySingle($filepath, $cache_miss = false)
|
993 |
+
{
|
994 |
+
$contents = $this->prepareMinifySingle($filepath);
|
|
|
|
|
995 |
|
996 |
+
if( empty($contents) ) {
|
997 |
return false;
|
998 |
}
|
999 |
|
1000 |
// Check cache.
|
1001 |
+
$hash = 'single_' . md5($contents);
|
1002 |
+
$cache = new WMAC_PluginCache($hash, 'css');
|
1003 |
|
1004 |
// If not in cache already, minify...
|
1005 |
+
if( !$cache->check() || $cache_miss ) {
|
1006 |
// Fixurls...
|
1007 |
+
$contents = self::fixUrls($filepath, $contents);
|
1008 |
// replace any referenced assets if needed...
|
1009 |
+
$contents = $this->replaceUrls($contents);
|
1010 |
// Now minify...
|
1011 |
+
$cssmin = new WMAC_PluginCSSmin();
|
1012 |
+
$contents = trim($cssmin->run($contents));
|
1013 |
// Store in cache.
|
1014 |
+
$cache->cache($contents, 'text/css');
|
1015 |
}
|
1016 |
|
1017 |
+
$url = $this->buildMinifySingleUrl($cache);
|
1018 |
|
1019 |
return $url;
|
1020 |
}
|
1024 |
*
|
1025 |
* @return string
|
1026 |
*/
|
1027 |
+
public function getAoCssPreloadOnload()
|
1028 |
+
{
|
1029 |
+
$preload_onload = apply_filters('wmac_filter_css_preload_onload', "this.onload=null;this.rel='stylesheet'");
|
1030 |
|
1031 |
return $preload_onload;
|
1032 |
}
|
1036 |
*
|
1037 |
* @return string
|
1038 |
*/
|
1039 |
+
public function getAoCssPreloadPolyfill()
|
1040 |
+
{
|
1041 |
+
$preload_poly = apply_filters('wmac_filter_css_preload_polyfill', '<script data-cfasync=\'false\'>!function(t){"use strict";t.loadCSS||(t.loadCSS=function(){});var e=loadCSS.relpreload={};if(e.support=function(){var e;try{e=t.document.createElement("link").relList.supports("preload")}catch(t){e=!1}return function(){return e}}(),e.bindMediaToggle=function(t){function e(){t.media=a}var a=t.media||"all";t.addEventListener?t.addEventListener("load",e):t.attachEvent&&t.attachEvent("onload",e),setTimeout(function(){t.rel="stylesheet",t.media="only x"}),setTimeout(e,3e3)},e.poly=function(){if(!e.support())for(var a=t.document.getElementsByTagName("link"),n=0;n<a.length;n++){var o=a[n];"preload"!==o.rel||"style"!==o.getAttribute("as")||o.getAttribute("data-loadcss")||(o.setAttribute("data-loadcss",!0),e.bindMediaToggle(o))}},!e.support()){e.poly();var a=t.setInterval(e.poly,500);t.addEventListener?t.addEventListener("load",function(){e.poly(),t.clearInterval(a)}):t.attachEvent&&t.attachEvent("onload",function(){e.poly(),t.clearInterval(a)})}"undefined"!=typeof exports?exports.loadCSS=loadCSS:t.loadCSS=loadCSS}("undefined"!=typeof global?global:this);</script>');
|
1042 |
|
1043 |
return $preload_poly;
|
1044 |
}
|
1048 |
*
|
1049 |
* @return bool
|
1050 |
*/
|
1051 |
+
public function aggregating()
|
1052 |
+
{
|
1053 |
return $this->aggregate;
|
1054 |
}
|
1055 |
|
1056 |
/**
|
1057 |
* @return array
|
1058 |
*/
|
1059 |
+
public function getOptions()
|
1060 |
+
{
|
1061 |
return $this->options;
|
1062 |
}
|
1063 |
|
1064 |
/**
|
1065 |
* @param $options
|
1066 |
*/
|
1067 |
+
public function replaceOptions($options)
|
1068 |
+
{
|
|
|
|
|
1069 |
$this->options = $options;
|
1070 |
}
|
1071 |
|
1073 |
* @param $name
|
1074 |
* @param $value
|
1075 |
*/
|
1076 |
+
public function setOption($name, $value)
|
1077 |
+
{
|
1078 |
+
$this->options[$name] = $value;
|
1079 |
+
$this->$name = $value;
|
|
|
|
|
1080 |
}
|
1081 |
|
1082 |
/**
|
1084 |
*
|
1085 |
* @return mixed
|
1086 |
*/
|
1087 |
+
public function getOption($name)
|
1088 |
+
{
|
1089 |
+
return $this->options[$name];
|
|
|
|
|
1090 |
}
|
1091 |
}
|
components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Colors.php
CHANGED
@@ -1,159 +1,159 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
|
4 |
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
|
9 |
-
|
10 |
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
}
|
159 |
}
|
|
1 |
<?php
|
2 |
|
3 |
+
namespace WMAC\tubalmartin\CssMin;
|
4 |
|
5 |
+
if( !defined('ABSPATH') ) {
|
6 |
+
exit;
|
7 |
+
}
|
8 |
|
9 |
+
class Colors {
|
10 |
|
11 |
+
public static function getHexToNamedMap()
|
12 |
+
{
|
13 |
+
// Hex colors longer than named counterpart
|
14 |
+
return array(
|
15 |
+
'#f0ffff' => 'azure',
|
16 |
+
'#f5f5dc' => 'beige',
|
17 |
+
'#ffe4c4' => 'bisque',
|
18 |
+
'#a52a2a' => 'brown',
|
19 |
+
'#ff7f50' => 'coral',
|
20 |
+
'#ffd700' => 'gold',
|
21 |
+
'#808080' => 'gray',
|
22 |
+
'#008000' => 'green',
|
23 |
+
'#4b0082' => 'indigo',
|
24 |
+
'#fffff0' => 'ivory',
|
25 |
+
'#f0e68c' => 'khaki',
|
26 |
+
'#faf0e6' => 'linen',
|
27 |
+
'#800000' => 'maroon',
|
28 |
+
'#000080' => 'navy',
|
29 |
+
'#fdf5e6' => 'oldlace',
|
30 |
+
'#808000' => 'olive',
|
31 |
+
'#ffa500' => 'orange',
|
32 |
+
'#da70d6' => 'orchid',
|
33 |
+
'#cd853f' => 'peru',
|
34 |
+
'#ffc0cb' => 'pink',
|
35 |
+
'#dda0dd' => 'plum',
|
36 |
+
'#800080' => 'purple',
|
37 |
+
'#f00' => 'red',
|
38 |
+
'#fa8072' => 'salmon',
|
39 |
+
'#a0522d' => 'sienna',
|
40 |
+
'#c0c0c0' => 'silver',
|
41 |
+
'#fffafa' => 'snow',
|
42 |
+
'#d2b48c' => 'tan',
|
43 |
+
'#008080' => 'teal',
|
44 |
+
'#ff6347' => 'tomato',
|
45 |
+
'#ee82ee' => 'violet',
|
46 |
+
'#f5deb3' => 'wheat'
|
47 |
+
);
|
48 |
+
}
|
49 |
|
50 |
+
public static function getNamedToHexMap()
|
51 |
+
{
|
52 |
+
// Named colors longer than hex counterpart
|
53 |
+
return array(
|
54 |
+
'aliceblue' => '#f0f8ff',
|
55 |
+
'antiquewhite' => '#faebd7',
|
56 |
+
'aquamarine' => '#7fffd4',
|
57 |
+
'black' => '#000',
|
58 |
+
'blanchedalmond' => '#ffebcd',
|
59 |
+
'blueviolet' => '#8a2be2',
|
60 |
+
'burlywood' => '#deb887',
|
61 |
+
'cadetblue' => '#5f9ea0',
|
62 |
+
'chartreuse' => '#7fff00',
|
63 |
+
'chocolate' => '#d2691e',
|
64 |
+
'cornflowerblue' => '#6495ed',
|
65 |
+
'cornsilk' => '#fff8dc',
|
66 |
+
'darkblue' => '#00008b',
|
67 |
+
'darkcyan' => '#008b8b',
|
68 |
+
'darkgoldenrod' => '#b8860b',
|
69 |
+
'darkgray' => '#a9a9a9',
|
70 |
+
'darkgreen' => '#006400',
|
71 |
+
'darkgrey' => '#a9a9a9',
|
72 |
+
'darkkhaki' => '#bdb76b',
|
73 |
+
'darkmagenta' => '#8b008b',
|
74 |
+
'darkolivegreen' => '#556b2f',
|
75 |
+
'darkorange' => '#ff8c00',
|
76 |
+
'darkorchid' => '#9932cc',
|
77 |
+
'darksalmon' => '#e9967a',
|
78 |
+
'darkseagreen' => '#8fbc8f',
|
79 |
+
'darkslateblue' => '#483d8b',
|
80 |
+
'darkslategray' => '#2f4f4f',
|
81 |
+
'darkslategrey' => '#2f4f4f',
|
82 |
+
'darkturquoise' => '#00ced1',
|
83 |
+
'darkviolet' => '#9400d3',
|
84 |
+
'deeppink' => '#ff1493',
|
85 |
+
'deepskyblue' => '#00bfff',
|
86 |
+
'dodgerblue' => '#1e90ff',
|
87 |
+
'firebrick' => '#b22222',
|
88 |
+
'floralwhite' => '#fffaf0',
|
89 |
+
'forestgreen' => '#228b22',
|
90 |
+
'fuchsia' => '#f0f',
|
91 |
+
'gainsboro' => '#dcdcdc',
|
92 |
+
'ghostwhite' => '#f8f8ff',
|
93 |
+
'goldenrod' => '#daa520',
|
94 |
+
'greenyellow' => '#adff2f',
|
95 |
+
'honeydew' => '#f0fff0',
|
96 |
+
'indianred' => '#cd5c5c',
|
97 |
+
'lavender' => '#e6e6fa',
|
98 |
+
'lavenderblush' => '#fff0f5',
|
99 |
+
'lawngreen' => '#7cfc00',
|
100 |
+
'lemonchiffon' => '#fffacd',
|
101 |
+
'lightblue' => '#add8e6',
|
102 |
+
'lightcoral' => '#f08080',
|
103 |
+
'lightcyan' => '#e0ffff',
|
104 |
+
'lightgoldenrodyellow' => '#fafad2',
|
105 |
+
'lightgray' => '#d3d3d3',
|
106 |
+
'lightgreen' => '#90ee90',
|
107 |
+
'lightgrey' => '#d3d3d3',
|
108 |
+
'lightpink' => '#ffb6c1',
|
109 |
+
'lightsalmon' => '#ffa07a',
|
110 |
+
'lightseagreen' => '#20b2aa',
|
111 |
+
'lightskyblue' => '#87cefa',
|
112 |
+
'lightslategray' => '#778899',
|
113 |
+
'lightslategrey' => '#778899',
|
114 |
+
'lightsteelblue' => '#b0c4de',
|
115 |
+
'lightyellow' => '#ffffe0',
|
116 |
+
'limegreen' => '#32cd32',
|
117 |
+
'mediumaquamarine' => '#66cdaa',
|
118 |
+
'mediumblue' => '#0000cd',
|
119 |
+
'mediumorchid' => '#ba55d3',
|
120 |
+
'mediumpurple' => '#9370db',
|
121 |
+
'mediumseagreen' => '#3cb371',
|
122 |
+
'mediumslateblue' => '#7b68ee',
|
123 |
+
'mediumspringgreen' => '#00fa9a',
|
124 |
+
'mediumturquoise' => '#48d1cc',
|
125 |
+
'mediumvioletred' => '#c71585',
|
126 |
+
'midnightblue' => '#191970',
|
127 |
+
'mintcream' => '#f5fffa',
|
128 |
+
'mistyrose' => '#ffe4e1',
|
129 |
+
'moccasin' => '#ffe4b5',
|
130 |
+
'navajowhite' => '#ffdead',
|
131 |
+
'olivedrab' => '#6b8e23',
|
132 |
+
'orangered' => '#ff4500',
|
133 |
+
'palegoldenrod' => '#eee8aa',
|
134 |
+
'palegreen' => '#98fb98',
|
135 |
+
'paleturquoise' => '#afeeee',
|
136 |
+
'palevioletred' => '#db7093',
|
137 |
+
'papayawhip' => '#ffefd5',
|
138 |
+
'peachpuff' => '#ffdab9',
|
139 |
+
'powderblue' => '#b0e0e6',
|
140 |
+
'rebeccapurple' => '#663399',
|
141 |
+
'rosybrown' => '#bc8f8f',
|
142 |
+
'royalblue' => '#4169e1',
|
143 |
+
'saddlebrown' => '#8b4513',
|
144 |
+
'sandybrown' => '#f4a460',
|
145 |
+
'seagreen' => '#2e8b57',
|
146 |
+
'seashell' => '#fff5ee',
|
147 |
+
'slateblue' => '#6a5acd',
|
148 |
+
'slategray' => '#708090',
|
149 |
+
'slategrey' => '#708090',
|
150 |
+
'springgreen' => '#00ff7f',
|
151 |
+
'steelblue' => '#4682b4',
|
152 |
+
'turquoise' => '#40e0d0',
|
153 |
+
'white' => '#fff',
|
154 |
+
'whitesmoke' => '#f5f5f5',
|
155 |
+
'yellow' => '#ff0',
|
156 |
+
'yellowgreen' => '#9acd32'
|
157 |
+
);
|
|
|
158 |
}
|
159 |
+
}
|
components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Minifier.php
CHANGED
@@ -22,914 +22,876 @@
|
|
22 |
|
23 |
namespace WMAC\tubalmartin\CssMin;
|
24 |
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
322 |
-
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
|
352 |
-
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
362 |
-
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
375 |
-
|
376 |
-
|
377 |
-
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
-
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
-
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
|
411 |
-
|
412 |
-
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
-
|
418 |
-
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
|
425 |
-
|
426 |
-
|
427 |
-
|
428 |
-
|
429 |
-
|
430 |
-
|
431 |
-
|
432 |
-
|
433 |
-
|
434 |
-
|
435 |
-
|
436 |
-
|
437 |
-
|
438 |
-
|
439 |
-
|
440 |
-
|
441 |
-
|
442 |
-
|
443 |
-
|
444 |
-
|
445 |
-
|
446 |
-
|
447 |
-
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
-
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
-
|
481 |
-
|
482 |
-
|
483 |
-
|
484 |
-
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
-
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
-
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
-
|
498 |
-
|
499 |
-
|
500 |
-
|
501 |
-
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
|
510 |
-
|
511 |
-
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
|
517 |
-
|
518 |
-
|
519 |
-
|
520 |
-
|
521 |
-
|
522 |
-
|
523 |
-
|
524 |
-
|
525 |
-
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
-
|
530 |
-
|
531 |
-
|
532 |
-
|
533 |
-
|
534 |
-
|
535 |
-
|
536 |
-
|
537 |
-
|
538 |
-
|
539 |
-
|
540 |
-
|
541 |
-
|
542 |
-
|
543 |
-
|
544 |
-
|
545 |
-
|
546 |
-
|
547 |
-
|
548 |
-
|
549 |
-
|
550 |
-
|
551 |
-
|
552 |
-
|
553 |
-
|
554 |
-
|
555 |
-
|
556 |
-
|
557 |
-
|
558 |
-
|
559 |
-
|
560 |
-
|
561 |
-
|
562 |
-
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
|
569 |
-
|
570 |
-
|
571 |
-
|
572 |
-
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
|
579 |
-
|
580 |
-
|
581 |
-
|
582 |
-
|
583 |
-
|
584 |
-
|
585 |
-
|
586 |
-
|
587 |
-
|
588 |
-
|
589 |
-
|
590 |
-
|
591 |
-
|
592 |
-
|
593 |
-
|
594 |
-
|
595 |
-
|
596 |
-
|
597 |
-
|
598 |
-
|
599 |
-
|
600 |
-
|
601 |
-
|
602 |
-
|
603 |
-
|
604 |
-
|
605 |
-
|
606 |
-
|
607 |
-
|
608 |
-
|
609 |
-
|
610 |
-
|
611 |
-
|
612 |
-
|
613 |
-
|
614 |
-
|
615 |
-
|
616 |
-
|
617 |
-
|
618 |
-
|
619 |
-
|
620 |
-
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
|
625 |
-
|
626 |
-
|
627 |
-
|
628 |
-
|
629 |
-
|
630 |
-
|
631 |
-
|
632 |
-
|
633 |
-
|
634 |
-
|
635 |
-
|
636 |
-
|
637 |
-
|
638 |
-
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
|
644 |
-
|
645 |
-
|
646 |
-
|
647 |
-
|
648 |
-
|
649 |
-
|
650 |
-
|
651 |
-
|
652 |
-
|
653 |
-
|
654 |
-
|
655 |
-
|
656 |
-
|
657 |
-
|
658 |
-
|
659 |
-
|
660 |
-
|
661 |
-
|
662 |
-
|
663 |
-
|
664 |
-
|
665 |
-
|
666 |
-
|
667 |
-
|
668 |
-
|
669 |
-
|
670 |
-
|
671 |
-
|
672 |
-
|
673 |
-
|
674 |
-
|
675 |
-
|
676 |
-
|
677 |
-
|
678 |
-
|
679 |
-
|
680 |
-
|
681 |
-
|
682 |
-
|
683 |
-
|
684 |
-
|
685 |
-
|
686 |
-
|
687 |
-
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
|
692 |
-
|
693 |
-
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
|
698 |
-
|
699 |
-
|
700 |
-
|
701 |
-
|
702 |
-
|
703 |
-
|
704 |
-
|
705 |
-
|
706 |
-
|
707 |
-
|
708 |
-
|
709 |
-
|
710 |
-
|
711 |
-
|
712 |
-
|
713 |
-
|
714 |
-
|
715 |
-
|
716 |
-
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
|
721 |
-
|
722 |
-
|
723 |
-
|
724 |
-
|
725 |
-
|
726 |
-
|
727 |
-
|
728 |
-
|
729 |
-
|
730 |
-
|
731 |
-
|
732 |
-
|
733 |
-
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
|
738 |
-
|
739 |
-
|
740 |
-
|
741 |
-
|
742 |
-
|
743 |
-
|
744 |
-
|
745 |
-
|
746 |
-
|
747 |
-
|
748 |
-
|
749 |
-
|
750 |
-
|
751 |
-
|
752 |
-
|
753 |
-
|
754 |
-
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
|
759 |
-
|
760 |
-
|
761 |
-
|
762 |
-
|
763 |
-
|
764 |
-
|
765 |
-
|
766 |
-
|
767 |
-
|
768 |
-
|
769 |
-
|
770 |
-
|
771 |
-
|
772 |
-
|
773 |
-
|
774 |
-
|
775 |
-
|
776 |
-
|
777 |
-
|
778 |
-
|
779 |
-
|
780 |
-
|
781 |
-
|
782 |
-
|
783 |
-
|
784 |
-
|
785 |
-
|
786 |
-
|
787 |
-
|
788 |
-
|
789 |
-
|
790 |
-
|
791 |
-
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
798 |
-
|
799 |
-
|
800 |
-
|
801 |
-
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
806 |
-
|
807 |
-
|
808 |
-
|
809 |
-
|
810 |
-
|
811 |
-
|
812 |
-
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
|
850 |
-
|
851 |
-
|
852 |
-
|
853 |
-
|
854 |
-
|
855 |
-
|
856 |
-
|
857 |
-
|
858 |
-
|
859 |
-
|
860 |
-
|
861 |
-
|
862 |
-
|
863 |
-
|
864 |
-
|
865 |
-
|
866 |
-
|
867 |
-
|
868 |
-
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
|
875 |
-
|
876 |
-
|
877 |
-
|
878 |
-
|
879 |
-
|
880 |
-
|
881 |
-
|
882 |
-
|
883 |
-
|
884 |
-
|
885 |
-
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
|
890 |
-
|
891 |
-
|
892 |
-
|
893 |
-
|
894 |
-
|
895 |
-
|
896 |
-
|
897 |
-
private function shortenHexColorsCallback($matches)
|
898 |
-
{
|
899 |
-
$hex = $matches[1];
|
900 |
-
|
901 |
-
// Shorten suitable 6 chars HEX colors
|
902 |
-
if (strlen($hex) === 6 && preg_match('/^([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3$/Si', $hex, $m)) {
|
903 |
-
$hex = $m[1] . $m[2] . $m[3];
|
904 |
-
}
|
905 |
-
|
906 |
-
// Lowercase
|
907 |
-
$hex = '#'. strtolower($hex);
|
908 |
-
|
909 |
-
// Replace Hex colors with shorter color names
|
910 |
-
$color = array_key_exists($hex, $this->hexToNamedColorsMap) ? $this->hexToNamedColorsMap[$hex] : $hex;
|
911 |
-
|
912 |
-
return $color . $matches[2];
|
913 |
-
}
|
914 |
-
|
915 |
-
/**
|
916 |
-
* Shortens all named colors with a shorter HEX counterpart for a set of safe properties
|
917 |
-
* e.g. white -> #fff
|
918 |
-
* @param array $matches
|
919 |
-
* @return string
|
920 |
-
*/
|
921 |
-
private function shortenNamedColorsCallback($matches)
|
922 |
-
{
|
923 |
-
return $matches[1] . $this->namedToHexColorsMap[strtolower($matches[2])] . $matches[3];
|
924 |
-
}
|
925 |
-
|
926 |
-
/**
|
927 |
-
* Makes a string lowercase
|
928 |
-
* @param array $matches
|
929 |
-
* @return string
|
930 |
-
*/
|
931 |
-
private function strtolowerCallback($matches)
|
932 |
-
{
|
933 |
-
return strtolower($matches[0]);
|
934 |
-
}
|
935 |
}
|
22 |
|
23 |
namespace WMAC\tubalmartin\CssMin;
|
24 |
|
25 |
+
if( !defined('ABSPATH') ) {
|
26 |
+
exit;
|
27 |
+
}
|
28 |
+
|
29 |
+
class Minifier {
|
30 |
+
|
31 |
+
const QUERY_FRACTION = '_CSSMIN_QF_';
|
32 |
+
const COMMENT_TOKEN = '_CSSMIN_CMT_%d_';
|
33 |
+
const COMMENT_TOKEN_START = '_CSSMIN_CMT_';
|
34 |
+
const RULE_BODY_TOKEN = '_CSSMIN_RBT_%d_';
|
35 |
+
const PRESERVED_TOKEN = '_CSSMIN_PTK_%d_';
|
36 |
+
const UNQUOTED_FONT_TOKEN = '_CSSMIN_UFT_%d_';
|
37 |
+
|
38 |
+
// Token lists
|
39 |
+
private $comments = array();
|
40 |
+
private $ruleBodies = array();
|
41 |
+
private $preservedTokens = array();
|
42 |
+
private $unquotedFontTokens = array();
|
43 |
+
|
44 |
+
// Output options
|
45 |
+
private $keepImportantComments = true;
|
46 |
+
private $keepSourceMapComment = false;
|
47 |
+
private $linebreakPosition = 0;
|
48 |
+
|
49 |
+
// PHP ini limits
|
50 |
+
private $raisePhpLimits;
|
51 |
+
private $memoryLimit;
|
52 |
+
private $maxExecutionTime = 60; // 1 min
|
53 |
+
private $pcreBacktrackLimit;
|
54 |
+
private $pcreRecursionLimit;
|
55 |
+
|
56 |
+
// Color maps
|
57 |
+
private $hexToNamedColorsMap;
|
58 |
+
private $namedToHexColorsMap;
|
59 |
+
|
60 |
+
// Regexes
|
61 |
+
private $numRegex;
|
62 |
+
private $charsetRegex = '/@charset [^;]+;/Si';
|
63 |
+
private $importRegex = '/@import [^;]+;/Si';
|
64 |
+
private $namespaceRegex = '/@namespace [^;]+;/Si';
|
65 |
+
private $namedToHexColorsRegex;
|
66 |
+
private $shortenOneZeroesRegex;
|
67 |
+
private $shortenTwoZeroesRegex;
|
68 |
+
private $shortenThreeZeroesRegex;
|
69 |
+
private $shortenFourZeroesRegex;
|
70 |
+
private $unitsGroupRegex = '(?:ch|cm|em|ex|gd|in|mm|px|pt|pc|q|rem|vh|vmax|vmin|vw|%)';
|
71 |
+
private $unquotedFontsRegex = '/(font-family:|font:)([^\'"]+?)[^};]*/Si';
|
72 |
+
|
73 |
+
/**
|
74 |
+
* @param bool|int $raisePhpLimits If true, PHP settings will be raised if needed
|
75 |
+
*/
|
76 |
+
public function __construct($raisePhpLimits = true)
|
77 |
+
{
|
78 |
+
$this->raisePhpLimits = (bool)$raisePhpLimits;
|
79 |
+
$this->memoryLimit = 128 * 1048576; // 128MB in bytes
|
80 |
+
$this->pcreBacktrackLimit = 1000 * 1000;
|
81 |
+
$this->pcreRecursionLimit = 500 * 1000;
|
82 |
+
$this->hexToNamedColorsMap = Colors::getHexToNamedMap();
|
83 |
+
$this->namedToHexColorsMap = Colors::getNamedToHexMap();
|
84 |
+
$this->namedToHexColorsRegex = sprintf('/([:,( ])(%s)( |,|\)|;|$)/Si', implode('|', array_keys($this->namedToHexColorsMap)));
|
85 |
+
$this->numRegex = sprintf('-?\d*\.?\d+%s?', $this->unitsGroupRegex);
|
86 |
+
$this->setShortenZeroValuesRegexes();
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Parses & minifies the given input CSS string
|
91 |
+
* @param string $css
|
92 |
+
* @return string
|
93 |
+
*/
|
94 |
+
public function run($css = '')
|
95 |
+
{
|
96 |
+
if( empty($css) || !is_string($css) ) {
|
97 |
+
return '';
|
98 |
+
}
|
99 |
+
|
100 |
+
$this->resetRunProperties();
|
101 |
+
|
102 |
+
if( $this->raisePhpLimits ) {
|
103 |
+
$this->doRaisePhpLimits();
|
104 |
+
}
|
105 |
+
|
106 |
+
return $this->minify($css);
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Sets whether to keep or remove sourcemap special comment.
|
111 |
+
* Sourcemap comments are removed by default.
|
112 |
+
* @param bool $keepSourceMapComment
|
113 |
+
*/
|
114 |
+
public function keepSourceMapComment($keepSourceMapComment = true)
|
115 |
+
{
|
116 |
+
$this->keepSourceMapComment = (bool)$keepSourceMapComment;
|
117 |
+
}
|
118 |
+
|
119 |
+
/**
|
120 |
+
* Sets whether to keep or remove important comments.
|
121 |
+
* Important comments outside of a declaration block are kept by default.
|
122 |
+
* @param bool $removeImportantComments
|
123 |
+
*/
|
124 |
+
public function removeImportantComments($removeImportantComments = true)
|
125 |
+
{
|
126 |
+
$this->keepImportantComments = !(bool)$removeImportantComments;
|
127 |
+
}
|
128 |
+
|
129 |
+
/**
|
130 |
+
* Sets the approximate column after which long lines will be splitted in the output
|
131 |
+
* with a linebreak.
|
132 |
+
* @param int $position
|
133 |
+
*/
|
134 |
+
public function setLineBreakPosition($position)
|
135 |
+
{
|
136 |
+
$this->linebreakPosition = (int)$position;
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* Sets the memory limit for this script
|
141 |
+
* @param int|string $limit
|
142 |
+
*/
|
143 |
+
public function setMemoryLimit($limit)
|
144 |
+
{
|
145 |
+
$this->memoryLimit = Utils::normalizeInt($limit);
|
146 |
+
}
|
147 |
+
|
148 |
+
/**
|
149 |
+
* Sets the maximum execution time for this script
|
150 |
+
* @param int|string $seconds
|
151 |
+
*/
|
152 |
+
public function setMaxExecutionTime($seconds)
|
153 |
+
{
|
154 |
+
$this->maxExecutionTime = (int)$seconds;
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Sets the PCRE backtrack limit for this script
|
159 |
+
* @param int $limit
|
160 |
+
*/
|
161 |
+
public function setPcreBacktrackLimit($limit)
|
162 |
+
{
|
163 |
+
$this->pcreBacktrackLimit = (int)$limit;
|
164 |
+
}
|
165 |
+
|
166 |
+
/**
|
167 |
+
* Sets the PCRE recursion limit for this script
|
168 |
+
* @param int $limit
|
169 |
+
*/
|
170 |
+
public function setPcreRecursionLimit($limit)
|
171 |
+
{
|
172 |
+
$this->pcreRecursionLimit = (int)$limit;
|
173 |
+
}
|
174 |
+
|
175 |
+
/**
|
176 |
+
* Builds regular expressions needed for shortening zero values
|
177 |
+
*/
|
178 |
+
private function setShortenZeroValuesRegexes()
|
179 |
+
{
|
180 |
+
$zeroRegex = '0' . $this->unitsGroupRegex;
|
181 |
+
$numOrPosRegex = '(' . $this->numRegex . '|top|left|bottom|right|center) ';
|
182 |
+
$oneZeroSafeProperties = array(
|
183 |
+
'(?:line-)?height',
|
184 |
+
'(?:(?:min|max)-)?width',
|
185 |
+
'top',
|
186 |
+
'left',
|
187 |
+
'background-position',
|
188 |
+
'bottom',
|
189 |
+
'right',
|
190 |
+
'border(?:-(?:top|left|bottom|right))?(?:-width)?',
|
191 |
+
'border-(?:(?:top|bottom)-(?:left|right)-)?radius',
|
192 |
+
'column-(?:gap|width)',
|
193 |
+
'margin(?:-(?:top|left|bottom|right))?',
|
194 |
+
'outline-width',
|
195 |
+
'padding(?:-(?:top|left|bottom|right))?'
|
196 |
+
);
|
197 |
+
|
198 |
+
// First zero regex
|
199 |
+
$regex = '/(^|;)(' . implode('|', $oneZeroSafeProperties) . '):%s/Si';
|
200 |
+
$this->shortenOneZeroesRegex = sprintf($regex, $zeroRegex);
|
201 |
+
|
202 |
+
// Multiple zeroes regexes
|
203 |
+
$regex = '/(^|;)(margin|padding|border-(?:width|radius)|background-position):%s/Si';
|
204 |
+
$this->shortenTwoZeroesRegex = sprintf($regex, $numOrPosRegex . $zeroRegex);
|
205 |
+
$this->shortenThreeZeroesRegex = sprintf($regex, $numOrPosRegex . $numOrPosRegex . $zeroRegex);
|
206 |
+
$this->shortenFourZeroesRegex = sprintf($regex, $numOrPosRegex . $numOrPosRegex . $numOrPosRegex . $zeroRegex);
|
207 |
+
}
|
208 |
+
|
209 |
+
/**
|
210 |
+
* Resets properties whose value may change between runs
|
211 |
+
*/
|
212 |
+
private function resetRunProperties()
|
213 |
+
{
|
214 |
+
$this->comments = array();
|
215 |
+
$this->ruleBodies = array();
|
216 |
+
$this->preservedTokens = array();
|
217 |
+
}
|
218 |
+
|
219 |
+
/**
|
220 |
+
* Tries to configure PHP to use at least the suggested minimum settings
|
221 |
+
* @return void
|
222 |
+
*/
|
223 |
+
private function doRaisePhpLimits()
|
224 |
+
{
|
225 |
+
$phpLimits = array(
|
226 |
+
'memory_limit' => $this->memoryLimit,
|
227 |
+
'max_execution_time' => $this->maxExecutionTime,
|
228 |
+
'pcre.backtrack_limit' => $this->pcreBacktrackLimit,
|
229 |
+
'pcre.recursion_limit' => $this->pcreRecursionLimit
|
230 |
+
);
|
231 |
+
|
232 |
+
// If current settings are higher respect them.
|
233 |
+
foreach($phpLimits as $name => $suggested) {
|
234 |
+
$current = Utils::normalizeInt(ini_get($name));
|
235 |
+
|
236 |
+
if( $current >= $suggested ) {
|
237 |
+
continue;
|
238 |
+
}
|
239 |
+
|
240 |
+
// memoryLimit exception: allow -1 for "no memory limit".
|
241 |
+
if( $name === 'memory_limit' && $current === -1 ) {
|
242 |
+
continue;
|
243 |
+
}
|
244 |
+
|
245 |
+
// maxExecutionTime exception: allow 0 for "no memory limit".
|
246 |
+
if( $name === 'max_execution_time' && $current === 0 ) {
|
247 |
+
continue;
|
248 |
+
}
|
249 |
+
|
250 |
+
ini_set($name, $suggested);
|
251 |
+
}
|
252 |
+
}
|
253 |
+
|
254 |
+
/**
|
255 |
+
* Registers a preserved token
|
256 |
+
* @param string $token
|
257 |
+
* @return string The token ID string
|
258 |
+
*/
|
259 |
+
private function registerPreservedToken($token)
|
260 |
+
{
|
261 |
+
$tokenId = sprintf(self::PRESERVED_TOKEN, count($this->preservedTokens));
|
262 |
+
$this->preservedTokens[$tokenId] = $token;
|
263 |
+
|
264 |
+
return $tokenId;
|
265 |
+
}
|
266 |
+
|
267 |
+
/**
|
268 |
+
* Registers a candidate comment token
|
269 |
+
* @param string $comment
|
270 |
+
* @return string The comment token ID string
|
271 |
+
*/
|
272 |
+
private function registerCommentToken($comment)
|
273 |
+
{
|
274 |
+
$tokenId = sprintf(self::COMMENT_TOKEN, count($this->comments));
|
275 |
+
$this->comments[$tokenId] = $comment;
|
276 |
+
|
277 |
+
return $tokenId;
|
278 |
+
}
|
279 |
+
|
280 |
+
/**
|
281 |
+
* Registers a rule body token
|
282 |
+
* @param string $body the minified rule body
|
283 |
+
* @return string The rule body token ID string
|
284 |
+
*/
|
285 |
+
private function registerRuleBodyToken($body)
|
286 |
+
{
|
287 |
+
if( empty($body) ) {
|
288 |
+
return '';
|
289 |
+
}
|
290 |
+
|
291 |
+
$tokenId = sprintf(self::RULE_BODY_TOKEN, count($this->ruleBodies));
|
292 |
+
$this->ruleBodies[$tokenId] = $body;
|
293 |
+
|
294 |
+
return $tokenId;
|
295 |
+
}
|
296 |
+
|
297 |
+
private function registerUnquotedFontToken($body)
|
298 |
+
{
|
299 |
+
if( empty($body) ) {
|
300 |
+
return '';
|
301 |
+
}
|
302 |
+
|
303 |
+
$tokenId = sprintf(self::UNQUOTED_FONT_TOKEN, count($this->unquotedFontTokens));
|
304 |
+
$this->unquotedFontTokens[$tokenId] = $body;
|
305 |
+
|
306 |
+
return $tokenId;
|
307 |
+
}
|
308 |
+
|
309 |
+
/**
|
310 |
+
* Parses & minifies the given input CSS string
|
311 |
+
* @param string $css
|
312 |
+
* @return string
|
313 |
+
*/
|
314 |
+
private function minify($css)
|
315 |
+
{
|
316 |
+
// Process data urls
|
317 |
+
$css = $this->processDataUrls($css);
|
318 |
+
|
319 |
+
// Process comments
|
320 |
+
$css = preg_replace_callback('/(?<!\\\\)\/\*(.*?)\*(?<!\\\\)\//Ss', array(
|
321 |
+
$this,
|
322 |
+
'processCommentsCallback'
|
323 |
+
), $css);
|
324 |
+
|
325 |
+
// IE7: Process Microsoft matrix filters (whitespaces between Matrix parameters). Can contain strings inside.
|
326 |
+
$css = preg_replace_callback('/filter:\s*progid:DXImageTransform\.Microsoft\.Matrix\(([^)]+)\)/Ss', array(
|
327 |
+
$this,
|
328 |
+
'processOldIeSpecificMatrixDefinitionCallback'
|
329 |
+
), $css);
|
330 |
+
|
331 |
+
// Process quoted unquotable attribute selectors to unquote them. Covers most common cases.
|
332 |
+
// Likelyhood of a quoted attribute selector being a substring in a string: Very very low.
|
333 |
+
$css = preg_replace('/\[\s*([a-z][a-z-]+)\s*([\*\|\^\$~]?=)\s*[\'"](-?[a-z_][a-z0-9-_]+)[\'"]\s*\]/Ssi', '[$1$2$3]', $css);
|
334 |
+
|
335 |
+
// Process strings so their content doesn't get accidentally minified
|
336 |
+
$css = preg_replace_callback('/(?:"(?:[^\\\\"]|\\\\.|\\\\)*")|' . "(?:'(?:[^\\\\']|\\\\.|\\\\)*')/S", array(
|
337 |
+
$this,
|
338 |
+
'processStringsCallback'
|
339 |
+
), $css);
|
340 |
+
|
341 |
+
// Normalize all whitespace strings to single spaces. Easier to work with that way.
|
342 |
+
$css = preg_replace('/\s+/S', ' ', $css);
|
343 |
+
|
344 |
+
// Process import At-rules with unquoted URLs so URI reserved characters such as a semicolon may be used safely.
|
345 |
+
$css = preg_replace_callback('/@import url\(([^\'"]+?)\)( |;)/Si', array(
|
346 |
+
$this,
|
347 |
+
'processImportUnquotedUrlAtRulesCallback'
|
348 |
+
), $css);
|
349 |
+
|
350 |
+
// Process comments
|
351 |
+
$css = $this->processComments($css);
|
352 |
+
|
353 |
+
// Process rule bodies
|
354 |
+
$css = $this->processRuleBodies($css);
|
355 |
+
|
356 |
+
// Process at-rules and selectors
|
357 |
+
$css = $this->processAtRulesAndSelectors($css);
|
358 |
+
|
359 |
+
// Restore preserved rule bodies before splitting
|
360 |
+
$css = strtr($css, $this->ruleBodies);
|
361 |
+
|
362 |
+
// Split long lines in output if required
|
363 |
+
$css = $this->processLongLineSplitting($css);
|
364 |
+
|
365 |
+
// Restore preserved comments and strings
|
366 |
+
$css = strtr($css, $this->preservedTokens);
|
367 |
+
|
368 |
+
return trim($css);
|
369 |
+
}
|
370 |
+
|
371 |
+
/**
|
372 |
+
* Searches & replaces all data urls with tokens before we start compressing,
|
373 |
+
* to avoid performance issues running some of the subsequent regexes against large string chunks.
|
374 |
+
* @param string $css
|
375 |
+
* @return string
|
376 |
+
*/
|
377 |
+
private function processDataUrls($css)
|
378 |
+
{
|
379 |
+
$ret = '';
|
380 |
+
$searchOffset = $substrOffset = 0;
|
381 |
+
|
382 |
+
// Since we need to account for non-base64 data urls, we need to handle
|
383 |
+
// ' and ) being part of the data string.
|
384 |
+
while( preg_match('/url\(\s*(["\']?)data:/Si', $css, $m, PREG_OFFSET_CAPTURE, $searchOffset) ) {
|
385 |
+
$matchStartIndex = $m[0][1];
|
386 |
+
$dataStartIndex = $matchStartIndex + 4; // url( length
|
387 |
+
$searchOffset = $matchStartIndex + strlen($m[0][0]);
|
388 |
+
$terminator = $m[1][0]; // ', " or empty (not quoted)
|
389 |
+
$terminatorRegex = '/(?<!\\\\)' . (strlen($terminator) === 0 ? '' : $terminator . '\s*') . '(\))/S';
|
390 |
+
|
391 |
+
$ret .= substr($css, $substrOffset, $matchStartIndex - $substrOffset);
|
392 |
+
|
393 |
+
// Terminator found
|
394 |
+
if( preg_match($terminatorRegex, $css, $matches, PREG_OFFSET_CAPTURE, $searchOffset) ) {
|
395 |
+
$matchEndIndex = $matches[1][1];
|
396 |
+
$searchOffset = $matchEndIndex + 1;
|
397 |
+
$token = substr($css, $dataStartIndex, $matchEndIndex - $dataStartIndex);
|
398 |
+
|
399 |
+
// Remove all spaces only for base64 encoded URLs.
|
400 |
+
if( stripos($token, 'base64,') !== false ) {
|
401 |
+
$token = preg_replace('/\s+/S', '', $token);
|
402 |
+
}
|
403 |
+
|
404 |
+
$ret .= 'url(' . $this->registerPreservedToken(trim($token)) . ')';
|
405 |
+
// No end terminator found, re-add the whole match. Should we throw/warn here?
|
406 |
+
} else {
|
407 |
+
$ret .= substr($css, $matchStartIndex, $searchOffset - $matchStartIndex);
|
408 |
+
}
|
409 |
+
|
410 |
+
$substrOffset = $searchOffset;
|
411 |
+
}
|
412 |
+
|
413 |
+
$ret .= substr($css, $substrOffset);
|
414 |
+
|
415 |
+
return $ret;
|
416 |
+
}
|
417 |
+
|
418 |
+
/**
|
419 |
+
* Registers all comments found as candidates to be preserved.
|
420 |
+
* @param array $matches
|
421 |
+
* @return string
|
422 |
+
*/
|
423 |
+
private function processCommentsCallback($matches)
|
424 |
+
{
|
425 |
+
return '/*' . $this->registerCommentToken($matches[1]) . '*/';
|
426 |
+
}
|
427 |
+
|
428 |
+
/**
|
429 |
+
* Preserves old IE Matrix string definition
|
430 |
+
* @param array $matches
|
431 |
+
* @return string
|
432 |
+
*/
|
433 |
+
private function processOldIeSpecificMatrixDefinitionCallback($matches)
|
434 |
+
{
|
435 |
+
return 'filter:progid:DXImageTransform.Microsoft.Matrix(' . $this->registerPreservedToken($matches[1]) . ')';
|
436 |
+
}
|
437 |
+
|
438 |
+
/**
|
439 |
+
* Preserves strings found
|
440 |
+
* @param array $matches
|
441 |
+
* @return string
|
442 |
+
*/
|
443 |
+
private function processStringsCallback($matches)
|
444 |
+
{
|
445 |
+
$match = $matches[0];
|
446 |
+
$quote = substr($match, 0, 1);
|
447 |
+
$match = substr($match, 1, -1);
|
448 |
+
|
449 |
+
// maybe the string contains a comment-like substring?
|
450 |
+
// one, maybe more? put'em back then
|
451 |
+
if( strpos($match, self::COMMENT_TOKEN_START) !== false ) {
|
452 |
+
$match = strtr($match, $this->comments);
|
453 |
+
}
|
454 |
+
|
455 |
+
// minify alpha opacity in filter strings
|
456 |
+
$match = str_ireplace('progid:DXImageTransform.Microsoft.Alpha(Opacity=', 'alpha(opacity=', $match);
|
457 |
+
|
458 |
+
return $quote . $this->registerPreservedToken($match) . $quote;
|
459 |
+
}
|
460 |
+
|
461 |
+
/**
|
462 |
+
* Searches & replaces all import at-rule unquoted urls with tokens so URI reserved characters such as a semicolon
|
463 |
+
* may be used safely in a URL.
|
464 |
+
* @param array $matches
|
465 |
+
* @return string
|
466 |
+
*/
|
467 |
+
private function processImportUnquotedUrlAtRulesCallback($matches)
|
468 |
+
{
|
469 |
+
return '@import url(' . $this->registerPreservedToken($matches[1]) . ')' . $matches[2];
|
470 |
+
}
|
471 |
+
|
472 |
+
/**
|
473 |
+
* Preserves or removes comments found.
|
474 |
+
* @param string $css
|
475 |
+
* @return string
|
476 |
+
*/
|
477 |
+
private function processComments($css)
|
478 |
+
{
|
479 |
+
foreach($this->comments as $commentId => $comment) {
|
480 |
+
$commentIdString = '/*' . $commentId . '*/';
|
481 |
+
|
482 |
+
// ! in the first position of the comment means preserve
|
483 |
+
// so push to the preserved tokens keeping the !
|
484 |
+
if( $this->keepImportantComments && strpos($comment, '!') === 0 ) {
|
485 |
+
$preservedTokenId = $this->registerPreservedToken($comment);
|
486 |
+
// Put new lines before and after /*! important comments
|
487 |
+
$css = str_replace($commentIdString, "\n/*$preservedTokenId*/\n", $css);
|
488 |
+
continue;
|
489 |
+
}
|
490 |
+
|
491 |
+
// # sourceMappingURL= in the first position of the comment means sourcemap
|
492 |
+
// so push to the preserved tokens if {$this->keepSourceMapComment} is truthy.
|
493 |
+
if( $this->keepSourceMapComment && strpos($comment, '# sourceMappingURL=') === 0 ) {
|
494 |
+
$preservedTokenId = $this->registerPreservedToken($comment);
|
495 |
+
// Add new line before the sourcemap comment
|
496 |
+
$css = str_replace($commentIdString, "\n/*$preservedTokenId*/", $css);
|
497 |
+
continue;
|
498 |
+
}
|
499 |
+
|
500 |
+
// Keep empty comments after child selectors (IE7 hack)
|
501 |
+
// e.g. html >/**/ body
|
502 |
+
if( strlen($comment) === 0 && strpos($css, '>/*' . $commentId) !== false ) {
|
503 |
+
$css = str_replace($commentId, $this->registerPreservedToken(''), $css);
|
504 |
+
continue;
|
505 |
+
}
|
506 |
+
|
507 |
+
// in all other cases kill the comment
|
508 |
+
$css = str_replace($commentIdString, '', $css);
|
509 |
+
}
|
510 |
+
|
511 |
+
// Normalize whitespace again
|
512 |
+
$css = preg_replace('/ +/S', ' ', $css);
|
513 |
+
|
514 |
+
return $css;
|
515 |
+
}
|
516 |
+
|
517 |
+
/**
|
518 |
+
* Finds, minifies & preserves all rule bodies.
|
519 |
+
* @param string $css the whole stylesheet.
|
520 |
+
* @return string
|
521 |
+
*/
|
522 |
+
private function processRuleBodies($css)
|
523 |
+
{
|
524 |
+
$ret = '';
|
525 |
+
$searchOffset = $substrOffset = 0;
|
526 |
+
|
527 |
+
while( ($blockStartPos = strpos($css, '{', $searchOffset)) !== false ) {
|
528 |
+
$blockEndPos = strpos($css, '}', $blockStartPos);
|
529 |
+
// When ending curly brace is missing, let's
|
530 |
+
// behave like there was one at the end of the block...
|
531 |
+
if( false === $blockEndPos ) {
|
532 |
+
$blockEndPos = strlen($css) - 1;
|
533 |
+
}
|
534 |
+
$nextBlockStartPos = strpos($css, '{', $blockStartPos + 1);
|
535 |
+
$ret .= substr($css, $substrOffset, $blockStartPos - $substrOffset);
|
536 |
+
|
537 |
+
if( $nextBlockStartPos !== false && $nextBlockStartPos < $blockEndPos ) {
|
538 |
+
$ret .= substr($css, $blockStartPos, $nextBlockStartPos - $blockStartPos);
|
539 |
+
$searchOffset = $nextBlockStartPos;
|
540 |
+
} else {
|
541 |
+
$ruleBody = substr($css, $blockStartPos + 1, $blockEndPos - $blockStartPos - 1);
|
542 |
+
$ruleBodyToken = $this->registerRuleBodyToken($this->processRuleBody($ruleBody));
|
543 |
+
$ret .= '{' . $ruleBodyToken . '}';
|
544 |
+
$searchOffset = $blockEndPos + 1;
|
545 |
+
}
|
546 |
+
|
547 |
+
$substrOffset = $searchOffset;
|
548 |
+
}
|
549 |
+
|
550 |
+
$ret .= substr($css, $substrOffset);
|
551 |
+
|
552 |
+
return $ret;
|
553 |
+
}
|
554 |
+
|
555 |
+
/**
|
556 |
+
* Compresses non-group rule bodies.
|
557 |
+
* @param string $body The rule body without curly braces
|
558 |
+
* @return string
|
559 |
+
*/
|
560 |
+
private function processRuleBody($body)
|
561 |
+
{
|
562 |
+
$body = trim($body);
|
563 |
+
|
564 |
+
// Remove spaces before the things that should not have spaces before them.
|
565 |
+
$body = preg_replace('/ ([:=,)*\/;\n])/S', '$1', $body);
|
566 |
+
|
567 |
+
// Remove the spaces after the things that should not have spaces after them.
|
568 |
+
$body = preg_replace('/([:=,(*\/!;\n]) /S', '$1', $body);
|
569 |
+
|
570 |
+
// Replace multiple semi-colons in a row by a single one
|
571 |
+
$body = preg_replace('/;;+/S', ';', $body);
|
572 |
+
|
573 |
+
// Remove semicolon before closing brace except when:
|
574 |
+
// - The last property is prefixed with a `*` (lte IE7 hack) to avoid issues on Symbian S60 3.x browsers.
|
575 |
+
if( !preg_match('/\*[a-z0-9-]+:[^;]+;$/Si', $body) ) {
|
576 |
+
$body = rtrim($body, ';');
|
577 |
+
}
|
578 |
+
|
579 |
+
// Remove important comments inside a rule body (because they make no sense here).
|
580 |
+
if( strpos($body, '/*') !== false ) {
|
581 |
+
$body = preg_replace('/\n?\/\*[A-Z0-9_]+\*\/\n?/S', '', $body);
|
582 |
+
}
|
583 |
+
|
584 |
+
// Empty rule body? Exit :)
|
585 |
+
if( empty($body) ) {
|
586 |
+
return '';
|
587 |
+
}
|
588 |
+
|
589 |
+
// Shorten font-weight values
|
590 |
+
$body = preg_replace(array('/(font-weight:)bold\b/Si', '/(font-weight:)normal\b/Si'), array(
|
591 |
+
'${1}700',
|
592 |
+
'${1}400'
|
593 |
+
), $body);
|
594 |
+
|
595 |
+
// Shorten background property
|
596 |
+
$body = preg_replace('/(background:)(?:none|transparent)( !|;|$)/Si', '${1}0 0$2', $body);
|
597 |
+
|
598 |
+
// Shorten opacity IE filter
|
599 |
+
$body = str_ireplace('progid:DXImageTransform.Microsoft.Alpha(Opacity=', 'alpha(opacity=', $body);
|
600 |
+
|
601 |
+
// Shorten colors from rgb(51,102,153) to #336699, rgb(100%,0%,0%) to #ff0000 (sRGB color space)
|
602 |
+
// Shorten colors from hsl(0, 100%, 50%) to #ff0000 (sRGB color space)
|
603 |
+
// This makes it more likely that it'll get further compressed in the next step.
|
604 |
+
$body = preg_replace_callback('/(rgb|hsl)\(([0-9,.% -]+)\)(.|$)/Si', array(
|
605 |
+
$this,
|
606 |
+
'shortenHslAndRgbToHexCallback'
|
607 |
+
), $body);
|
608 |
+
|
609 |
+
// Shorten colors from #AABBCC to #ABC or shorter color name:
|
610 |
+
// - Look for hex colors which don't have a "=" in front of them (to avoid MSIE filters)
|
611 |
+
$body = preg_replace_callback('/(?<!=)#([0-9a-f]{3,6})( |,|\)|;|$)/Si', array(
|
612 |
+
$this,
|
613 |
+
'shortenHexColorsCallback'
|
614 |
+
), $body);
|
615 |
+
|
616 |
+
// Tokenize unquoted font names in order to hide them from
|
617 |
+
// color name replacements.
|
618 |
+
$body = preg_replace_callback($this->unquotedFontsRegex, array($this, 'preserveUnquotedFontTokens'), $body);
|
619 |
+
|
620 |
+
// Shorten long named colors with a shorter HEX counterpart: white -> #fff.
|
621 |
+
// Run at least 2 times to cover most cases
|
622 |
+
$body = preg_replace_callback(array($this->namedToHexColorsRegex, $this->namedToHexColorsRegex), array(
|
623 |
+
$this,
|
624 |
+
'shortenNamedColorsCallback'
|
625 |
+
), $body);
|
626 |
+
|
627 |
+
// Restore unquoted font tokens now after colors have been changed.
|
628 |
+
$body = $this->restoreUnquotedFontTokens($body);
|
629 |
+
|
630 |
+
// Replace positive sign from numbers before the leading space is removed.
|
631 |
+
// +1.2em to 1.2em, +.8px to .8px, +2% to 2%
|
632 |
+
$body = preg_replace('/([ :,(])\+(\.?\d+)/S', '$1$2', $body);
|
633 |
+
|
634 |
+
// shorten ms to s
|
635 |
+
$body = preg_replace_callback('/([ :,(])(-?)(\d{3,})ms/Si', function ($matches) {
|
636 |
+
return $matches[1] . $matches[2] . ((int)$matches[3] / 1000) . 's';
|
637 |
+
}, $body);
|
638 |
+
|
639 |
+
// Remove leading zeros from integer and float numbers.
|
640 |
+
// 000.6 to .6, -0.8 to -.8, 0050 to 50, -01.05 to -1.05
|
641 |
+
$body = preg_replace('/([ :,(])(-?)0+([1-9]?\.?\d+)/S', '$1$2$3', $body);
|
642 |
+
|
643 |
+
// Remove trailing zeros from float numbers.
|
644 |
+
// -6.0100em to -6.01em, .0100 to .01, 1.200px to 1.2px
|
645 |
+
$body = preg_replace('/([ :,(])(-?\d?\.\d+?)0+([^\d])/S', '$1$2$3', $body);
|
646 |
+
|
647 |
+
// Remove trailing .0 -> -9.0 to -9
|
648 |
+
$body = preg_replace('/([ :,(])(-?\d+)\.0([^\d])/S', '$1$2$3', $body);
|
649 |
+
|
650 |
+
// Replace 0 length numbers with 0
|
651 |
+
$body = preg_replace('/([ :,(])-?\.?0+([^\d])/S', '${1}0$2', $body);
|
652 |
+
|
653 |
+
// Shorten zero values for safe properties only
|
654 |
+
$body = preg_replace(array(
|
655 |
+
$this->shortenOneZeroesRegex,
|
656 |
+
$this->shortenTwoZeroesRegex,
|
657 |
+
$this->shortenThreeZeroesRegex,
|
658 |
+
$this->shortenFourZeroesRegex
|
659 |
+
), array(
|
660 |
+
'$1$2:0',
|
661 |
+
'$1$2:$3 0',
|
662 |
+
'$1$2:$3 $4 0',
|
663 |
+
'$1$2:$3 $4 $5 0'
|
664 |
+
), $body);
|
665 |
+
|
666 |
+
// Replace 0 0 0; or 0 0 0 0; with 0 0 for background-position property.
|
667 |
+
$body = preg_replace('/(background-position):0(?: 0){2,3}( !|;|$)/Si', '$1:0 0$2', $body);
|
668 |
+
|
669 |
+
// Shorten suitable shorthand properties with repeated values
|
670 |
+
$body = preg_replace(array(
|
671 |
+
'/(margin|padding|border-(?:width|radius)):(' . $this->numRegex . ')(?: \2)+( !|;|$)/Si',
|
672 |
+
'/(border-(?:style|color)):([#a-z0-9]+)(?: \2)+( !|;|$)/Si'
|
673 |
+
), '$1:$2$3', $body);
|
674 |
+
$body = preg_replace(array(
|
675 |
+
'/(margin|padding|border-(?:width|radius)):' . '(' . $this->numRegex . ') (' . $this->numRegex . ') \2 \3( !|;|$)/Si',
|
676 |
+
'/(border-(?:style|color)):([#a-z0-9]+) ([#a-z0-9]+) \2 \3( !|;|$)/Si'
|
677 |
+
), '$1:$2 $3$4', $body);
|
678 |
+
$body = preg_replace(array(
|
679 |
+
'/(margin|padding|border-(?:width|radius)):' . '(' . $this->numRegex . ') (' . $this->numRegex . ') (' . $this->numRegex . ') \3( !|;|$)/Si',
|
680 |
+
'/(border-(?:style|color)):([#a-z0-9]+) ([#a-z0-9]+) ([#a-z0-9]+) \3( !|;|$)/Si'
|
681 |
+
), '$1:$2 $3 $4$5', $body);
|
682 |
+
|
683 |
+
// Lowercase some common functions that can be values
|
684 |
+
$body = preg_replace_callback('/(?:attr|blur|brightness|circle|contrast|cubic-bezier|drop-shadow|ellipse|from|grayscale|' . 'hsla?|hue-rotate|inset|invert|local|minmax|opacity|perspective|polygon|rgba?|rect|repeat|saturate|sepia|' . 'steps|to|url|var|-webkit-gradient|' . '(?:-(?:atsc|khtml|moz|ms|o|wap|webkit)-)?(?:calc|(?:repeating-)?(?:linear|radial)-gradient))\(/Si', array(
|
685 |
+
$this,
|
686 |
+
'strtolowerCallback'
|
687 |
+
), $body);
|
688 |
+
|
689 |
+
// Lowercase all uppercase properties
|
690 |
+
$body = preg_replace_callback('/(?:^|;)[A-Z-]+:/S', array($this, 'strtolowerCallback'), $body);
|
691 |
+
|
692 |
+
return $body;
|
693 |
+
}
|
694 |
+
|
695 |
+
private function preserveUnquotedFontTokens($matches)
|
696 |
+
{
|
697 |
+
return $this->registerUnquotedFontToken($matches[0]);
|
698 |
+
}
|
699 |
+
|
700 |
+
private function restoreUnquotedFontTokens($body)
|
701 |
+
{
|
702 |
+
return strtr($body, $this->unquotedFontTokens);
|
703 |
+
}
|
704 |
+
|
705 |
+
/**
|
706 |
+
* Compresses At-rules and selectors.
|
707 |
+
* @param string $css the whole stylesheet with rule bodies tokenized.
|
708 |
+
* @return string
|
709 |
+
*/
|
710 |
+
private function processAtRulesAndSelectors($css)
|
711 |
+
{
|
712 |
+
$charset = '';
|
713 |
+
$imports = '';
|
714 |
+
$namespaces = '';
|
715 |
+
|
716 |
+
// Remove spaces before the things that should not have spaces before them.
|
717 |
+
$css = preg_replace('/ ([@{};>+)\]~=,\/\n])/S', '$1', $css);
|
718 |
+
|
719 |
+
// Remove the spaces after the things that should not have spaces after them.
|
720 |
+
$css = preg_replace('/([{}:;>+(\[~=,\/\n]) /S', '$1', $css);
|
721 |
+
|
722 |
+
// Shorten shortable double colon (CSS3) pseudo-elements to single colon (CSS2)
|
723 |
+
$css = preg_replace('/::(before|after|first-(?:line|letter))(\{|,)/Si', ':$1$2', $css);
|
724 |
+
|
725 |
+
// Retain space for special IE6 cases
|
726 |
+
$css = preg_replace_callback('/:first-(line|letter)(\{|,)/Si', function ($matches) {
|
727 |
+
return ':first-' . strtolower($matches[1]) . ' ' . $matches[2];
|
728 |
+
}, $css);
|
729 |
+
|
730 |
+
// Find a fraction that may used in some @media queries such as: (min-aspect-ratio: 1/1)
|
731 |
+
// Add token to add the "/" back in later
|
732 |
+
$css = preg_replace('/\(([a-z-]+):([0-9]+)\/([0-9]+)\)/Si', '($1:$2' . self::QUERY_FRACTION . '$3)', $css);
|
733 |
+
|
734 |
+
// Remove empty rule blocks up to 2 levels deep.
|
735 |
+
$css = preg_replace(array_fill(0, 2, '/(\{)[^{};\/\n]+\{\}/S'), '$1', $css);
|
736 |
+
$css = preg_replace('/[^{};\/\n]+\{\}/S', '', $css);
|
737 |
+
|
738 |
+
// Two important comments next to each other? Remove extra newline.
|
739 |
+
if( $this->keepImportantComments ) {
|
740 |
+
$css = str_replace("\n\n", "\n", $css);
|
741 |
+
}
|
742 |
+
|
743 |
+
// Restore fraction
|
744 |
+
$css = str_replace(self::QUERY_FRACTION, '/', $css);
|
745 |
+
|
746 |
+
// Lowercase some popular @directives
|
747 |
+
$css = preg_replace_callback('/(?<!\\\\)@(?:charset|document|font-face|import|(?:-(?:atsc|khtml|moz|ms|o|wap|webkit)-)?keyframes|media|' . 'namespace|page|supports|viewport)/Si', array(
|
748 |
+
$this,
|
749 |
+
'strtolowerCallback'
|
750 |
+
), $css);
|
751 |
+
|
752 |
+
// Lowercase some popular media types
|
753 |
+
$css = preg_replace_callback('/[ ,](?:all|aural|braille|handheld|print|projection|screen|tty|tv|embossed|speech)[ ,;{]/Si', array(
|
754 |
+
$this,
|
755 |
+
'strtolowerCallback'
|
756 |
+
), $css);
|
757 |
+
|
758 |
+
// Lowercase some common pseudo-classes & pseudo-elements
|
759 |
+
$css = preg_replace_callback('/(?<!\\\\):(?:active|after|before|checked|default|disabled|empty|enabled|first-(?:child|of-type)|' . 'focus(?:-within)?|hover|indeterminate|in-range|invalid|lang\(|last-(?:child|of-type)|left|link|not\(|' . 'nth-(?:child|of-type)\(|nth-last-(?:child|of-type)\(|only-(?:child|of-type)|optional|out-of-range|' . 'read-(?:only|write)|required|right|root|:selection|target|valid|visited)/Si', array(
|
760 |
+
$this,
|
761 |
+
'strtolowerCallback'
|
762 |
+
), $css);
|
763 |
+
|
764 |
+
// @charset handling
|
765 |
+
if( preg_match($this->charsetRegex, $css, $matches) ) {
|
766 |
+
// Keep the first @charset at-rule found
|
767 |
+
$charset = $matches[0];
|
768 |
+
// Delete all @charset at-rules
|
769 |
+
$css = preg_replace($this->charsetRegex, '', $css);
|
770 |
+
}
|
771 |
+
|
772 |
+
// @import handling
|
773 |
+
$css = preg_replace_callback($this->importRegex, function ($matches) use (&$imports) {
|
774 |
+
// Keep all @import at-rules found for later
|
775 |
+
$imports .= $matches[0];
|
776 |
+
|
777 |
+
// Delete all @import at-rules
|
778 |
+
return '';
|
779 |
+
}, $css);
|
780 |
+
|
781 |
+
// @namespace handling
|
782 |
+
$css = preg_replace_callback($this->namespaceRegex, function ($matches) use (&$namespaces) {
|
783 |
+
// Keep all @namespace at-rules found for later
|
784 |
+
$namespaces .= $matches[0];
|
785 |
+
|
786 |
+
// Delete all @namespace at-rules
|
787 |
+
return '';
|
788 |
+
}, $css);
|
789 |
+
|
790 |
+
// Order critical at-rules:
|
791 |
+
// 1. @charset first
|
792 |
+
// 2. @imports below @charset
|
793 |
+
// 3. @namespaces below @imports
|
794 |
+
$css = $charset . $imports . $namespaces . $css;
|
795 |
+
|
796 |
+
return $css;
|
797 |
+
}
|
798 |
+
|
799 |
+
/**
|
800 |
+
* Splits long lines after a specific column.
|
801 |
+
*
|
802 |
+
* Some source control tools don't like it when files containing lines longer
|
803 |
+
* than, say 8000 characters, are checked in. The linebreak option is used in
|
804 |
+
* that case to split long lines after a specific column.
|
805 |
+
*
|
806 |
+
* @param string $css the whole stylesheet.
|
807 |
+
* @return string
|
808 |
+
*/
|
809 |
+
private function processLongLineSplitting($css)
|
810 |
+
{
|
811 |
+
if( $this->linebreakPosition > 0 ) {
|
812 |
+
$l = strlen($css);
|
813 |
+
$offset = $this->linebreakPosition;
|
814 |
+
while( preg_match('/(?<!\\\\)\}(?!\n)/S', $css, $matches, PREG_OFFSET_CAPTURE, $offset) ) {
|
815 |
+
$matchIndex = $matches[0][1];
|
816 |
+
$css = substr_replace($css, "\n", $matchIndex + 1, 0);
|
817 |
+
$offset = $matchIndex + 2 + $this->linebreakPosition;
|
818 |
+
$l += 1;
|
819 |
+
if( $offset > $l ) {
|
820 |
+
break;
|
821 |
+
}
|
822 |
+
}
|
823 |
+
}
|
824 |
+
|
825 |
+
return $css;
|
826 |
+
}
|
827 |
+
|
828 |
+
/**
|
829 |
+
* Converts hsl() & rgb() colors to HEX format.
|
830 |
+
* @param $matches
|
831 |
+
* @return string
|
832 |
+
*/
|
833 |
+
private function shortenHslAndRgbToHexCallback($matches)
|
834 |
+
{
|
835 |
+
$type = $matches[1];
|
836 |
+
$values = explode(',', $matches[2]);
|
837 |
+
$terminator = $matches[3];
|
838 |
+
|
839 |
+
if( $type === 'hsl' ) {
|
840 |
+
$values = Utils::hslToRgb($values);
|
841 |
+
}
|
842 |
+
|
843 |
+
$hexColors = Utils::rgbToHex($values);
|
844 |
+
|
845 |
+
// Restore space after rgb() or hsl() function in some cases such as:
|
846 |
+
// background-image: linear-gradient(to bottom, rgb(210,180,140) 10%, rgb(255,0,0) 90%);
|
847 |
+
if( !empty($terminator) && !preg_match('/[ ,);]/S', $terminator) ) {
|
848 |
+
$terminator = ' ' . $terminator;
|
849 |
+
}
|
850 |
+
|
851 |
+
return '#' . implode('', $hexColors) . $terminator;
|
852 |
+
}
|
853 |
+
|
854 |
+
/**
|
855 |
+
* Compresses HEX color values of the form #AABBCC to #ABC or short color name.
|
856 |
+
* @param $matches
|
857 |
+
* @return string
|
858 |
+
*/
|
859 |
+
private function shortenHexColorsCallback($matches)
|
860 |
+
{
|
861 |
+
$hex = $matches[1];
|
862 |
+
|
863 |
+
// Shorten suitable 6 chars HEX colors
|
864 |
+
if( strlen($hex) === 6 && preg_match('/^([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3$/Si', $hex, $m) ) {
|
865 |
+
$hex = $m[1] . $m[2] . $m[3];
|
866 |
+
}
|
867 |
+
|
868 |
+
// Lowercase
|
869 |
+
$hex = '#' . strtolower($hex);
|
870 |
+
|
871 |
+
// Replace Hex colors with shorter color names
|
872 |
+
$color = array_key_exists($hex, $this->hexToNamedColorsMap) ? $this->hexToNamedColorsMap[$hex] : $hex;
|
873 |
+
|
874 |
+
return $color . $matches[2];
|
875 |
+
}
|
876 |
+
|
877 |
+
/**
|
878 |
+
* Shortens all named colors with a shorter HEX counterpart for a set of safe properties
|
879 |
+
* e.g. white -> #fff
|
880 |
+
* @param array $matches
|
881 |
+
* @return string
|
882 |
+
*/
|
883 |
+
private function shortenNamedColorsCallback($matches)
|
884 |
+
{
|
885 |
+
return $matches[1] . $this->namedToHexColorsMap[strtolower($matches[2])] . $matches[3];
|
886 |
+
}
|
887 |
+
|
888 |
+
/**
|
889 |
+
* Makes a string lowercase
|
890 |
+
* @param array $matches
|
891 |
+
* @return string
|
892 |
+
*/
|
893 |
+
private function strtolowerCallback($matches)
|
894 |
+
{
|
895 |
+
return strtolower($matches[0]);
|
896 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
897 |
}
|
components/minify-and-combine/includes/classes/ext/php/yui-php-cssmin-bundled/Utils.php
CHANGED
@@ -1,159 +1,154 @@
|
|
1 |
<?php
|
2 |
-
namespace WMAC\tubalmartin\CssMin;
|
3 |
|
4 |
-
|
5 |
-
exit;
|
6 |
-
}
|
7 |
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
* Clamps a number between a minimum and a maximum value.
|
12 |
-
* @param int|float $n the number to clamp
|
13 |
-
* @param int|float $min the lower end number allowed
|
14 |
-
* @param int|float $max the higher end number allowed
|
15 |
-
* @return int|float
|
16 |
-
*/
|
17 |
-
public static function clampNumber($n, $min, $max)
|
18 |
-
{
|
19 |
-
return min(max($n, $min), $max);
|
20 |
-
}
|
21 |
|
22 |
-
|
23 |
-
* Clamps a RGB color number outside the sRGB color space
|
24 |
-
* @param int|float $n the number to clamp
|
25 |
-
* @return int|float
|
26 |
-
*/
|
27 |
-
public static function clampNumberSrgb($n)
|
28 |
-
{
|
29 |
-
return self::clampNumber($n, 0, 255);
|
30 |
-
}
|
31 |
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
: ($l + $s) - ($s * $l);
|
54 |
-
$v1 = (2 * $l) - $v2;
|
55 |
-
$r = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h + (1 / 3)));
|
56 |
-
$g = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h));
|
57 |
-
$b = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h - (1 / 3)));
|
58 |
-
}
|
59 |
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
}
|
62 |
|
63 |
-
|
64 |
-
|
65 |
-
* @param $v1
|
66 |
-
* @param $v2
|
67 |
-
* @param $vh
|
68 |
-
* @return mixed
|
69 |
-
*/
|
70 |
-
public static function hueToRgb($v1, $v2, $vh)
|
71 |
-
{
|
72 |
-
$vh = $vh < 0
|
73 |
-
? $vh + 1
|
74 |
-
: ($vh > 1
|
75 |
-
? $vh - 1
|
76 |
-
: $vh);
|
77 |
-
|
78 |
-
if( $vh * 6 < 1 ) {
|
79 |
-
return $v1 + ($v2 - $v1) * 6 * $vh;
|
80 |
-
}
|
81 |
|
82 |
-
|
83 |
-
|
84 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
85 |
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
|
90 |
-
|
|
|
91 |
}
|
92 |
|
93 |
-
|
94 |
-
|
95 |
-
* @param mixed $size
|
96 |
-
* @return int
|
97 |
-
*/
|
98 |
-
public static function normalizeInt($size)
|
99 |
-
{
|
100 |
-
if( is_string($size) ) {
|
101 |
-
$letter = substr($size, -1);
|
102 |
-
$size = intval($size);
|
103 |
-
switch( $letter ) {
|
104 |
-
case 'M':
|
105 |
-
case 'm':
|
106 |
-
return (int)$size * 1048576;
|
107 |
-
case 'K':
|
108 |
-
case 'k':
|
109 |
-
return (int)$size * 1024;
|
110 |
-
case 'G':
|
111 |
-
case 'g':
|
112 |
-
return (int)$size * 1073741824;
|
113 |
-
}
|
114 |
-
}
|
115 |
|
116 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
}
|
118 |
|
119 |
-
|
120 |
-
|
121 |
-
* @param $rgbPercentage
|
122 |
-
* @return int
|
123 |
-
*/
|
124 |
-
public static function rgbPercentageToRgbInteger($rgbPercentage)
|
125 |
-
{
|
126 |
-
if( strpos($rgbPercentage, '%') !== false ) {
|
127 |
-
$rgbPercentage = self::roundNumber(floatval(str_replace('%', '', $rgbPercentage)) * 2.55);
|
128 |
-
}
|
129 |
|
130 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
}
|
132 |
|
133 |
-
|
134 |
-
|
135 |
-
* @param array $rgbColors
|
136 |
-
* @return array
|
137 |
-
*/
|
138 |
-
public static function rgbToHex($rgbColors)
|
139 |
-
{
|
140 |
-
$hexColors = array();
|
141 |
-
|
142 |
-
// Values outside the sRGB color space should be clipped (0-255)
|
143 |
-
for($i = 0, $l = count($rgbColors); $i < $l; $i++) {
|
144 |
-
$hexColors[$i] = sprintf("%02x", self::clampNumberSrgb(self::rgbPercentageToRgbInteger($rgbColors[$i])));
|
145 |
-
}
|
146 |
|
147 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
}
|
149 |
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
|
|
|
|
159 |
}
|
|
1 |
<?php
|
|
|
2 |
|
3 |
+
namespace WMAC\tubalmartin\CssMin;
|
|
|
|
|
4 |
|
5 |
+
if( !defined('ABSPATH') ) {
|
6 |
+
exit;
|
7 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
9 |
+
class Utils {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
|
11 |
+
/**
|
12 |
+
* Clamps a number between a minimum and a maximum value.
|
13 |
+
* @param int|float $n the number to clamp
|
14 |
+
* @param int|float $min the lower end number allowed
|
15 |
+
* @param int|float $max the higher end number allowed
|
16 |
+
* @return int|float
|
17 |
+
*/
|
18 |
+
public static function clampNumber($n, $min, $max)
|
19 |
+
{
|
20 |
+
return min(max($n, $min), $max);
|
21 |
+
}
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Clamps a RGB color number outside the sRGB color space
|
25 |
+
* @param int|float $n the number to clamp
|
26 |
+
* @return int|float
|
27 |
+
*/
|
28 |
+
public static function clampNumberSrgb($n)
|
29 |
+
{
|
30 |
+
return self::clampNumber($n, 0, 255);
|
31 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
+
/**
|
34 |
+
* Converts a HSL color into a RGB color
|
35 |
+
* @param array $hslValues
|
36 |
+
* @return array
|
37 |
+
*/
|
38 |
+
public static function hslToRgb($hslValues)
|
39 |
+
{
|
40 |
+
$h = floatval($hslValues[0]);
|
41 |
+
$s = floatval(str_replace('%', '', $hslValues[1]));
|
42 |
+
$l = floatval(str_replace('%', '', $hslValues[2]));
|
43 |
+
|
44 |
+
// Wrap and clamp, then fraction!
|
45 |
+
$h = ((($h % 360) + 360) % 360) / 360;
|
46 |
+
$s = self::clampNumber($s, 0, 100) / 100;
|
47 |
+
$l = self::clampNumber($l, 0, 100) / 100;
|
48 |
+
|
49 |
+
if( $s == 0 ) {
|
50 |
+
$r = $g = $b = self::roundNumber(255 * $l);
|
51 |
+
} else {
|
52 |
+
$v2 = $l < 0.5 ? $l * (1 + $s) : ($l + $s) - ($s * $l);
|
53 |
+
$v1 = (2 * $l) - $v2;
|
54 |
+
$r = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h + (1 / 3)));
|
55 |
+
$g = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h));
|
56 |
+
$b = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h - (1 / 3)));
|
57 |
}
|
58 |
|
59 |
+
return array($r, $g, $b);
|
60 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
|
62 |
+
/**
|
63 |
+
* Tests and selects the correct formula for each RGB color channel
|
64 |
+
* @param $v1
|
65 |
+
* @param $v2
|
66 |
+
* @param $vh
|
67 |
+
* @return mixed
|
68 |
+
*/
|
69 |
+
public static function hueToRgb($v1, $v2, $vh)
|
70 |
+
{
|
71 |
+
$vh = $vh < 0 ? $vh + 1 : ($vh > 1 ? $vh - 1 : $vh);
|
72 |
+
|
73 |
+
if( $vh * 6 < 1 ) {
|
74 |
+
return $v1 + ($v2 - $v1) * 6 * $vh;
|
75 |
+
}
|
76 |
|
77 |
+
if( $vh * 2 < 1 ) {
|
78 |
+
return $v2;
|
79 |
+
}
|
80 |
|
81 |
+
if( $vh * 3 < 2 ) {
|
82 |
+
return $v1 + ($v2 - $v1) * ((2 / 3) - $vh) * 6;
|
83 |
}
|
84 |
|
85 |
+
return $v1;
|
86 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
|
88 |
+
/**
|
89 |
+
* Convert strings like "64M" or "30" to int values
|
90 |
+
* @param mixed $size
|
91 |
+
* @return int
|
92 |
+
*/
|
93 |
+
public static function normalizeInt($size)
|
94 |
+
{
|
95 |
+
if( is_string($size) ) {
|
96 |
+
$letter = substr($size, -1);
|
97 |
+
$size = intval($size);
|
98 |
+
switch( $letter ) {
|
99 |
+
case 'M':
|
100 |
+
case 'm':
|
101 |
+
return (int)$size * 1048576;
|
102 |
+
case 'K':
|
103 |
+
case 'k':
|
104 |
+
return (int)$size * 1024;
|
105 |
+
case 'G':
|
106 |
+
case 'g':
|
107 |
+
return (int)$size * 1073741824;
|
108 |
+
}
|
109 |
}
|
110 |
|
111 |
+
return (int)$size;
|
112 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
|
114 |
+
/**
|
115 |
+
* Converts a string containing and RGB percentage value into a RGB integer value i.e. '90%' -> 229.5
|
116 |
+
* @param $rgbPercentage
|
117 |
+
* @return int
|
118 |
+
*/
|
119 |
+
public static function rgbPercentageToRgbInteger($rgbPercentage)
|
120 |
+
{
|
121 |
+
if( strpos($rgbPercentage, '%') !== false ) {
|
122 |
+
$rgbPercentage = self::roundNumber(floatval(str_replace('%', '', $rgbPercentage)) * 2.55);
|
123 |
}
|
124 |
|
125 |
+
return intval($rgbPercentage, 10);
|
126 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
|
128 |
+
/**
|
129 |
+
* Converts a RGB color into a HEX color
|
130 |
+
* @param array $rgbColors
|
131 |
+
* @return array
|
132 |
+
*/
|
133 |
+
public static function rgbToHex($rgbColors)
|
134 |
+
{
|
135 |
+
$hexColors = array();
|
136 |
+
|
137 |
+
// Values outside the sRGB color space should be clipped (0-255)
|
138 |
+
for($i = 0, $l = count($rgbColors); $i < $l; $i++) {
|
139 |
+
$hexColors[$i] = sprintf("%02x", self::clampNumberSrgb(self::rgbPercentageToRgbInteger($rgbColors[$i])));
|
140 |
}
|
141 |
|
142 |
+
return $hexColors;
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* Rounds a number to its closest integer
|
147 |
+
* @param $n
|
148 |
+
* @return int
|
149 |
+
*/
|
150 |
+
public static function roundNumber($n)
|
151 |
+
{
|
152 |
+
return intval(round(floatval($n)), 10);
|
153 |
}
|
154 |
+
}
|
components/minify-and-combine/minify-and-combine.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
* Text Domain: minify-and-combine
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
-
* Framework Version:
|
12 |
*/
|
13 |
|
14 |
/*
|
@@ -59,15 +59,15 @@ $wmac_plugin_info = array(
|
|
59 |
|
60 |
// FRAMEWORK MODULES
|
61 |
'load_factory_modules' => array(
|
62 |
-
array( 'libs/factory/bootstrap', '
|
63 |
-
array( 'libs/factory/forms', '
|
64 |
-
array( 'libs/factory/pages', '
|
65 |
-
array( 'libs/factory/clearfy', '
|
66 |
-
array( 'libs/factory/adverts', '
|
67 |
)
|
68 |
);
|
69 |
|
70 |
-
$wmac_compatibility = new
|
71 |
'plugin_already_activate' => defined( 'WMAC_PLUGIN_ACTIVE' ),
|
72 |
'required_php_version' => '5.4',
|
73 |
'required_wp_version' => '4.2.0',
|
8 |
* Text Domain: minify-and-combine
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
+
* Framework Version: FACTORY_446_VERSION
|
12 |
*/
|
13 |
|
14 |
/*
|
59 |
|
60 |
// FRAMEWORK MODULES
|
61 |
'load_factory_modules' => array(
|
62 |
+
array( 'libs/factory/bootstrap', 'factory_bootstrap_446', 'admin' ),
|
63 |
+
array( 'libs/factory/forms', 'factory_forms_443', 'admin' ),
|
64 |
+
array( 'libs/factory/pages', 'factory_pages_445', 'admin' ),
|
65 |
+
array( 'libs/factory/clearfy', 'factory_clearfy_237', 'all' ),
|
66 |
+
array( 'libs/factory/adverts', 'factory_adverts_124', 'admin')
|
67 |
)
|
68 |
);
|
69 |
|
70 |
+
$wmac_compatibility = new Wbcr_Factory446_Requirements( __FILE__, array_merge( $wmac_plugin_info, array(
|
71 |
'plugin_already_activate' => defined( 'WMAC_PLUGIN_ACTIVE' ),
|
72 |
'required_php_version' => '5.4',
|
73 |
'required_wp_version' => '4.2.0',
|
components/updates-manager/admin/activation.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
*
|
6 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
7 |
* @copyright (c) 09.09.2017, Webcraftic
|
8 |
-
* @see
|
9 |
*/
|
10 |
|
11 |
// Exit if accessed directly
|
@@ -13,7 +13,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
-
class WUPM_Activation extends
|
17 |
|
18 |
/**
|
19 |
* Runs activation actions.
|
5 |
*
|
6 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
7 |
* @copyright (c) 09.09.2017, Webcraftic
|
8 |
+
* @see Factory446_Activator
|
9 |
*/
|
10 |
|
11 |
// Exit if accessed directly
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
+
class WUPM_Activation extends Wbcr_Factory446_Activator {
|
17 |
|
18 |
/**
|
19 |
* Runs activation actions.
|
components/updates-manager/admin/assets/js/ajax-components.js
CHANGED
@@ -59,15 +59,15 @@ jQuery(function($) {
|
|
59 |
|
60 |
if( !response || !response.success ) {
|
61 |
if( response.data.error_message ) {
|
62 |
-
$.
|
63 |
}
|
64 |
return false;
|
65 |
}
|
66 |
|
67 |
-
/*var noticeId = $.
|
68 |
|
69 |
setTimeout(function() {
|
70 |
-
$.
|
71 |
}, 5000);*/
|
72 |
},
|
73 |
error: function(xhr, ajaxOptions, thrownError) {
|
@@ -75,7 +75,7 @@ jQuery(function($) {
|
|
75 |
console.log(xhr.responseText);
|
76 |
console.log(thrownError);
|
77 |
|
78 |
-
$.
|
79 |
}
|
80 |
});
|
81 |
});
|
59 |
|
60 |
if( !response || !response.success ) {
|
61 |
if( response.data.error_message ) {
|
62 |
+
$.wbcr_factory_clearfy_237.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
|
63 |
}
|
64 |
return false;
|
65 |
}
|
66 |
|
67 |
+
/*var noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Settings successfully updated', 'success');
|
68 |
|
69 |
setTimeout(function() {
|
70 |
+
$.wbcr_factory_clearfy_237.app.hideNotice(noticeId);
|
71 |
}, 5000);*/
|
72 |
},
|
73 |
error: function(xhr, ajaxOptions, thrownError) {
|
75 |
console.log(xhr.responseText);
|
76 |
console.log(thrownError);
|
77 |
|
78 |
+
$.wbcr_factory_clearfy_237.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
|
79 |
}
|
80 |
});
|
81 |
});
|
components/updates-manager/admin/boot.php
CHANGED
@@ -48,7 +48,7 @@ if ( ! defined( 'LOADING_UPDATES_MANAGER_AS_ADDON' ) ) {
|
|
48 |
return $page_url;
|
49 |
}
|
50 |
|
51 |
-
add_filter( '
|
52 |
|
53 |
/**
|
54 |
* Удаляем лишние виджеты из правого сайдбара в интерфейсе плагина
|
48 |
return $page_url;
|
49 |
}
|
50 |
|
51 |
+
add_filter( 'wbcr_factory_pages_445_imppage_rating_widget_url', 'wbcr_upm_rating_widget_url', 10, 2 );
|
52 |
|
53 |
/**
|
54 |
* Удаляем лишние виджеты из правого сайдбара в интерфейсе плагина
|
components/updates-manager/admin/includes/class-abstract-filters.php
CHANGED
@@ -14,7 +14,7 @@ abstract class WUPM_AbstractFilters {
|
|
14 |
protected $is_disable_translation_updates;
|
15 |
|
16 |
|
17 |
-
function __construct(
|
18 |
$this->plugin = $plugin;
|
19 |
$this->load();
|
20 |
}
|
14 |
protected $is_disable_translation_updates;
|
15 |
|
16 |
|
17 |
+
function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
18 |
$this->plugin = $plugin;
|
19 |
$this->load();
|
20 |
}
|
components/updates-manager/admin/pages/class-page-advanced.php
CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
-
class WUPM_AdvancedPage extends
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
@@ -66,9 +66,9 @@ class WUPM_AdvancedPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
66 |
*
|
67 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
68 |
*
|
69 |
-
* @param \
|
70 |
*/
|
71 |
-
public function __construct(
|
72 |
$this->menu_title = __( 'Advanced', 'webcraftic-updates-manager' );
|
73 |
|
74 |
parent::__construct( $plugin );
|
@@ -79,8 +79,8 @@ class WUPM_AdvancedPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
79 |
*
|
80 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
81 |
*
|
82 |
-
* @param \
|
83 |
-
* @param \
|
84 |
*/
|
85 |
public function assets( $scripts, $styles ) {
|
86 |
parent::assets( $scripts, $styles );
|
16 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
+
class WUPM_AdvancedPage extends Wbcr_FactoryClearfy237_PageBase {
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
66 |
*
|
67 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
68 |
*
|
69 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
70 |
*/
|
71 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
72 |
$this->menu_title = __( 'Advanced', 'webcraftic-updates-manager' );
|
73 |
|
74 |
parent::__construct( $plugin );
|
79 |
*
|
80 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
81 |
*
|
82 |
+
* @param \Wbcr_Factory446_ScriptList $scripts
|
83 |
+
* @param \Wbcr_Factory446_StyleList $styles
|
84 |
*/
|
85 |
public function assets( $scripts, $styles ) {
|
86 |
parent::assets( $scripts, $styles );
|
components/updates-manager/admin/pages/class-page-more-features.php
CHANGED
@@ -16,6 +16,6 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
-
class WUPM_MoreFeaturesPage extends
|
20 |
|
21 |
}
|
16 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
+
class WUPM_MoreFeaturesPage extends Wbcr_FactoryClearfy237_MoreFeaturesPage {
|
20 |
|
21 |
}
|
components/updates-manager/admin/pages/class-page-plugins.php
CHANGED
@@ -16,7 +16,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
16 |
*
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
-
class WUPM_PluginsPage extends
|
20 |
|
21 |
/**
|
22 |
*{@inheritDoc}
|
@@ -83,9 +83,9 @@ class WUPM_PluginsPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
83 |
*
|
84 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
85 |
*
|
86 |
-
* @param \
|
87 |
*/
|
88 |
-
public function __construct(
|
89 |
$this->menu_title = __( 'Plugins', 'webcraftic-updates-manager' );
|
90 |
|
91 |
parent::__construct( $plugin );
|
@@ -121,8 +121,8 @@ class WUPM_PluginsPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
121 |
*
|
122 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
123 |
*
|
124 |
-
* @param \
|
125 |
-
* @param \
|
126 |
*/
|
127 |
public function assets( $scripts, $styles ) {
|
128 |
parent::assets( $scripts, $styles );
|
16 |
*
|
17 |
* @copyright (c) 2018 Webraftic Ltd
|
18 |
*/
|
19 |
+
class WUPM_PluginsPage extends Wbcr_FactoryClearfy237_PageBase {
|
20 |
|
21 |
/**
|
22 |
*{@inheritDoc}
|
83 |
*
|
84 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
85 |
*
|
86 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
87 |
*/
|
88 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
89 |
$this->menu_title = __( 'Plugins', 'webcraftic-updates-manager' );
|
90 |
|
91 |
parent::__construct( $plugin );
|
121 |
*
|
122 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
123 |
*
|
124 |
+
* @param \Wbcr_Factory446_ScriptList $scripts
|
125 |
+
* @param \Wbcr_Factory446_StyleList $styles
|
126 |
*/
|
127 |
public function assets( $scripts, $styles ) {
|
128 |
parent::assets( $scripts, $styles );
|
components/updates-manager/admin/pages/class-page-themes.php
CHANGED
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
15 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
16 |
* @copyright (c) 2018 Webraftic Ltd
|
17 |
*/
|
18 |
-
class WUPM_ThemesPage extends
|
19 |
|
20 |
/**
|
21 |
* {@inheritDoc}
|
@@ -85,9 +85,9 @@ class WUPM_ThemesPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
85 |
private $themes_update_filters = [];
|
86 |
|
87 |
/**
|
88 |
-
* @param
|
89 |
*/
|
90 |
-
public function __construct(
|
91 |
$this->menu_title = __( 'Themes', 'webcraftic-updates-manager' );
|
92 |
|
93 |
parent::__construct( $plugin );
|
@@ -123,7 +123,7 @@ class WUPM_ThemesPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
123 |
*
|
124 |
* @since 1.0.0
|
125 |
* @return void
|
126 |
-
* @see
|
127 |
*
|
128 |
*/
|
129 |
public function assets( $scripts, $styles ) {
|
15 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
16 |
* @copyright (c) 2018 Webraftic Ltd
|
17 |
*/
|
18 |
+
class WUPM_ThemesPage extends Wbcr_FactoryClearfy237_PageBase {
|
19 |
|
20 |
/**
|
21 |
* {@inheritDoc}
|
85 |
private $themes_update_filters = [];
|
86 |
|
87 |
/**
|
88 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
89 |
*/
|
90 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
91 |
$this->menu_title = __( 'Themes', 'webcraftic-updates-manager' );
|
92 |
|
93 |
parent::__construct( $plugin );
|
123 |
*
|
124 |
* @since 1.0.0
|
125 |
* @return void
|
126 |
+
* @see FactoryPages445_AdminPage
|
127 |
*
|
128 |
*/
|
129 |
public function assets( $scripts, $styles ) {
|
components/updates-manager/admin/pages/class-page-updates.php
CHANGED
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
15 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
16 |
* @copyright (c) 2018 Webraftic Ltd
|
17 |
*/
|
18 |
-
class WUPM_UpdatesPage extends
|
19 |
|
20 |
/**
|
21 |
* {@inheritDoc}
|
@@ -51,9 +51,9 @@ class WUPM_UpdatesPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
51 |
*
|
52 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
53 |
*
|
54 |
-
* @param \
|
55 |
*/
|
56 |
-
public function __construct(
|
57 |
$this->menu_title = __( 'Updates manager', 'webcraftic-updates-manager' );
|
58 |
$this->page_menu_short_description = __( 'Manage all site updates', 'webcraftic-updates-manager' );
|
59 |
|
@@ -86,8 +86,8 @@ class WUPM_UpdatesPage extends Wbcr_FactoryClearfy236_PageBase {
|
|
86 |
*
|
87 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com> *
|
88 |
*
|
89 |
-
* @param \
|
90 |
-
* @param \
|
91 |
*/
|
92 |
public function assets( $scripts, $styles ) {
|
93 |
parent::assets( $scripts, $styles );
|
15 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
16 |
* @copyright (c) 2018 Webraftic Ltd
|
17 |
*/
|
18 |
+
class WUPM_UpdatesPage extends Wbcr_FactoryClearfy237_PageBase {
|
19 |
|
20 |
/**
|
21 |
* {@inheritDoc}
|
51 |
*
|
52 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
53 |
*
|
54 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
55 |
*/
|
56 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
57 |
$this->menu_title = __( 'Updates manager', 'webcraftic-updates-manager' );
|
58 |
$this->page_menu_short_description = __( 'Manage all site updates', 'webcraftic-updates-manager' );
|
59 |
|
86 |
*
|
87 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com> *
|
88 |
*
|
89 |
+
* @param \Wbcr_Factory446_ScriptList $scripts
|
90 |
+
* @param \Wbcr_Factory446_StyleList $styles
|
91 |
*/
|
92 |
public function assets( $scripts, $styles ) {
|
93 |
parent::assets( $scripts, $styles );
|
components/updates-manager/includes/class-plugin.php
CHANGED
@@ -10,11 +10,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
10 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
11 |
* @copyright (c) 19.02.2018, Webcraftic
|
12 |
*/
|
13 |
-
class WUPM_Plugin extends
|
14 |
|
15 |
/**
|
16 |
* @see self::app()
|
17 |
-
* @var
|
18 |
*/
|
19 |
private static $app;
|
20 |
|
@@ -57,7 +57,7 @@ class WUPM_Plugin extends Wbcr_Factory445_Plugin {
|
|
57 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
58 |
* классам.
|
59 |
*
|
60 |
-
* @return \
|
61 |
*/
|
62 |
public static function app() {
|
63 |
return self::$app;
|
10 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
11 |
* @copyright (c) 19.02.2018, Webcraftic
|
12 |
*/
|
13 |
+
class WUPM_Plugin extends Wbcr_Factory446_Plugin {
|
14 |
|
15 |
/**
|
16 |
* @see self::app()
|
17 |
+
* @var Wbcr_Factory446_Plugin
|
18 |
*/
|
19 |
private static $app;
|
20 |
|
57 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
58 |
* классам.
|
59 |
*
|
60 |
+
* @return \Wbcr_Factory446_Plugin|\WUPM_Plugin
|
61 |
*/
|
62 |
public static function app() {
|
63 |
return self::$app;
|
components/updates-manager/includes/classes/class-configurate-updates.php
CHANGED
@@ -12,7 +12,7 @@ require_once WUPM_PLUGIN_DIR . '/admin/includes/class-plugin-filters.php';
|
|
12 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
13 |
* @copyright (c) 2017 Webraftic Ltd
|
14 |
*/
|
15 |
-
class WUPM_ConfigUpdates extends
|
16 |
|
17 |
public function registerActionsAndFilters() {
|
18 |
/**
|
12 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
13 |
* @copyright (c) 2017 Webraftic Ltd
|
14 |
*/
|
15 |
+
class WUPM_ConfigUpdates extends Wbcr_FactoryClearfy237_Configurate {
|
16 |
|
17 |
public function registerActionsAndFilters() {
|
18 |
/**
|
components/updates-manager/migrations/010008.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
-
class WUPMUpdate010008 extends
|
8 |
|
9 |
public function install()
|
10 |
{
|
4 |
* Updates for altering the table used to store statistics data.
|
5 |
* Adds new columns and renames existing ones in order to add support for the new social buttons.
|
6 |
*/
|
7 |
+
class WUPMUpdate010008 extends Wbcr_Factory446_Update {
|
8 |
|
9 |
public function install()
|
10 |
{
|
components/updates-manager/webcraftic-updates-manager.php
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
* Text Domain: webcraftic-updates-manager
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
-
* Framework Version:
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
@@ -68,15 +68,15 @@ $wupm_plugin_info = array(
|
|
68 |
|
69 |
// FRAMEWORK MODULES
|
70 |
'load_factory_modules' => array(
|
71 |
-
array('libs/factory/bootstrap', '
|
72 |
-
array('libs/factory/forms', '
|
73 |
-
array('libs/factory/pages', '
|
74 |
-
array('libs/factory/clearfy', '
|
75 |
-
array('libs/factory/adverts', '
|
76 |
)
|
77 |
);
|
78 |
|
79 |
-
$wupm_compatibility = new
|
80 |
'plugin_already_activate' => defined('WUPM_PLUGIN_ACTIVE'),
|
81 |
'required_php_version' => '5.4',
|
82 |
'required_wp_version' => '4.2.0',
|
8 |
* Text Domain: webcraftic-updates-manager
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://webcraftic.com
|
11 |
+
* Framework Version: FACTORY_446_VERSION
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
68 |
|
69 |
// FRAMEWORK MODULES
|
70 |
'load_factory_modules' => array(
|
71 |
+
array('libs/factory/bootstrap', 'factory_bootstrap_446', 'admin'),
|
72 |
+
array('libs/factory/forms', 'factory_forms_443', 'admin'),
|
73 |
+
array('libs/factory/pages', 'factory_pages_445', 'admin'),
|
74 |
+
array('libs/factory/clearfy', 'factory_clearfy_237', 'all'),
|
75 |
+
array('libs/factory/adverts', 'factory_adverts_124', 'admin')
|
76 |
)
|
77 |
);
|
78 |
|
79 |
+
$wupm_compatibility = new Wbcr_Factory446_Requirements(__FILE__, array_merge($wupm_plugin_info, array(
|
80 |
'plugin_already_activate' => defined('WUPM_PLUGIN_ACTIVE'),
|
81 |
'required_php_version' => '5.4',
|
82 |
'required_wp_version' => '4.2.0',
|
includes/boot.php
CHANGED
@@ -56,7 +56,7 @@ function wbcr_clr_admin_bar_menu($wp_admin_bar)
|
|
56 |
* @since 1.1.3 - добавлен
|
57 |
* @since 1.1.4 - является устаревшим
|
58 |
*/
|
59 |
-
$menu_items =
|
60 |
|
61 |
/**
|
62 |
* @since 1.1.3 - добавлен
|
56 |
* @since 1.1.3 - добавлен
|
57 |
* @since 1.1.4 - является устаревшим
|
58 |
*/
|
59 |
+
$menu_items = wbcr_factory_446_apply_filters_deprecated('wbcr_clearfy_admin_bar_menu_items', [$menu_items], '1.4.0', 'wbcr/clearfy/adminbar_menu_items');
|
60 |
|
61 |
/**
|
62 |
* @since 1.1.3 - добавлен
|
includes/class.plugin.php
CHANGED
@@ -12,11 +12,11 @@ if( !defined('ABSPATH') ) {
|
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
-
class WCL_Plugin extends
|
16 |
|
17 |
/**
|
18 |
* @see self::app()
|
19 |
-
* @var
|
20 |
*/
|
21 |
private static $app;
|
22 |
|
@@ -74,7 +74,7 @@ class WCL_Plugin extends Wbcr_Factory445_Plugin {
|
|
74 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
75 |
* классам.
|
76 |
*
|
77 |
-
* @return \
|
78 |
*/
|
79 |
public static function app()
|
80 |
{
|
@@ -312,7 +312,7 @@ class WCL_Plugin extends Wbcr_Factory445_Plugin {
|
|
312 |
* @param $slug
|
313 |
* param $premium
|
314 |
*
|
315 |
-
* @return \WBCR\
|
316 |
*/
|
317 |
public function getInstallComponentsButton($component_type, $slug)
|
318 |
{
|
@@ -325,7 +325,7 @@ class WCL_Plugin extends Wbcr_Factory445_Plugin {
|
|
325 |
* @param $component_type
|
326 |
* @param $slug
|
327 |
*
|
328 |
-
* @return \WBCR\
|
329 |
*/
|
330 |
public function getDeleteComponentsButton($component_type, $slug)
|
331 |
{
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
+
class WCL_Plugin extends Wbcr_Factory446_Plugin {
|
16 |
|
17 |
/**
|
18 |
* @see self::app()
|
19 |
+
* @var Wbcr_Factory446_Plugin
|
20 |
*/
|
21 |
private static $app;
|
22 |
|
74 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
75 |
* классам.
|
76 |
*
|
77 |
+
* @return \Wbcr_Factory446_Plugin|\WCL_Plugin
|
78 |
*/
|
79 |
public static function app()
|
80 |
{
|
312 |
* @param $slug
|
313 |
* param $premium
|
314 |
*
|
315 |
+
* @return \WBCR\Factory_446\Components\Install_Button
|
316 |
*/
|
317 |
public function getInstallComponentsButton($component_type, $slug)
|
318 |
{
|
325 |
* @param $component_type
|
326 |
* @param $slug
|
327 |
*
|
328 |
+
* @return \WBCR\Factory_446\Components\Delete_Button
|
329 |
*/
|
330 |
public function getDeleteComponentsButton($component_type, $slug)
|
331 |
{
|
includes/classes/3rd-party/boot.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
|
10 |
-
add_filter('
|
11 |
|
12 |
require_once(WCL_PLUGIN_DIR . '/includes/classes/3rd-party/class-base.php');
|
13 |
require_once(WCL_PLUGIN_DIR . '/includes/classes/3rd-party/plugins/class-wp-rocket.php');
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
|
10 |
+
add_filter('wbcr_factory_446_form_items', function ($forms_groups, $name) {
|
11 |
|
12 |
require_once(WCL_PLUGIN_DIR . '/includes/classes/3rd-party/class-base.php');
|
13 |
require_once(WCL_PLUGIN_DIR . '/includes/classes/3rd-party/plugins/class-wp-rocket.php');
|
includes/classes/3rd-party/class-form-entity.php
CHANGED
@@ -57,7 +57,7 @@ class Form_Entity {
|
|
57 |
|
58 |
protected static function is_control(array $item)
|
59 |
{
|
60 |
-
return isset($item['type']) && isset(\
|
61 |
}
|
62 |
|
63 |
/**
|
@@ -69,7 +69,7 @@ class Form_Entity {
|
|
69 |
*/
|
70 |
protected static function is_control_holder(array $item)
|
71 |
{
|
72 |
-
return isset($item['type']) && isset(\
|
73 |
}
|
74 |
|
75 |
/**
|
@@ -81,7 +81,7 @@ class Form_Entity {
|
|
81 |
*/
|
82 |
protected static function is_custom_element(array $item)
|
83 |
{
|
84 |
-
return isset($item['type']) && isset(\
|
85 |
}
|
86 |
|
87 |
public function make_control_disabled()
|
57 |
|
58 |
protected static function is_control(array $item)
|
59 |
{
|
60 |
+
return isset($item['type']) && isset(\Wbcr_FactoryForms443_Manager::$registered_controls[$item['type']]);
|
61 |
}
|
62 |
|
63 |
/**
|
69 |
*/
|
70 |
protected static function is_control_holder(array $item)
|
71 |
{
|
72 |
+
return isset($item['type']) && isset(\Wbcr_FactoryForms443_Manager::$registered_holders[$item['type']]);
|
73 |
}
|
74 |
|
75 |
/**
|
81 |
*/
|
82 |
protected static function is_custom_element(array $item)
|
83 |
{
|
84 |
+
return isset($item['type']) && isset(\Wbcr_FactoryForms443_Manager::$registered_custom_elements[$item['type']]);
|
85 |
}
|
86 |
|
87 |
public function make_control_disabled()
|
includes/classes/class.configurate-advanced.php
CHANGED
@@ -11,7 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
11 |
exit;
|
12 |
}
|
13 |
|
14 |
-
class WCL_ConfigAdvanced extends
|
15 |
|
16 |
/**
|
17 |
* @param WCL_Plugin $plugin
|
11 |
exit;
|
12 |
}
|
13 |
|
14 |
+
class WCL_ConfigAdvanced extends Wbcr_FactoryClearfy237_Configurate {
|
15 |
|
16 |
/**
|
17 |
* @param WCL_Plugin $plugin
|
includes/classes/class.configurate-google-performance.php
CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
-
class WCL_ConfigGooglePerformance extends
|
16 |
|
17 |
/**
|
18 |
* @param WCL_Plugin $plugin
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
+
class WCL_ConfigGooglePerformance extends Wbcr_FactoryClearfy237_Configurate {
|
16 |
|
17 |
/**
|
18 |
* @param WCL_Plugin $plugin
|
includes/classes/class.configurate-performance.php
CHANGED
@@ -12,7 +12,7 @@ if( !defined('ABSPATH') ) {
|
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
-
class WCL_ConfigPerformance extends
|
16 |
|
17 |
/**
|
18 |
* @param WCL_Plugin $plugin
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
+
class WCL_ConfigPerformance extends Wbcr_FactoryClearfy237_Configurate {
|
16 |
|
17 |
/**
|
18 |
* @param WCL_Plugin $plugin
|
includes/classes/class.configurate-privacy.php
CHANGED
@@ -9,45 +9,47 @@
|
|
9 |
*/
|
10 |
|
11 |
// Exit if accessed directly
|
12 |
-
if
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
-
class WCL_ConfigPrivacy extends
|
17 |
|
18 |
/**
|
19 |
* @param WCL_Plugin $plugin
|
20 |
*/
|
21 |
-
public function __construct(
|
22 |
-
|
|
|
23 |
|
24 |
$this->plugin = $plugin;
|
25 |
}
|
26 |
|
27 |
-
public function registerActionsAndFilters()
|
28 |
-
|
29 |
-
|
|
|
30 |
// Clean meta generator for Woocommerce
|
31 |
-
if
|
32 |
-
remove_action(
|
33 |
}
|
34 |
|
35 |
// Clean meta generator for SitePress
|
36 |
-
if
|
37 |
global $sitepress;
|
38 |
-
remove_action(
|
39 |
}
|
40 |
|
41 |
// Clean meta generator for Wordpress core
|
42 |
-
remove_action(
|
43 |
-
add_filter(
|
44 |
|
45 |
// Clean all meta generators
|
46 |
-
add_action(
|
47 |
}
|
48 |
|
49 |
-
if
|
50 |
-
add_action(
|
51 |
}
|
52 |
}
|
53 |
}
|
@@ -56,38 +58,43 @@ class WCL_ConfigPrivacy extends Wbcr_FactoryClearfy236_Configurate {
|
|
56 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
57 |
* @since 1.5.3
|
58 |
*/
|
59 |
-
public function clean_meta_generators()
|
60 |
-
|
|
|
61 |
}
|
62 |
|
63 |
/**
|
64 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
65 |
* @since 1.0.0
|
66 |
*/
|
67 |
-
public function clean_html_comments()
|
68 |
-
|
|
|
|
|
|
|
69 |
}
|
70 |
|
71 |
/**
|
72 |
* Replace <meta .* name="generator"> like tags
|
73 |
* which may contain versioning of
|
74 |
*
|
75 |
-
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
76 |
-
* @since 1.5.3
|
77 |
-
*
|
78 |
* @param $html
|
79 |
*
|
80 |
* @return string|string[]|null
|
|
|
|
|
|
|
81 |
*/
|
82 |
-
public function replace_meta_generators(
|
|
|
83 |
$raw_html = $html;
|
84 |
|
85 |
$pattern = '/<meta[^>]+name=["\']generator["\'][^>]+>/i';
|
86 |
-
$html
|
87 |
|
88 |
// If replacement is completed with an error, user will receive a white screen.
|
89 |
// We have to prevent it.
|
90 |
-
if
|
91 |
return $raw_html;
|
92 |
}
|
93 |
|
@@ -101,15 +108,16 @@ class WCL_ConfigPrivacy extends Wbcr_FactoryClearfy236_Configurate {
|
|
101 |
*
|
102 |
* @return mixed
|
103 |
*/
|
104 |
-
public function replace_html_comments(
|
|
|
105 |
$raw_html = $html;
|
106 |
|
107 |
//CLRF-166 issue fix bug with noindex (\s?\/?noindex)
|
108 |
-
$html = preg_replace(
|
109 |
|
110 |
// If replacement is completed with an error, user will receive a white screen.
|
111 |
// We have to prevent it.
|
112 |
-
if
|
113 |
return $raw_html;
|
114 |
}
|
115 |
|
9 |
*/
|
10 |
|
11 |
// Exit if accessed directly
|
12 |
+
if( !defined('ABSPATH') ) {
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
+
class WCL_ConfigPrivacy extends Wbcr_FactoryClearfy237_Configurate {
|
17 |
|
18 |
/**
|
19 |
* @param WCL_Plugin $plugin
|
20 |
*/
|
21 |
+
public function __construct(WCL_Plugin $plugin)
|
22 |
+
{
|
23 |
+
parent::__construct($plugin);
|
24 |
|
25 |
$this->plugin = $plugin;
|
26 |
}
|
27 |
|
28 |
+
public function registerActionsAndFilters()
|
29 |
+
{
|
30 |
+
if( !is_admin() ) {
|
31 |
+
if( $this->getPopulateOption('remove_meta_generator') ) {
|
32 |
// Clean meta generator for Woocommerce
|
33 |
+
if( class_exists('WooCommerce') ) {
|
34 |
+
remove_action('wp_head', 'woo_version');
|
35 |
}
|
36 |
|
37 |
// Clean meta generator for SitePress
|
38 |
+
if( class_exists('SitePress') ) {
|
39 |
global $sitepress;
|
40 |
+
remove_action('wp_head', [$sitepress, 'meta_generator_tag']);
|
41 |
}
|
42 |
|
43 |
// Clean meta generator for Wordpress core
|
44 |
+
remove_action('wp_head', 'wp_generator');
|
45 |
+
add_filter('the_generator', '__return_empty_string');
|
46 |
|
47 |
// Clean all meta generators
|
48 |
+
add_action('wp_head', [$this, 'clean_meta_generators'], 100);
|
49 |
}
|
50 |
|
51 |
+
if( $this->getPopulateOption('remove_html_comments') ) {
|
52 |
+
add_action('wp_loaded', [$this, 'clean_html_comments']);
|
53 |
}
|
54 |
}
|
55 |
}
|
58 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
59 |
* @since 1.5.3
|
60 |
*/
|
61 |
+
public function clean_meta_generators()
|
62 |
+
{
|
63 |
+
ob_start([$this, 'replace_meta_generators']);
|
64 |
}
|
65 |
|
66 |
/**
|
67 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
68 |
* @since 1.0.0
|
69 |
*/
|
70 |
+
public function clean_html_comments()
|
71 |
+
{
|
72 |
+
if( !WCL_Helper::doing_rest_api() ) {
|
73 |
+
ob_start([$this, 'replace_html_comments']);
|
74 |
+
}
|
75 |
}
|
76 |
|
77 |
/**
|
78 |
* Replace <meta .* name="generator"> like tags
|
79 |
* which may contain versioning of
|
80 |
*
|
|
|
|
|
|
|
81 |
* @param $html
|
82 |
*
|
83 |
* @return string|string[]|null
|
84 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
85 |
+
* @since 1.5.3
|
86 |
+
*
|
87 |
*/
|
88 |
+
public function replace_meta_generators($html)
|
89 |
+
{
|
90 |
$raw_html = $html;
|
91 |
|
92 |
$pattern = '/<meta[^>]+name=["\']generator["\'][^>]+>/i';
|
93 |
+
$html = preg_replace($pattern, '', $html);
|
94 |
|
95 |
// If replacement is completed with an error, user will receive a white screen.
|
96 |
// We have to prevent it.
|
97 |
+
if( empty($html) ) {
|
98 |
return $raw_html;
|
99 |
}
|
100 |
|
108 |
*
|
109 |
* @return mixed
|
110 |
*/
|
111 |
+
public function replace_html_comments($html)
|
112 |
+
{
|
113 |
$raw_html = $html;
|
114 |
|
115 |
//CLRF-166 issue fix bug with noindex (\s?\/?noindex)
|
116 |
+
$html = preg_replace('#<!--(?!<!|\s?ngg_resource|\s?\/?noindex|\s?\/?wp:)[^\[>].*?-->#s', '', $html);
|
117 |
|
118 |
// If replacement is completed with an error, user will receive a white screen.
|
119 |
// We have to prevent it.
|
120 |
+
if( empty($html) ) {
|
121 |
return $raw_html;
|
122 |
}
|
123 |
|
includes/classes/class.configurate-security.php
CHANGED
@@ -11,7 +11,7 @@
|
|
11 |
exit;
|
12 |
}
|
13 |
|
14 |
-
class WCL_ConfigSecurity extends
|
15 |
|
16 |
/**
|
17 |
* @param WCL_Plugin $plugin
|
11 |
exit;
|
12 |
}
|
13 |
|
14 |
+
class WCL_ConfigSecurity extends Wbcr_FactoryClearfy237_Configurate {
|
15 |
|
16 |
/**
|
17 |
* @param WCL_Plugin $plugin
|
includes/classes/class.configurate-seo.php
CHANGED
@@ -13,7 +13,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
-
class WCL_ConfigSeo extends
|
17 |
|
18 |
/**
|
19 |
* @param WCL_Plugin $plugin
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
+
class WCL_ConfigSeo extends Wbcr_FactoryClearfy237_Configurate {
|
17 |
|
18 |
/**
|
19 |
* @param WCL_Plugin $plugin
|
includes/helpers.php
CHANGED
@@ -14,6 +14,20 @@ if( !defined('ABSPATH') ) {
|
|
14 |
|
15 |
class WCL_Helper {
|
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17 |
/**
|
18 |
* Should show a page about the plugin or not.
|
19 |
*
|
14 |
|
15 |
class WCL_Helper {
|
16 |
|
17 |
+
public static function array_merge_insert(array $arr, array $inserted, $position = 'bottom', $key = null)
|
18 |
+
{
|
19 |
+
return WbcrFactoryClearfy237_Helpers::arrayMergeInsert($arr, $inserted, $position, $key);
|
20 |
+
}
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Flushes as many page cache plugin's caches as possible.
|
24 |
+
*/
|
25 |
+
public static function flush_cache()
|
26 |
+
{
|
27 |
+
// Flush cache for all cache plugins
|
28 |
+
WbcrFactoryClearfy237_Helpers::flushPageCache();
|
29 |
+
}
|
30 |
+
|
31 |
/**
|
32 |
* Should show a page about the plugin or not.
|
33 |
*
|
libs/factory/adverts/boot.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
use WBCR\
|
4 |
|
5 |
/**
|
6 |
* Factory Adverts
|
@@ -12,7 +12,7 @@ use WBCR\Factory_Adverts_123\Base;
|
|
12 |
* @package factory-ad-inserter
|
13 |
* @copyright (c) 2019, Webcraftic Ltd
|
14 |
*
|
15 |
-
* @version 1.2.
|
16 |
*/
|
17 |
|
18 |
// Exit if accessed directly
|
@@ -20,31 +20,31 @@ if( !defined('ABSPATH') ) {
|
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
-
if( defined('
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
# Устанавливаем константу, что модуль уже загружен
|
28 |
-
define('
|
29 |
|
30 |
# Устанавливаем версию модуля
|
31 |
-
define('
|
32 |
|
33 |
# Регистрируем тектовый домен, для интернализации интерфейса модуля
|
34 |
-
load_plugin_textdomain('
|
35 |
|
36 |
# Устанавливаем директорию модуля
|
37 |
-
define('
|
38 |
|
39 |
# Устанавливаем url модуля
|
40 |
-
define('
|
41 |
|
42 |
-
require_once(
|
43 |
-
require_once(
|
44 |
|
45 |
/**
|
46 |
-
* @param
|
47 |
*/
|
48 |
-
add_action('
|
49 |
-
$plugin->set_adverts_manager("WBCR\
|
50 |
});
|
1 |
<?php
|
2 |
|
3 |
+
use WBCR\Factory_Adverts_124\Base;
|
4 |
|
5 |
/**
|
6 |
* Factory Adverts
|
12 |
* @package factory-ad-inserter
|
13 |
* @copyright (c) 2019, Webcraftic Ltd
|
14 |
*
|
15 |
+
* @version 1.2.4
|
16 |
*/
|
17 |
|
18 |
// Exit if accessed directly
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( defined('FACTORY_ADVERTS_124_LOADED') || (defined('FACTORY_ADVERTS_BLOCK') && FACTORY_ADVERTS_BLOCK) ) {
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
# Устанавливаем константу, что модуль уже загружен
|
28 |
+
define('FACTORY_ADVERTS_124_LOADED', true);
|
29 |
|
30 |
# Устанавливаем версию модуля
|
31 |
+
define( 'FACTORY_ADVERTS_124_VERSION', '1.2.4' );
|
32 |
|
33 |
# Регистрируем тектовый домен, для интернализации интерфейса модуля
|
34 |
+
load_plugin_textdomain('wbcr_factory_adverts_124', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
35 |
|
36 |
# Устанавливаем директорию модуля
|
37 |
+
define('FACTORY_ADVERTS_124_DIR', dirname(__FILE__));
|
38 |
|
39 |
# Устанавливаем url модуля
|
40 |
+
define('FACTORY_ADVERTS_124_URL', plugins_url(null, __FILE__));
|
41 |
|
42 |
+
require_once(FACTORY_ADVERTS_124_DIR . '/includes/class-rest-request.php');
|
43 |
+
require_once(FACTORY_ADVERTS_124_DIR . '/includes/class-base.php');
|
44 |
|
45 |
/**
|
46 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
47 |
*/
|
48 |
+
add_action('wbcr_factory_adverts_124_plugin_created', function ($plugin) {
|
49 |
+
$plugin->set_adverts_manager("WBCR\Factory_Adverts_124\Base");
|
50 |
});
|
libs/factory/adverts/includes/class-base.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -28,7 +28,7 @@ class Base {
|
|
28 |
*
|
29 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
30 |
* @since 1.0.1
|
31 |
-
* @var \
|
32 |
*/
|
33 |
private $plugin;
|
34 |
|
@@ -53,7 +53,7 @@ class Base {
|
|
53 |
*
|
54 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
55 |
* @since 1.0.1
|
56 |
-
* @var \WBCR\
|
57 |
*/
|
58 |
private $api;
|
59 |
|
@@ -82,9 +82,9 @@ class Base {
|
|
82 |
*
|
83 |
* @since 1.0.0 Added
|
84 |
*
|
85 |
-
* @param \
|
86 |
*/
|
87 |
-
public function __construct( \
|
88 |
$this->plugin = $plugin;
|
89 |
|
90 |
$this->settings = wp_parse_args( $settings, [
|
@@ -257,7 +257,7 @@ class Base {
|
|
257 |
$content = $this->get_debug_message( 'dashboard_widget' );
|
258 |
}
|
259 |
|
260 |
-
require_once
|
261 |
new Dashboard_Widget( $this->plugin, $content );
|
262 |
}
|
263 |
}
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Adverts_124;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
28 |
*
|
29 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
30 |
* @since 1.0.1
|
31 |
+
* @var \Wbcr_Factory446_Plugin
|
32 |
*/
|
33 |
private $plugin;
|
34 |
|
53 |
*
|
54 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
55 |
* @since 1.0.1
|
56 |
+
* @var \WBCR\Factory_Adverts_124\Creative_Motion_API
|
57 |
*/
|
58 |
private $api;
|
59 |
|
82 |
*
|
83 |
* @since 1.0.0 Added
|
84 |
*
|
85 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
86 |
*/
|
87 |
+
public function __construct( \Wbcr_Factory446_Plugin $plugin, $settings ) {
|
88 |
$this->plugin = $plugin;
|
89 |
|
90 |
$this->settings = wp_parse_args( $settings, [
|
257 |
$content = $this->get_debug_message( 'dashboard_widget' );
|
258 |
}
|
259 |
|
260 |
+
require_once FACTORY_ADVERTS_124_DIR . '/includes/class-dashboard-widget.php';
|
261 |
new Dashboard_Widget( $this->plugin, $content );
|
262 |
}
|
263 |
}
|
libs/factory/adverts/includes/class-dashboard-widget.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -35,7 +35,7 @@ class Dashboard_Widget {
|
|
35 |
*
|
36 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
37 |
* @since 1.0.1
|
38 |
-
* @var \
|
39 |
*/
|
40 |
private $plugin;
|
41 |
|
@@ -46,10 +46,10 @@ class Dashboard_Widget {
|
|
46 |
*
|
47 |
* @since 1.0.0 Added
|
48 |
*
|
49 |
-
* @param \
|
50 |
* @param string $content
|
51 |
*/
|
52 |
-
public function __construct( \
|
53 |
|
54 |
$this->plugin = $plugin;
|
55 |
$this->content = $content;
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Adverts_124;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
35 |
*
|
36 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
37 |
* @since 1.0.1
|
38 |
+
* @var \Wbcr_Factory446_Plugin
|
39 |
*/
|
40 |
private $plugin;
|
41 |
|
46 |
*
|
47 |
* @since 1.0.0 Added
|
48 |
*
|
49 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
50 |
* @param string $content
|
51 |
*/
|
52 |
+
public function __construct( \Wbcr_Factory446_Plugin $plugin, $content ) {
|
53 |
|
54 |
$this->plugin = $plugin;
|
55 |
$this->content = $content;
|
libs/factory/adverts/includes/class-rest-request.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
@@ -65,7 +65,7 @@ class Creative_Motion_API {
|
|
65 |
*
|
66 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
67 |
* @since 1.0.1
|
68 |
-
* @var \
|
69 |
*/
|
70 |
private $plugin;
|
71 |
|
@@ -75,11 +75,11 @@ class Creative_Motion_API {
|
|
75 |
*
|
76 |
* Variable initialization.
|
77 |
*
|
78 |
-
* @param \
|
79 |
* @since 1.0.0 Added
|
80 |
*
|
81 |
*/
|
82 |
-
public function __construct(\
|
83 |
{
|
84 |
$this->plugin = $plugin;
|
85 |
}
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Adverts_124;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
65 |
*
|
66 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
67 |
* @since 1.0.1
|
68 |
+
* @var \Wbcr_Factory446_Plugin
|
69 |
*/
|
70 |
private $plugin;
|
71 |
|
75 |
*
|
76 |
* Variable initialization.
|
77 |
*
|
78 |
+
* @param \Wbcr_Factory446_Plugin $plugin_name
|
79 |
* @since 1.0.0 Added
|
80 |
*
|
81 |
*/
|
82 |
+
public function __construct(\Wbcr_Factory446_Plugin $plugin)
|
83 |
{
|
84 |
$this->plugin = $plugin;
|
85 |
}
|
libs/factory/adverts/langs/{wbcr_factory_adverts_123-ru_RU.mo → wbcr_factory_adverts_124-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/adverts/langs/{wbcr_factory_adverts_123-ru_RU.po → wbcr_factory_adverts_124-ru_RU.po}
RENAMED
File without changes
|
libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 .factory-accordion{margin:0 0 30px;border-top:1px solid #DDD;border-right:1px solid #DDD;border-left:1px solid #DDD;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.factory-bootstrap-446 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-446 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-446 .factory-accordion-item{display:none}.factory-bootstrap-446 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-446 .factory-accordion>h3.active:hover{cursor:default}
|
libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 .btn-primary{background:#e1a948;border-color:#d39323;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:focus,.factory-bootstrap-446 .btn-primary:hover{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8be74,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:active{background:#db9825;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-446 .btn-group .btn.active.value{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.factory-bootstrap-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
|
libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 .btn-primary{background:#c7a589;border-color:#b78a66;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:focus,.factory-bootstrap-446 .btn-primary:hover{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #d7bfac,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:active{background:#ba906d;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-446 .btn-group .btn.active.value{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.factory-bootstrap-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
|
libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-445 article,.factory-bootstrap-445 aside,.factory-bootstrap-445 details,.factory-bootstrap-445 figcaption,.factory-bootstrap-445 figure,.factory-bootstrap-445 footer,.factory-bootstrap-445 header,.factory-bootstrap-445 hgroup,.factory-bootstrap-445 main,.factory-bootstrap-445 nav,.factory-bootstrap-445 section,.factory-bootstrap-445 summary{display:block}.factory-bootstrap-445 audio,.factory-bootstrap-445 canvas,.factory-bootstrap-445 video{display:inline-block}.factory-bootstrap-445 audio:not([controls]){display:none;height:0}.factory-bootstrap-445 [hidden],.factory-bootstrap-445 template{display:none}.factory-bootstrap-445 body{margin:0}.factory-bootstrap-445 a{background:0 0}.factory-bootstrap-445 a:focus{outline:thin dotted}.factory-bootstrap-445 a:active,.factory-bootstrap-445 a:hover{outline:0}.factory-bootstrap-445 h1{margin:.67em 0}.factory-bootstrap-445 b,.factory-bootstrap-445 strong{font-weight:700}.factory-bootstrap-445 dfn{font-style:italic}.factory-bootstrap-445 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-445 mark{color:#000;background:#ff0}.factory-bootstrap-445 code,.factory-bootstrap-445 kbd,.factory-bootstrap-445 pre,.factory-bootstrap-445 samp{font-size:1em}.factory-bootstrap-445 pre{white-space:pre-wrap}.factory-bootstrap-445 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-445 sub,.factory-bootstrap-445 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-445 sup{top:-.5em}.factory-bootstrap-445 sub{bottom:-.25em}.factory-bootstrap-445 img{border:0}.factory-bootstrap-445 svg:not(:root){overflow:hidden}.factory-bootstrap-445 figure{margin:0}.factory-bootstrap-445 button,.factory-bootstrap-445 input,.factory-bootstrap-445 select,.factory-bootstrap-445 textarea{margin:0}.factory-bootstrap-445 button,.factory-bootstrap-445 select{text-transform:none}.factory-bootstrap-445 select{padding-right:4px!important}.factory-bootstrap-445 button,.factory-bootstrap-445 input[type=reset],.factory-bootstrap-445 input[type=submit],html .factory-bootstrap-445 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-445 button[disabled],html .factory-bootstrap-445 input[disabled]{cursor:default}.factory-bootstrap-445 input[type=checkbox],.factory-bootstrap-445 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-445 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-445 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-445 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-445 button::-moz-focus-inner,.factory-bootstrap-445 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-445 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-445 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-445 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-445 a,.factory-bootstrap-445 a:visited{text-decoration:underline}.factory-bootstrap-445 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-445 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-445 a[href^="javascript:"]:after,.factory-bootstrap-445 a[href^="#"]:after{content:""}.factory-bootstrap-445 blockquote,.factory-bootstrap-445 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-445 thead{display:table-header-group}.factory-bootstrap-445 img,.factory-bootstrap-445 tr{page-break-inside:avoid}.factory-bootstrap-445 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-445 h2,.factory-bootstrap-445 h3,.factory-bootstrap-445 p{orphans:3;widows:3}.factory-bootstrap-445 h2,.factory-bootstrap-445 h3{page-break-after:avoid}.factory-bootstrap-445 select{background:#fff!important}.factory-bootstrap-445 .navbar{display:none}.factory-bootstrap-445 .table td,.factory-bootstrap-445 .table th{background-color:#fff!important}.factory-bootstrap-445 .btn>.caret,.factory-bootstrap-445 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-445 .label{border:1px solid #000}.factory-bootstrap-445 .table{border-collapse:collapse!important}.factory-bootstrap-445 .table-bordered td,.factory-bootstrap-445 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-445 *,.factory-bootstrap-445 :after,.factory-bootstrap-445 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-445{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-445 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-445 button,.factory-bootstrap-445 input,.factory-bootstrap-445 select,.factory-bootstrap-445 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-445 img{vertical-align:middle}.factory-bootstrap-445 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-445 .img-rounded{border-radius:6px}.factory-bootstrap-445 .img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-445 .img-circle{border-radius:50%}.factory-bootstrap-445 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-445 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-445 .h1,.factory-bootstrap-445 .h2,.factory-bootstrap-445 .h3,.factory-bootstrap-445 .h4,.factory-bootstrap-445 .h5,.factory-bootstrap-445 .h6,.factory-bootstrap-445 h1,.factory-bootstrap-445 h2,.factory-bootstrap-445 h3,.factory-bootstrap-445 h4,.factory-bootstrap-445 h5,.factory-bootstrap-445 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-445 .h1 .small,.factory-bootstrap-445 .h1 small,.factory-bootstrap-445 .h2 .small,.factory-bootstrap-445 .h2 small,.factory-bootstrap-445 .h3 .small,.factory-bootstrap-445 .h3 small,.factory-bootstrap-445 .h4 .small,.factory-bootstrap-445 .h4 small,.factory-bootstrap-445 .h5 .small,.factory-bootstrap-445 .h5 small,.factory-bootstrap-445 .h6 .small,.factory-bootstrap-445 .h6 small,.factory-bootstrap-445 h1 .small,.factory-bootstrap-445 h1 small,.factory-bootstrap-445 h2 .small,.factory-bootstrap-445 h2 small,.factory-bootstrap-445 h3 .small,.factory-bootstrap-445 h3 small,.factory-bootstrap-445 h4 .small,.factory-bootstrap-445 h4 small,.factory-bootstrap-445 h5 .small,.factory-bootstrap-445 h5 small,.factory-bootstrap-445 h6 .small,.factory-bootstrap-445 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-445 h1,.factory-bootstrap-445 h2,.factory-bootstrap-445 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-445 h1 .small,.factory-bootstrap-445 h1 small,.factory-bootstrap-445 h2 .small,.factory-bootstrap-445 h2 small,.factory-bootstrap-445 h3 .small,.factory-bootstrap-445 h3 small{font-size:65%}.factory-bootstrap-445 h4,.factory-bootstrap-445 h5,.factory-bootstrap-445 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-445 h4 .small,.factory-bootstrap-445 h4 small,.factory-bootstrap-445 h5 .small,.factory-bootstrap-445 h5 small,.factory-bootstrap-445 h6 .small,.factory-bootstrap-445 h6 small{font-size:75%}.factory-bootstrap-445 .h1,.factory-bootstrap-445 h1{font-size:36px}.factory-bootstrap-445 .h2,.factory-bootstrap-445 h2{font-size:30px}.factory-bootstrap-445 .h3,.factory-bootstrap-445 h3{font-size:24px}.factory-bootstrap-445 .h4,.factory-bootstrap-445 h4{font-size:18px}.factory-bootstrap-445 .h5,.factory-bootstrap-445 h5{font-size:14px}.factory-bootstrap-445 .h6,.factory-bootstrap-445 h6{font-size:12px}.factory-bootstrap-445 p{margin:0 0 10px}.factory-bootstrap-445 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-445 .small,.factory-bootstrap-445 small{font-size:85%}.factory-bootstrap-445 cite{font-style:normal}.factory-bootstrap-445 .text-muted{color:#999}.factory-bootstrap-445 .text-primary{color:#428bca}.factory-bootstrap-445 .text-primary:hover{color:#3071a9}.factory-bootstrap-445 .text-warning{color:#8a6d3b}.factory-bootstrap-445 .text-warning:hover{color:#66512c}.factory-bootstrap-445 .text-danger{color:#a94442}.factory-bootstrap-445 .text-danger:hover{color:#843534}.factory-bootstrap-445 .text-success{color:#3c763d}.factory-bootstrap-445 .text-success:hover{color:#2b542c}.factory-bootstrap-445 .text-info{color:#31708f}.factory-bootstrap-445 .text-info:hover{color:#245269}.factory-bootstrap-445 .text-left{text-align:left}.factory-bootstrap-445 .text-right{text-align:right}.factory-bootstrap-445 .text-center{text-align:center}.factory-bootstrap-445 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-445 ol,.factory-bootstrap-445 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-445 ol ol,.factory-bootstrap-445 ol ul,.factory-bootstrap-445 ul ol,.factory-bootstrap-445 ul ul{margin-bottom:0}.factory-bootstrap-445 .list-inline,.factory-bootstrap-445 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-445 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-445 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-445 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-445 dd,.factory-bootstrap-445 dt{line-height:1.428571429}.factory-bootstrap-445 dt{font-weight:700}.factory-bootstrap-445 dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{display:table;content:" "}.dl-horizontal dd:after{clear:both}}.factory-bootstrap-445 abbr[data-original-title],.factory-bootstrap-445 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-445 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-445 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-445 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-445 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-445 blockquote .small,.factory-bootstrap-445 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-445 blockquote .small:before,.factory-bootstrap-445 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-445 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-445 blockquote.pull-right .small,.factory-bootstrap-445 blockquote.pull-right p,.factory-bootstrap-445 blockquote.pull-right small{text-align:right}.factory-bootstrap-445 blockquote.pull-right .small:before,.factory-bootstrap-445 blockquote.pull-right small:before{content:''}.factory-bootstrap-445 blockquote.pull-right .small:after,.factory-bootstrap-445 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-445 blockquote:after,.factory-bootstrap-445 blockquote:before{content:""}.factory-bootstrap-445 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-445 code,.factory-bootstrap-445 kbd,.factory-bootstrap-445 pre,.factory-bootstrap-445 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-445 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-445 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-445 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-445 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-445 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-445 .container:after,.factory-bootstrap-445 .container:before{display:table;content:" "}.factory-bootstrap-445 .container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.factory-bootstrap-445 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-445 .row:after,.factory-bootstrap-445 .row:before{display:table;content:" "}.factory-bootstrap-445 .row:after{clear:both}.factory-bootstrap-445 .col-lg-1,.factory-bootstrap-445 .col-lg-10,.factory-bootstrap-445 .col-lg-11,.factory-bootstrap-445 .col-lg-12,.factory-bootstrap-445 .col-lg-2,.factory-bootstrap-445 .col-lg-3,.factory-bootstrap-445 .col-lg-4,.factory-bootstrap-445 .col-lg-5,.factory-bootstrap-445 .col-lg-6,.factory-bootstrap-445 .col-lg-7,.factory-bootstrap-445 .col-lg-8,.factory-bootstrap-445 .col-lg-9,.factory-bootstrap-445 .col-md-1,.factory-bootstrap-445 .col-md-10,.factory-bootstrap-445 .col-md-11,.factory-bootstrap-445 .col-md-12,.factory-bootstrap-445 .col-md-2,.factory-bootstrap-445 .col-md-3,.factory-bootstrap-445 .col-md-4,.factory-bootstrap-445 .col-md-5,.factory-bootstrap-445 .col-md-6,.factory-bootstrap-445 .col-md-7,.factory-bootstrap-445 .col-md-8,.factory-bootstrap-445 .col-md-9,.factory-bootstrap-445 .col-sm-1,.factory-bootstrap-445 .col-sm-10,.factory-bootstrap-445 .col-sm-11,.factory-bootstrap-445 .col-sm-12,.factory-bootstrap-445 .col-sm-2,.factory-bootstrap-445 .col-sm-3,.factory-bootstrap-445 .col-sm-4,.factory-bootstrap-445 .col-sm-5,.factory-bootstrap-445 .col-sm-6,.factory-bootstrap-445 .col-sm-7,.factory-bootstrap-445 .col-sm-8,.factory-bootstrap-445 .col-sm-9,.factory-bootstrap-445 .col-xs-1,.factory-bootstrap-445 .col-xs-10,.factory-bootstrap-445 .col-xs-11,.factory-bootstrap-445 .col-xs-12,.factory-bootstrap-445 .col-xs-2,.factory-bootstrap-445 .col-xs-3,.factory-bootstrap-445 .col-xs-4,.factory-bootstrap-445 .col-xs-5,.factory-bootstrap-445 .col-xs-6,.factory-bootstrap-445 .col-xs-7,.factory-bootstrap-445 .col-xs-8,.factory-bootstrap-445 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-445 .col-xs-1,.factory-bootstrap-445 .col-xs-10,.factory-bootstrap-445 .col-xs-11,.factory-bootstrap-445 .col-xs-12,.factory-bootstrap-445 .col-xs-2,.factory-bootstrap-445 .col-xs-3,.factory-bootstrap-445 .col-xs-4,.factory-bootstrap-445 .col-xs-5,.factory-bootstrap-445 .col-xs-6,.factory-bootstrap-445 .col-xs-7,.factory-bootstrap-445 .col-xs-8,.factory-bootstrap-445 .col-xs-9{float:left}.factory-bootstrap-445 .col-xs-12{width:100%}.factory-bootstrap-445 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-445 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-445 .col-xs-9{width:75%}.factory-bootstrap-445 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-445 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-445 .col-xs-6{width:50%}.factory-bootstrap-445 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-445 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-445 .col-xs-3{width:25%}.factory-bootstrap-445 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-445 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-445 .col-xs-pull-12{right:100%}.factory-bootstrap-445 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-445 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-445 .col-xs-pull-9{right:75%}.factory-bootstrap-445 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-445 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-445 .col-xs-pull-6{right:50%}.factory-bootstrap-445 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-445 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-445 .col-xs-pull-3{right:25%}.factory-bootstrap-445 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-445 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-445 .col-xs-pull-0{right:0}.factory-bootstrap-445 .col-xs-push-12{left:100%}.factory-bootstrap-445 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-445 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-445 .col-xs-push-9{left:75%}.factory-bootstrap-445 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-445 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-445 .col-xs-push-6{left:50%}.factory-bootstrap-445 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-445 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-445 .col-xs-push-3{left:25%}.factory-bootstrap-445 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-445 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-445 .col-xs-push-0{left:0}.factory-bootstrap-445 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-445 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-445 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-445 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-445 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-445 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-445 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-445 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-445 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-445 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-445 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-445 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-445 .col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}.factory-bootstrap-445 table{max-width:100%;background-color:transparent}.factory-bootstrap-445 th{text-align:left}.factory-bootstrap-445 .table{width:100%;margin-bottom:20px}.factory-bootstrap-445 .table>tbody>tr>td,.factory-bootstrap-445 .table>tbody>tr>th,.factory-bootstrap-445 .table>tfoot>tr>td,.factory-bootstrap-445 .table>tfoot>tr>th,.factory-bootstrap-445 .table>thead>tr>td,.factory-bootstrap-445 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-445 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-445 .table>caption+thead>tr:first-child>td,.factory-bootstrap-445 .table>caption+thead>tr:first-child>th,.factory-bootstrap-445 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-445 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-445 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-445 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-445 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-445 .table .table{background-color:#fff}.factory-bootstrap-445 .table-condensed>tbody>tr>td,.factory-bootstrap-445 .table-condensed>tbody>tr>th,.factory-bootstrap-445 .table-condensed>tfoot>tr>td,.factory-bootstrap-445 .table-condensed>tfoot>tr>th,.factory-bootstrap-445 .table-condensed>thead>tr>td,.factory-bootstrap-445 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-445 .table-bordered,.factory-bootstrap-445 .table-bordered>tbody>tr>td,.factory-bootstrap-445 .table-bordered>tbody>tr>th,.factory-bootstrap-445 .table-bordered>tfoot>tr>td,.factory-bootstrap-445 .table-bordered>tfoot>tr>th,.factory-bootstrap-445 .table-bordered>thead>tr>td,.factory-bootstrap-445 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-445 .table-bordered>thead>tr>td,.factory-bootstrap-445 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-445 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-445 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-445 .table-hover>tbody>tr:hover>td,.factory-bootstrap-445 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-445 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-445 table td[class*=col-],.factory-bootstrap-445 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-445 .table>tbody>.active>td,.factory-bootstrap-445 .table>tbody>.active>th,.factory-bootstrap-445 .table>tbody>tr>.active,.factory-bootstrap-445 .table>tfoot>.active>td,.factory-bootstrap-445 .table>tfoot>.active>th,.factory-bootstrap-445 .table>tfoot>tr>.active,.factory-bootstrap-445 .table>thead>.active>td,.factory-bootstrap-445 .table>thead>.active>th,.factory-bootstrap-445 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-445 .table-hover>tbody>.active:hover>td,.factory-bootstrap-445 .table-hover>tbody>.active:hover>th,.factory-bootstrap-445 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-445 .table>tbody>.success>td,.factory-bootstrap-445 .table>tbody>.success>th,.factory-bootstrap-445 .table>tbody>tr>.success,.factory-bootstrap-445 .table>tfoot>.success>td,.factory-bootstrap-445 .table>tfoot>.success>th,.factory-bootstrap-445 .table>tfoot>tr>.success,.factory-bootstrap-445 .table>thead>.success>td,.factory-bootstrap-445 .table>thead>.success>th,.factory-bootstrap-445 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-445 .table-hover>tbody>.success:hover>td,.factory-bootstrap-445 .table-hover>tbody>.success:hover>th,.factory-bootstrap-445 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-445 .table>tbody>.danger>td,.factory-bootstrap-445 .table>tbody>.danger>th,.factory-bootstrap-445 .table>tbody>tr>.danger,.factory-bootstrap-445 .table>tfoot>.danger>td,.factory-bootstrap-445 .table>tfoot>.danger>th,.factory-bootstrap-445 .table>tfoot>tr>.danger,.factory-bootstrap-445 .table>thead>.danger>td,.factory-bootstrap-445 .table>thead>.danger>th,.factory-bootstrap-445 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-445 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-445 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-445 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-445 .table>tbody>.warning>td,.factory-bootstrap-445 .table>tbody>.warning>th,.factory-bootstrap-445 .table>tbody>tr>.warning,.factory-bootstrap-445 .table>tfoot>.warning>td,.factory-bootstrap-445 .table>tfoot>.warning>th,.factory-bootstrap-445 .table>tfoot>tr>.warning,.factory-bootstrap-445 .table>thead>.warning>td,.factory-bootstrap-445 .table>thead>.warning>th,.factory-bootstrap-445 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-445 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-445 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-445 .table-hover>tbody>tr>.warning:hover{background-color:#faf2cc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.factory-bootstrap-445 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-445 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-445 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-445 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-445 input[type=checkbox],.factory-bootstrap-445 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-445 input[type=file]{display:block}.factory-bootstrap-445 select[multiple],.factory-bootstrap-445 select[size]{height:auto}.factory-bootstrap-445 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-445 input[type=checkbox]:focus,.factory-bootstrap-445 input[type=file]:focus,.factory-bootstrap-445 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-445 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-445 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-445 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-445 .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.factory-bootstrap-445 .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-445 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-445 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-445 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-445 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-445 .form-control[disabled],.factory-bootstrap-445 .form-control[readonly],.factory-bootstrap-445 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-445 textarea.form-control{height:auto}.factory-bootstrap-445 .form-group{margin-bottom:15px}.factory-bootstrap-445 .checkbox,.factory-bootstrap-445 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-445 .checkbox label,.factory-bootstrap-445 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-445 .checkbox input[type=checkbox],.factory-bootstrap-445 .checkbox-inline input[type=checkbox],.factory-bootstrap-445 .radio input[type=radio],.factory-bootstrap-445 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-445 .checkbox+.checkbox,.factory-bootstrap-445 .radio+.radio{margin-top:-5px}.factory-bootstrap-445 .checkbox-inline,.factory-bootstrap-445 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-445 .checkbox-inline+.checkbox-inline,.factory-bootstrap-445 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-445 .checkbox-inline[disabled],.factory-bootstrap-445 .checkbox[disabled],.factory-bootstrap-445 .radio-inline[disabled],.factory-bootstrap-445 .radio[disabled],.factory-bootstrap-445 fieldset[disabled] .checkbox,.factory-bootstrap-445 fieldset[disabled] .checkbox-inline,.factory-bootstrap-445 fieldset[disabled] .radio,.factory-bootstrap-445 fieldset[disabled] .radio-inline,.factory-bootstrap-445 fieldset[disabled] input[type=checkbox],.factory-bootstrap-445 fieldset[disabled] input[type=radio],.factory-bootstrap-445 input[type=checkbox][disabled],.factory-bootstrap-445 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-445 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-445 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-445 textarea.input-sm{height:auto}.factory-bootstrap-445 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-445 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-445 textarea.input-lg{height:auto}.factory-bootstrap-445 .has-warning .checkbox,.factory-bootstrap-445 .has-warning .checkbox-inline,.factory-bootstrap-445 .has-warning .control-label,.factory-bootstrap-445 .has-warning .help-block,.factory-bootstrap-445 .has-warning .radio,.factory-bootstrap-445 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-445 .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-445 .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.factory-bootstrap-445 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-445 .has-error .checkbox,.factory-bootstrap-445 .has-error .checkbox-inline,.factory-bootstrap-445 .has-error .control-label,.factory-bootstrap-445 .has-error .help-block,.factory-bootstrap-445 .has-error .radio,.factory-bootstrap-445 .has-error .radio-inline{color:#a94442}.factory-bootstrap-445 .controls{display:block}.factory-bootstrap-445 .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-445 .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.factory-bootstrap-445 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-445 .has-success .checkbox,.factory-bootstrap-445 .has-success .checkbox-inline,.factory-bootstrap-445 .has-success .control-label,.factory-bootstrap-445 .has-success .help-block,.factory-bootstrap-445 .has-success .radio,.factory-bootstrap-445 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-445 .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-445 .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.factory-bootstrap-445 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-445 .form-control-static{margin-bottom:0}.factory-bootstrap-445 .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;font-weight:400}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline select.form-control{width:auto}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.factory-bootstrap-445 .form-horizontal .checkbox,.factory-bootstrap-445 .form-horizontal .checkbox-inline,.factory-bootstrap-445 .form-horizontal .control-label,.factory-bootstrap-445 .form-horizontal .radio,.factory-bootstrap-445 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-445 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-445 .form-horizontal .checkbox,.factory-bootstrap-445 .form-horizontal .radio{min-height:27px}.factory-bootstrap-445 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-445 .form-horizontal .form-group:after,.factory-bootstrap-445 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-445 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-445 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-445 .btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.factory-bootstrap-445 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-445 .btn{text-decoration:none}.factory-bootstrap-445 .btn:focus,.factory-bootstrap-445 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-445 .btn.disabled,.factory-bootstrap-445 .btn[disabled],.factory-bootstrap-445 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-445 .btn-default.active,.factory-bootstrap-445 .btn-default:active,.factory-bootstrap-445 .btn-default:focus,.factory-bootstrap-445 .btn-default:hover,.factory-bootstrap-445 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-445 .btn-default.active,.factory-bootstrap-445 .btn-default:active,.factory-bootstrap-445 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-445 .btn-default.disabled,.factory-bootstrap-445 .btn-default.disabled.active,.factory-bootstrap-445 .btn-default.disabled:active,.factory-bootstrap-445 .btn-default.disabled:focus,.factory-bootstrap-445 .btn-default.disabled:hover,.factory-bootstrap-445 .btn-default[disabled],.factory-bootstrap-445 .btn-default[disabled].active,.factory-bootstrap-445 .btn-default[disabled]:active,.factory-bootstrap-445 .btn-default[disabled]:focus,.factory-bootstrap-445 .btn-default[disabled]:hover,.factory-bootstrap-445 fieldset[disabled] .btn-default,.factory-bootstrap-445 fieldset[disabled] .btn-default.active,.factory-bootstrap-445 fieldset[disabled] .btn-default:active,.factory-bootstrap-445 fieldset[disabled] .btn-default:focus,.factory-bootstrap-445 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-445 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-445 .btn-primary.active,.factory-bootstrap-445 .btn-primary:active,.factory-bootstrap-445 .btn-primary:focus,.factory-bootstrap-445 .btn-primary:hover,.factory-bootstrap-445 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-445 .btn-primary.active,.factory-bootstrap-445 .btn-primary:active,.factory-bootstrap-445 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-445 .btn-primary.disabled,.factory-bootstrap-445 .btn-primary.disabled.active,.factory-bootstrap-445 .btn-primary.disabled:active,.factory-bootstrap-445 .btn-primary.disabled:focus,.factory-bootstrap-445 .btn-primary.disabled:hover,.factory-bootstrap-445 .btn-primary[disabled],.factory-bootstrap-445 .btn-primary[disabled].active,.factory-bootstrap-445 .btn-primary[disabled]:active,.factory-bootstrap-445 .btn-primary[disabled]:focus,.factory-bootstrap-445 .btn-primary[disabled]:hover,.factory-bootstrap-445 fieldset[disabled] .btn-primary,.factory-bootstrap-445 fieldset[disabled] .btn-primary.active,.factory-bootstrap-445 fieldset[disabled] .btn-primary:active,.factory-bootstrap-445 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-445 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-445 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-445 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-445 .btn-warning.active,.factory-bootstrap-445 .btn-warning:active,.factory-bootstrap-445 .btn-warning:focus,.factory-bootstrap-445 .btn-warning:hover,.factory-bootstrap-445 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-445 .btn-warning.active,.factory-bootstrap-445 .btn-warning:active,.factory-bootstrap-445 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-445 .btn-warning.disabled,.factory-bootstrap-445 .btn-warning.disabled.active,.factory-bootstrap-445 .btn-warning.disabled:active,.factory-bootstrap-445 .btn-warning.disabled:focus,.factory-bootstrap-445 .btn-warning.disabled:hover,.factory-bootstrap-445 .btn-warning[disabled],.factory-bootstrap-445 .btn-warning[disabled].active,.factory-bootstrap-445 .btn-warning[disabled]:active,.factory-bootstrap-445 .btn-warning[disabled]:focus,.factory-bootstrap-445 .btn-warning[disabled]:hover,.factory-bootstrap-445 fieldset[disabled] .btn-warning,.factory-bootstrap-445 fieldset[disabled] .btn-warning.active,.factory-bootstrap-445 fieldset[disabled] .btn-warning:active,.factory-bootstrap-445 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-445 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-445 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-445 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-445 .btn-success.active,.factory-bootstrap-445 .btn-success:active,.factory-bootstrap-445 .btn-success:focus,.factory-bootstrap-445 .btn-success:hover,.factory-bootstrap-445 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-445 .btn-success.active,.factory-bootstrap-445 .btn-success:active,.factory-bootstrap-445 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-445 .btn-success.disabled,.factory-bootstrap-445 .btn-success.disabled.active,.factory-bootstrap-445 .btn-success.disabled:active,.factory-bootstrap-445 .btn-success.disabled:focus,.factory-bootstrap-445 .btn-success.disabled:hover,.factory-bootstrap-445 .btn-success[disabled],.factory-bootstrap-445 .btn-success[disabled].active,.factory-bootstrap-445 .btn-success[disabled]:active,.factory-bootstrap-445 .btn-success[disabled]:focus,.factory-bootstrap-445 .btn-success[disabled]:hover,.factory-bootstrap-445 fieldset[disabled] .btn-success,.factory-bootstrap-445 fieldset[disabled] .btn-success.active,.factory-bootstrap-445 fieldset[disabled] .btn-success:active,.factory-bootstrap-445 fieldset[disabled] .btn-success:focus,.factory-bootstrap-445 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-445 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-445 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-445 .btn-info.active,.factory-bootstrap-445 .btn-info:active,.factory-bootstrap-445 .btn-info:focus,.factory-bootstrap-445 .btn-info:hover,.factory-bootstrap-445 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-445 .btn-info.active,.factory-bootstrap-445 .btn-info:active,.factory-bootstrap-445 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-445 .btn-info.disabled,.factory-bootstrap-445 .btn-info.disabled.active,.factory-bootstrap-445 .btn-info.disabled:active,.factory-bootstrap-445 .btn-info.disabled:focus,.factory-bootstrap-445 .btn-info.disabled:hover,.factory-bootstrap-445 .btn-info[disabled],.factory-bootstrap-445 .btn-info[disabled].active,.factory-bootstrap-445 .btn-info[disabled]:active,.factory-bootstrap-445 .btn-info[disabled]:focus,.factory-bootstrap-445 .btn-info[disabled]:hover,.factory-bootstrap-445 fieldset[disabled] .btn-info,.factory-bootstrap-445 fieldset[disabled] .btn-info.active,.factory-bootstrap-445 fieldset[disabled] .btn-info:active,.factory-bootstrap-445 fieldset[disabled] .btn-info:focus,.factory-bootstrap-445 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-445 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-445 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-445 .btn-link,.factory-bootstrap-445 .btn-link:active,.factory-bootstrap-445 .btn-link[disabled],.factory-bootstrap-445 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-445 .btn-link,.factory-bootstrap-445 .btn-link:active,.factory-bootstrap-445 .btn-link:focus,.factory-bootstrap-445 .btn-link:hover{border-color:transparent}.factory-bootstrap-445 .btn-link:focus,.factory-bootstrap-445 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-445 .btn-link[disabled]:focus,.factory-bootstrap-445 .btn-link[disabled]:hover,.factory-bootstrap-445 fieldset[disabled] .btn-link:focus,.factory-bootstrap-445 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-445 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-445 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-445 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-445 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-445 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-445 input[type=button].btn-block,.factory-bootstrap-445 input[type=reset].btn-block,.factory-bootstrap-445 input[type=submit].btn-block{width:100%}.factory-bootstrap-445 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-445 .fade.in{opacity:1}.factory-bootstrap-445 .collapse{display:none}.factory-bootstrap-445 .collapse.in{display:block}.factory-bootstrap-445 .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format('svg')}.factory-bootstrap-445 .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;line-height:1;-moz-osx-font-smoothing:grayscale}.factory-bootstrap-445 .glyphicon:empty{width:1em}.factory-bootstrap-445 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-445 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-445 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-445 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-445 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-445 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-445 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-445 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-445 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-445 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-445 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-445 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-445 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-445 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-445 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-445 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-445 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-445 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-445 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-445 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-445 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-445 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-445 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-445 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-445 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-445 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-445 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-445 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-445 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-445 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-445 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-445 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-445 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-445 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-445 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-445 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-445 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-445 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-445 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-445 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-445 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-445 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-445 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-445 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-445 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-445 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-445 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-445 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-445 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-445 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-445 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-445 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-445 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-445 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-445 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-445 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-445 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-445 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-445 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-445 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-445 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-445 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-445 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-445 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-445 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-445 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-445 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-445 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-445 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-445 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-445 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-445 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-445 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-445 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-445 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-445 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-445 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-445 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-445 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-445 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-445 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-445 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-445 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-445 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-445 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-445 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-445 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-445 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-445 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-445 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-445 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-445 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-445 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-445 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-445 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-445 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-445 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-445 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-445 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-445 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-445 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-445 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-445 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-445 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-445 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-445 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-445 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-445 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-445 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-445 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-445 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-445 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-445 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-445 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-445 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-445 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-445 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-445 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-445 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-445 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-445 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-445 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-445 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-445 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-445 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-445 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-445 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-445 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-445 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-445 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-445 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-445 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-445 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-445 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-445 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-445 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-445 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-445 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-445 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-445 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-445 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-445 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-445 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-445 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-445 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-445 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-445 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-445 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-445 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-445 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-445 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-445 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-445 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-445 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-445 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-445 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-445 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-445 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-445 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-445 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-445 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-445 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-445 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-445 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-445 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-445 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-445 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-445 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-445 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-445 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-445 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-445 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-445 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-445 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-445 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-445 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-445 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-445 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-445 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-445 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-445 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-445 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-445 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-445 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-445 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-445 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-445 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-445 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-445 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-445 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-445 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-445 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-445 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-445 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-445 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-445 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-445 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-445 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-445 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-445 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-445 .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.factory-bootstrap-445 .dropdown{position:relative}.factory-bootstrap-445 .dropdown-toggle:focus{outline:0}.factory-bootstrap-445 .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.factory-bootstrap-445 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-445 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-445 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.factory-bootstrap-445 .dropdown-menu>li>a:focus,.factory-bootstrap-445 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-445 .dropdown-menu>.active>a,.factory-bootstrap-445 .dropdown-menu>.active>a:focus,.factory-bootstrap-445 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-445 .dropdown-menu>.disabled>a,.factory-bootstrap-445 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-445 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-445 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-445 .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-445 .open>.dropdown-menu{display:block}.factory-bootstrap-445 .open>a{outline:0}.factory-bootstrap-445 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-445 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-445 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-445 .dropup .caret,.factory-bootstrap-445 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-445 .dropup .dropdown-menu,.factory-bootstrap-445 .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.factory-bootstrap-445 .btn-group,.factory-bootstrap-445 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-445 .btn-group-vertical>.btn,.factory-bootstrap-445 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-445 .btn-group-vertical>.btn.active,.factory-bootstrap-445 .btn-group-vertical>.btn:active,.factory-bootstrap-445 .btn-group-vertical>.btn:focus,.factory-bootstrap-445 .btn-group-vertical>.btn:hover,.factory-bootstrap-445 .btn-group>.btn.active,.factory-bootstrap-445 .btn-group>.btn:active,.factory-bootstrap-445 .btn-group>.btn:focus,.factory-bootstrap-445 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-445 .btn-group-vertical>.btn:focus,.factory-bootstrap-445 .btn-group>.btn:focus{outline:0}.factory-bootstrap-445 .btn-group .btn+.btn,.factory-bootstrap-445 .btn-group .btn+.btn-group,.factory-bootstrap-445 .btn-group .btn-group+.btn,.factory-bootstrap-445 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-445 .btn-toolbar:after,.factory-bootstrap-445 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-445 .btn-toolbar:after{clear:both}.factory-bootstrap-445 .btn-toolbar .btn-group{float:left}.factory-bootstrap-445 .btn-toolbar>.btn+.btn,.factory-bootstrap-445 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-445 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-445 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-445 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-445 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-445 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-445 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-445 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .btn-group>.btn-group{float:left}.factory-bootstrap-445 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-445 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-445 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-445 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .btn-group .dropdown-toggle:active,.factory-bootstrap-445 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-445 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-445 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-445 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-445 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-445 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-445 .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.factory-bootstrap-445 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-445 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-445 .btn-group .btn.active.value{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-445 .btn .caret{margin-left:0}.factory-bootstrap-445 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-445 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-445 .btn-group-vertical>.btn,.factory-bootstrap-445 .btn-group-vertical>.btn-group,.factory-bootstrap-445 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-445 .btn-group-vertical>.btn-group:after,.factory-bootstrap-445 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-445 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-445 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-445 .btn-group-vertical>.btn+.btn,.factory-bootstrap-445 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-445 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-445 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-445 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-445 .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-445 .btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.factory-bootstrap-445 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-445 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-445 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-445 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-445 .btn-group-justified>.btn,.factory-bootstrap-445 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-445 .btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.factory-bootstrap-445 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-445 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-445 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-445 .input-group-lg>.form-control,.factory-bootstrap-445 .input-group-lg>.input-group-addon,.factory-bootstrap-445 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-445 select.input-group-lg>.form-control,.factory-bootstrap-445 select.input-group-lg>.input-group-addon,.factory-bootstrap-445 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-445 textarea.input-group-lg>.form-control,.factory-bootstrap-445 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-445 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-445 .input-group-sm>.form-control,.factory-bootstrap-445 .input-group-sm>.input-group-addon,.factory-bootstrap-445 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-445 select.input-group-sm>.form-control,.factory-bootstrap-445 select.input-group-sm>.input-group-addon,.factory-bootstrap-445 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-445 textarea.input-group-sm>.form-control,.factory-bootstrap-445 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-445 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-445 .input-group .form-control,.factory-bootstrap-445 .input-group-addon,.factory-bootstrap-445 .input-group-btn{display:table-cell}.factory-bootstrap-445 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-445 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-445 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-445 .input-group-addon,.factory-bootstrap-445 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-445 .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-445 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-445 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-445 .input-group-addon input[type=checkbox],.factory-bootstrap-445 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-445 .input-group .form-control:first-child,.factory-bootstrap-445 .input-group-addon:first-child,.factory-bootstrap-445 .input-group-btn:first-child>.btn,.factory-bootstrap-445 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-445 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-445 .input-group-addon:first-child{border-right:0}.factory-bootstrap-445 .input-group .form-control:last-child,.factory-bootstrap-445 .input-group-addon:last-child,.factory-bootstrap-445 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-445 .input-group-btn:last-child>.btn,.factory-bootstrap-445 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .input-group-addon:last-child{border-left:0}.factory-bootstrap-445 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-445 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-445 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-445 .input-group-btn>.btn{position:relative}.factory-bootstrap-445 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-445 .input-group-btn>.btn:active,.factory-bootstrap-445 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-445 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-445 .nav:after,.factory-bootstrap-445 .nav:before{display:table;content:" "}.factory-bootstrap-445 .nav:after{clear:both}.factory-bootstrap-445 .nav>li{position:relative;display:block}.factory-bootstrap-445 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-445 .nav>li>a:focus,.factory-bootstrap-445 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-445 .nav>li.disabled>a{color:#999}.factory-bootstrap-445 .nav>li.disabled>a:focus,.factory-bootstrap-445 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-445 .nav .open>a,.factory-bootstrap-445 .nav .open>a:focus,.factory-bootstrap-445 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-445 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-445 .nav>li>a>img{max-width:none}.factory-bootstrap-445 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-445 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-445 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-445 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-445 .nav-tabs>li.active>a,.factory-bootstrap-445 .nav-tabs>li.active>a:focus,.factory-bootstrap-445 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-445 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-445 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-445 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-445 .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-445 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-445 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-445 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-445 .nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-445 .nav-pills>li{float:left}.factory-bootstrap-445 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-445 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-445 .nav-pills>li.active>a,.factory-bootstrap-445 .nav-pills>li.active>a:focus,.factory-bootstrap-445 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-445 .nav-stacked>li{float:none}.factory-bootstrap-445 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-445 .nav-justified{width:100%}.factory-bootstrap-445 .nav-justified>li{float:none}.factory-bootstrap-445 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-445 .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-445 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-445 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-445 .nav-tabs-justified>.active>a,.factory-bootstrap-445 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-445 .nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-445 .tab-content>.tab-pane{display:none}.factory-bootstrap-445 .tab-content>.active{display:block}.factory-bootstrap-445 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-445 .navbar:after,.factory-bootstrap-445 .navbar:before{display:table;content:" "}.factory-bootstrap-445 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-445 .navbar-header:after,.factory-bootstrap-445 .navbar-header:before{display:table;content:" "}.factory-bootstrap-445 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-445 .navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.factory-bootstrap-445 .navbar-collapse:after,.factory-bootstrap-445 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-445 .navbar-collapse:after{clear:both}.factory-bootstrap-445 .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.factory-bootstrap-445 .container>.navbar-collapse,.factory-bootstrap-445 .container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.factory-bootstrap-445 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-445 .navbar-fixed-bottom,.factory-bootstrap-445 .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.factory-bootstrap-445 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-445 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-445 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-445 .navbar-brand:focus,.factory-bootstrap-445 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-445 .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.factory-bootstrap-445 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-445 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-445 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-445 .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.factory-bootstrap-445 .navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form select.form-control{width:auto}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.factory-bootstrap-445 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-445 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-445 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-445 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-445 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-445 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-445 .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.factory-bootstrap-445 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-445 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-445 .navbar-default .navbar-brand:focus,.factory-bootstrap-445 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-445 .navbar-default .navbar-nav>li>a,.factory-bootstrap-445 .navbar-default .navbar-text{color:#777}.factory-bootstrap-445 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-445 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-445 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-445 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-445 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-445 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-445 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-445 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-445 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-445 .navbar-default .navbar-toggle:focus,.factory-bootstrap-445 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-445 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-445 .navbar-default .navbar-collapse,.factory-bootstrap-445 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-445 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-445 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-445 .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.factory-bootstrap-445 .navbar-default .navbar-link{color:#777}.factory-bootstrap-445 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-445 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-445 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-445 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-445 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-445 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-445 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-445 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-445 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-445 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-445 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-445 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-445 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-445 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-445 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-445 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-445 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-445 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-445 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-445 .navbar-inverse .navbar-collapse,.factory-bootstrap-445 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-445 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-445 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-445 .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.factory-bootstrap-445 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-445 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-445 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-445 .breadcrumb>li{display:inline-block}.factory-bootstrap-445 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-445 .breadcrumb>.active{color:#999}.factory-bootstrap-445 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-445 .pagination>li{display:inline}.factory-bootstrap-445 .pagination>li>a,.factory-bootstrap-445 .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-445 .pagination>li:first-child>a,.factory-bootstrap-445 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-445 .pagination>li:last-child>a,.factory-bootstrap-445 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-445 .pagination>li>a:focus,.factory-bootstrap-445 .pagination>li>a:hover,.factory-bootstrap-445 .pagination>li>span:focus,.factory-bootstrap-445 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-445 .pagination>.active>a,.factory-bootstrap-445 .pagination>.active>a:focus,.factory-bootstrap-445 .pagination>.active>a:hover,.factory-bootstrap-445 .pagination>.active>span,.factory-bootstrap-445 .pagination>.active>span:focus,.factory-bootstrap-445 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-445 .pagination>.disabled>a,.factory-bootstrap-445 .pagination>.disabled>a:focus,.factory-bootstrap-445 .pagination>.disabled>a:hover,.factory-bootstrap-445 .pagination>.disabled>span,.factory-bootstrap-445 .pagination>.disabled>span:focus,.factory-bootstrap-445 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-445 .pagination-lg>li>a,.factory-bootstrap-445 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-445 .pagination-lg>li:first-child>a,.factory-bootstrap-445 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-445 .pagination-lg>li:last-child>a,.factory-bootstrap-445 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-445 .pagination-sm>li>a,.factory-bootstrap-445 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-445 .pagination-sm>li:first-child>a,.factory-bootstrap-445 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-445 .pagination-sm>li:last-child>a,.factory-bootstrap-445 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-445 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-445 .pager:after,.factory-bootstrap-445 .pager:before{display:table;content:" "}.factory-bootstrap-445 .pager:after{clear:both}.factory-bootstrap-445 .pager li{display:inline}.factory-bootstrap-445 .pager li>a,.factory-bootstrap-445 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-445 .pager li>a:focus,.factory-bootstrap-445 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-445 .pager .next>a,.factory-bootstrap-445 .pager .next>span{float:right}.factory-bootstrap-445 .pager .previous>a,.factory-bootstrap-445 .pager .previous>span{float:left}.factory-bootstrap-445 .pager .disabled>a,.factory-bootstrap-445 .pager .disabled>a:focus,.factory-bootstrap-445 .pager .disabled>a:hover,.factory-bootstrap-445 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-445 .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.factory-bootstrap-445 .label[href]:focus,.factory-bootstrap-445 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-445 .label:empty{display:none}.factory-bootstrap-445 .btn .label{position:relative;top:-1px}.factory-bootstrap-445 .label-default{background-color:#999}.factory-bootstrap-445 .label-default[href]:focus,.factory-bootstrap-445 .label-default[href]:hover{background-color:gray}.factory-bootstrap-445 .label-primary{background-color:#428bca}.factory-bootstrap-445 .label-primary[href]:focus,.factory-bootstrap-445 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-445 .label-success{background-color:#5cb85c}.factory-bootstrap-445 .label-success[href]:focus,.factory-bootstrap-445 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-445 .label-info{background-color:#5bc0de}.factory-bootstrap-445 .label-info[href]:focus,.factory-bootstrap-445 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-445 .label-warning{background-color:#f0ad4e}.factory-bootstrap-445 .label-warning[href]:focus,.factory-bootstrap-445 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-445 .label-danger{background-color:#d9534f}.factory-bootstrap-445 .label-danger[href]:focus,.factory-bootstrap-445 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-445 .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.factory-bootstrap-445 .badge:empty{display:none}.factory-bootstrap-445 .btn .badge{position:relative;top:-1px}.factory-bootstrap-445 a.badge:focus,.factory-bootstrap-445 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-445 .nav-pills>.active>a>.badge,.factory-bootstrap-445 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-445 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-445 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-445 .jumbotron .h1,.factory-bootstrap-445 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-445 .jumbotron p{line-height:1.4}.factory-bootstrap-445 .container .jumbotron{border-radius:6px}.factory-bootstrap-445 .jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.factory-bootstrap-445 .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-445 .thumbnail a>img,.factory-bootstrap-445 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-445 a.thumbnail.active,.factory-bootstrap-445 a.thumbnail:focus,.factory-bootstrap-445 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-445 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-445 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-445 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-445 .alert .alert-link{font-weight:700}.factory-bootstrap-445 .alert>p,.factory-bootstrap-445 .alert>ul{margin-bottom:0}.factory-bootstrap-445 .alert>p+p{margin-top:5px}.factory-bootstrap-445 .alert-dismissable{padding-right:35px}.factory-bootstrap-445 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-445 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-445 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-445 .alert-info .alert-link{color:#245269}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.factory-bootstrap-445 .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.factory-bootstrap-445 .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#2ea2cc;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.factory-bootstrap-445 .progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.factory-bootstrap-445 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-445 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-445 .progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-445 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-445 .progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-445 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-445 .progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-445 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-445 .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-445 .media,.factory-bootstrap-445 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-445 .media,.factory-bootstrap-445 .media .media{margin-top:15px}.factory-bootstrap-445 .media:first-child{margin-top:0}.factory-bootstrap-445 .media-object{display:block}.factory-bootstrap-445 .media-heading{margin:0 0 5px}.factory-bootstrap-445 .media>.pull-left{margin-right:10px}.factory-bootstrap-445 .media>.pull-right{margin-left:10px}.factory-bootstrap-445 .media-list{padding-left:0;list-style:none}.factory-bootstrap-445 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-445 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-445 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-445 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-445 .list-group-item>.badge{float:right}.factory-bootstrap-445 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-445 a.list-group-item{color:#555}.factory-bootstrap-445 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-445 a.list-group-item:focus,.factory-bootstrap-445 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-445 a.list-group-item.active,.factory-bootstrap-445 a.list-group-item.active:focus,.factory-bootstrap-445 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-445 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-445 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-445 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-445 a.list-group-item.active .list-group-item-text,.factory-bootstrap-445 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-445 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-445 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-445 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-445 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-445 .panel-body{padding:15px}.factory-bootstrap-445 .panel-body:after,.factory-bootstrap-445 .panel-body:before{display:table;content:" "}.factory-bootstrap-445 .panel-body:after{clear:both}.factory-bootstrap-445 .panel>.list-group{margin-bottom:0}.factory-bootstrap-445 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-445 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-445 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-445 .panel>.table,.factory-bootstrap-445 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-445 .panel>.panel-body+.table,.factory-bootstrap-445 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-445 .panel>.table>tbody:first-child td,.factory-bootstrap-445 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-445 .panel>.table-bordered,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-445 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-445 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-445 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-445 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-445 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-445 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-445 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-445 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-445 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-445 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-445 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-445 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-445 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-445 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-445 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-445 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-445 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-445 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-445 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-445 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-445 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-445 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-445 .panel-title>a{color:inherit}.factory-bootstrap-445 .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.factory-bootstrap-445 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-445 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-445 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-445 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-445 .panel-group .panel-footer{border-top:0}.factory-bootstrap-445 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-445 .panel-default{border-color:#ddd}.factory-bootstrap-445 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-445 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-445 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-445 .panel-primary{border-color:#428bca}.factory-bootstrap-445 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-445 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-445 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-445 .panel-success{border-color:#d6e9c6}.factory-bootstrap-445 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-445 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-445 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-445 .panel-warning{border-color:#faebcc}.factory-bootstrap-445 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-445 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-445 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-445 .panel-danger{border-color:#ebccd1}.factory-bootstrap-445 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-445 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-445 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-445 .panel-info{border-color:#bce8f1}.factory-bootstrap-445 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-445 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-445 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-445 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-445 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-445 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-445 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-445 .close{float:right;font-size:14px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.3;filter:alpha(opacity=30)}.factory-bootstrap-445 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-445 .close:focus,.factory-bootstrap-445 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-445 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-445 .modal-open{overflow:hidden}.factory-bootstrap-445 .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll;width:auto;margin-left:0;background-color:transparent;border:0}.factory-bootstrap-445 .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.factory-bootstrap-445 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-445 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-445 .modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box}.factory-bootstrap-445 .modal-backdrop,.factory-bootstrap-445-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-445 .modal-backdrop.fade,.factory-bootstrap-445-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-445 .modal-backdrop.in,.factory-bootstrap-445-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-445 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-445 .modal-header .close{margin-top:-2px}.factory-bootstrap-445 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-445 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-445 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-445 .modal-footer:after,.factory-bootstrap-445 .modal-footer:before{display:table;content:" "}.factory-bootstrap-445 .modal-footer:after{clear:both}.factory-bootstrap-445 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-445 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-445 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-445 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-445 .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}}.factory-bootstrap-445 .tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.factory-bootstrap-445 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-445 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-445 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-445 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-445 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-445 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-445 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-445 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-445 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-445 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-445 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-445 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-445 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-445 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-445 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-445 .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);background-clip:padding-box}.factory-bootstrap-445 .popover.top{margin-top:-10px}.factory-bootstrap-445 .popover.right{margin-left:10px}.factory-bootstrap-445 .popover.bottom{margin-top:10px}.factory-bootstrap-445 .popover.left{margin-left:-10px}.factory-bootstrap-445 .popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.factory-bootstrap-445 .popover-content{padding:9px 14px}.factory-bootstrap-445 .popover .arrow,.factory-bootstrap-445 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-445 .popover .arrow{border-width:11px}.factory-bootstrap-445 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-445 .popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.factory-bootstrap-445 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-445 .popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.factory-bootstrap-445 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-445 .popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.factory-bootstrap-445 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-445 .popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0}.factory-bootstrap-445 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-445 .carousel{position:relative}.factory-bootstrap-445 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-445 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-445 .carousel-inner>.item>a>img,.factory-bootstrap-445 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-445 .carousel-inner>.active,.factory-bootstrap-445 .carousel-inner>.next,.factory-bootstrap-445 .carousel-inner>.prev{display:block}.factory-bootstrap-445 .carousel-inner>.active{left:0}.factory-bootstrap-445 .carousel-inner>.next,.factory-bootstrap-445 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-445 .carousel-inner>.next{left:100%}.factory-bootstrap-445 .carousel-inner>.prev{left:-100%}.factory-bootstrap-445 .carousel-inner>.next.left,.factory-bootstrap-445 .carousel-inner>.prev.right{left:0}.factory-bootstrap-445 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-445 .carousel-inner>.active.right{left:100%}.factory-bootstrap-445 .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-445 .carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.factory-bootstrap-445 .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.factory-bootstrap-445 .carousel-control:focus,.factory-bootstrap-445 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-445 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-445 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-445 .carousel-control .icon-next,.factory-bootstrap-445 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-445 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-445 .carousel-control .icon-prev{left:50%}.factory-bootstrap-445 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-445 .carousel-control .icon-next{right:50%}.factory-bootstrap-445 .carousel-control .icon-next,.factory-bootstrap-445 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-445 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-445 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-445 .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.factory-bootstrap-445 .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.factory-bootstrap-445 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-445 .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.factory-bootstrap-445 .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.factory-bootstrap-445 .clearfix:after,.factory-bootstrap-445 .clearfix:before{display:table;content:" "}.factory-bootstrap-445 .clearfix:after{clear:both}.factory-bootstrap-445 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-445 .pull-right{float:right!important}.factory-bootstrap-445 .pull-left{float:left!important}.factory-bootstrap-445 .hide{display:none!important}.factory-bootstrap-445 .show{display:block!important}.factory-bootstrap-445 .invisible{visibility:hidden}.factory-bootstrap-445 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-445 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-445 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-445 .visible-lg,.factory-bootstrap-445 .visible-md,.factory-bootstrap-445 .visible-sm,.factory-bootstrap-445 .visible-xs,.factory-bootstrap-445 td.visible-lg,.factory-bootstrap-445 td.visible-md,.factory-bootstrap-445 td.visible-sm,.factory-bootstrap-445 td.visible-xs,.factory-bootstrap-445 th.visible-lg,.factory-bootstrap-445 th.visible-md,.factory-bootstrap-445 th.visible-sm,.factory-bootstrap-445 th.visible-xs,.factory-bootstrap-445 tr.visible-lg,.factory-bootstrap-445 tr.visible-md,.factory-bootstrap-445 tr.visible-sm,.factory-bootstrap-445 tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}table.visible-xs.visible-sm{display:table}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}table.visible-xs.visible-md{display:table}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}table.visible-xs.visible-lg{display:table}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}table.visible-sm.visible-xs{display:table}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}table.visible-sm.visible-md{display:table}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}table.visible-sm.visible-lg{display:table}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-md.visible-xs{display:block!important}table.visible-md.visible-xs{display:table}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}table.visible-md.visible-sm{display:table}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}table.visible-md.visible-lg{display:table}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}table.visible-lg.visible-xs{display:table}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}table.visible-lg.visible-sm{display:table}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}table.visible-lg.visible-md{display:table}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.factory-bootstrap-445 .hidden-xs{display:block!important}.factory-bootstrap-445 table.hidden-xs{display:table}.factory-bootstrap-445 tr.hidden-xs{display:table-row!important}.factory-bootstrap-445 td.hidden-xs,.factory-bootstrap-445 th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.factory-bootstrap-445 .hidden-sm{display:block!important}.factory-bootstrap-445 table.hidden-sm{display:table}.factory-bootstrap-445 tr.hidden-sm{display:table-row!important}.factory-bootstrap-445 td.hidden-sm,.factory-bootstrap-445 th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.factory-bootstrap-445 .hidden-md{display:block!important}.factory-bootstrap-445 table.hidden-md{display:table}.factory-bootstrap-445 tr.hidden-md{display:table-row!important}.factory-bootstrap-445 td.hidden-md,.factory-bootstrap-445 th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.factory-bootstrap-445 .hidden-lg{display:block!important}.factory-bootstrap-445 table.hidden-lg{display:table}.factory-bootstrap-445 tr.hidden-lg{display:table-row!important}.factory-bootstrap-445 td.hidden-lg,.factory-bootstrap-445 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-445 .hidden-lg.hidden-xs,.factory-bootstrap-445 td.hidden-lg.hidden-xs,.factory-bootstrap-445 th.hidden-lg.hidden-xs,.factory-bootstrap-445 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-445 .hidden-lg.hidden-sm,.factory-bootstrap-445 td.hidden-lg.hidden-sm,.factory-bootstrap-445 th.hidden-lg.hidden-sm,.factory-bootstrap-445 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-445 .hidden-lg.hidden-md,.factory-bootstrap-445 td.hidden-lg.hidden-md,.factory-bootstrap-445 th.hidden-lg.hidden-md,.factory-bootstrap-445 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-445 .hidden-lg,.factory-bootstrap-445 td.hidden-lg,.factory-bootstrap-445 th.hidden-lg,.factory-bootstrap-445 tr.hidden-lg{display:none!important}}.factory-bootstrap-445 .visible-print,.factory-bootstrap-445 td.visible-print,.factory-bootstrap-445 th.visible-print,.factory-bootstrap-445 tr.visible-print{display:none!important}@media print{.factory-bootstrap-445 .visible-print{display:block!important}.factory-bootstrap-445 table.visible-print{display:table}.factory-bootstrap-445 tr.visible-print{display:table-row!important}.factory-bootstrap-445 td.visible-print,.factory-bootstrap-445 th.visible-print{display:table-cell!important}.factory-bootstrap-445 .hidden-print,.factory-bootstrap-445 td.hidden-print,.factory-bootstrap-445 th.hidden-print,.factory-bootstrap-445 tr.hidden-print{display:none!important}}/*!
|
12 |
* Factory Default Bootstrap Theme
|
13 |
*
|
14 |
* The code is based on Bootstrap v2.1.1
|
@@ -22,4 +22,4 @@
|
|
22 |
*
|
23 |
* @package factory-bootstrap
|
24 |
* @since 1.0.0
|
25 |
-
*/.factory-bootstrap-445 .btn-danger,.factory-bootstrap-445 .btn-default,.factory-bootstrap-445 .btn-info,.factory-bootstrap-445 .btn-primary,.factory-bootstrap-445 .btn-success,.factory-bootstrap-445 .btn-warning{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-445 .btn-danger.active,.factory-bootstrap-445 .btn-danger:active,.factory-bootstrap-445 .btn-default.active,.factory-bootstrap-445 .btn-default:active,.factory-bootstrap-445 .btn-info.active,.factory-bootstrap-445 .btn-info:active,.factory-bootstrap-445 .btn-primary.active,.factory-bootstrap-445 .btn-primary:active,.factory-bootstrap-445 .btn-success.active,.factory-bootstrap-445 .btn-success:active,.factory-bootstrap-445 .btn-warning.active,.factory-bootstrap-445 .btn-warning:active{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.factory-bootstrap-445 .btn.active,.factory-bootstrap-445 .btn:active{background-image:none}.factory-bootstrap-445 .btn-default{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.factory-bootstrap-445 .btn-default.active,.factory-bootstrap-445 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-445 .btn-gold{font-weight:700;padding:7px 12px;cursor:pointer;line-height:16px;display:inline-block;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;box-shadow:#e3e3e3 0 1px 1px;-moz-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);-webkit-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);text-shadow:1px 1px 0 #ffe8b2;color:#7c5d1b;border:1px solid #d6a437;background:#feeb80}.factory-bootstrap-445 .btn-gold:focus,.factory-bootstrap-445 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-445 .btn-gold.active,.factory-bootstrap-445 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-445 .btn-primary{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.factory-bootstrap-445 .btn-primary:focus,.factory-bootstrap-445 .btn-primary:hover{background:#1e8cbe;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.factory-bootstrap-445 .btn-primary.active,.factory-bootstrap-445 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-445 .btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-445 .btn-success:focus,.factory-bootstrap-445 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-445 .btn-success.active,.factory-bootstrap-445 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-445 .btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-445 .btn-warning:focus,.factory-bootstrap-445 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-445 .btn-warning.active,.factory-bootstrap-445 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-445 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-445 .btn-danger.active,.factory-bootstrap-445 .btn-danger:active,.factory-bootstrap-445 .btn-danger:focus,.factory-bootstrap-445 .btn-danger:hover,.factory-bootstrap-445 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-445 .btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-445 .btn-info:focus,.factory-bootstrap-445 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-445 .btn-info.active,.factory-bootstrap-445 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-445 .img-thumbnail,.factory-bootstrap-445 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-445 .dropdown-menu>li>a:focus,.factory-bootstrap-445 .dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-445 .dropdown-menu>.active>a,.factory-bootstrap-445 .dropdown-menu>.active>a:focus,.factory-bootstrap-445 .dropdown-menu>.active>a:hover{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-445 .navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.factory-bootstrap-445 .navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.factory-bootstrap-445 .navbar-brand,.factory-bootstrap-445 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-445 .navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-445 .navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.factory-bootstrap-445 .navbar-inverse .navbar-brand,.factory-bootstrap-445 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-445 .navbar-fixed-bottom,.factory-bootstrap-445 .navbar-fixed-top,.factory-bootstrap-445 .navbar-static-top{border-radius:0}.factory-bootstrap-445 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-445 .alert .actions{padding-top:10px}.factory-bootstrap-445 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-445 .alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0)}.factory-bootstrap-445 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-445 .alert-normal,.factory-bootstrap-445 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-445 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-445 .alert-danger a:not(.btn),.factory-bootstrap-445 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-445 .progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.factory-bootstrap-445 .progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.factory-bootstrap-445 .progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.factory-bootstrap-445 .progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.factory-bootstrap-445 .progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.factory-bootstrap-445 .progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.factory-bootstrap-445 .list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-445 .list-group-item.active,.factory-bootstrap-445 .list-group-item.active:focus,.factory-bootstrap-445 .list-group-item.active:hover{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0)}.factory-bootstrap-445 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-445 .panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-445 .panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-445 .panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.factory-bootstrap-445 .panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.factory-bootstrap-445 .panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.factory-bootstrap-445 .panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.factory-bootstrap-445 .well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}.factory-bootstrap-445 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-445 .factory-hidden{display:none}.factory-bootstrap-445 .factory-ajax-loader{width:25px;height:25px;background:url(../assets/images/loader-sm-tr.gif)}.factory-control-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:5px;padding:4px 10px 3px;max-width:500px;display:inline-block}.factory-control-error i{margin:0 7px 0 1px}
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 article,.factory-bootstrap-446 aside,.factory-bootstrap-446 details,.factory-bootstrap-446 figcaption,.factory-bootstrap-446 figure,.factory-bootstrap-446 footer,.factory-bootstrap-446 header,.factory-bootstrap-446 hgroup,.factory-bootstrap-446 main,.factory-bootstrap-446 nav,.factory-bootstrap-446 section,.factory-bootstrap-446 summary{display:block}.factory-bootstrap-446 audio,.factory-bootstrap-446 canvas,.factory-bootstrap-446 video{display:inline-block}.factory-bootstrap-446 audio:not([controls]){display:none;height:0}.factory-bootstrap-446 [hidden],.factory-bootstrap-446 template{display:none}.factory-bootstrap-446 body{margin:0}.factory-bootstrap-446 a{background:0 0}.factory-bootstrap-446 a:focus{outline:thin dotted}.factory-bootstrap-446 a:active,.factory-bootstrap-446 a:hover{outline:0}.factory-bootstrap-446 h1{margin:.67em 0}.factory-bootstrap-446 b,.factory-bootstrap-446 strong{font-weight:700}.factory-bootstrap-446 dfn{font-style:italic}.factory-bootstrap-446 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-446 mark{color:#000;background:#ff0}.factory-bootstrap-446 code,.factory-bootstrap-446 kbd,.factory-bootstrap-446 pre,.factory-bootstrap-446 samp{font-size:1em}.factory-bootstrap-446 pre{white-space:pre-wrap}.factory-bootstrap-446 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-446 sub,.factory-bootstrap-446 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-446 sup{top:-.5em}.factory-bootstrap-446 sub{bottom:-.25em}.factory-bootstrap-446 img{border:0}.factory-bootstrap-446 svg:not(:root){overflow:hidden}.factory-bootstrap-446 figure{margin:0}.factory-bootstrap-446 button,.factory-bootstrap-446 input,.factory-bootstrap-446 select,.factory-bootstrap-446 textarea{margin:0}.factory-bootstrap-446 button,.factory-bootstrap-446 select{text-transform:none}.factory-bootstrap-446 select{padding-right:4px!important}.factory-bootstrap-446 button,.factory-bootstrap-446 input[type=reset],.factory-bootstrap-446 input[type=submit],html .factory-bootstrap-446 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-446 button[disabled],html .factory-bootstrap-446 input[disabled]{cursor:default}.factory-bootstrap-446 input[type=checkbox],.factory-bootstrap-446 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-446 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-446 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-446 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-446 button::-moz-focus-inner,.factory-bootstrap-446 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-446 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-446 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-446 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-446 a,.factory-bootstrap-446 a:visited{text-decoration:underline}.factory-bootstrap-446 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-446 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-446 a[href^="javascript:"]:after,.factory-bootstrap-446 a[href^="#"]:after{content:""}.factory-bootstrap-446 blockquote,.factory-bootstrap-446 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-446 thead{display:table-header-group}.factory-bootstrap-446 img,.factory-bootstrap-446 tr{page-break-inside:avoid}.factory-bootstrap-446 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-446 h2,.factory-bootstrap-446 h3,.factory-bootstrap-446 p{orphans:3;widows:3}.factory-bootstrap-446 h2,.factory-bootstrap-446 h3{page-break-after:avoid}.factory-bootstrap-446 select{background:#fff!important}.factory-bootstrap-446 .navbar{display:none}.factory-bootstrap-446 .table td,.factory-bootstrap-446 .table th{background-color:#fff!important}.factory-bootstrap-446 .btn>.caret,.factory-bootstrap-446 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-446 .label{border:1px solid #000}.factory-bootstrap-446 .table{border-collapse:collapse!important}.factory-bootstrap-446 .table-bordered td,.factory-bootstrap-446 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-446 *,.factory-bootstrap-446 :after,.factory-bootstrap-446 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-446{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-446 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-446 button,.factory-bootstrap-446 input,.factory-bootstrap-446 select,.factory-bootstrap-446 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-446 img{vertical-align:middle}.factory-bootstrap-446 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-446 .img-rounded{border-radius:6px}.factory-bootstrap-446 .img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-446 .img-circle{border-radius:50%}.factory-bootstrap-446 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-446 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-446 .h1,.factory-bootstrap-446 .h2,.factory-bootstrap-446 .h3,.factory-bootstrap-446 .h4,.factory-bootstrap-446 .h5,.factory-bootstrap-446 .h6,.factory-bootstrap-446 h1,.factory-bootstrap-446 h2,.factory-bootstrap-446 h3,.factory-bootstrap-446 h4,.factory-bootstrap-446 h5,.factory-bootstrap-446 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-446 .h1 .small,.factory-bootstrap-446 .h1 small,.factory-bootstrap-446 .h2 .small,.factory-bootstrap-446 .h2 small,.factory-bootstrap-446 .h3 .small,.factory-bootstrap-446 .h3 small,.factory-bootstrap-446 .h4 .small,.factory-bootstrap-446 .h4 small,.factory-bootstrap-446 .h5 .small,.factory-bootstrap-446 .h5 small,.factory-bootstrap-446 .h6 .small,.factory-bootstrap-446 .h6 small,.factory-bootstrap-446 h1 .small,.factory-bootstrap-446 h1 small,.factory-bootstrap-446 h2 .small,.factory-bootstrap-446 h2 small,.factory-bootstrap-446 h3 .small,.factory-bootstrap-446 h3 small,.factory-bootstrap-446 h4 .small,.factory-bootstrap-446 h4 small,.factory-bootstrap-446 h5 .small,.factory-bootstrap-446 h5 small,.factory-bootstrap-446 h6 .small,.factory-bootstrap-446 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-446 h1,.factory-bootstrap-446 h2,.factory-bootstrap-446 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-446 h1 .small,.factory-bootstrap-446 h1 small,.factory-bootstrap-446 h2 .small,.factory-bootstrap-446 h2 small,.factory-bootstrap-446 h3 .small,.factory-bootstrap-446 h3 small{font-size:65%}.factory-bootstrap-446 h4,.factory-bootstrap-446 h5,.factory-bootstrap-446 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-446 h4 .small,.factory-bootstrap-446 h4 small,.factory-bootstrap-446 h5 .small,.factory-bootstrap-446 h5 small,.factory-bootstrap-446 h6 .small,.factory-bootstrap-446 h6 small{font-size:75%}.factory-bootstrap-446 .h1,.factory-bootstrap-446 h1{font-size:36px}.factory-bootstrap-446 .h2,.factory-bootstrap-446 h2{font-size:30px}.factory-bootstrap-446 .h3,.factory-bootstrap-446 h3{font-size:24px}.factory-bootstrap-446 .h4,.factory-bootstrap-446 h4{font-size:18px}.factory-bootstrap-446 .h5,.factory-bootstrap-446 h5{font-size:14px}.factory-bootstrap-446 .h6,.factory-bootstrap-446 h6{font-size:12px}.factory-bootstrap-446 p{margin:0 0 10px}.factory-bootstrap-446 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-446 .small,.factory-bootstrap-446 small{font-size:85%}.factory-bootstrap-446 cite{font-style:normal}.factory-bootstrap-446 .text-muted{color:#999}.factory-bootstrap-446 .text-primary{color:#428bca}.factory-bootstrap-446 .text-primary:hover{color:#3071a9}.factory-bootstrap-446 .text-warning{color:#8a6d3b}.factory-bootstrap-446 .text-warning:hover{color:#66512c}.factory-bootstrap-446 .text-danger{color:#a94442}.factory-bootstrap-446 .text-danger:hover{color:#843534}.factory-bootstrap-446 .text-success{color:#3c763d}.factory-bootstrap-446 .text-success:hover{color:#2b542c}.factory-bootstrap-446 .text-info{color:#31708f}.factory-bootstrap-446 .text-info:hover{color:#245269}.factory-bootstrap-446 .text-left{text-align:left}.factory-bootstrap-446 .text-right{text-align:right}.factory-bootstrap-446 .text-center{text-align:center}.factory-bootstrap-446 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-446 ol,.factory-bootstrap-446 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-446 ol ol,.factory-bootstrap-446 ol ul,.factory-bootstrap-446 ul ol,.factory-bootstrap-446 ul ul{margin-bottom:0}.factory-bootstrap-446 .list-inline,.factory-bootstrap-446 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-446 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-446 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-446 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-446 dd,.factory-bootstrap-446 dt{line-height:1.428571429}.factory-bootstrap-446 dt{font-weight:700}.factory-bootstrap-446 dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{display:table;content:" "}.dl-horizontal dd:after{clear:both}}.factory-bootstrap-446 abbr[data-original-title],.factory-bootstrap-446 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-446 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-446 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-446 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-446 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-446 blockquote .small,.factory-bootstrap-446 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-446 blockquote .small:before,.factory-bootstrap-446 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-446 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-446 blockquote.pull-right .small,.factory-bootstrap-446 blockquote.pull-right p,.factory-bootstrap-446 blockquote.pull-right small{text-align:right}.factory-bootstrap-446 blockquote.pull-right .small:before,.factory-bootstrap-446 blockquote.pull-right small:before{content:''}.factory-bootstrap-446 blockquote.pull-right .small:after,.factory-bootstrap-446 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-446 blockquote:after,.factory-bootstrap-446 blockquote:before{content:""}.factory-bootstrap-446 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-446 code,.factory-bootstrap-446 kbd,.factory-bootstrap-446 pre,.factory-bootstrap-446 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-446 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-446 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-446 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-446 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-446 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-446 .container:after,.factory-bootstrap-446 .container:before{display:table;content:" "}.factory-bootstrap-446 .container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.factory-bootstrap-446 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-446 .row:after,.factory-bootstrap-446 .row:before{display:table;content:" "}.factory-bootstrap-446 .row:after{clear:both}.factory-bootstrap-446 .col-lg-1,.factory-bootstrap-446 .col-lg-10,.factory-bootstrap-446 .col-lg-11,.factory-bootstrap-446 .col-lg-12,.factory-bootstrap-446 .col-lg-2,.factory-bootstrap-446 .col-lg-3,.factory-bootstrap-446 .col-lg-4,.factory-bootstrap-446 .col-lg-5,.factory-bootstrap-446 .col-lg-6,.factory-bootstrap-446 .col-lg-7,.factory-bootstrap-446 .col-lg-8,.factory-bootstrap-446 .col-lg-9,.factory-bootstrap-446 .col-md-1,.factory-bootstrap-446 .col-md-10,.factory-bootstrap-446 .col-md-11,.factory-bootstrap-446 .col-md-12,.factory-bootstrap-446 .col-md-2,.factory-bootstrap-446 .col-md-3,.factory-bootstrap-446 .col-md-4,.factory-bootstrap-446 .col-md-5,.factory-bootstrap-446 .col-md-6,.factory-bootstrap-446 .col-md-7,.factory-bootstrap-446 .col-md-8,.factory-bootstrap-446 .col-md-9,.factory-bootstrap-446 .col-sm-1,.factory-bootstrap-446 .col-sm-10,.factory-bootstrap-446 .col-sm-11,.factory-bootstrap-446 .col-sm-12,.factory-bootstrap-446 .col-sm-2,.factory-bootstrap-446 .col-sm-3,.factory-bootstrap-446 .col-sm-4,.factory-bootstrap-446 .col-sm-5,.factory-bootstrap-446 .col-sm-6,.factory-bootstrap-446 .col-sm-7,.factory-bootstrap-446 .col-sm-8,.factory-bootstrap-446 .col-sm-9,.factory-bootstrap-446 .col-xs-1,.factory-bootstrap-446 .col-xs-10,.factory-bootstrap-446 .col-xs-11,.factory-bootstrap-446 .col-xs-12,.factory-bootstrap-446 .col-xs-2,.factory-bootstrap-446 .col-xs-3,.factory-bootstrap-446 .col-xs-4,.factory-bootstrap-446 .col-xs-5,.factory-bootstrap-446 .col-xs-6,.factory-bootstrap-446 .col-xs-7,.factory-bootstrap-446 .col-xs-8,.factory-bootstrap-446 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-446 .col-xs-1,.factory-bootstrap-446 .col-xs-10,.factory-bootstrap-446 .col-xs-11,.factory-bootstrap-446 .col-xs-12,.factory-bootstrap-446 .col-xs-2,.factory-bootstrap-446 .col-xs-3,.factory-bootstrap-446 .col-xs-4,.factory-bootstrap-446 .col-xs-5,.factory-bootstrap-446 .col-xs-6,.factory-bootstrap-446 .col-xs-7,.factory-bootstrap-446 .col-xs-8,.factory-bootstrap-446 .col-xs-9{float:left}.factory-bootstrap-446 .col-xs-12{width:100%}.factory-bootstrap-446 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-446 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-446 .col-xs-9{width:75%}.factory-bootstrap-446 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-446 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-446 .col-xs-6{width:50%}.factory-bootstrap-446 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-446 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-446 .col-xs-3{width:25%}.factory-bootstrap-446 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-446 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-446 .col-xs-pull-12{right:100%}.factory-bootstrap-446 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-446 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-446 .col-xs-pull-9{right:75%}.factory-bootstrap-446 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-446 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-446 .col-xs-pull-6{right:50%}.factory-bootstrap-446 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-446 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-446 .col-xs-pull-3{right:25%}.factory-bootstrap-446 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-446 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-446 .col-xs-pull-0{right:0}.factory-bootstrap-446 .col-xs-push-12{left:100%}.factory-bootstrap-446 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-446 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-446 .col-xs-push-9{left:75%}.factory-bootstrap-446 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-446 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-446 .col-xs-push-6{left:50%}.factory-bootstrap-446 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-446 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-446 .col-xs-push-3{left:25%}.factory-bootstrap-446 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-446 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-446 .col-xs-push-0{left:0}.factory-bootstrap-446 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-446 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-446 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-446 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-446 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-446 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-446 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-446 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-446 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-446 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-446 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-446 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-446 .col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}.factory-bootstrap-446 table{max-width:100%;background-color:transparent}.factory-bootstrap-446 th{text-align:left}.factory-bootstrap-446 .table{width:100%;margin-bottom:20px}.factory-bootstrap-446 .table>tbody>tr>td,.factory-bootstrap-446 .table>tbody>tr>th,.factory-bootstrap-446 .table>tfoot>tr>td,.factory-bootstrap-446 .table>tfoot>tr>th,.factory-bootstrap-446 .table>thead>tr>td,.factory-bootstrap-446 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-446 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-446 .table>caption+thead>tr:first-child>td,.factory-bootstrap-446 .table>caption+thead>tr:first-child>th,.factory-bootstrap-446 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-446 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-446 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-446 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-446 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-446 .table .table{background-color:#fff}.factory-bootstrap-446 .table-condensed>tbody>tr>td,.factory-bootstrap-446 .table-condensed>tbody>tr>th,.factory-bootstrap-446 .table-condensed>tfoot>tr>td,.factory-bootstrap-446 .table-condensed>tfoot>tr>th,.factory-bootstrap-446 .table-condensed>thead>tr>td,.factory-bootstrap-446 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-446 .table-bordered,.factory-bootstrap-446 .table-bordered>tbody>tr>td,.factory-bootstrap-446 .table-bordered>tbody>tr>th,.factory-bootstrap-446 .table-bordered>tfoot>tr>td,.factory-bootstrap-446 .table-bordered>tfoot>tr>th,.factory-bootstrap-446 .table-bordered>thead>tr>td,.factory-bootstrap-446 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-446 .table-bordered>thead>tr>td,.factory-bootstrap-446 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-446 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-446 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-446 .table-hover>tbody>tr:hover>td,.factory-bootstrap-446 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-446 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-446 table td[class*=col-],.factory-bootstrap-446 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-446 .table>tbody>.active>td,.factory-bootstrap-446 .table>tbody>.active>th,.factory-bootstrap-446 .table>tbody>tr>.active,.factory-bootstrap-446 .table>tfoot>.active>td,.factory-bootstrap-446 .table>tfoot>.active>th,.factory-bootstrap-446 .table>tfoot>tr>.active,.factory-bootstrap-446 .table>thead>.active>td,.factory-bootstrap-446 .table>thead>.active>th,.factory-bootstrap-446 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-446 .table-hover>tbody>.active:hover>td,.factory-bootstrap-446 .table-hover>tbody>.active:hover>th,.factory-bootstrap-446 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-446 .table>tbody>.success>td,.factory-bootstrap-446 .table>tbody>.success>th,.factory-bootstrap-446 .table>tbody>tr>.success,.factory-bootstrap-446 .table>tfoot>.success>td,.factory-bootstrap-446 .table>tfoot>.success>th,.factory-bootstrap-446 .table>tfoot>tr>.success,.factory-bootstrap-446 .table>thead>.success>td,.factory-bootstrap-446 .table>thead>.success>th,.factory-bootstrap-446 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-446 .table-hover>tbody>.success:hover>td,.factory-bootstrap-446 .table-hover>tbody>.success:hover>th,.factory-bootstrap-446 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-446 .table>tbody>.danger>td,.factory-bootstrap-446 .table>tbody>.danger>th,.factory-bootstrap-446 .table>tbody>tr>.danger,.factory-bootstrap-446 .table>tfoot>.danger>td,.factory-bootstrap-446 .table>tfoot>.danger>th,.factory-bootstrap-446 .table>tfoot>tr>.danger,.factory-bootstrap-446 .table>thead>.danger>td,.factory-bootstrap-446 .table>thead>.danger>th,.factory-bootstrap-446 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-446 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-446 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-446 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-446 .table>tbody>.warning>td,.factory-bootstrap-446 .table>tbody>.warning>th,.factory-bootstrap-446 .table>tbody>tr>.warning,.factory-bootstrap-446 .table>tfoot>.warning>td,.factory-bootstrap-446 .table>tfoot>.warning>th,.factory-bootstrap-446 .table>tfoot>tr>.warning,.factory-bootstrap-446 .table>thead>.warning>td,.factory-bootstrap-446 .table>thead>.warning>th,.factory-bootstrap-446 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-446 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-446 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-446 .table-hover>tbody>tr>.warning:hover{background-color:#faf2cc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.factory-bootstrap-446 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-446 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-446 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-446 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-446 input[type=checkbox],.factory-bootstrap-446 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-446 input[type=file]{display:block}.factory-bootstrap-446 select[multiple],.factory-bootstrap-446 select[size]{height:auto}.factory-bootstrap-446 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-446 input[type=checkbox]:focus,.factory-bootstrap-446 input[type=file]:focus,.factory-bootstrap-446 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-446 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-446 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-446 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-446 .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.factory-bootstrap-446 .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-446 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-446 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-446 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-446 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-446 .form-control[disabled],.factory-bootstrap-446 .form-control[readonly],.factory-bootstrap-446 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-446 textarea.form-control{height:auto}.factory-bootstrap-446 .form-group{margin-bottom:15px}.factory-bootstrap-446 .checkbox,.factory-bootstrap-446 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-446 .checkbox label,.factory-bootstrap-446 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-446 .checkbox input[type=checkbox],.factory-bootstrap-446 .checkbox-inline input[type=checkbox],.factory-bootstrap-446 .radio input[type=radio],.factory-bootstrap-446 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-446 .checkbox+.checkbox,.factory-bootstrap-446 .radio+.radio{margin-top:-5px}.factory-bootstrap-446 .checkbox-inline,.factory-bootstrap-446 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-446 .checkbox-inline+.checkbox-inline,.factory-bootstrap-446 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-446 .checkbox-inline[disabled],.factory-bootstrap-446 .checkbox[disabled],.factory-bootstrap-446 .radio-inline[disabled],.factory-bootstrap-446 .radio[disabled],.factory-bootstrap-446 fieldset[disabled] .checkbox,.factory-bootstrap-446 fieldset[disabled] .checkbox-inline,.factory-bootstrap-446 fieldset[disabled] .radio,.factory-bootstrap-446 fieldset[disabled] .radio-inline,.factory-bootstrap-446 fieldset[disabled] input[type=checkbox],.factory-bootstrap-446 fieldset[disabled] input[type=radio],.factory-bootstrap-446 input[type=checkbox][disabled],.factory-bootstrap-446 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-446 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-446 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-446 textarea.input-sm{height:auto}.factory-bootstrap-446 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-446 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-446 textarea.input-lg{height:auto}.factory-bootstrap-446 .has-warning .checkbox,.factory-bootstrap-446 .has-warning .checkbox-inline,.factory-bootstrap-446 .has-warning .control-label,.factory-bootstrap-446 .has-warning .help-block,.factory-bootstrap-446 .has-warning .radio,.factory-bootstrap-446 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-446 .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-446 .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.factory-bootstrap-446 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-446 .has-error .checkbox,.factory-bootstrap-446 .has-error .checkbox-inline,.factory-bootstrap-446 .has-error .control-label,.factory-bootstrap-446 .has-error .help-block,.factory-bootstrap-446 .has-error .radio,.factory-bootstrap-446 .has-error .radio-inline{color:#a94442}.factory-bootstrap-446 .controls{display:block}.factory-bootstrap-446 .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-446 .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.factory-bootstrap-446 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-446 .has-success .checkbox,.factory-bootstrap-446 .has-success .checkbox-inline,.factory-bootstrap-446 .has-success .control-label,.factory-bootstrap-446 .has-success .help-block,.factory-bootstrap-446 .has-success .radio,.factory-bootstrap-446 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-446 .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-446 .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.factory-bootstrap-446 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-446 .form-control-static{margin-bottom:0}.factory-bootstrap-446 .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;font-weight:400}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline select.form-control{width:auto}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.factory-bootstrap-446 .form-horizontal .checkbox,.factory-bootstrap-446 .form-horizontal .checkbox-inline,.factory-bootstrap-446 .form-horizontal .control-label,.factory-bootstrap-446 .form-horizontal .radio,.factory-bootstrap-446 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-446 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-446 .form-horizontal .checkbox,.factory-bootstrap-446 .form-horizontal .radio{min-height:27px}.factory-bootstrap-446 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-446 .form-horizontal .form-group:after,.factory-bootstrap-446 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-446 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-446 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-446 .btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.factory-bootstrap-446 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-446 .btn{text-decoration:none}.factory-bootstrap-446 .btn:focus,.factory-bootstrap-446 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-446 .btn.disabled,.factory-bootstrap-446 .btn[disabled],.factory-bootstrap-446 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-446 .btn-default.active,.factory-bootstrap-446 .btn-default:active,.factory-bootstrap-446 .btn-default:focus,.factory-bootstrap-446 .btn-default:hover,.factory-bootstrap-446 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-446 .btn-default.active,.factory-bootstrap-446 .btn-default:active,.factory-bootstrap-446 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-446 .btn-default.disabled,.factory-bootstrap-446 .btn-default.disabled.active,.factory-bootstrap-446 .btn-default.disabled:active,.factory-bootstrap-446 .btn-default.disabled:focus,.factory-bootstrap-446 .btn-default.disabled:hover,.factory-bootstrap-446 .btn-default[disabled],.factory-bootstrap-446 .btn-default[disabled].active,.factory-bootstrap-446 .btn-default[disabled]:active,.factory-bootstrap-446 .btn-default[disabled]:focus,.factory-bootstrap-446 .btn-default[disabled]:hover,.factory-bootstrap-446 fieldset[disabled] .btn-default,.factory-bootstrap-446 fieldset[disabled] .btn-default.active,.factory-bootstrap-446 fieldset[disabled] .btn-default:active,.factory-bootstrap-446 fieldset[disabled] .btn-default:focus,.factory-bootstrap-446 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-446 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-446 .btn-primary.active,.factory-bootstrap-446 .btn-primary:active,.factory-bootstrap-446 .btn-primary:focus,.factory-bootstrap-446 .btn-primary:hover,.factory-bootstrap-446 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-446 .btn-primary.active,.factory-bootstrap-446 .btn-primary:active,.factory-bootstrap-446 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-446 .btn-primary.disabled,.factory-bootstrap-446 .btn-primary.disabled.active,.factory-bootstrap-446 .btn-primary.disabled:active,.factory-bootstrap-446 .btn-primary.disabled:focus,.factory-bootstrap-446 .btn-primary.disabled:hover,.factory-bootstrap-446 .btn-primary[disabled],.factory-bootstrap-446 .btn-primary[disabled].active,.factory-bootstrap-446 .btn-primary[disabled]:active,.factory-bootstrap-446 .btn-primary[disabled]:focus,.factory-bootstrap-446 .btn-primary[disabled]:hover,.factory-bootstrap-446 fieldset[disabled] .btn-primary,.factory-bootstrap-446 fieldset[disabled] .btn-primary.active,.factory-bootstrap-446 fieldset[disabled] .btn-primary:active,.factory-bootstrap-446 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-446 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-446 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-446 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-446 .btn-warning.active,.factory-bootstrap-446 .btn-warning:active,.factory-bootstrap-446 .btn-warning:focus,.factory-bootstrap-446 .btn-warning:hover,.factory-bootstrap-446 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-446 .btn-warning.active,.factory-bootstrap-446 .btn-warning:active,.factory-bootstrap-446 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-446 .btn-warning.disabled,.factory-bootstrap-446 .btn-warning.disabled.active,.factory-bootstrap-446 .btn-warning.disabled:active,.factory-bootstrap-446 .btn-warning.disabled:focus,.factory-bootstrap-446 .btn-warning.disabled:hover,.factory-bootstrap-446 .btn-warning[disabled],.factory-bootstrap-446 .btn-warning[disabled].active,.factory-bootstrap-446 .btn-warning[disabled]:active,.factory-bootstrap-446 .btn-warning[disabled]:focus,.factory-bootstrap-446 .btn-warning[disabled]:hover,.factory-bootstrap-446 fieldset[disabled] .btn-warning,.factory-bootstrap-446 fieldset[disabled] .btn-warning.active,.factory-bootstrap-446 fieldset[disabled] .btn-warning:active,.factory-bootstrap-446 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-446 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-446 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-446 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-446 .btn-success.active,.factory-bootstrap-446 .btn-success:active,.factory-bootstrap-446 .btn-success:focus,.factory-bootstrap-446 .btn-success:hover,.factory-bootstrap-446 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-446 .btn-success.active,.factory-bootstrap-446 .btn-success:active,.factory-bootstrap-446 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-446 .btn-success.disabled,.factory-bootstrap-446 .btn-success.disabled.active,.factory-bootstrap-446 .btn-success.disabled:active,.factory-bootstrap-446 .btn-success.disabled:focus,.factory-bootstrap-446 .btn-success.disabled:hover,.factory-bootstrap-446 .btn-success[disabled],.factory-bootstrap-446 .btn-success[disabled].active,.factory-bootstrap-446 .btn-success[disabled]:active,.factory-bootstrap-446 .btn-success[disabled]:focus,.factory-bootstrap-446 .btn-success[disabled]:hover,.factory-bootstrap-446 fieldset[disabled] .btn-success,.factory-bootstrap-446 fieldset[disabled] .btn-success.active,.factory-bootstrap-446 fieldset[disabled] .btn-success:active,.factory-bootstrap-446 fieldset[disabled] .btn-success:focus,.factory-bootstrap-446 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-446 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-446 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-446 .btn-info.active,.factory-bootstrap-446 .btn-info:active,.factory-bootstrap-446 .btn-info:focus,.factory-bootstrap-446 .btn-info:hover,.factory-bootstrap-446 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-446 .btn-info.active,.factory-bootstrap-446 .btn-info:active,.factory-bootstrap-446 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-446 .btn-info.disabled,.factory-bootstrap-446 .btn-info.disabled.active,.factory-bootstrap-446 .btn-info.disabled:active,.factory-bootstrap-446 .btn-info.disabled:focus,.factory-bootstrap-446 .btn-info.disabled:hover,.factory-bootstrap-446 .btn-info[disabled],.factory-bootstrap-446 .btn-info[disabled].active,.factory-bootstrap-446 .btn-info[disabled]:active,.factory-bootstrap-446 .btn-info[disabled]:focus,.factory-bootstrap-446 .btn-info[disabled]:hover,.factory-bootstrap-446 fieldset[disabled] .btn-info,.factory-bootstrap-446 fieldset[disabled] .btn-info.active,.factory-bootstrap-446 fieldset[disabled] .btn-info:active,.factory-bootstrap-446 fieldset[disabled] .btn-info:focus,.factory-bootstrap-446 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-446 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-446 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-446 .btn-link,.factory-bootstrap-446 .btn-link:active,.factory-bootstrap-446 .btn-link[disabled],.factory-bootstrap-446 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-446 .btn-link,.factory-bootstrap-446 .btn-link:active,.factory-bootstrap-446 .btn-link:focus,.factory-bootstrap-446 .btn-link:hover{border-color:transparent}.factory-bootstrap-446 .btn-link:focus,.factory-bootstrap-446 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-446 .btn-link[disabled]:focus,.factory-bootstrap-446 .btn-link[disabled]:hover,.factory-bootstrap-446 fieldset[disabled] .btn-link:focus,.factory-bootstrap-446 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-446 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-446 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-446 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-446 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-446 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-446 input[type=button].btn-block,.factory-bootstrap-446 input[type=reset].btn-block,.factory-bootstrap-446 input[type=submit].btn-block{width:100%}.factory-bootstrap-446 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-446 .fade.in{opacity:1}.factory-bootstrap-446 .collapse{display:none}.factory-bootstrap-446 .collapse.in{display:block}.factory-bootstrap-446 .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format('svg')}.factory-bootstrap-446 .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;line-height:1;-moz-osx-font-smoothing:grayscale}.factory-bootstrap-446 .glyphicon:empty{width:1em}.factory-bootstrap-446 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-446 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-446 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-446 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-446 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-446 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-446 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-446 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-446 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-446 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-446 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-446 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-446 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-446 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-446 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-446 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-446 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-446 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-446 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-446 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-446 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-446 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-446 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-446 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-446 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-446 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-446 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-446 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-446 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-446 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-446 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-446 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-446 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-446 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-446 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-446 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-446 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-446 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-446 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-446 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-446 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-446 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-446 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-446 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-446 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-446 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-446 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-446 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-446 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-446 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-446 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-446 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-446 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-446 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-446 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-446 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-446 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-446 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-446 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-446 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-446 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-446 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-446 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-446 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-446 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-446 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-446 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-446 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-446 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-446 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-446 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-446 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-446 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-446 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-446 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-446 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-446 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-446 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-446 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-446 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-446 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-446 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-446 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-446 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-446 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-446 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-446 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-446 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-446 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-446 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-446 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-446 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-446 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-446 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-446 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-446 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-446 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-446 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-446 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-446 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-446 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-446 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-446 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-446 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-446 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-446 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-446 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-446 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-446 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-446 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-446 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-446 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-446 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-446 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-446 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-446 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-446 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-446 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-446 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-446 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-446 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-446 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-446 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-446 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-446 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-446 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-446 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-446 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-446 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-446 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-446 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-446 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-446 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-446 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-446 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-446 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-446 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-446 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-446 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-446 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-446 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-446 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-446 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-446 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-446 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-446 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-446 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-446 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-446 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-446 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-446 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-446 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-446 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-446 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-446 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-446 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-446 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-446 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-446 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-446 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-446 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-446 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-446 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-446 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-446 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-446 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-446 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-446 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-446 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-446 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-446 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-446 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-446 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-446 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-446 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-446 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-446 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-446 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-446 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-446 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-446 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-446 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-446 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-446 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-446 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-446 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-446 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-446 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-446 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-446 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-446 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-446 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-446 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-446 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-446 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-446 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-446 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-446 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-446 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-446 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-446 .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.factory-bootstrap-446 .dropdown{position:relative}.factory-bootstrap-446 .dropdown-toggle:focus{outline:0}.factory-bootstrap-446 .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.factory-bootstrap-446 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-446 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-446 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.factory-bootstrap-446 .dropdown-menu>li>a:focus,.factory-bootstrap-446 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-446 .dropdown-menu>.active>a,.factory-bootstrap-446 .dropdown-menu>.active>a:focus,.factory-bootstrap-446 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-446 .dropdown-menu>.disabled>a,.factory-bootstrap-446 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-446 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-446 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-446 .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-446 .open>.dropdown-menu{display:block}.factory-bootstrap-446 .open>a{outline:0}.factory-bootstrap-446 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-446 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-446 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-446 .dropup .caret,.factory-bootstrap-446 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-446 .dropup .dropdown-menu,.factory-bootstrap-446 .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.factory-bootstrap-446 .btn-group,.factory-bootstrap-446 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-446 .btn-group-vertical>.btn,.factory-bootstrap-446 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-446 .btn-group-vertical>.btn.active,.factory-bootstrap-446 .btn-group-vertical>.btn:active,.factory-bootstrap-446 .btn-group-vertical>.btn:focus,.factory-bootstrap-446 .btn-group-vertical>.btn:hover,.factory-bootstrap-446 .btn-group>.btn.active,.factory-bootstrap-446 .btn-group>.btn:active,.factory-bootstrap-446 .btn-group>.btn:focus,.factory-bootstrap-446 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-446 .btn-group-vertical>.btn:focus,.factory-bootstrap-446 .btn-group>.btn:focus{outline:0}.factory-bootstrap-446 .btn-group .btn+.btn,.factory-bootstrap-446 .btn-group .btn+.btn-group,.factory-bootstrap-446 .btn-group .btn-group+.btn,.factory-bootstrap-446 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-446 .btn-toolbar:after,.factory-bootstrap-446 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-446 .btn-toolbar:after{clear:both}.factory-bootstrap-446 .btn-toolbar .btn-group{float:left}.factory-bootstrap-446 .btn-toolbar>.btn+.btn,.factory-bootstrap-446 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-446 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-446 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-446 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-446 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-446 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-446 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-446 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .btn-group>.btn-group{float:left}.factory-bootstrap-446 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-446 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-446 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-446 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .btn-group .dropdown-toggle:active,.factory-bootstrap-446 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-446 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-446 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-446 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-446 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-446 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-446 .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.factory-bootstrap-446 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-446 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-446 .btn-group .btn.active.value{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-446 .btn .caret{margin-left:0}.factory-bootstrap-446 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-446 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-446 .btn-group-vertical>.btn,.factory-bootstrap-446 .btn-group-vertical>.btn-group,.factory-bootstrap-446 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-446 .btn-group-vertical>.btn-group:after,.factory-bootstrap-446 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-446 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-446 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-446 .btn-group-vertical>.btn+.btn,.factory-bootstrap-446 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-446 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-446 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-446 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-446 .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-446 .btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.factory-bootstrap-446 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-446 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-446 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-446 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-446 .btn-group-justified>.btn,.factory-bootstrap-446 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-446 .btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.factory-bootstrap-446 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-446 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-446 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-446 .input-group-lg>.form-control,.factory-bootstrap-446 .input-group-lg>.input-group-addon,.factory-bootstrap-446 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-446 select.input-group-lg>.form-control,.factory-bootstrap-446 select.input-group-lg>.input-group-addon,.factory-bootstrap-446 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-446 textarea.input-group-lg>.form-control,.factory-bootstrap-446 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-446 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-446 .input-group-sm>.form-control,.factory-bootstrap-446 .input-group-sm>.input-group-addon,.factory-bootstrap-446 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-446 select.input-group-sm>.form-control,.factory-bootstrap-446 select.input-group-sm>.input-group-addon,.factory-bootstrap-446 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-446 textarea.input-group-sm>.form-control,.factory-bootstrap-446 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-446 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-446 .input-group .form-control,.factory-bootstrap-446 .input-group-addon,.factory-bootstrap-446 .input-group-btn{display:table-cell}.factory-bootstrap-446 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-446 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-446 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-446 .input-group-addon,.factory-bootstrap-446 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-446 .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-446 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-446 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-446 .input-group-addon input[type=checkbox],.factory-bootstrap-446 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-446 .input-group .form-control:first-child,.factory-bootstrap-446 .input-group-addon:first-child,.factory-bootstrap-446 .input-group-btn:first-child>.btn,.factory-bootstrap-446 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-446 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-446 .input-group-addon:first-child{border-right:0}.factory-bootstrap-446 .input-group .form-control:last-child,.factory-bootstrap-446 .input-group-addon:last-child,.factory-bootstrap-446 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-446 .input-group-btn:last-child>.btn,.factory-bootstrap-446 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .input-group-addon:last-child{border-left:0}.factory-bootstrap-446 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-446 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-446 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-446 .input-group-btn>.btn{position:relative}.factory-bootstrap-446 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-446 .input-group-btn>.btn:active,.factory-bootstrap-446 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-446 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-446 .nav:after,.factory-bootstrap-446 .nav:before{display:table;content:" "}.factory-bootstrap-446 .nav:after{clear:both}.factory-bootstrap-446 .nav>li{position:relative;display:block}.factory-bootstrap-446 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-446 .nav>li>a:focus,.factory-bootstrap-446 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-446 .nav>li.disabled>a{color:#999}.factory-bootstrap-446 .nav>li.disabled>a:focus,.factory-bootstrap-446 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-446 .nav .open>a,.factory-bootstrap-446 .nav .open>a:focus,.factory-bootstrap-446 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-446 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-446 .nav>li>a>img{max-width:none}.factory-bootstrap-446 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-446 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-446 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-446 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-446 .nav-tabs>li.active>a,.factory-bootstrap-446 .nav-tabs>li.active>a:focus,.factory-bootstrap-446 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-446 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-446 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-446 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-446 .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-446 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-446 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-446 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-446 .nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-446 .nav-pills>li{float:left}.factory-bootstrap-446 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-446 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-446 .nav-pills>li.active>a,.factory-bootstrap-446 .nav-pills>li.active>a:focus,.factory-bootstrap-446 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-446 .nav-stacked>li{float:none}.factory-bootstrap-446 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-446 .nav-justified{width:100%}.factory-bootstrap-446 .nav-justified>li{float:none}.factory-bootstrap-446 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-446 .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-446 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-446 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-446 .nav-tabs-justified>.active>a,.factory-bootstrap-446 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-446 .nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-446 .tab-content>.tab-pane{display:none}.factory-bootstrap-446 .tab-content>.active{display:block}.factory-bootstrap-446 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-446 .navbar:after,.factory-bootstrap-446 .navbar:before{display:table;content:" "}.factory-bootstrap-446 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-446 .navbar-header:after,.factory-bootstrap-446 .navbar-header:before{display:table;content:" "}.factory-bootstrap-446 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-446 .navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.factory-bootstrap-446 .navbar-collapse:after,.factory-bootstrap-446 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-446 .navbar-collapse:after{clear:both}.factory-bootstrap-446 .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.factory-bootstrap-446 .container>.navbar-collapse,.factory-bootstrap-446 .container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.factory-bootstrap-446 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-446 .navbar-fixed-bottom,.factory-bootstrap-446 .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.factory-bootstrap-446 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-446 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-446 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-446 .navbar-brand:focus,.factory-bootstrap-446 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-446 .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.factory-bootstrap-446 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-446 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-446 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-446 .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.factory-bootstrap-446 .navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form select.form-control{width:auto}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.factory-bootstrap-446 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-446 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-446 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-446 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-446 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-446 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-446 .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.factory-bootstrap-446 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-446 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-446 .navbar-default .navbar-brand:focus,.factory-bootstrap-446 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-446 .navbar-default .navbar-nav>li>a,.factory-bootstrap-446 .navbar-default .navbar-text{color:#777}.factory-bootstrap-446 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-446 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-446 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-446 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-446 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-446 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-446 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-446 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-446 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-446 .navbar-default .navbar-toggle:focus,.factory-bootstrap-446 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-446 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-446 .navbar-default .navbar-collapse,.factory-bootstrap-446 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-446 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-446 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-446 .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.factory-bootstrap-446 .navbar-default .navbar-link{color:#777}.factory-bootstrap-446 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-446 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-446 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-446 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-446 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-446 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-446 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-446 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-446 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-446 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-446 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-446 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-446 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-446 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-446 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-446 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-446 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-446 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-446 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-446 .navbar-inverse .navbar-collapse,.factory-bootstrap-446 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-446 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-446 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-446 .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.factory-bootstrap-446 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-446 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-446 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-446 .breadcrumb>li{display:inline-block}.factory-bootstrap-446 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-446 .breadcrumb>.active{color:#999}.factory-bootstrap-446 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-446 .pagination>li{display:inline}.factory-bootstrap-446 .pagination>li>a,.factory-bootstrap-446 .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-446 .pagination>li:first-child>a,.factory-bootstrap-446 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-446 .pagination>li:last-child>a,.factory-bootstrap-446 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-446 .pagination>li>a:focus,.factory-bootstrap-446 .pagination>li>a:hover,.factory-bootstrap-446 .pagination>li>span:focus,.factory-bootstrap-446 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-446 .pagination>.disabled>a,.factory-bootstrap-446 .pagination>.disabled>a:focus,.factory-bootstrap-446 .pagination>.disabled>a:hover,.factory-bootstrap-446 .pagination>.disabled>span,.factory-bootstrap-446 .pagination>.disabled>span:focus,.factory-bootstrap-446 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-446 .pagination-lg>li>a,.factory-bootstrap-446 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-446 .pagination-lg>li:first-child>a,.factory-bootstrap-446 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-446 .pagination-lg>li:last-child>a,.factory-bootstrap-446 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-446 .pagination-sm>li>a,.factory-bootstrap-446 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-446 .pagination-sm>li:first-child>a,.factory-bootstrap-446 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-446 .pagination-sm>li:last-child>a,.factory-bootstrap-446 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-446 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-446 .pager:after,.factory-bootstrap-446 .pager:before{display:table;content:" "}.factory-bootstrap-446 .pager:after{clear:both}.factory-bootstrap-446 .pager li{display:inline}.factory-bootstrap-446 .pager li>a,.factory-bootstrap-446 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-446 .pager li>a:focus,.factory-bootstrap-446 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-446 .pager .next>a,.factory-bootstrap-446 .pager .next>span{float:right}.factory-bootstrap-446 .pager .previous>a,.factory-bootstrap-446 .pager .previous>span{float:left}.factory-bootstrap-446 .pager .disabled>a,.factory-bootstrap-446 .pager .disabled>a:focus,.factory-bootstrap-446 .pager .disabled>a:hover,.factory-bootstrap-446 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-446 .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.factory-bootstrap-446 .label[href]:focus,.factory-bootstrap-446 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-446 .label:empty{display:none}.factory-bootstrap-446 .btn .label{position:relative;top:-1px}.factory-bootstrap-446 .label-default{background-color:#999}.factory-bootstrap-446 .label-default[href]:focus,.factory-bootstrap-446 .label-default[href]:hover{background-color:gray}.factory-bootstrap-446 .label-primary{background-color:#428bca}.factory-bootstrap-446 .label-primary[href]:focus,.factory-bootstrap-446 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-446 .label-success{background-color:#5cb85c}.factory-bootstrap-446 .label-success[href]:focus,.factory-bootstrap-446 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-446 .label-info{background-color:#5bc0de}.factory-bootstrap-446 .label-info[href]:focus,.factory-bootstrap-446 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-446 .label-warning{background-color:#f0ad4e}.factory-bootstrap-446 .label-warning[href]:focus,.factory-bootstrap-446 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-446 .label-danger{background-color:#d9534f}.factory-bootstrap-446 .label-danger[href]:focus,.factory-bootstrap-446 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-446 .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.factory-bootstrap-446 .badge:empty{display:none}.factory-bootstrap-446 .btn .badge{position:relative;top:-1px}.factory-bootstrap-446 a.badge:focus,.factory-bootstrap-446 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-446 .nav-pills>.active>a>.badge,.factory-bootstrap-446 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-446 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-446 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-446 .jumbotron .h1,.factory-bootstrap-446 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-446 .jumbotron p{line-height:1.4}.factory-bootstrap-446 .container .jumbotron{border-radius:6px}.factory-bootstrap-446 .jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.factory-bootstrap-446 .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-446 .thumbnail a>img,.factory-bootstrap-446 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-446 a.thumbnail.active,.factory-bootstrap-446 a.thumbnail:focus,.factory-bootstrap-446 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-446 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-446 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-446 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-446 .alert .alert-link{font-weight:700}.factory-bootstrap-446 .alert>p,.factory-bootstrap-446 .alert>ul{margin-bottom:0}.factory-bootstrap-446 .alert>p+p{margin-top:5px}.factory-bootstrap-446 .alert-dismissable{padding-right:35px}.factory-bootstrap-446 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-446 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-446 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-446 .alert-info .alert-link{color:#245269}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.factory-bootstrap-446 .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.factory-bootstrap-446 .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#2ea2cc;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.factory-bootstrap-446 .progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.factory-bootstrap-446 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-446 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-446 .progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-446 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-446 .progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-446 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-446 .progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-446 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-446 .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-446 .media,.factory-bootstrap-446 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-446 .media,.factory-bootstrap-446 .media .media{margin-top:15px}.factory-bootstrap-446 .media:first-child{margin-top:0}.factory-bootstrap-446 .media-object{display:block}.factory-bootstrap-446 .media-heading{margin:0 0 5px}.factory-bootstrap-446 .media>.pull-left{margin-right:10px}.factory-bootstrap-446 .media>.pull-right{margin-left:10px}.factory-bootstrap-446 .media-list{padding-left:0;list-style:none}.factory-bootstrap-446 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-446 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-446 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-446 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-446 .list-group-item>.badge{float:right}.factory-bootstrap-446 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-446 a.list-group-item{color:#555}.factory-bootstrap-446 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-446 a.list-group-item:focus,.factory-bootstrap-446 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-446 a.list-group-item.active,.factory-bootstrap-446 a.list-group-item.active:focus,.factory-bootstrap-446 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-446 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-446 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-446 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-446 a.list-group-item.active .list-group-item-text,.factory-bootstrap-446 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-446 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-446 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-446 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-446 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-446 .panel-body{padding:15px}.factory-bootstrap-446 .panel-body:after,.factory-bootstrap-446 .panel-body:before{display:table;content:" "}.factory-bootstrap-446 .panel-body:after{clear:both}.factory-bootstrap-446 .panel>.list-group{margin-bottom:0}.factory-bootstrap-446 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-446 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-446 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-446 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-446 .panel>.table,.factory-bootstrap-446 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-446 .panel>.panel-body+.table,.factory-bootstrap-446 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-446 .panel>.table>tbody:first-child td,.factory-bootstrap-446 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-446 .panel>.table-bordered,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-446 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-446 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-446 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-446 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-446 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-446 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-446 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-446 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-446 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-446 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-446 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-446 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-446 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-446 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-446 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-446 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-446 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-446 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-446 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-446 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-446 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-446 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-446 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-446 .panel-title>a{color:inherit}.factory-bootstrap-446 .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.factory-bootstrap-446 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-446 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-446 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-446 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-446 .panel-group .panel-footer{border-top:0}.factory-bootstrap-446 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-446 .panel-default{border-color:#ddd}.factory-bootstrap-446 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-446 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-446 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-446 .panel-primary{border-color:#428bca}.factory-bootstrap-446 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-446 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-446 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-446 .panel-success{border-color:#d6e9c6}.factory-bootstrap-446 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-446 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-446 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-446 .panel-warning{border-color:#faebcc}.factory-bootstrap-446 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-446 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-446 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-446 .panel-danger{border-color:#ebccd1}.factory-bootstrap-446 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-446 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-446 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-446 .panel-info{border-color:#bce8f1}.factory-bootstrap-446 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-446 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-446 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-446 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-446 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-446 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-446 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-446 .close{float:right;font-size:14px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.3;filter:alpha(opacity=30)}.factory-bootstrap-446 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-446 .close:focus,.factory-bootstrap-446 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-446 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-446 .modal-open{overflow:hidden}.factory-bootstrap-446 .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll;width:auto;margin-left:0;background-color:transparent;border:0}.factory-bootstrap-446 .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.factory-bootstrap-446 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-446 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-446 .modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box}.factory-bootstrap-446 .modal-backdrop,.factory-bootstrap-446-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-446 .modal-backdrop.fade,.factory-bootstrap-446-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-446 .modal-backdrop.in,.factory-bootstrap-446-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-446 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-446 .modal-header .close{margin-top:-2px}.factory-bootstrap-446 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-446 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-446 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-446 .modal-footer:after,.factory-bootstrap-446 .modal-footer:before{display:table;content:" "}.factory-bootstrap-446 .modal-footer:after{clear:both}.factory-bootstrap-446 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-446 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-446 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-446 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-446 .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}}.factory-bootstrap-446 .tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.factory-bootstrap-446 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-446 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-446 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-446 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-446 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-446 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-446 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-446 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-446 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-446 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-446 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-446 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-446 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-446 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-446 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-446 .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);background-clip:padding-box}.factory-bootstrap-446 .popover.top{margin-top:-10px}.factory-bootstrap-446 .popover.right{margin-left:10px}.factory-bootstrap-446 .popover.bottom{margin-top:10px}.factory-bootstrap-446 .popover.left{margin-left:-10px}.factory-bootstrap-446 .popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.factory-bootstrap-446 .popover-content{padding:9px 14px}.factory-bootstrap-446 .popover .arrow,.factory-bootstrap-446 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-446 .popover .arrow{border-width:11px}.factory-bootstrap-446 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-446 .popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.factory-bootstrap-446 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-446 .popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.factory-bootstrap-446 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-446 .popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.factory-bootstrap-446 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-446 .popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0}.factory-bootstrap-446 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-446 .carousel{position:relative}.factory-bootstrap-446 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-446 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-446 .carousel-inner>.item>a>img,.factory-bootstrap-446 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-446 .carousel-inner>.active,.factory-bootstrap-446 .carousel-inner>.next,.factory-bootstrap-446 .carousel-inner>.prev{display:block}.factory-bootstrap-446 .carousel-inner>.active{left:0}.factory-bootstrap-446 .carousel-inner>.next,.factory-bootstrap-446 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-446 .carousel-inner>.next{left:100%}.factory-bootstrap-446 .carousel-inner>.prev{left:-100%}.factory-bootstrap-446 .carousel-inner>.next.left,.factory-bootstrap-446 .carousel-inner>.prev.right{left:0}.factory-bootstrap-446 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-446 .carousel-inner>.active.right{left:100%}.factory-bootstrap-446 .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-446 .carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.factory-bootstrap-446 .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.factory-bootstrap-446 .carousel-control:focus,.factory-bootstrap-446 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-446 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-446 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-446 .carousel-control .icon-next,.factory-bootstrap-446 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-446 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-446 .carousel-control .icon-prev{left:50%}.factory-bootstrap-446 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-446 .carousel-control .icon-next{right:50%}.factory-bootstrap-446 .carousel-control .icon-next,.factory-bootstrap-446 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-446 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-446 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-446 .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.factory-bootstrap-446 .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.factory-bootstrap-446 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-446 .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.factory-bootstrap-446 .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.factory-bootstrap-446 .clearfix:after,.factory-bootstrap-446 .clearfix:before{display:table;content:" "}.factory-bootstrap-446 .clearfix:after{clear:both}.factory-bootstrap-446 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-446 .pull-right{float:right!important}.factory-bootstrap-446 .pull-left{float:left!important}.factory-bootstrap-446 .hide{display:none!important}.factory-bootstrap-446 .show{display:block!important}.factory-bootstrap-446 .invisible{visibility:hidden}.factory-bootstrap-446 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-446 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-446 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-446 .visible-lg,.factory-bootstrap-446 .visible-md,.factory-bootstrap-446 .visible-sm,.factory-bootstrap-446 .visible-xs,.factory-bootstrap-446 td.visible-lg,.factory-bootstrap-446 td.visible-md,.factory-bootstrap-446 td.visible-sm,.factory-bootstrap-446 td.visible-xs,.factory-bootstrap-446 th.visible-lg,.factory-bootstrap-446 th.visible-md,.factory-bootstrap-446 th.visible-sm,.factory-bootstrap-446 th.visible-xs,.factory-bootstrap-446 tr.visible-lg,.factory-bootstrap-446 tr.visible-md,.factory-bootstrap-446 tr.visible-sm,.factory-bootstrap-446 tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}table.visible-xs.visible-sm{display:table}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}table.visible-xs.visible-md{display:table}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}table.visible-xs.visible-lg{display:table}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}table.visible-sm.visible-xs{display:table}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}table.visible-sm.visible-md{display:table}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}table.visible-sm.visible-lg{display:table}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-md.visible-xs{display:block!important}table.visible-md.visible-xs{display:table}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}table.visible-md.visible-sm{display:table}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}table.visible-md.visible-lg{display:table}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}table.visible-lg.visible-xs{display:table}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}table.visible-lg.visible-sm{display:table}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}table.visible-lg.visible-md{display:table}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.factory-bootstrap-446 .hidden-xs{display:block!important}.factory-bootstrap-446 table.hidden-xs{display:table}.factory-bootstrap-446 tr.hidden-xs{display:table-row!important}.factory-bootstrap-446 td.hidden-xs,.factory-bootstrap-446 th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.factory-bootstrap-446 .hidden-sm{display:block!important}.factory-bootstrap-446 table.hidden-sm{display:table}.factory-bootstrap-446 tr.hidden-sm{display:table-row!important}.factory-bootstrap-446 td.hidden-sm,.factory-bootstrap-446 th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.factory-bootstrap-446 .hidden-md{display:block!important}.factory-bootstrap-446 table.hidden-md{display:table}.factory-bootstrap-446 tr.hidden-md{display:table-row!important}.factory-bootstrap-446 td.hidden-md,.factory-bootstrap-446 th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.factory-bootstrap-446 .hidden-lg{display:block!important}.factory-bootstrap-446 table.hidden-lg{display:table}.factory-bootstrap-446 tr.hidden-lg{display:table-row!important}.factory-bootstrap-446 td.hidden-lg,.factory-bootstrap-446 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-446 .hidden-lg.hidden-xs,.factory-bootstrap-446 td.hidden-lg.hidden-xs,.factory-bootstrap-446 th.hidden-lg.hidden-xs,.factory-bootstrap-446 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-446 .hidden-lg.hidden-sm,.factory-bootstrap-446 td.hidden-lg.hidden-sm,.factory-bootstrap-446 th.hidden-lg.hidden-sm,.factory-bootstrap-446 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-446 .hidden-lg.hidden-md,.factory-bootstrap-446 td.hidden-lg.hidden-md,.factory-bootstrap-446 th.hidden-lg.hidden-md,.factory-bootstrap-446 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-446 .hidden-lg,.factory-bootstrap-446 td.hidden-lg,.factory-bootstrap-446 th.hidden-lg,.factory-bootstrap-446 tr.hidden-lg{display:none!important}}.factory-bootstrap-446 .visible-print,.factory-bootstrap-446 td.visible-print,.factory-bootstrap-446 th.visible-print,.factory-bootstrap-446 tr.visible-print{display:none!important}@media print{.factory-bootstrap-446 .visible-print{display:block!important}.factory-bootstrap-446 table.visible-print{display:table}.factory-bootstrap-446 tr.visible-print{display:table-row!important}.factory-bootstrap-446 td.visible-print,.factory-bootstrap-446 th.visible-print{display:table-cell!important}.factory-bootstrap-446 .hidden-print,.factory-bootstrap-446 td.hidden-print,.factory-bootstrap-446 th.hidden-print,.factory-bootstrap-446 tr.hidden-print{display:none!important}}/*!
|
12 |
* Factory Default Bootstrap Theme
|
13 |
*
|
14 |
* The code is based on Bootstrap v2.1.1
|
22 |
*
|
23 |
* @package factory-bootstrap
|
24 |
* @since 1.0.0
|
25 |
+
*/.factory-bootstrap-446 .btn-danger,.factory-bootstrap-446 .btn-default,.factory-bootstrap-446 .btn-info,.factory-bootstrap-446 .btn-primary,.factory-bootstrap-446 .btn-success,.factory-bootstrap-446 .btn-warning{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-446 .btn-danger.active,.factory-bootstrap-446 .btn-danger:active,.factory-bootstrap-446 .btn-default.active,.factory-bootstrap-446 .btn-default:active,.factory-bootstrap-446 .btn-info.active,.factory-bootstrap-446 .btn-info:active,.factory-bootstrap-446 .btn-primary.active,.factory-bootstrap-446 .btn-primary:active,.factory-bootstrap-446 .btn-success.active,.factory-bootstrap-446 .btn-success:active,.factory-bootstrap-446 .btn-warning.active,.factory-bootstrap-446 .btn-warning:active{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.factory-bootstrap-446 .btn.active,.factory-bootstrap-446 .btn:active{background-image:none}.factory-bootstrap-446 .btn-default{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.factory-bootstrap-446 .btn-default.active,.factory-bootstrap-446 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-446 .btn-gold{font-weight:700;padding:7px 12px;cursor:pointer;line-height:16px;display:inline-block;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;box-shadow:#e3e3e3 0 1px 1px;-moz-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);-webkit-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);text-shadow:1px 1px 0 #ffe8b2;color:#7c5d1b;border:1px solid #d6a437;background:#feeb80}.factory-bootstrap-446 .btn-gold:focus,.factory-bootstrap-446 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-446 .btn-gold.active,.factory-bootstrap-446 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-446 .btn-primary{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.factory-bootstrap-446 .btn-primary:focus,.factory-bootstrap-446 .btn-primary:hover{background:#1e8cbe;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.factory-bootstrap-446 .btn-primary.active,.factory-bootstrap-446 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-446 .btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-446 .btn-success:focus,.factory-bootstrap-446 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-446 .btn-success.active,.factory-bootstrap-446 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-446 .btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-446 .btn-warning:focus,.factory-bootstrap-446 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-446 .btn-warning.active,.factory-bootstrap-446 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-446 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-446 .btn-danger.active,.factory-bootstrap-446 .btn-danger:active,.factory-bootstrap-446 .btn-danger:focus,.factory-bootstrap-446 .btn-danger:hover,.factory-bootstrap-446 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-446 .btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-446 .btn-info:focus,.factory-bootstrap-446 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-446 .btn-info.active,.factory-bootstrap-446 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-446 .img-thumbnail,.factory-bootstrap-446 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-446 .dropdown-menu>li>a:focus,.factory-bootstrap-446 .dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-446 .dropdown-menu>.active>a,.factory-bootstrap-446 .dropdown-menu>.active>a:focus,.factory-bootstrap-446 .dropdown-menu>.active>a:hover{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-446 .navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.factory-bootstrap-446 .navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.factory-bootstrap-446 .navbar-brand,.factory-bootstrap-446 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-446 .navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-446 .navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.factory-bootstrap-446 .navbar-inverse .navbar-brand,.factory-bootstrap-446 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-446 .navbar-fixed-bottom,.factory-bootstrap-446 .navbar-fixed-top,.factory-bootstrap-446 .navbar-static-top{border-radius:0}.factory-bootstrap-446 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-446 .alert .actions{padding-top:10px}.factory-bootstrap-446 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-446 .alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0)}.factory-bootstrap-446 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-446 .alert-normal,.factory-bootstrap-446 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-446 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-446 .alert-danger a:not(.btn),.factory-bootstrap-446 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-446 .progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.factory-bootstrap-446 .progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.factory-bootstrap-446 .progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.factory-bootstrap-446 .progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.factory-bootstrap-446 .progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.factory-bootstrap-446 .progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.factory-bootstrap-446 .list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-446 .list-group-item.active,.factory-bootstrap-446 .list-group-item.active:focus,.factory-bootstrap-446 .list-group-item.active:hover{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0)}.factory-bootstrap-446 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-446 .panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-446 .panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-446 .panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.factory-bootstrap-446 .panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.factory-bootstrap-446 .panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.factory-bootstrap-446 .panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.factory-bootstrap-446 .well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}.factory-bootstrap-446 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-446 .factory-hidden{display:none}.factory-bootstrap-446 .factory-ajax-loader{width:25px;height:25px;background:url(../assets/images/loader-sm-tr.gif)}.factory-control-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:5px;padding:4px 10px 3px;max-width:500px;display:inline-block}.factory-control-error i{margin:0 7px 0 1px}
|
libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 .btn-primary{background:#a3b745;border-color:#839237;color:#fff;-webkit-box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #c0cd7b,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:focus,.factory-bootstrap-446 .btn-primary:hover{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #b7c669,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:active{background:#89993a;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-446 .btn-group .btn.active.value{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.factory-bootstrap-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
|
libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-446 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-446 .factory-form-group .factory-hint-icon{display:block;width:16px;height:16px;line-height:13px;padding:0;font-size:11px;text-align:center;position:absolute;top:-5px;right:-3px;color:#fff;background:#E91E63;border-radius:3px}.factory-bootstrap-446 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-446 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-446 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-446 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-446 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-446 .factory-form-group legend+.control-group{margin-top:0}
|
libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 .btn-primary{background:#04a4cc;border-color:#037c9a;color:#fff;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:focus,.factory-bootstrap-446 .btn-primary:hover{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #09cafa,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:active{background:#0384a4;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-446 .btn-group .btn.active.value{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.factory-bootstrap-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
|
libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 .btn-primary{background:#e14d43;border-color:#d02a21;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8a85,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:focus,.factory-bootstrap-446 .btn-primary:hover{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8756f,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:active{background:#d92c23;border-color:#ba251e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-446 .btn-group .btn.active.value{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.factory-bootstrap-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
|
libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 .btn-primary{background:#9ebaa0;border-color:#80a583;color:#fff;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:focus,.factory-bootstrap-446 .btn-primary:hover{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bccfbd,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:active{background:#86a988;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-446 .btn-group .btn.active.value{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.factory-bootstrap-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
|
libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
|
libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 .btn-primary{background:#dd823b;border-color:#c36822;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ab7c,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:focus,.factory-bootstrap-446 .btn-primary:hover{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e59d66,0 1px 0 rgba(0,0,0,.15)}.factory-bootstrap-446 .btn-primary:active{background:#cc6c23;border-color:#ad5c1e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.factory-bootstrap-446 .btn-primary:disabled,.factory-bootstrap-446 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-446 .btn-group .btn.active.value{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-446 .pagination>.active>a,.factory-bootstrap-446 .pagination>.active>a:focus,.factory-bootstrap-446 .pagination>.active>a:hover,.factory-bootstrap-446 .pagination>.active>span,.factory-bootstrap-446 .pagination>.active>span:focus,.factory-bootstrap-446 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
|
libs/factory/bootstrap/assets/css-min/control.checkbox.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
#side-sortables .factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
#side-sortables .factory-bootstrap-446 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-446 .factory-checkbox-disabled button,.factory-bootstrap-446 .factory-checkbox-disabled input{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-446 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-446 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-446 .factory-buttons-way .factory-on.active{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-446 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-446 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-446 .factory-buttons-way .factory-on.active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-446 .factory-buttons-way .factory-on.active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-446 .factory-buttons-way .factory-on.active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-446 .factory-buttons-way .factory-on.active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-446 .factory-buttons-way .factory-on.active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-446 .factory-buttons-way .factory-on.active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-446 .factory-buttons-way .factory-on.active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}
|
libs/factory/bootstrap/assets/css-min/control.dropdown.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-446 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-446 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-446 .factory-dropdown.factory-buttons-way .active{background-color:#04a4cc;-webkit-box-shadow:inset 0 1px 2px #037c9a;box-shadow:inset 0 1px 2px #037c9a;border-top:1px solid #037c9a;border-bottom:1px solid #037c9a;border-left:1px solid #037c9a}.admin-color-blue .factory-bootstrap-446 .factory-dropdown.factory-buttons-way .active{background-color:#e1a948;-webkit-box-shadow:inset 0 1px 2px #d39323;box-shadow:inset 0 1px 2px #d39323;border-top:1px solid #d39323;border-bottom:1px solid #d39323;border-left:1px solid #d39323}.admin-color-coffee .factory-bootstrap-446 .factory-dropdown.factory-buttons-way .active{background-color:#c7a589;-webkit-box-shadow:inset 0 1px 2px #b78a66;box-shadow:inset 0 1px 2px #b78a66;border-top:1px solid #b78a66;border-bottom:1px solid #b78a66;border-left:1px solid #b78a66}.admin-color-ectoplasm .factory-bootstrap-446 .factory-dropdown.factory-buttons-way .active{background-color:#a3b745;-webkit-box-shadow:inset 0 1px 2px #839237;box-shadow:inset 0 1px 2px #839237;border-top:1px solid #839237;border-bottom:1px solid #839237;border-left:1px solid #839237}.admin-color-midnight .factory-bootstrap-446 .factory-dropdown.factory-buttons-way .active{background-color:#e14d43;-webkit-box-shadow:inset 0 1px 2px #d02a21;box-shadow:inset 0 1px 2px #d02a21;border-top:1px solid #d02a21;border-bottom:1px solid #d02a21;border-left:1px solid #d02a21}.admin-color-ocean .factory-bootstrap-446 .factory-dropdown.factory-buttons-way .active{background-color:#9ebaa0;-webkit-box-shadow:inset 0 1px 2px #80a583;box-shadow:inset 0 1px 2px #80a583;border-top:1px solid #80a583;border-bottom:1px solid #80a583;border-left:1px solid #80a583}.admin-color-sunrise .factory-bootstrap-446 .factory-dropdown.factory-buttons-way .active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}.factory-bootstrap-446 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-446 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-446 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-446 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
|
libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-446 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-446 .factory-mtextbox-item .factory-mtextbox-remove-item{position:absolute;top:0;right:0;bottom:0;width:40px;border-radius:0 3px 3px 0;outline:0}.factory-bootstrap-446 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-446 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-446 .factory-mtextbox-add-item{display:block;margin-top:10px}
|
libs/factory/bootstrap/assets/css-min/holder.more-link.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-446 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-446 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-446 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-446 .factory-tab .factory-more-link-hide{position:absolute;margin-top:-35px;background-color:#fff;padding:0 5px;right:20px;color:#bbb;text-decoration:none}.factory-bootstrap-446 .factory-tab .factory-more-link-hide:hover{color:#999}
|
libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=factory-dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}},a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=factory-dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}},a.fn.factoryBootstrap446_dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.factoryBootstrap446_dropdown.Constructor=f,a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.checkbox.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=this;this.$element=a(b),this.$result=this.$element.find(".factory-result"),this.$on=this.$element.find(".factory-on"),this.$off=this.$element.find(".factory-off");var d=this.$element.is(".factory-tumbler"),e=this.$element.is(".factory-has-tumbler-hint"),f=this.$element.data("tumbler-function"),g=this.$element.data("tumbler-delay");g||(g=3e3),this.callByPath=function(a,b){for(var c=a.split("."),d=window,e=0;e<c.length;e++)d=d[c[e]];d.apply(d,b)},this.$on.click(function(){return c.$off.removeClass("active"),c.$on.addClass("active"),d?setTimeout(function(){c.$on.removeClass("active"),c.$off.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!0),c.$result.val(1),c.$result.trigger("change")),!1}),this.$off.click(function(){return c.$on.removeClass("active"),c.$off.addClass("active"),d?setTimeout(function(){c.$off.removeClass("active"),c.$on.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!1),c.$result.val(0),c.$result.trigger("change")),!1}),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){(void 0!==window.__factory_checkbox_control_events_off_data||void 0!==window.__factory_checkbox_control_events_on_data)&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.prop("checked"),f=window.__factory_checkbox_control_events_on_data[d],g=window.__factory_checkbox_control_events_off_data[d];if(f||g){var h,i;void 0===window.__factory_checkbox_control_detach_elements&&(window.__factory_checkbox_control_detach_elements={}),h=window.__factory_checkbox_control_detach_elements,i=e?f:g;for(var j in i)if(i.hasOwnProperty(j)){var k,l=i[j];a.isArray(l)||(k=c.hashCode(d+l));var m;switch(j){case"hide":"string"==typeof l&&a(l).hide(0);break;case"show":"string"==typeof l&&a(l).fadeIn(200);break;case"detach":"string"==typeof l&&a(l).each(function(b){h[k]||(h[k]={}),h[k][b]||(h[k][b]={}),h[k][b].recovery_contanier=a(this).parent(),h[k][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(h[k]){for(var n in h[k])h[k].hasOwnProperty(n)&&h[k][n].recovery_contanier&&h[k][n].element&&h[k][n].recovery_contanier.append(h[k][n].element);delete h[k]}break;case"removeClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).removeClass(l[m]);break;case"addClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).addClass(l[m]);break;case"setValue":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&void 0!==l[m]&&null!==l[m]&&a(m).val(l[m])}}}},this.executeEvents(this.$result)};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=this;this.$element=a(b),this.$result=this.$element.find(".factory-result"),this.$on=this.$element.find(".factory-on"),this.$off=this.$element.find(".factory-off");var d=this.$element.is(".factory-tumbler"),e=this.$element.is(".factory-has-tumbler-hint"),f=this.$element.data("tumbler-function"),g=this.$element.data("tumbler-delay");g||(g=3e3),this.callByPath=function(a,b){for(var c=a.split("."),d=window,e=0;e<c.length;e++)d=d[c[e]];d.apply(d,b)},this.$on.click(function(){return c.$off.removeClass("active"),c.$on.addClass("active"),d?setTimeout(function(){c.$on.removeClass("active"),c.$off.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!0),c.$result.val(1),c.$result.trigger("change")),!1}),this.$off.click(function(){return c.$on.removeClass("active"),c.$off.addClass("active"),d?setTimeout(function(){c.$off.removeClass("active"),c.$on.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!1),c.$result.val(0),c.$result.trigger("change")),!1}),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){(void 0!==window.__factory_checkbox_control_events_off_data||void 0!==window.__factory_checkbox_control_events_on_data)&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.prop("checked"),f=window.__factory_checkbox_control_events_on_data[d],g=window.__factory_checkbox_control_events_off_data[d];if(f||g){var h,i;void 0===window.__factory_checkbox_control_detach_elements&&(window.__factory_checkbox_control_detach_elements={}),h=window.__factory_checkbox_control_detach_elements,i=e?f:g;for(var j in i)if(i.hasOwnProperty(j)){var k,l=i[j];a.isArray(l)||(k=c.hashCode(d+l));var m;switch(j){case"hide":"string"==typeof l&&a(l).hide(0);break;case"show":"string"==typeof l&&a(l).fadeIn(200);break;case"detach":"string"==typeof l&&a(l).each(function(b){h[k]||(h[k]={}),h[k][b]||(h[k][b]={}),h[k][b].recovery_contanier=a(this).parent(),h[k][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(h[k]){for(var n in h[k])h[k].hasOwnProperty(n)&&h[k][n].recovery_contanier&&h[k][n].element&&h[k][n].recovery_contanier.append(h[k][n].element);delete h[k]}break;case"removeClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).removeClass(l[m]);break;case"addClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).addClass(l[m]);break;case"setValue":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&void 0!==l[m]&&null!==l[m]&&a(m).val(l[m])}}}},this.executeEvents(this.$result)};a.fn.factoryBootstrap446_checkboxControl=function(c){if("string"==typeof c){var d=a(this).data("factory.checkbox.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.checkbox.control");d||c.data("factory.checkbox.control",d=new b(this))})},a.fn.factoryBootstrap446_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-446 .factory-checkbox.factory-buttons-way").factoryBootstrap446_checkboxControl(),a(".factory-bootstrap-446 .factory-checkbox").not(".factory-buttons-way").click(function(){a(this).prop("checked")?a(this).val(1):a(this).val(0)})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.dropdown.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name")||this.$element.attr("name"),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){void 0!==window.factory_dropdown_control_events_data&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.val(),f=window.factory_dropdown_control_events_data[d];if(f&&f[e]){var g;void 0===window.__factory_dropdown_control_detach_elements&&(window.__factory_dropdown_control_detach_elements={}),g=window.__factory_dropdown_control_detach_elements;for(var h in f[e])if(f[e].hasOwnProperty(h)){var i,j=f[e][h];switch(a.isArray(j)||(i=c.hashCode(d+j)),h){case"hide":"string"==typeof j&&a(j).hide(0);break;case"show":"string"==typeof j&&a(j).fadeIn(200);break;case"detach":"string"==typeof j&&a(j).each(function(b){g[i]||(g[i]={}),g[i][b]||(g[i][b]={}),g[i][b].recovery_contanier=a(this).parent(),g[i][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(g[i]){for(var k in g[i])g[i].hasOwnProperty(k)&&g[i][k].recovery_contanier&&g[i][k].element&&g[i][k].recovery_contanier.append(g[i][k].element);delete g[i]}break;case"removeClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).removeClass(j[l]);break;case"addClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).addClass(j[l])}}}},"buttons"===this.way)this.$result=this.$element.find(".factory-result"),this.$hints=this.$element.find(".factory-hints"),this.$buttons=this.$element.find(".btn"),c.executeEvents(this.$result),this.$buttons.click(function(){var b=a(this).data("value");return c.$buttons.removeClass("active"),a(this).addClass("active"),c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+b).fadeIn(),c.$result.val(b),c.$result.trigger("change"),!1});else if("ddslick"===this.way){c.executeEvents(c.$element.find(".factory-result"));var d=window["factory_"+this.name+"_data"],e=this.$element.find(".factory-ddslick"),f=this.$element.data("width")||300,g=this.$element.data("align")||"right";a(d).each(function(){return this.imageHoverSrc?void(a("<img/>")[0].src=this.imageHoverSrc):!0}),e.ddslick({data:d,width:f,imagePosition:g,selectText:"- select -",onSelected:function(a){a.selectedData.imageHoverSrc&&c.$element.find(".dd-selected-image").attr("src",a.selectedData.imageHoverSrc);var b=c.$element.find(".factory-result").val(a.selectedData.value);b.change()}})}else{c.executeEvents(this.$element),this.$hints=this.$element.next(),this.$hints.hasClass("factory-hints")&&(this.$element.change(function(){return c.updateHints(),!1}),this.updateHints=function(){var a=c.$element.val();c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+a).show()},c.updateHints()),this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(a){console&&console.log&&console.log(a.responseText),c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length)for(var d in a){var e=a[d];c.addListItem(e)}else this.$element.append("<option>"+b.emptyList+"</li>");this.$element.trigger("factory-loaded")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<option />").attr("value",b.value).text(b.title).appendTo(this.$element),e=c.getAjaxData();e.selected&&e.selected==b.value&&d.attr("selected","selected")},this.showError=function(b){this.clearList();var d=a("<div class='factory-control-error'></div>").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),e=c.getAjaxData();this.$element.append("<option>"+e.emptyList+"</li>"),this.$element.after(d),this.$element.addClass("factory-has-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var h=this.$element.data("ajax");h&&this.loadData()}};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name")||this.$element.attr("name"),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){void 0!==window.factory_dropdown_control_events_data&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.val(),f=window.factory_dropdown_control_events_data[d];if(f&&f[e]){var g;void 0===window.__factory_dropdown_control_detach_elements&&(window.__factory_dropdown_control_detach_elements={}),g=window.__factory_dropdown_control_detach_elements;for(var h in f[e])if(f[e].hasOwnProperty(h)){var i,j=f[e][h];switch(a.isArray(j)||(i=c.hashCode(d+j)),h){case"hide":"string"==typeof j&&a(j).hide(0);break;case"show":"string"==typeof j&&a(j).fadeIn(200);break;case"detach":"string"==typeof j&&a(j).each(function(b){g[i]||(g[i]={}),g[i][b]||(g[i][b]={}),g[i][b].recovery_contanier=a(this).parent(),g[i][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(g[i]){for(var k in g[i])g[i].hasOwnProperty(k)&&g[i][k].recovery_contanier&&g[i][k].element&&g[i][k].recovery_contanier.append(g[i][k].element);delete g[i]}break;case"removeClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).removeClass(j[l]);break;case"addClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).addClass(j[l])}}}},"buttons"===this.way)this.$result=this.$element.find(".factory-result"),this.$hints=this.$element.find(".factory-hints"),this.$buttons=this.$element.find(".btn"),c.executeEvents(this.$result),this.$buttons.click(function(){var b=a(this).data("value");return c.$buttons.removeClass("active"),a(this).addClass("active"),c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+b).fadeIn(),c.$result.val(b),c.$result.trigger("change"),!1});else if("ddslick"===this.way){c.executeEvents(c.$element.find(".factory-result"));var d=window["factory_"+this.name+"_data"],e=this.$element.find(".factory-ddslick"),f=this.$element.data("width")||300,g=this.$element.data("align")||"right";a(d).each(function(){return this.imageHoverSrc?void(a("<img/>")[0].src=this.imageHoverSrc):!0}),e.ddslick({data:d,width:f,imagePosition:g,selectText:"- select -",onSelected:function(a){a.selectedData.imageHoverSrc&&c.$element.find(".dd-selected-image").attr("src",a.selectedData.imageHoverSrc);var b=c.$element.find(".factory-result").val(a.selectedData.value);b.change()}})}else{c.executeEvents(this.$element),this.$hints=this.$element.next(),this.$hints.hasClass("factory-hints")&&(this.$element.change(function(){return c.updateHints(),!1}),this.updateHints=function(){var a=c.$element.val();c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+a).show()},c.updateHints()),this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(a){console&&console.log&&console.log(a.responseText),c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length)for(var d in a){var e=a[d];c.addListItem(e)}else this.$element.append("<option>"+b.emptyList+"</li>");this.$element.trigger("factory-loaded")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<option />").attr("value",b.value).text(b.title).appendTo(this.$element),e=c.getAjaxData();e.selected&&e.selected==b.value&&d.attr("selected","selected")},this.showError=function(b){this.clearList();var d=a("<div class='factory-control-error'></div>").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),e=c.getAjaxData();this.$element.append("<option>"+e.emptyList+"</li>"),this.$element.after(d),this.$element.addClass("factory-has-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var h=this.$element.data("ajax");h&&this.loadData()}};a.fn.factoryBootstrap446_dropdownControl=function(c){if("string"==typeof c){var d=a(this).data("factory.dropdown.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.dropdown.control");d||c.data("factory.dropdown.control",d=new b(this))})},a.fn.factoryBootstrap446_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-446 .factory-dropdown").factoryBootstrap446_dropdownControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.list.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name"),"checklist"===this.way){this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(){c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length){this.$element.removeClass("factory-empty");for(var d in a){var e=a[d];c.addListItem(e)}}else this.$element.addClass("factory-empty"),this.$element.append("<li>"+b.emptyList+"</li>")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<li>"),e=a("<label>").attr("for","factory-checklist-"+c.name+"-"+b.value).appendTo(d),f=a("<span>").appendTo(e),g=a("<input />").attr("type","checkbox").attr("name",c.name+"[]").val(b.value).attr("id","factory-checklist-"+c.name+"-"+b.value).appendTo(f),h=(a("<span>"+b.title+"</span>").appendTo(e),c.getAjaxData());h.selected.length&&a.inArray(b.value,h.selected)>=0&&g.attr("checked","checked"),this.$element.append(d)},this.showError=function(b){this.$element.html("").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),this.$element.addClass("factory-list-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var d=this.$element.data("ajax");d&&this.loadData()}};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name"),"checklist"===this.way){this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(){c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length){this.$element.removeClass("factory-empty");for(var d in a){var e=a[d];c.addListItem(e)}}else this.$element.addClass("factory-empty"),this.$element.append("<li>"+b.emptyList+"</li>")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<li>"),e=a("<label>").attr("for","factory-checklist-"+c.name+"-"+b.value).appendTo(d),f=a("<span>").appendTo(e),g=a("<input />").attr("type","checkbox").attr("name",c.name+"[]").val(b.value).attr("id","factory-checklist-"+c.name+"-"+b.value).appendTo(f),h=(a("<span>"+b.title+"</span>").appendTo(e),c.getAjaxData());h.selected.length&&a.inArray(b.value,h.selected)>=0&&g.attr("checked","checked"),this.$element.append(d)},this.showError=function(b){this.$element.html("").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),this.$element.addClass("factory-list-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var d=this.$element.data("ajax");d&&this.loadData()}};a.fn.factoryBootstrap446_listControl=function(c){if("string"==typeof c){var d=a(this).data("factory.list.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.list.control");d||c.data("factory.list.control",d=new b(this))})},a.fn.factoryBootstrap446_listControl.Constructor=b,a(function(){a(".factory-bootstrap-446 .factory-list").factoryBootstrap446_listControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){"use strict";var b=function(b){this.$element=a(b);var c=a(".factory-mtextbox-item",this.$element).eq(0).clone(!0);a(".factory-mtextbox-add-item",this.$element).on("click",function(){var b=a(this).closest(".factory-multiple-textbox-group").find(".factory-mtextbox-items"),d=c.clone(!0),e=a('<button class="btn btn-default btn-small factory-mtextbox-remove-item"><i class="fa fa-times" aria-hidden="true"></i></button>');return b.append(d.append(e)),d.find('input[type="text"]').val("").focus(),!1}),a(document).on("click",".factory-mtextbox-remove-item",function(){return a(this).closest(".factory-mtextbox-item").remove(),!1})};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){"use strict";var b=function(b){this.$element=a(b);var c=a(".factory-mtextbox-item",this.$element).eq(0).clone(!0);a(".factory-mtextbox-add-item",this.$element).on("click",function(){var b=a(this).closest(".factory-multiple-textbox-group").find(".factory-mtextbox-items"),d=c.clone(!0),e=a('<button class="btn btn-default btn-small factory-mtextbox-remove-item"><i class="fa fa-times" aria-hidden="true"></i></button>');return b.append(d.append(e)),d.find('input[type="text"]').val("").focus(),!1}),a(document).on("click",".factory-mtextbox-remove-item",function(){return a(this).closest(".factory-mtextbox-item").remove(),!1})};a.fn.factoryBootstrap446_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-446 .factory-multiple-textbox-group").factoryBootstrap446_MultipleTextboxControl()})}(jQuery);
|
libs/factory/bootstrap/boot.php
CHANGED
@@ -19,27 +19,27 @@ if( !is_admin() ) {
|
|
19 |
return;
|
20 |
}
|
21 |
|
22 |
-
if( defined('
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
-
define('
|
27 |
-
define('
|
28 |
|
29 |
if( !defined('FACTORY_FLAT_ADMIN') ) {
|
30 |
define('FACTORY_FLAT_ADMIN', true);
|
31 |
}
|
32 |
|
33 |
-
define('
|
34 |
-
define('
|
35 |
|
36 |
-
require_once(
|
37 |
|
38 |
/**
|
39 |
-
* @param
|
40 |
*/
|
41 |
-
add_action('
|
42 |
-
$manager = new
|
43 |
$plugin->setBootstap($manager);
|
44 |
});
|
45 |
|
19 |
return;
|
20 |
}
|
21 |
|
22 |
+
if( defined('FACTORY_BOOTSTRAP_446_LOADED') ) {
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
+
define( 'FACTORY_BOOTSTRAP_446_VERSION', '4.4.6' );
|
27 |
+
define( 'FACTORY_BOOTSTRAP_446_LOADED', true );
|
28 |
|
29 |
if( !defined('FACTORY_FLAT_ADMIN') ) {
|
30 |
define('FACTORY_FLAT_ADMIN', true);
|
31 |
}
|
32 |
|
33 |
+
define('FACTORY_BOOTSTRAP_446_DIR', dirname(__FILE__));
|
34 |
+
define('FACTORY_BOOTSTRAP_446_URL', plugins_url(null, __FILE__));
|
35 |
|
36 |
+
require_once(FACTORY_BOOTSTRAP_446_DIR . '/includes/functions.php');
|
37 |
|
38 |
/**
|
39 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
40 |
*/
|
41 |
+
add_action('wbcr_factory_bootstrap_446_plugin_created', function ($plugin) {
|
42 |
+
$manager = new Wbcr_FactoryBootstrap446_Manager($plugin);
|
43 |
$plugin->setBootstap($manager);
|
44 |
});
|
45 |
|
libs/factory/bootstrap/includes/functions.php
CHANGED
@@ -20,13 +20,13 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
20 |
*
|
21 |
* @since 3.2.0
|
22 |
*/
|
23 |
-
class
|
24 |
|
25 |
/**
|
26 |
* A plugin for which the manager was created.
|
27 |
*
|
28 |
* @since 3.2.0
|
29 |
-
* @var
|
30 |
*/
|
31 |
public $plugin;
|
32 |
|
@@ -51,7 +51,7 @@ class Wbcr_FactoryBootstrap445_Manager {
|
|
51 |
*
|
52 |
* @since 1.0.0
|
53 |
*/
|
54 |
-
public function __construct(
|
55 |
$this->plugin = $plugin;
|
56 |
|
57 |
add_action( 'admin_enqueue_scripts', [ $this, 'loadAssets' ] );
|
@@ -111,8 +111,8 @@ class Wbcr_FactoryBootstrap445_Manager {
|
|
111 |
*/
|
112 |
public function loadAssets( $hook ) {
|
113 |
|
114 |
-
do_action( '
|
115 |
-
do_action( '
|
116 |
|
117 |
$dependencies = [];
|
118 |
if ( ! empty( $this->scripts ) ) {
|
@@ -156,8 +156,8 @@ class Wbcr_FactoryBootstrap445_Manager {
|
|
156 |
$cache_enable = apply_filters( 'wbcr/factory/bootstrap/cache_enable', true );
|
157 |
|
158 |
$cache_id = md5( implode( ',', $this->scripts ) . $type . $this->plugin->getPluginVersion() );
|
159 |
-
$cache_dir_path =
|
160 |
-
$cache_dir_url =
|
161 |
|
162 |
$cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
|
163 |
$cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
|
@@ -184,7 +184,7 @@ class Wbcr_FactoryBootstrap445_Manager {
|
|
184 |
foreach ( $scripts as $script_to_load ) {
|
185 |
$script_to_load = sanitize_text_field( $script_to_load );
|
186 |
if ( $cache_enable && $cache_dir_exists ) {
|
187 |
-
$fname =
|
188 |
if ( file_exists( $fname ) ) {
|
189 |
$f = @fopen( $fname, 'r' );
|
190 |
$concat_files[] = @fread( $f, filesize( $fname ) );
|
@@ -192,9 +192,9 @@ class Wbcr_FactoryBootstrap445_Manager {
|
|
192 |
}
|
193 |
} else {
|
194 |
if ( $type == 'js' ) {
|
195 |
-
wp_enqueue_script( md5( $script_to_load ),
|
196 |
} else {
|
197 |
-
wp_enqueue_style( md5( $script_to_load ),
|
198 |
}
|
199 |
$is_first = false;
|
200 |
}
|
20 |
*
|
21 |
* @since 3.2.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryBootstrap446_Manager {
|
24 |
|
25 |
/**
|
26 |
* A plugin for which the manager was created.
|
27 |
*
|
28 |
* @since 3.2.0
|
29 |
+
* @var Wbcr_Factory446_Plugin
|
30 |
*/
|
31 |
public $plugin;
|
32 |
|
51 |
*
|
52 |
* @since 1.0.0
|
53 |
*/
|
54 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
55 |
$this->plugin = $plugin;
|
56 |
|
57 |
add_action( 'admin_enqueue_scripts', [ $this, 'loadAssets' ] );
|
111 |
*/
|
112 |
public function loadAssets( $hook ) {
|
113 |
|
114 |
+
do_action( 'wbcr_factory_446_bootstrap_enqueue_scripts', $hook );
|
115 |
+
do_action( 'wbcr_factory_446_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook );
|
116 |
|
117 |
$dependencies = [];
|
118 |
if ( ! empty( $this->scripts ) ) {
|
156 |
$cache_enable = apply_filters( 'wbcr/factory/bootstrap/cache_enable', true );
|
157 |
|
158 |
$cache_id = md5( implode( ',', $this->scripts ) . $type . $this->plugin->getPluginVersion() );
|
159 |
+
$cache_dir_path = FACTORY_BOOTSTRAP_446_DIR . '/assets/cache/';
|
160 |
+
$cache_dir_url = FACTORY_BOOTSTRAP_446_URL . '/assets/cache/';
|
161 |
|
162 |
$cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
|
163 |
$cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
|
184 |
foreach ( $scripts as $script_to_load ) {
|
185 |
$script_to_load = sanitize_text_field( $script_to_load );
|
186 |
if ( $cache_enable && $cache_dir_exists ) {
|
187 |
+
$fname = FACTORY_BOOTSTRAP_446_DIR . "/assets/$type-min/$script_to_load.min." . $type;
|
188 |
if ( file_exists( $fname ) ) {
|
189 |
$f = @fopen( $fname, 'r' );
|
190 |
$concat_files[] = @fread( $f, filesize( $fname ) );
|
192 |
}
|
193 |
} else {
|
194 |
if ( $type == 'js' ) {
|
195 |
+
wp_enqueue_script( md5( $script_to_load ), FACTORY_BOOTSTRAP_446_URL . "/assets/$type-min/$script_to_load.min." . $type, $is_first ? $dependencies : false, $this->plugin->getPluginVersion() );
|
196 |
} else {
|
197 |
+
wp_enqueue_style( md5( $script_to_load ), FACTORY_BOOTSTRAP_446_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion() );
|
198 |
}
|
199 |
$is_first = false;
|
200 |
}
|
libs/factory/clearfy/assets/css/clearfy-base.css
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
#WBCR {
|
9 |
/* subscribe widget */
|
10 |
}
|
11 |
-
#WBCR .wbcr-factory-pages-
|
12 |
display: inline-block;
|
13 |
position: relative;
|
14 |
content: 'PRO';
|
@@ -26,18 +26,18 @@
|
|
26 |
right: auto;
|
27 |
z-index: 11;
|
28 |
}
|
29 |
-
#WBCR .wbcr-factory-pages-
|
30 |
padding: 30px 80px;
|
31 |
}
|
32 |
-
#WBCR .wbcr-factory-pages-
|
33 |
margin: 0 0 20px;
|
34 |
}
|
35 |
-
#WBCR .wbcr-factory-pages-
|
36 |
border: 2px dashed #8bc34a;
|
37 |
background: #fff;
|
38 |
padding: 20px;
|
39 |
}
|
40 |
-
#WBCR .wbcr-factory-pages-
|
41 |
display: inline-block;
|
42 |
cursor: pointer;
|
43 |
line-height: 16px;
|
@@ -56,16 +56,16 @@
|
|
56 |
-moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
|
57 |
-webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
|
58 |
}
|
59 |
-
#WBCR .wbcr-factory-pages-
|
60 |
box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
|
61 |
-moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
|
62 |
-webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
|
63 |
}
|
64 |
-
#WBCR .wbcr-factory-pages-
|
65 |
outline: none;
|
66 |
border: 0;
|
67 |
}
|
68 |
-
#WBCR .wbcr-factory-pages-
|
69 |
display: inline-block;
|
70 |
cursor: pointer;
|
71 |
line-height: 16px;
|
@@ -84,22 +84,22 @@
|
|
84 |
-moz-box-shadow: 0 1px 0 rgba(60, 45, 2, 0.31);
|
85 |
-webkit-box-shadow: 0 1px 0 rgba(60, 45, 2, 0.31);
|
86 |
}
|
87 |
-
#WBCR .wbcr-factory-pages-
|
88 |
box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
|
89 |
-moz-box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
|
90 |
-webkit-box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
|
91 |
}
|
92 |
-
#WBCR .wbcr-factory-pages-
|
93 |
outline: none;
|
94 |
border: 0;
|
95 |
}
|
96 |
-
#WBCR .wbcr-factory-pages-
|
97 |
background: #fff;
|
98 |
color: #353535;
|
99 |
font-weight: 600;
|
100 |
border: 2px dashed #8bc34a;
|
101 |
}
|
102 |
-
#WBCR .wbcr-factory-pages-
|
103 |
margin: 0 0 20px;
|
104 |
padding: 10px 0;
|
105 |
text-align: center;
|
@@ -110,16 +110,16 @@
|
|
110 |
vertical-align: middle;
|
111 |
text-transform: uppercase;
|
112 |
}
|
113 |
-
#WBCR .wbcr-factory-pages-
|
114 |
position: relative;
|
115 |
margin-bottom: 20px;
|
116 |
}
|
117 |
-
#WBCR .wbcr-factory-pages-
|
118 |
font-size: 15px;
|
119 |
padding: 7px;
|
120 |
padding-left: 20px;
|
121 |
}
|
122 |
-
#WBCR .wbcr-factory-pages-
|
123 |
content: " ";
|
124 |
display: inline-block;
|
125 |
width: 0.4em;
|
@@ -133,7 +133,7 @@
|
|
133 |
-o-transform: rotate(45deg);
|
134 |
transform: rotate(45deg);
|
135 |
}
|
136 |
-
#WBCR .wbcr-factory-pages-
|
137 |
display: block;
|
138 |
cursor: pointer;
|
139 |
line-height: 16px;
|
@@ -152,12 +152,12 @@
|
|
152 |
-moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
|
153 |
-webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
|
154 |
}
|
155 |
-
#WBCR .wbcr-factory-pages-
|
156 |
box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
|
157 |
-moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
|
158 |
-webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
|
159 |
}
|
160 |
-
#WBCR .wbcr-factory-pages-
|
161 |
outline: none;
|
162 |
border: 0;
|
163 |
}
|
@@ -220,34 +220,34 @@
|
|
220 |
font-size: 12px;
|
221 |
}
|
222 |
@media screen and (max-width: 1550px) {
|
223 |
-
#WBCR .wbcr-factory-pages-
|
224 |
padding: 10px 80px;
|
225 |
}
|
226 |
-
#WBCR .wbcr-factory-pages-
|
227 |
padding: 10px;
|
228 |
}
|
229 |
-
#WBCR .wbcr-factory-pages-
|
230 |
margin: 0 0 20px;
|
231 |
padding: 10px 0;
|
232 |
font-size: 13px;
|
233 |
font-weight: 600;
|
234 |
}
|
235 |
-
#WBCR .wbcr-factory-pages-
|
236 |
margin-bottom: 20px;
|
237 |
}
|
238 |
-
#WBCR .wbcr-factory-pages-
|
239 |
font-size: 13px;
|
240 |
padding: 2px;
|
241 |
padding-left: 10px;
|
242 |
}
|
243 |
-
#WBCR .wbcr-factory-pages-
|
244 |
width: 0.4em;
|
245 |
height: 0.7em;
|
246 |
border-width: 0 0.2em 0.2em 0;
|
247 |
left: 0;
|
248 |
margin-right: 10px;
|
249 |
}
|
250 |
-
#WBCR .wbcr-factory-pages-
|
251 |
font-weight: 700;
|
252 |
line-height: 16px;
|
253 |
font-size: 12px;
|
8 |
#WBCR {
|
9 |
/* subscribe widget */
|
10 |
}
|
11 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .factory-checkbox.wbcr-factory-clearfy-icon-pro:after {
|
12 |
display: inline-block;
|
13 |
position: relative;
|
14 |
content: 'PRO';
|
26 |
right: auto;
|
27 |
z-index: 11;
|
28 |
}
|
29 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion {
|
30 |
padding: 30px 80px;
|
31 |
}
|
32 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion h3 {
|
33 |
margin: 0 0 20px;
|
34 |
}
|
35 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-inner-contanier {
|
36 |
border: 2px dashed #8bc34a;
|
37 |
background: #fff;
|
38 |
padding: 20px;
|
39 |
}
|
40 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-activate-premium {
|
41 |
display: inline-block;
|
42 |
cursor: pointer;
|
43 |
line-height: 16px;
|
56 |
-moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
|
57 |
-webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
|
58 |
}
|
59 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-activate-premium:active {
|
60 |
box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
|
61 |
-moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
|
62 |
-webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
|
63 |
}
|
64 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-activate-premium:focus {
|
65 |
outline: none;
|
66 |
border: 0;
|
67 |
}
|
68 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-purchase-premium {
|
69 |
display: inline-block;
|
70 |
cursor: pointer;
|
71 |
line-height: 16px;
|
84 |
-moz-box-shadow: 0 1px 0 rgba(60, 45, 2, 0.31);
|
85 |
-webkit-box-shadow: 0 1px 0 rgba(60, 45, 2, 0.31);
|
86 |
}
|
87 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-purchase-premium:active {
|
88 |
box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
|
89 |
-moz-box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
|
90 |
-webkit-box-shadow: inset 0 1px 0 rgba(60, 45, 2, 0.31);
|
91 |
}
|
92 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-suggetion .wbcr-factory-purchase-premium:focus {
|
93 |
outline: none;
|
94 |
border: 0;
|
95 |
}
|
96 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion {
|
97 |
background: #fff;
|
98 |
color: #353535;
|
99 |
font-weight: 600;
|
100 |
border: 2px dashed #8bc34a;
|
101 |
}
|
102 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion h3 {
|
103 |
margin: 0 0 20px;
|
104 |
padding: 10px 0;
|
105 |
text-align: center;
|
110 |
vertical-align: middle;
|
111 |
text-transform: uppercase;
|
112 |
}
|
113 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion ul {
|
114 |
position: relative;
|
115 |
margin-bottom: 20px;
|
116 |
}
|
117 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion ul li {
|
118 |
font-size: 15px;
|
119 |
padding: 7px;
|
120 |
padding-left: 20px;
|
121 |
}
|
122 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion ul li:before {
|
123 |
content: " ";
|
124 |
display: inline-block;
|
125 |
width: 0.4em;
|
133 |
-o-transform: rotate(45deg);
|
134 |
transform: rotate(45deg);
|
135 |
}
|
136 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion .wbcr-factory-purchase-premium {
|
137 |
display: block;
|
138 |
cursor: pointer;
|
139 |
line-height: 16px;
|
152 |
-moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
|
153 |
-webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
|
154 |
}
|
155 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion .wbcr-factory-purchase-premium:active {
|
156 |
box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
|
157 |
-moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
|
158 |
-webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.2);
|
159 |
}
|
160 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion .wbcr-factory-purchase-premium:focus {
|
161 |
outline: none;
|
162 |
border: 0;
|
163 |
}
|
220 |
font-size: 12px;
|
221 |
}
|
222 |
@media screen and (max-width: 1550px) {
|
223 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-clearfy-237-multisite-pro-suggetion {
|
224 |
padding: 10px 80px;
|
225 |
}
|
226 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion {
|
227 |
padding: 10px;
|
228 |
}
|
229 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion h3 {
|
230 |
margin: 0 0 20px;
|
231 |
padding: 10px 0;
|
232 |
font-size: 13px;
|
233 |
font-weight: 600;
|
234 |
}
|
235 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion ul {
|
236 |
margin-bottom: 20px;
|
237 |
}
|
238 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion ul li {
|
239 |
font-size: 13px;
|
240 |
padding: 2px;
|
241 |
padding-left: 10px;
|
242 |
}
|
243 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion ul li:before {
|
244 |
width: 0.4em;
|
245 |
height: 0.7em;
|
246 |
border-width: 0 0.2em 0.2em 0;
|
247 |
left: 0;
|
248 |
margin-right: 10px;
|
249 |
}
|
250 |
+
#WBCR .wbcr-factory-pages-445-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-clearfy-237-pro-suggettion .wbcr-factory-purchase-premium {
|
251 |
font-weight: 700;
|
252 |
line-height: 16px;
|
253 |
font-size: 12px;
|
libs/factory/clearfy/assets/css/components.css
CHANGED
@@ -3,11 +3,11 @@
|
|
3 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
4 |
* @copyright Alex Kovalev 30.09.2017
|
5 |
*/
|
6 |
-
#WBCR .wbc-factory-clearfy-
|
7 |
padding: 0 20px 20px;
|
8 |
text-align: center;
|
9 |
}
|
10 |
-
#WBCR .wbc-factory-clearfy-
|
11 |
position: relative;
|
12 |
display: inline-block;
|
13 |
width: 32.7%;
|
@@ -18,46 +18,46 @@
|
|
18 |
float: none;
|
19 |
vertical-align: top;
|
20 |
}
|
21 |
-
#WBCR .wbc-factory-clearfy-
|
22 |
margin-left: 0;
|
23 |
}
|
24 |
-
#WBCR .wbc-factory-clearfy-
|
25 |
position: absolute;
|
26 |
bottom: 0;
|
27 |
right: 0;
|
28 |
left: 0;
|
29 |
}
|
30 |
-
#WBCR .wbc-factory-clearfy-
|
31 |
min-height: 163px;
|
32 |
}
|
33 |
-
#WBCR .wbc-factory-clearfy-
|
34 |
-
#WBCR .wbc-factory-clearfy-
|
35 |
margin-right: 0 !important;
|
36 |
}
|
37 |
-
#WBCR .wbc-factory-clearfy-
|
38 |
font-size: 17px;
|
39 |
margin-top: 0 !important;
|
40 |
}
|
41 |
-
#WBCR .wbc-factory-clearfy-
|
42 |
float: right;
|
43 |
}
|
44 |
-
#WBCR .wbc-factory-clearfy-
|
45 |
float: right;
|
46 |
margin-left: 5px;
|
47 |
}
|
48 |
-
#WBCR .wbc-factory-clearfy-
|
49 |
-
#WBCR .wbc-factory-clearfy-
|
50 |
font-size: 16px !important;
|
51 |
line-height: 1.5 !important;
|
52 |
color: #62696f;
|
53 |
}
|
54 |
-
#WBCR .wbc-factory-clearfy-
|
55 |
color: #5c5d5f;
|
56 |
text-decoration: none;
|
57 |
font-weight: 600;
|
58 |
font-size: 15px;
|
59 |
}
|
60 |
-
#WBCR .wbc-factory-clearfy-
|
61 |
position: absolute;
|
62 |
bottom: 60px;
|
63 |
right: 0;
|
@@ -73,7 +73,7 @@
|
|
73 |
text-transform: uppercase;
|
74 |
z-index: 1;
|
75 |
}
|
76 |
-
#WBCR .wbc-factory-clearfy-
|
77 |
position: absolute;
|
78 |
bottom: 60px;
|
79 |
right: 0;
|
@@ -89,7 +89,7 @@
|
|
89 |
text-transform: uppercase;
|
90 |
z-index: 1;
|
91 |
}
|
92 |
-
#WBCR .wbc-factory-clearfy-
|
93 |
position: absolute;
|
94 |
bottom: 60px;
|
95 |
right: 0;
|
@@ -105,35 +105,35 @@
|
|
105 |
text-transform: uppercase;
|
106 |
z-index: 1;
|
107 |
}
|
108 |
-
#WBCR .wbc-factory-clearfy-
|
109 |
border-color: #e8d7b2;
|
110 |
background-color: #fff9eb;
|
111 |
}
|
112 |
-
#WBCR .wbc-factory-clearfy-
|
113 |
background-color: #f1f1f1;
|
114 |
}
|
115 |
-
#WBCR .wbc-factory-clearfy-
|
116 |
color: #ababab;
|
117 |
text-decoration: none;
|
118 |
font-weight: 600;
|
119 |
font-size: 15px;
|
120 |
}
|
121 |
-
#WBCR .wbc-factory-clearfy-
|
122 |
opacity: 0.3;
|
123 |
}
|
124 |
-
#WBCR .wbc-factory-clearfy-
|
125 |
color: #afafaf;
|
126 |
}
|
127 |
-
#WBCR .wbc-factory-clearfy-
|
128 |
background-color: #f9f2f1;
|
129 |
}
|
130 |
@media screen and (max-width: 1750px) {
|
131 |
-
#WBCR .wbc-factory-clearfy-
|
132 |
width: 49%;
|
133 |
}
|
134 |
}
|
135 |
@media screen and (max-width: 1350px) {
|
136 |
-
#WBCR .wbc-factory-clearfy-
|
137 |
width: 100%;
|
138 |
}
|
139 |
}
|
3 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
4 |
* @copyright Alex Kovalev 30.09.2017
|
5 |
*/
|
6 |
+
#WBCR .wbc-factory-clearfy-237-components {
|
7 |
padding: 0 20px 20px;
|
8 |
text-align: center;
|
9 |
}
|
10 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card {
|
11 |
position: relative;
|
12 |
display: inline-block;
|
13 |
width: 32.7%;
|
18 |
float: none;
|
19 |
vertical-align: top;
|
20 |
}
|
21 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card:first-child {
|
22 |
margin-left: 0;
|
23 |
}
|
24 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card .plugin-card-bottom {
|
25 |
position: absolute;
|
26 |
bottom: 0;
|
27 |
right: 0;
|
28 |
left: 0;
|
29 |
}
|
30 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card .plugin-card-top {
|
31 |
min-height: 163px;
|
32 |
}
|
33 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card .desc,
|
34 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card .name {
|
35 |
margin-right: 0 !important;
|
36 |
}
|
37 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card .name h3 {
|
38 |
font-size: 17px;
|
39 |
margin-top: 0 !important;
|
40 |
}
|
41 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card .install-now {
|
42 |
float: right;
|
43 |
}
|
44 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card .delete-now {
|
45 |
float: right;
|
46 |
margin-left: 5px;
|
47 |
}
|
48 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card .delete-now .dashicons,
|
49 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card .delete-now .dashicons-before:before {
|
50 |
font-size: 16px !important;
|
51 |
line-height: 1.5 !important;
|
52 |
color: #62696f;
|
53 |
}
|
54 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card a.open-plugin-details-modal {
|
55 |
color: #5c5d5f;
|
56 |
text-decoration: none;
|
57 |
font-weight: 600;
|
58 |
font-size: 15px;
|
59 |
}
|
60 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card .plugin-card-premium-ribbon {
|
61 |
position: absolute;
|
62 |
bottom: 60px;
|
63 |
right: 0;
|
73 |
text-transform: uppercase;
|
74 |
z-index: 1;
|
75 |
}
|
76 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card .plugin-card-free-ribbon {
|
77 |
position: absolute;
|
78 |
bottom: 60px;
|
79 |
right: 0;
|
89 |
text-transform: uppercase;
|
90 |
z-index: 1;
|
91 |
}
|
92 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card .plugin-card-freemium-ribbon {
|
93 |
position: absolute;
|
94 |
bottom: 60px;
|
95 |
right: 0;
|
105 |
text-transform: uppercase;
|
106 |
z-index: 1;
|
107 |
}
|
108 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card.premium {
|
109 |
border-color: #e8d7b2;
|
110 |
background-color: #fff9eb;
|
111 |
}
|
112 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card.plugin-status-deactive {
|
113 |
background-color: #f1f1f1;
|
114 |
}
|
115 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card.plugin-status-deactive a.open-plugin-details-modal {
|
116 |
color: #ababab;
|
117 |
text-decoration: none;
|
118 |
font-weight: 600;
|
119 |
font-size: 15px;
|
120 |
}
|
121 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card.plugin-status-deactive .plugin-icon {
|
122 |
opacity: 0.3;
|
123 |
}
|
124 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card.plugin-status-deactive .desc {
|
125 |
color: #afafaf;
|
126 |
}
|
127 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card.plugin-status-deactive.premium {
|
128 |
background-color: #f9f2f1;
|
129 |
}
|
130 |
@media screen and (max-width: 1750px) {
|
131 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card {
|
132 |
width: 49%;
|
133 |
}
|
134 |
}
|
135 |
@media screen and (max-width: 1350px) {
|
136 |
+
#WBCR .wbc-factory-clearfy-237-components .plugin-card {
|
137 |
width: 100%;
|
138 |
}
|
139 |
}
|
libs/factory/clearfy/assets/css/libs/autocomplete.css
CHANGED
@@ -5,39 +5,39 @@
|
|
5 |
*
|
6 |
* @since 2.2.0
|
7 |
*/
|
8 |
-
#wbcr-factory-clearfy-
|
9 |
width: 100%;
|
10 |
box-sizing: border-box;
|
11 |
border-color: #d6d4d4;
|
12 |
}
|
13 |
-
#wbcr-factory-clearfy-
|
14 |
padding: 10px;
|
15 |
}
|
16 |
-
#wbcr-factory-clearfy-
|
17 |
display: block !important;
|
18 |
}
|
19 |
-
.wbcr-factory-clearfy-
|
20 |
border: 1px solid #999;
|
21 |
background: #FFF;
|
22 |
overflow: auto;
|
23 |
}
|
24 |
-
.wbcr-factory-clearfy-
|
25 |
padding: 2px 5px;
|
26 |
white-space: nowrap;
|
27 |
overflow: hidden;
|
28 |
cursor: pointer;
|
29 |
}
|
30 |
-
.wbcr-factory-clearfy-
|
31 |
background: #F0F0F0;
|
32 |
}
|
33 |
-
.wbcr-factory-clearfy-
|
34 |
font-weight: normal;
|
35 |
color: #3399FF;
|
36 |
}
|
37 |
-
.wbcr-factory-clearfy-
|
38 |
padding: 2px 5px;
|
39 |
}
|
40 |
-
.wbcr-factory-clearfy-
|
41 |
display: block;
|
42 |
border-bottom: 1px solid #000;
|
43 |
}
|
5 |
*
|
6 |
* @since 2.2.0
|
7 |
*/
|
8 |
+
#wbcr-factory-clearfy-237__search_options_form #wbcr-factory-clearfy-237__autocomplete {
|
9 |
width: 100%;
|
10 |
box-sizing: border-box;
|
11 |
border-color: #d6d4d4;
|
12 |
}
|
13 |
+
#wbcr-factory-clearfy-237__search_options_form.wbcr-factory-clearfy-237__autocomplete-wrap {
|
14 |
padding: 10px;
|
15 |
}
|
16 |
+
#wbcr-factory-clearfy-237__search_options_form .wbcr-factory-clearfy-237__autocomplete-label {
|
17 |
display: block !important;
|
18 |
}
|
19 |
+
.wbcr-factory-clearfy-237__autocomplete-suggestions {
|
20 |
border: 1px solid #999;
|
21 |
background: #FFF;
|
22 |
overflow: auto;
|
23 |
}
|
24 |
+
.wbcr-factory-clearfy-237__autocomplete-suggestion {
|
25 |
padding: 2px 5px;
|
26 |
white-space: nowrap;
|
27 |
overflow: hidden;
|
28 |
cursor: pointer;
|
29 |
}
|
30 |
+
.wbcr-factory-clearfy-237__autocomplete-selected {
|
31 |
background: #F0F0F0;
|
32 |
}
|
33 |
+
.wbcr-factory-clearfy-237__autocomplete-suggestions strong {
|
34 |
font-weight: normal;
|
35 |
color: #3399FF;
|
36 |
}
|
37 |
+
.wbcr-factory-clearfy-237__autocomplete-group {
|
38 |
padding: 2px 5px;
|
39 |
}
|
40 |
+
.wbcr-factory-clearfy-237__autocomplete-group strong {
|
41 |
display: block;
|
42 |
border-bottom: 1px solid #000;
|
43 |
}
|
libs/factory/clearfy/assets/css/page-setup.css
CHANGED
@@ -2,13 +2,13 @@
|
|
2 |
margin: 0;
|
3 |
padding: 0;
|
4 |
}
|
5 |
-
.w-factory-clearfy-
|
6 |
text-align: right;
|
7 |
padding: 10px;
|
8 |
background: #f7f7f7;
|
9 |
border-top: 1px solid #e8e8e8;
|
10 |
}
|
11 |
-
.w-factory-clearfy-
|
12 |
background-color: #e7e7e7;
|
13 |
border-color: #e7e7e7;
|
14 |
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #e7e7e7;
|
@@ -16,29 +16,29 @@
|
|
16 |
margin: 0;
|
17 |
color: #8a8a8a;
|
18 |
}
|
19 |
-
.w-factory-clearfy-
|
20 |
-
.w-factory-clearfy-
|
21 |
-
.w-factory-clearfy-
|
22 |
background: #dddddd;
|
23 |
border-color: #dddddd;
|
24 |
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #dddddd;
|
25 |
color: #8a8a8a;
|
26 |
}
|
27 |
-
.w-factory-clearfy-
|
28 |
background-color: #f57d4f;
|
29 |
border-color: #f77d50;
|
30 |
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
|
31 |
text-shadow: 0 -1px 1px #f77d50, 1px 0 1px #f77d50, 0 1px 1px #f77d50, -1px 0 1px #f77d50;
|
32 |
margin: 0;
|
33 |
}
|
34 |
-
.w-factory-clearfy-
|
35 |
-
.w-factory-clearfy-
|
36 |
-
.w-factory-clearfy-
|
37 |
background: #f86b3b;
|
38 |
border-color: #f86b3b;
|
39 |
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f86b3b;
|
40 |
}
|
41 |
-
.w-factory-clearfy-
|
42 |
text-align: center;
|
43 |
max-width: 900px;
|
44 |
margin: 65px auto 24px;
|
@@ -46,11 +46,11 @@
|
|
46 |
background: #f1f1f1;
|
47 |
padding: 0;
|
48 |
}
|
49 |
-
.w-factory-clearfy-
|
50 |
-
.w-factory-clearfy-
|
51 |
padding: 30px;
|
52 |
}
|
53 |
-
.w-factory-clearfy-
|
54 |
padding: 0 0 24px;
|
55 |
margin: 0;
|
56 |
list-style: none outside;
|
@@ -60,7 +60,7 @@
|
|
60 |
display: -webkit-inline-box;
|
61 |
display: inline-flex;
|
62 |
}
|
63 |
-
.w-factory-clearfy-
|
64 |
width: 100%;
|
65 |
float: left;
|
66 |
padding: 0 0 0.8em;
|
@@ -70,7 +70,7 @@
|
|
70 |
border-bottom: 4px solid #ccc;
|
71 |
line-height: 1.4;
|
72 |
}
|
73 |
-
.w-factory-clearfy-
|
74 |
content: "";
|
75 |
border: 4px solid #ccc;
|
76 |
border-radius: 100%;
|
@@ -83,15 +83,15 @@
|
|
83 |
margin-bottom: -8px;
|
84 |
background: #fff;
|
85 |
}
|
86 |
-
.w-factory-clearfy-
|
87 |
border-color: #ff1c40 !important;
|
88 |
color: #222;
|
89 |
font-weight: 700;
|
90 |
}
|
91 |
-
.w-factory-clearfy-
|
92 |
border-color: #ff1c40 !important;
|
93 |
}
|
94 |
-
.w-factory-clearfy-
|
95 |
color: #a16696;
|
96 |
text-decoration: none;
|
97 |
padding: 1.5em;
|
@@ -99,67 +99,67 @@
|
|
99 |
position: relative;
|
100 |
z-index: 1;
|
101 |
}
|
102 |
-
.w-factory-clearfy-
|
103 |
-
.w-factory-clearfy-
|
104 |
color: #111;
|
105 |
text-decoration: underline;
|
106 |
}
|
107 |
-
/*.w-factory-clearfy-
|
108 |
border-color: #f57d4f;
|
109 |
color: #f57d4f
|
110 |
}
|
111 |
|
112 |
-
.w-factory-clearfy-
|
113 |
border-color: #f57d4f;
|
114 |
background: #f57d4f
|
115 |
}*/
|
116 |
-
.w-factory-clearfy-
|
117 |
overflow: hidden;
|
118 |
margin: 20px 0 0;
|
119 |
position: relative;
|
120 |
}
|
121 |
-
.w-factory-clearfy-
|
122 |
margin-bottom: 0;
|
123 |
}
|
124 |
-
.w-factory-clearfy-
|
125 |
margin-top: 0;
|
126 |
}
|
127 |
-
.w-factory-clearfy-
|
128 |
font-size: 0.85em;
|
129 |
color: #7b7b7b;
|
130 |
margin: 1.18em auto;
|
131 |
display: inline-block;
|
132 |
text-align: center;
|
133 |
}
|
134 |
-
.w-factory-clearfy-
|
135 |
text-align: center;
|
136 |
}
|
137 |
-
.w-factory-clearfy-
|
138 |
max-width: 250px;
|
139 |
}
|
140 |
-
.w-factory-clearfy-
|
141 |
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.13);
|
142 |
margin: 0 0 20px;
|
143 |
background: #fff;
|
144 |
zoom: 1;
|
145 |
text-align: left;
|
146 |
}
|
147 |
-
.w-factory-clearfy-
|
148 |
font-size: 1em;
|
149 |
line-height: 1.75;
|
150 |
color: #666;
|
151 |
}
|
152 |
-
.w-factory-clearfy-
|
153 |
background: #f1f1f1;
|
154 |
}
|
155 |
-
.w-factory-clearfy-
|
156 |
-
.w-factory-clearfy-
|
157 |
padding: 10px 15px;
|
158 |
}
|
159 |
-
.w-factory-clearfy-
|
160 |
-
.w-factory-clearfy-
|
161 |
-
.w-factory-clearfy-
|
162 |
-
.w-factory-clearfy-
|
163 |
margin: 0 0 20px;
|
164 |
border: 0;
|
165 |
padding: 0;
|
@@ -167,40 +167,40 @@
|
|
167 |
clear: none;
|
168 |
font-weight: 500;
|
169 |
}
|
170 |
-
.w-factory-clearfy-
|
171 |
margin: 20px 0;
|
172 |
font-size: 1.15em;
|
173 |
line-height: 1.75;
|
174 |
color: #666;
|
175 |
text-align: center;
|
176 |
}
|
177 |
-
.w-factory-clearfy-
|
178 |
font-size: 22px !important;
|
179 |
}
|
180 |
-
.w-factory-clearfy-
|
181 |
color: #f57d4f;
|
182 |
}
|
183 |
-
.w-factory-clearfy-
|
184 |
-
.w-factory-clearfy-
|
185 |
color: #111;
|
186 |
}
|
187 |
-
.w-factory-clearfy-
|
188 |
width: 100%;
|
189 |
font-size: 0.92em;
|
190 |
}
|
191 |
-
.w-factory-clearfy-
|
192 |
padding: 0;
|
193 |
text-align: center;
|
194 |
width: auto;
|
195 |
vertical-align: middle;
|
196 |
}
|
197 |
-
.w-factory-clearfy-
|
198 |
border: 1px solid #f5f5f5;
|
199 |
padding: 6px;
|
200 |
text-align: center;
|
201 |
vertical-align: middle;
|
202 |
}
|
203 |
-
.w-factory-clearfy-
|
204 |
outline: 0;
|
205 |
border: 0;
|
206 |
padding: 0;
|
@@ -208,18 +208,18 @@
|
|
208 |
text-align: center;
|
209 |
width: 100%;
|
210 |
}
|
211 |
-
.w-factory-clearfy-
|
212 |
cursor: move;
|
213 |
color: #ccc;
|
214 |
}
|
215 |
-
.w-factory-clearfy-
|
216 |
content: "\f333";
|
217 |
font-family: dashicons;
|
218 |
}
|
219 |
-
.w-factory-clearfy-
|
220 |
background: #f5f5f5;
|
221 |
}
|
222 |
-
.w-factory-clearfy-
|
223 |
padding: 1em 0 0 1em;
|
224 |
line-height: 1;
|
225 |
font-size: 1em;
|
@@ -230,14 +230,14 @@
|
|
230 |
position: relative;
|
231 |
display: inline-block;
|
232 |
}
|
233 |
-
.w-factory-clearfy-
|
234 |
content: "\f502";
|
235 |
font-family: dashicons;
|
236 |
position: absolute;
|
237 |
left: 0;
|
238 |
top: 0;
|
239 |
}
|
240 |
-
.w-factory-clearfy-
|
241 |
padding: 1em 0 0 1em;
|
242 |
line-height: 1;
|
243 |
font-size: 1em;
|
@@ -248,87 +248,87 @@
|
|
248 |
position: relative;
|
249 |
display: inline-block;
|
250 |
}
|
251 |
-
.w-factory-clearfy-
|
252 |
content: "\f182";
|
253 |
font-family: dashicons;
|
254 |
position: absolute;
|
255 |
left: 0;
|
256 |
top: 0;
|
257 |
}
|
258 |
-
.w-factory-clearfy-
|
259 |
width: 100%;
|
260 |
border-top: 1px solid #eee;
|
261 |
}
|
262 |
-
.w-factory-clearfy-
|
263 |
display: none;
|
264 |
}
|
265 |
-
.w-factory-clearfy-
|
266 |
width: 30%;
|
267 |
font-weight: 700;
|
268 |
}
|
269 |
-
.w-factory-clearfy-
|
270 |
-
.w-factory-clearfy-
|
271 |
padding: 14px 0;
|
272 |
border-bottom: 1px solid #eee;
|
273 |
}
|
274 |
-
.w-factory-clearfy-
|
275 |
-
.w-factory-clearfy-
|
276 |
padding-right: 9px;
|
277 |
}
|
278 |
-
.w-factory-clearfy-
|
279 |
padding-top: 0;
|
280 |
}
|
281 |
-
.w-factory-clearfy-
|
282 |
color: #777;
|
283 |
margin: 6px 0 0 24px;
|
284 |
line-height: 1.75;
|
285 |
}
|
286 |
-
.w-factory-clearfy-
|
287 |
vertical-align: middle;
|
288 |
margin: 1px 0 0;
|
289 |
height: 1.75em;
|
290 |
width: 1.75em;
|
291 |
line-height: 1.75;
|
292 |
}
|
293 |
-
.w-factory-clearfy-
|
294 |
line-height: 1;
|
295 |
}
|
296 |
@media screen and (max-width: 782px) {
|
297 |
-
.w-factory-clearfy-
|
298 |
width: auto;
|
299 |
}
|
300 |
}
|
301 |
-
.w-factory-clearfy-
|
302 |
float: right;
|
303 |
}
|
304 |
-
.w-factory-clearfy-
|
305 |
overflow: hidden;
|
306 |
margin: 0 0 24px;
|
307 |
padding-bottom: 2px;
|
308 |
}
|
309 |
-
.w-factory-clearfy-
|
310 |
margin-bottom: 12px;
|
311 |
}
|
312 |
-
.w-factory-clearfy-
|
313 |
float: left;
|
314 |
width: 50%;
|
315 |
box-sizing: border-box;
|
316 |
}
|
317 |
-
.w-factory-clearfy-
|
318 |
float: right;
|
319 |
width: 50%;
|
320 |
box-sizing: border-box;
|
321 |
}
|
322 |
-
.w-factory-clearfy-
|
323 |
padding: 0 2em 0 0;
|
324 |
list-style: none outside;
|
325 |
margin: 0;
|
326 |
}
|
327 |
-
.w-factory-clearfy-
|
328 |
display: block;
|
329 |
padding: 0 0 0.75em;
|
330 |
}
|
331 |
-
.w-factory-clearfy-
|
332 |
background-color: #f7f7f7;
|
333 |
border-color: #ccc;
|
334 |
color: #23282d;
|
@@ -342,28 +342,28 @@
|
|
342 |
padding: 1em;
|
343 |
text-align: center;
|
344 |
}
|
345 |
-
.w-factory-clearfy-
|
346 |
-
.w-factory-clearfy-
|
347 |
-
.w-factory-clearfy-
|
348 |
background: #f5f5f5;
|
349 |
border-color: #aaa;
|
350 |
}
|
351 |
-
.w-factory-clearfy-
|
352 |
color: #fff;
|
353 |
background-color: #f19570;
|
354 |
border-color: #f77d50;
|
355 |
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
|
356 |
text-shadow: 0 -1px 1px #f77d50, 1px 0 1px #f77d50, 0 1px 1px #f77d50, -1px 0 1px #f77d50;
|
357 |
}
|
358 |
-
.w-factory-clearfy-
|
359 |
-
.w-factory-clearfy-
|
360 |
-
.w-factory-clearfy-
|
361 |
color: #fff;
|
362 |
background: #f77d50;
|
363 |
border-color: #f77d50;
|
364 |
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
|
365 |
}
|
366 |
-
.w-factory-clearfy-
|
367 |
color: #82878c;
|
368 |
font: 400 20px/1 dashicons;
|
369 |
speak: none;
|
@@ -374,50 +374,50 @@
|
|
374 |
text-decoration: none !important;
|
375 |
vertical-align: top;
|
376 |
}
|
377 |
-
.w-factory-clearfy-
|
378 |
content: "\f105";
|
379 |
}
|
380 |
-
.w-factory-clearfy-
|
381 |
content: "\f126";
|
382 |
}
|
383 |
-
.w-factory-clearfy-
|
384 |
content: "\f465";
|
385 |
}
|
386 |
-
.w-factory-clearfy-
|
387 |
-
.w-factory-clearfy-
|
388 |
padding: 24px 24px 0;
|
389 |
margin: 0 0 24px;
|
390 |
overflow: hidden;
|
391 |
background: #f5f5f5;
|
392 |
}
|
393 |
-
.w-factory-clearfy-
|
394 |
-
.w-factory-clearfy-
|
395 |
padding: 0;
|
396 |
margin: 0 0 12px;
|
397 |
}
|
398 |
-
.w-factory-clearfy-
|
399 |
-
.w-factory-clearfy-
|
400 |
-
.w-factory-clearfy-
|
401 |
-
.w-factory-clearfy-
|
402 |
margin: 0 0 24px;
|
403 |
}
|
404 |
-
.w-factory-clearfy-
|
405 |
opacity: 0;
|
406 |
position: absolute;
|
407 |
left: -9999px;
|
408 |
}
|
409 |
-
.w-factory-clearfy-
|
410 |
position: relative;
|
411 |
display: inline-block;
|
412 |
padding-left: 28px;
|
413 |
}
|
414 |
-
.w-factory-clearfy-
|
415 |
-
.w-factory-clearfy-
|
416 |
position: absolute;
|
417 |
content: "";
|
418 |
display: inline-block;
|
419 |
}
|
420 |
-
.w-factory-clearfy-
|
421 |
height: 16px;
|
422 |
width: 16px;
|
423 |
left: 0;
|
@@ -426,7 +426,7 @@
|
|
426 |
background-color: #fff;
|
427 |
border-radius: 3px;
|
428 |
}
|
429 |
-
.w-factory-clearfy-
|
430 |
height: 5px;
|
431 |
width: 9px;
|
432 |
border-left: 2px solid;
|
@@ -438,16 +438,16 @@
|
|
438 |
top: 7px;
|
439 |
color: #fff;
|
440 |
}
|
441 |
-
.w-factory-clearfy-
|
442 |
content: none;
|
443 |
}
|
444 |
-
.w-factory-clearfy-
|
445 |
content: "";
|
446 |
}
|
447 |
-
.w-factory-clearfy-
|
448 |
outline: #3b99fc auto 5px;
|
449 |
}
|
450 |
-
.w-factory-clearfy-
|
451 |
background: #935687;
|
452 |
border-color: #935687;
|
453 |
}
|
2 |
margin: 0;
|
3 |
padding: 0;
|
4 |
}
|
5 |
+
.w-factory-clearfy-237__form-buttons {
|
6 |
text-align: right;
|
7 |
padding: 10px;
|
8 |
background: #f7f7f7;
|
9 |
border-top: 1px solid #e8e8e8;
|
10 |
}
|
11 |
+
.w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__skip-button {
|
12 |
background-color: #e7e7e7;
|
13 |
border-color: #e7e7e7;
|
14 |
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #e7e7e7;
|
16 |
margin: 0;
|
17 |
color: #8a8a8a;
|
18 |
}
|
19 |
+
.w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__skip-button:active,
|
20 |
+
.w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__skip-button:hover,
|
21 |
+
.w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__skip-button:focus {
|
22 |
background: #dddddd;
|
23 |
border-color: #dddddd;
|
24 |
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #dddddd;
|
25 |
color: #8a8a8a;
|
26 |
}
|
27 |
+
.w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__continue-button {
|
28 |
background-color: #f57d4f;
|
29 |
border-color: #f77d50;
|
30 |
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
|
31 |
text-shadow: 0 -1px 1px #f77d50, 1px 0 1px #f77d50, 0 1px 1px #f77d50, -1px 0 1px #f77d50;
|
32 |
margin: 0;
|
33 |
}
|
34 |
+
.w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__continue-button:active,
|
35 |
+
.w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__continue-button:hover,
|
36 |
+
.w-factory-clearfy-237__form-buttons .w-factory-clearfy-237__continue-button:focus {
|
37 |
background: #f86b3b;
|
38 |
border-color: #f86b3b;
|
39 |
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f86b3b;
|
40 |
}
|
41 |
+
.w-factory-clearfy-237-setup {
|
42 |
text-align: center;
|
43 |
max-width: 900px;
|
44 |
margin: 65px auto 24px;
|
46 |
background: #f1f1f1;
|
47 |
padding: 0;
|
48 |
}
|
49 |
+
.w-factory-clearfy-237-setup__inner-wrap,
|
50 |
+
.w-factory-clearfy-237__setup-form .factory-form-layout {
|
51 |
padding: 30px;
|
52 |
}
|
53 |
+
.w-factory-clearfy-237-setup-steps {
|
54 |
padding: 0 0 24px;
|
55 |
margin: 0;
|
56 |
list-style: none outside;
|
60 |
display: -webkit-inline-box;
|
61 |
display: inline-flex;
|
62 |
}
|
63 |
+
.w-factory-clearfy-237-setup-steps li {
|
64 |
width: 100%;
|
65 |
float: left;
|
66 |
padding: 0 0 0.8em;
|
70 |
border-bottom: 4px solid #ccc;
|
71 |
line-height: 1.4;
|
72 |
}
|
73 |
+
.w-factory-clearfy-237-setup-steps li::before {
|
74 |
content: "";
|
75 |
border: 4px solid #ccc;
|
76 |
border-radius: 100%;
|
83 |
margin-bottom: -8px;
|
84 |
background: #fff;
|
85 |
}
|
86 |
+
.w-factory-clearfy-237-setup-steps li.active {
|
87 |
border-color: #ff1c40 !important;
|
88 |
color: #222;
|
89 |
font-weight: 700;
|
90 |
}
|
91 |
+
.w-factory-clearfy-237-setup-steps li.active::before {
|
92 |
border-color: #ff1c40 !important;
|
93 |
}
|
94 |
+
.w-factory-clearfy-237-setup-steps li a {
|
95 |
color: #a16696;
|
96 |
text-decoration: none;
|
97 |
padding: 1.5em;
|
99 |
position: relative;
|
100 |
z-index: 1;
|
101 |
}
|
102 |
+
.w-factory-clearfy-237-setup-steps li a:focus,
|
103 |
+
.w-factory-clearfy-237-setup-steps li a:hover {
|
104 |
color: #111;
|
105 |
text-decoration: underline;
|
106 |
}
|
107 |
+
/*.w-factory-clearfy-237-setup-steps li.done {
|
108 |
border-color: #f57d4f;
|
109 |
color: #f57d4f
|
110 |
}
|
111 |
|
112 |
+
.w-factory-clearfy-237-setup-steps li.done::before {
|
113 |
border-color: #f57d4f;
|
114 |
background: #f57d4f
|
115 |
}*/
|
116 |
+
.w-factory-clearfy-237-setup .w-factory-clearfy-237-setup-actions {
|
117 |
overflow: hidden;
|
118 |
margin: 20px 0 0;
|
119 |
position: relative;
|
120 |
}
|
121 |
+
.w-factory-clearfy-237-setup-content p:last-child {
|
122 |
margin-bottom: 0;
|
123 |
}
|
124 |
+
.w-factory-clearfy-237-setup-content p.store-setup {
|
125 |
margin-top: 0;
|
126 |
}
|
127 |
+
.w-factory-clearfy-237-setup-footer-links {
|
128 |
font-size: 0.85em;
|
129 |
color: #7b7b7b;
|
130 |
margin: 1.18em auto;
|
131 |
display: inline-block;
|
132 |
text-align: center;
|
133 |
}
|
134 |
+
.w-factory-clearfy-237-logo {
|
135 |
text-align: center;
|
136 |
}
|
137 |
+
.w-factory-clearfy-237-logo img {
|
138 |
max-width: 250px;
|
139 |
}
|
140 |
+
.w-factory-clearfy-237-setup-content {
|
141 |
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.13);
|
142 |
margin: 0 0 20px;
|
143 |
background: #fff;
|
144 |
zoom: 1;
|
145 |
text-align: left;
|
146 |
}
|
147 |
+
.w-factory-clearfy-237-setup-content table {
|
148 |
font-size: 1em;
|
149 |
line-height: 1.75;
|
150 |
color: #666;
|
151 |
}
|
152 |
+
.w-factory-clearfy-237-setup-content table thead {
|
153 |
background: #f1f1f1;
|
154 |
}
|
155 |
+
.w-factory-clearfy-237-setup-content table th,
|
156 |
+
.w-factory-clearfy-237-setup-content table td {
|
157 |
padding: 10px 15px;
|
158 |
}
|
159 |
+
.w-factory-clearfy-237-setup-content h1,
|
160 |
+
.w-factory-clearfy-237-setup-content h2,
|
161 |
+
.w-factory-clearfy-237-setup-content h3,
|
162 |
+
.w-factory-clearfy-237-setup-content table {
|
163 |
margin: 0 0 20px;
|
164 |
border: 0;
|
165 |
padding: 0;
|
167 |
clear: none;
|
168 |
font-weight: 500;
|
169 |
}
|
170 |
+
.w-factory-clearfy-237-setup-content p {
|
171 |
margin: 20px 0;
|
172 |
font-size: 1.15em;
|
173 |
line-height: 1.75;
|
174 |
color: #666;
|
175 |
text-align: center;
|
176 |
}
|
177 |
+
.w-factory-clearfy-237-setup-step__new_onboarding-welcome {
|
178 |
font-size: 22px !important;
|
179 |
}
|
180 |
+
.w-factory-clearfy-237-setup-content a {
|
181 |
color: #f57d4f;
|
182 |
}
|
183 |
+
.w-factory-clearfy-237-setup-content a:focus,
|
184 |
+
.w-factory-clearfy-237-setup-content a:hover {
|
185 |
color: #111;
|
186 |
}
|
187 |
+
.w-factory-clearfy-237-setup-content table.tax-rates {
|
188 |
width: 100%;
|
189 |
font-size: 0.92em;
|
190 |
}
|
191 |
+
.w-factory-clearfy-237-setup-content table.tax-rates th {
|
192 |
padding: 0;
|
193 |
text-align: center;
|
194 |
width: auto;
|
195 |
vertical-align: middle;
|
196 |
}
|
197 |
+
.w-factory-clearfy-237-setup-content table.tax-rates td {
|
198 |
border: 1px solid #f5f5f5;
|
199 |
padding: 6px;
|
200 |
text-align: center;
|
201 |
vertical-align: middle;
|
202 |
}
|
203 |
+
.w-factory-clearfy-237-setup-content table.tax-rates td input {
|
204 |
outline: 0;
|
205 |
border: 0;
|
206 |
padding: 0;
|
208 |
text-align: center;
|
209 |
width: 100%;
|
210 |
}
|
211 |
+
.w-factory-clearfy-237-setup-content table.tax-rates td.sort {
|
212 |
cursor: move;
|
213 |
color: #ccc;
|
214 |
}
|
215 |
+
.w-factory-clearfy-237-setup-content table.tax-rates td.sort::before {
|
216 |
content: "\f333";
|
217 |
font-family: dashicons;
|
218 |
}
|
219 |
+
.w-factory-clearfy-237-setup-content table.tax-rates td.readonly {
|
220 |
background: #f5f5f5;
|
221 |
}
|
222 |
+
.w-factory-clearfy-237-setup-content table.tax-rates .add {
|
223 |
padding: 1em 0 0 1em;
|
224 |
line-height: 1;
|
225 |
font-size: 1em;
|
230 |
position: relative;
|
231 |
display: inline-block;
|
232 |
}
|
233 |
+
.w-factory-clearfy-237-setup-content table.tax-rates .add::before {
|
234 |
content: "\f502";
|
235 |
font-family: dashicons;
|
236 |
position: absolute;
|
237 |
left: 0;
|
238 |
top: 0;
|
239 |
}
|
240 |
+
.w-factory-clearfy-237-setup-content table.tax-rates .remove {
|
241 |
padding: 1em 0 0 1em;
|
242 |
line-height: 1;
|
243 |
font-size: 1em;
|
248 |
position: relative;
|
249 |
display: inline-block;
|
250 |
}
|
251 |
+
.w-factory-clearfy-237-setup-content table.tax-rates .remove::before {
|
252 |
content: "\f182";
|
253 |
font-family: dashicons;
|
254 |
position: absolute;
|
255 |
left: 0;
|
256 |
top: 0;
|
257 |
}
|
258 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages {
|
259 |
width: 100%;
|
260 |
border-top: 1px solid #eee;
|
261 |
}
|
262 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages thead th {
|
263 |
display: none;
|
264 |
}
|
265 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages .page-name {
|
266 |
width: 30%;
|
267 |
font-weight: 700;
|
268 |
}
|
269 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages td,
|
270 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages th {
|
271 |
padding: 14px 0;
|
272 |
border-bottom: 1px solid #eee;
|
273 |
}
|
274 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages td:first-child,
|
275 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages th:first-child {
|
276 |
padding-right: 9px;
|
277 |
}
|
278 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages th {
|
279 |
padding-top: 0;
|
280 |
}
|
281 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages .page-options p {
|
282 |
color: #777;
|
283 |
margin: 6px 0 0 24px;
|
284 |
line-height: 1.75;
|
285 |
}
|
286 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages .page-options p input {
|
287 |
vertical-align: middle;
|
288 |
margin: 1px 0 0;
|
289 |
height: 1.75em;
|
290 |
width: 1.75em;
|
291 |
line-height: 1.75;
|
292 |
}
|
293 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-pages .page-options p label {
|
294 |
line-height: 1;
|
295 |
}
|
296 |
@media screen and (max-width: 782px) {
|
297 |
+
.w-factory-clearfy-237-setup-content .form-table tbody th {
|
298 |
width: auto;
|
299 |
}
|
300 |
}
|
301 |
+
.w-factory-clearfy-237-setup-content .twitter-share-button {
|
302 |
float: right;
|
303 |
}
|
304 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps {
|
305 |
overflow: hidden;
|
306 |
margin: 0 0 24px;
|
307 |
padding-bottom: 2px;
|
308 |
}
|
309 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps h2 {
|
310 |
margin-bottom: 12px;
|
311 |
}
|
312 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps .w-factory-clearfy-237-setup-next-steps-first {
|
313 |
float: left;
|
314 |
width: 50%;
|
315 |
box-sizing: border-box;
|
316 |
}
|
317 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps .w-factory-clearfy-237-setup-next-steps-last {
|
318 |
float: right;
|
319 |
width: 50%;
|
320 |
box-sizing: border-box;
|
321 |
}
|
322 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul {
|
323 |
padding: 0 2em 0 0;
|
324 |
list-style: none outside;
|
325 |
margin: 0;
|
326 |
}
|
327 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul li a {
|
328 |
display: block;
|
329 |
padding: 0 0 0.75em;
|
330 |
}
|
331 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button {
|
332 |
background-color: #f7f7f7;
|
333 |
border-color: #ccc;
|
334 |
color: #23282d;
|
342 |
padding: 1em;
|
343 |
text-align: center;
|
344 |
}
|
345 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button:active,
|
346 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button:focus,
|
347 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button:hover {
|
348 |
background: #f5f5f5;
|
349 |
border-color: #aaa;
|
350 |
}
|
351 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button-primary {
|
352 |
color: #fff;
|
353 |
background-color: #f19570;
|
354 |
border-color: #f77d50;
|
355 |
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
|
356 |
text-shadow: 0 -1px 1px #f77d50, 1px 0 1px #f77d50, 0 1px 1px #f77d50, -1px 0 1px #f77d50;
|
357 |
}
|
358 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button-primary:active,
|
359 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button-primary:focus,
|
360 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .setup-product a.button-primary:hover {
|
361 |
color: #fff;
|
362 |
background: #f77d50;
|
363 |
border-color: #f77d50;
|
364 |
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 0 #f77d50;
|
365 |
}
|
366 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul li a::before {
|
367 |
color: #82878c;
|
368 |
font: 400 20px/1 dashicons;
|
369 |
speak: none;
|
374 |
text-decoration: none !important;
|
375 |
vertical-align: top;
|
376 |
}
|
377 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .learn-more a::before {
|
378 |
content: "\f105";
|
379 |
}
|
380 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .video-walkthrough a::before {
|
381 |
content: "\f126";
|
382 |
}
|
383 |
+
.w-factory-clearfy-237-setup-content .w-factory-clearfy-237-setup-next-steps ul .newsletter a::before {
|
384 |
content: "\f465";
|
385 |
}
|
386 |
+
.w-factory-clearfy-237-setup-content .updated,
|
387 |
+
.w-factory-clearfy-237-setup-content .woocommerce-newsletter {
|
388 |
padding: 24px 24px 0;
|
389 |
margin: 0 0 24px;
|
390 |
overflow: hidden;
|
391 |
background: #f5f5f5;
|
392 |
}
|
393 |
+
.w-factory-clearfy-237-setup-content .updated p,
|
394 |
+
.w-factory-clearfy-237-setup-content .woocommerce-newsletter p {
|
395 |
padding: 0;
|
396 |
margin: 0 0 12px;
|
397 |
}
|
398 |
+
.w-factory-clearfy-237-setup-content .updated form,
|
399 |
+
.w-factory-clearfy-237-setup-content .updated p:last-child,
|
400 |
+
.w-factory-clearfy-237-setup-content .woocommerce-newsletter form,
|
401 |
+
.w-factory-clearfy-237-setup-content .woocommerce-newsletter p:last-child {
|
402 |
margin: 0 0 24px;
|
403 |
}
|
404 |
+
.w-factory-clearfy-237-setup-content .checkbox input[type=checkbox] {
|
405 |
opacity: 0;
|
406 |
position: absolute;
|
407 |
left: -9999px;
|
408 |
}
|
409 |
+
.w-factory-clearfy-237-setup-content .checkbox label {
|
410 |
position: relative;
|
411 |
display: inline-block;
|
412 |
padding-left: 28px;
|
413 |
}
|
414 |
+
.w-factory-clearfy-237-setup-content .checkbox label::after,
|
415 |
+
.w-factory-clearfy-237-setup-content .checkbox label::before {
|
416 |
position: absolute;
|
417 |
content: "";
|
418 |
display: inline-block;
|
419 |
}
|
420 |
+
.w-factory-clearfy-237-setup-content .checkbox label::before {
|
421 |
height: 16px;
|
422 |
width: 16px;
|
423 |
left: 0;
|
426 |
background-color: #fff;
|
427 |
border-radius: 3px;
|
428 |
}
|
429 |
+
.w-factory-clearfy-237-setup-content .checkbox label::after {
|
430 |
height: 5px;
|
431 |
width: 9px;
|
432 |
border-left: 2px solid;
|
438 |
top: 7px;
|
439 |
color: #fff;
|
440 |
}
|
441 |
+
.w-factory-clearfy-237-setup-content .checkbox input[type=checkbox] + label::after {
|
442 |
content: none;
|
443 |
}
|
444 |
+
.w-factory-clearfy-237-setup-content .checkbox input[type=checkbox]:checked + label::after {
|
445 |
content: "";
|
446 |
}
|
447 |
+
.w-factory-clearfy-237-setup-content .checkbox input[type=checkbox]:focus + label::before {
|
448 |
outline: #3b99fc auto 5px;
|
449 |
}
|
450 |
+
.w-factory-clearfy-237-setup-content .checkbox input[type=checkbox]:checked + label::before {
|
451 |
background: #935687;
|
452 |
border-color: #935687;
|
453 |
}
|
libs/factory/clearfy/assets/js/clearfy-globals.js
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
* Глобальный JS файл, который регистрирует глобальные переменные с общими методами для всех компонентов Clearfy
|
3 |
* и самого Clearfy.
|
4 |
*
|
5 |
-
* $.
|
6 |
-
* $.
|
7 |
*
|
8 |
* Copyright 2018, Webcraftic, http://webcraftic.com
|
9 |
*
|
@@ -13,16 +13,16 @@
|
|
13 |
(function($) {
|
14 |
'use strict';
|
15 |
|
16 |
-
if( !$.
|
17 |
-
$.
|
18 |
}
|
19 |
|
20 |
//todo: Переопредление для совместимости со старыми версиями плагинов.
|
21 |
-
$.
|
22 |
//todo: Переопредление для совместимости со старыми версиями плагинов.
|
23 |
-
$.
|
24 |
|
25 |
-
$.
|
26 |
/**
|
27 |
* Создает и показывает уведомление внутри интерфейса Clearfy
|
28 |
*
|
@@ -68,12 +68,12 @@
|
|
68 |
/**
|
69 |
* Хук выполняет проивольную функцию, после того как уведомление отображено
|
70 |
* Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
|
71 |
-
* Пример регистрации хука $.
|
72 |
* function(noticeId) {});
|
73 |
* @param {string} noticeId - id уведомления
|
74 |
*/
|
75 |
-
$.
|
76 |
-
$.
|
77 |
});
|
78 |
|
79 |
return noticeId;
|
@@ -98,13 +98,13 @@
|
|
98 |
/**
|
99 |
* Хук выполняет проивольную функцию, после того как уведомление скрыто
|
100 |
* Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
|
101 |
-
* Пример регистрации хука $.
|
102 |
* function(noticeId)
|
103 |
* {});
|
104 |
* @param {string} noticeId - id уведомления
|
105 |
*/
|
106 |
-
$.
|
107 |
-
$.
|
108 |
});
|
109 |
},
|
110 |
|
@@ -121,7 +121,7 @@
|
|
121 |
|
122 |
};
|
123 |
|
124 |
-
$.
|
125 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
126 |
if( !$('#WBCR').length ) {
|
127 |
return false;
|
@@ -137,7 +137,7 @@
|
|
137 |
}
|
138 |
});
|
139 |
|
140 |
-
$.
|
141 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
142 |
if( !$('#WBCR').length ) {
|
143 |
return false;
|
@@ -156,7 +156,7 @@
|
|
156 |
}
|
157 |
});
|
158 |
|
159 |
-
$.
|
160 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
161 |
if( !$('#WBCR').length ) {
|
162 |
return false;
|
@@ -175,32 +175,32 @@
|
|
175 |
}
|
176 |
});
|
177 |
|
178 |
-
$.
|
179 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
180 |
-
if( !($('#WBCR').length && $.
|
181 |
return false;
|
182 |
}
|
183 |
|
184 |
button.closest('.plugin-card').addClass('plugin-status-deactive');
|
185 |
|
186 |
if( response.data && response.data.error_message ) {
|
187 |
-
$.
|
188 |
}
|
189 |
});
|
190 |
|
191 |
-
$.
|
192 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
193 |
-
if( !($('#WBCR').length && $.
|
194 |
return false;
|
195 |
}
|
196 |
|
197 |
if( response.data && response.data.error_message ) {
|
198 |
-
$.
|
199 |
}
|
200 |
|
201 |
});
|
202 |
|
203 |
-
$.
|
204 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
205 |
if( !$('#WBCR').length ) {
|
206 |
return false;
|
@@ -209,13 +209,13 @@
|
|
209 |
button.closest('.plugin-card').removeClass('plugin-status-deactive');
|
210 |
});
|
211 |
|
212 |
-
$.
|
213 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
214 |
-
if( !($('#WBCR').length && $.
|
215 |
return false;
|
216 |
}
|
217 |
|
218 |
-
$.
|
219 |
});
|
220 |
|
221 |
})(jQuery);
|
2 |
* Глобальный JS файл, который регистрирует глобальные переменные с общими методами для всех компонентов Clearfy
|
3 |
* и самого Clearfy.
|
4 |
*
|
5 |
+
* $.wbcr_factory_clearfy_237.app - методы для работы с приложением. Скрыть, показать уведомления.
|
6 |
+
* $.wbcr_factory_clearfy_237.hooks - это иммитация хуков и фильтров аналогично тем, что используются в Wordpress
|
7 |
*
|
8 |
* Copyright 2018, Webcraftic, http://webcraftic.com
|
9 |
*
|
13 |
(function($) {
|
14 |
'use strict';
|
15 |
|
16 |
+
if( !$.wbcr_factory_clearfy_237 ) {
|
17 |
+
$.wbcr_factory_clearfy_237 = {};
|
18 |
}
|
19 |
|
20 |
//todo: Переопредление для совместимости со старыми версиями плагинов.
|
21 |
+
$.wbcr_factory_clearfy_237.filters = $.wbcr_factory_clearfy_237.filters || $.wfactory_446.filters;
|
22 |
//todo: Переопредление для совместимости со старыми версиями плагинов.
|
23 |
+
$.wbcr_factory_clearfy_237.hooks = $.wbcr_factory_clearfy_237.hooks || $.wfactory_446.hooks;
|
24 |
|
25 |
+
$.wbcr_factory_clearfy_237.app = $.wbcr_factory_clearfy_237.app || {
|
26 |
/**
|
27 |
* Создает и показывает уведомление внутри интерфейса Clearfy
|
28 |
*
|
68 |
/**
|
69 |
* Хук выполняет проивольную функцию, после того как уведомление отображено
|
70 |
* Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
|
71 |
+
* Пример регистрации хука $.wfactory_446.hooks.add('wbcr/factory_clearfy_237/updated',
|
72 |
* function(noticeId) {});
|
73 |
* @param {string} noticeId - id уведомления
|
74 |
*/
|
75 |
+
$.wfactory_446.hooks.run('wbcr/factory_clearfy_237/showed_notice', [noticeId]);
|
76 |
+
$.wfactory_446.hooks.run('wbcr/clearfy/showed_notice', [noticeId]);
|
77 |
});
|
78 |
|
79 |
return noticeId;
|
98 |
/**
|
99 |
* Хук выполняет проивольную функцию, после того как уведомление скрыто
|
100 |
* Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
|
101 |
+
* Пример регистрации хука $.wfactory_446.hooks.add('wbcr/factory_clearfy_237/updated',
|
102 |
* function(noticeId)
|
103 |
* {});
|
104 |
* @param {string} noticeId - id уведомления
|
105 |
*/
|
106 |
+
$.wfactory_446.hooks.run('wbcr/factory_clearfy_237/hidded_notice', [noticeId]);
|
107 |
+
$.wfactory_446.hooks.run('wbcr/clearfy/hidded_notice', [noticeId]);
|
108 |
});
|
109 |
},
|
110 |
|
121 |
|
122 |
};
|
123 |
|
124 |
+
$.wfactory_446.hooks.add('core/components/pre_activate', function(button) {
|
125 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
126 |
if( !$('#WBCR').length ) {
|
127 |
return false;
|
137 |
}
|
138 |
});
|
139 |
|
140 |
+
$.wfactory_446.hooks.add('core/components/deactivated', function(button, data, response) {
|
141 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
142 |
if( !$('#WBCR').length ) {
|
143 |
return false;
|
156 |
}
|
157 |
});
|
158 |
|
159 |
+
$.wfactory_446.hooks.add('core/components/deleted', function(button) {
|
160 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
161 |
if( !$('#WBCR').length ) {
|
162 |
return false;
|
175 |
}
|
176 |
});
|
177 |
|
178 |
+
$.wfactory_446.hooks.add('core/components/activation_error', function(plugin, button, response) {
|
179 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
180 |
+
if( !($('#WBCR').length && $.wbcr_factory_clearfy_237) ) {
|
181 |
return false;
|
182 |
}
|
183 |
|
184 |
button.closest('.plugin-card').addClass('plugin-status-deactive');
|
185 |
|
186 |
if( response.data && response.data.error_message ) {
|
187 |
+
$.wbcr_factory_clearfy_237.app.showNotice(response.data.error_message, 'danger');
|
188 |
}
|
189 |
});
|
190 |
|
191 |
+
$.wfactory_446.hooks.add('core/components/update_error', function(button, data, response) {
|
192 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
193 |
+
if( !($('#WBCR').length && $.wbcr_factory_clearfy_237) ) {
|
194 |
return false;
|
195 |
}
|
196 |
|
197 |
if( response.data && response.data.error_message ) {
|
198 |
+
$.wbcr_factory_clearfy_237.app.showNotice(response.data.error_message, 'danger');
|
199 |
}
|
200 |
|
201 |
});
|
202 |
|
203 |
+
$.wfactory_446.hooks.add('core/components/activated', function(button, data, response) {
|
204 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
205 |
if( !$('#WBCR').length ) {
|
206 |
return false;
|
209 |
button.closest('.plugin-card').removeClass('plugin-status-deactive');
|
210 |
});
|
211 |
|
212 |
+
$.wfactory_446.hooks.add('core/components/ajax_error', function(xhr, ajaxOptions, thrownError) {
|
213 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
214 |
+
if( !($('#WBCR').length && $.wbcr_factory_clearfy_237) ) {
|
215 |
return false;
|
216 |
}
|
217 |
|
218 |
+
$.wbcr_factory_clearfy_237.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
|
219 |
});
|
220 |
|
221 |
})(jQuery);
|
libs/factory/clearfy/assets/js/clearfy-license-manager.js
CHANGED
@@ -20,7 +20,7 @@ jQuery(function($) {
|
|
20 |
licenseAction = $(this).data('action');
|
21 |
|
22 |
for( i = 0; i < allNotices.length; i++ ) {
|
23 |
-
$.
|
24 |
}
|
25 |
|
26 |
$('.wcl-control-btn').hide();
|
@@ -53,7 +53,7 @@ jQuery(function($) {
|
|
53 |
|
54 |
if( response.data ) {
|
55 |
console.log(response.data.error_message);
|
56 |
-
noticeId = $.
|
57 |
allNotices.push(noticeId);
|
58 |
} else {
|
59 |
console.log(response);
|
@@ -63,7 +63,7 @@ jQuery(function($) {
|
|
63 |
}
|
64 |
|
65 |
if( response.data && response.data.message ) {
|
66 |
-
noticeId = $.
|
67 |
allNotices.push(noticeId);
|
68 |
|
69 |
// todo: доработать генерацию формы, вместо перезагрузки страницы
|
@@ -80,7 +80,7 @@ jQuery(function($) {
|
|
80 |
console.log(xhr.responseText);
|
81 |
console.log(thrownError);
|
82 |
|
83 |
-
var noticeId = $.
|
84 |
|
85 |
allNotices.push(noticeId);
|
86 |
}
|
20 |
licenseAction = $(this).data('action');
|
21 |
|
22 |
for( i = 0; i < allNotices.length; i++ ) {
|
23 |
+
$.wbcr_factory_clearfy_237.app.hideNotice(allNotices[i]);
|
24 |
}
|
25 |
|
26 |
$('.wcl-control-btn').hide();
|
53 |
|
54 |
if( response.data ) {
|
55 |
console.log(response.data.error_message);
|
56 |
+
noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
|
57 |
allNotices.push(noticeId);
|
58 |
} else {
|
59 |
console.log(response);
|
63 |
}
|
64 |
|
65 |
if( response.data && response.data.message ) {
|
66 |
+
noticeId = $.wbcr_factory_clearfy_237.app.showNotice(response.data.message, 'success');
|
67 |
allNotices.push(noticeId);
|
68 |
|
69 |
// todo: доработать генерацию формы, вместо перезагрузки страницы
|
80 |
console.log(xhr.responseText);
|
81 |
console.log(thrownError);
|
82 |
|
83 |
+
var noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
|
84 |
|
85 |
allNotices.push(noticeId);
|
86 |
}
|
libs/factory/clearfy/assets/js/clearfy-search-options.js
CHANGED
@@ -28,10 +28,10 @@
|
|
28 |
throw new Error('Global var {wfactory_clearfy_search_options} is not declared.');
|
29 |
}
|
30 |
|
31 |
-
$('#wbcr-factory-clearfy-
|
32 |
lookup: wfactory_clearfy_search_options,
|
33 |
onSelect: function(suggestion) {
|
34 |
-
$('#wbcr-factory-clearfy-
|
35 |
window.location.href = suggestion.data.page_url;
|
36 |
}
|
37 |
});
|
28 |
throw new Error('Global var {wfactory_clearfy_search_options} is not declared.');
|
29 |
}
|
30 |
|
31 |
+
$('#wbcr-factory-clearfy-237__autocomplete').wfactory_clearfy_autocomplete({
|
32 |
lookup: wfactory_clearfy_search_options,
|
33 |
onSelect: function(suggestion) {
|
34 |
+
$('#wbcr-factory-clearfy-237__autocomplete').prop("disabled", true);
|
35 |
window.location.href = suggestion.data.page_url;
|
36 |
}
|
37 |
});
|
libs/factory/clearfy/assets/js/clearfy-widgets.js
CHANGED
@@ -25,9 +25,9 @@ jQuery(function($) {
|
|
25 |
if( !response || !response.success ) {
|
26 |
if( response.data ) {
|
27 |
console.log(response.data.error_message);
|
28 |
-
noticeId = $.
|
29 |
setTimeout(function() {
|
30 |
-
$.
|
31 |
}, 5000);
|
32 |
} else {
|
33 |
console.log(response);
|
@@ -52,9 +52,9 @@ jQuery(function($) {
|
|
52 |
console.log(xhr.responseText);
|
53 |
console.log(thrownError);
|
54 |
|
55 |
-
var noticeId = $.
|
56 |
setTimeout(function() {
|
57 |
-
$.
|
58 |
}, 5000);
|
59 |
}
|
60 |
});
|
25 |
if( !response || !response.success ) {
|
26 |
if( response.data ) {
|
27 |
console.log(response.data.error_message);
|
28 |
+
noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
|
29 |
setTimeout(function() {
|
30 |
+
$.wbcr_factory_clearfy_237.app.hideNotice(noticeId);
|
31 |
}, 5000);
|
32 |
} else {
|
33 |
console.log(response);
|
52 |
console.log(xhr.responseText);
|
53 |
console.log(thrownError);
|
54 |
|
55 |
+
var noticeId = $.wbcr_factory_clearfy_237.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
|
56 |
setTimeout(function() {
|
57 |
+
$.wbcr_factory_clearfy_237.app.hideNotice(noticeId);
|
58 |
}, 5000);
|
59 |
}
|
60 |
});
|
libs/factory/clearfy/assets/js/libs/jquery.autocomplete.min.js
CHANGED
@@ -5,4 +5,4 @@
|
|
5 |
* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.
|
6 |
* For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete
|
7 |
*/
|
8 |
-
!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports&&"function"==typeof require?require("jquery"):jQuery)}(function(a){"use strict";function b(c,d){var e=this;e.element=c,e.el=a(c),e.suggestions=[],e.badQueries=[],e.selectedIndex=-1,e.currentValue=e.element.value,e.timeoutId=null,e.cachedResponse={},e.onChangeTimeout=null,e.onChange=null,e.isLocal=!1,e.suggestionsContainer=null,e.noSuggestionsContainer=null,e.options=a.extend(!0,{},b.defaults,d),e.classes={selected:"wbcr-factory-clearfy-236__autocomplete-selected",suggestion:"wbcr-factory-clearfy-236__autocomplete-suggestion"},e.hint=null,e.hintValue="",e.selection=null,e.initialize(),e.setOptions(d)}function c(a,b,c){return a.value.toLowerCase().indexOf(c)!==-1}function d(b){return"string"==typeof b?a.parseJSON(b):b}function e(a,b){if(!b)return a.value;var c="("+g.escapeRegExChars(b)+")";return a.value.replace(new RegExp(c,"gi"),"<strong>$1</strong>").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/<(\/?strong)>/g,"<$1>")}function f(a,b){return'<div class="wbcr-factory-clearfy-236__autocomplete-group">'+b+"</div>"}var g=function(){return{escapeRegExChars:function(a){return a.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")},createNode:function(a){var b=document.createElement("div");return b.className=a,b.style.position="absolute",b.style.display="none",b}}}(),h={ESC:27,TAB:9,RETURN:13,LEFT:37,UP:38,RIGHT:39,DOWN:40},i=a.noop;b.utils=g,a.Autocomplete=b,b.defaults={ajaxSettings:{},autoSelectFirst:!1,appendTo:"body",serviceUrl:null,lookup:null,onSelect:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:e,formatGroup:f,delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:i,onSearchComplete:i,onSearchError:i,preserveInput:!1,containerClass:"wbcr-factory-clearfy-236__autocomplete-suggestions",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:c,paramName:"query",transformResult:d,showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1},b.prototype={initialize:function(){var c,d=this,e="."+d.classes.suggestion,f=d.classes.selected,g=d.options;d.element.setAttribute("autocomplete","off"),d.noSuggestionsContainer=a('<div class="autocomplete-no-suggestion"></div>').html(this.options.noSuggestionNotice).get(0),d.suggestionsContainer=b.utils.createNode(g.containerClass),c=a(d.suggestionsContainer),c.appendTo(g.appendTo||"body"),"auto"!==g.width&&c.css("width",g.width),c.on("mouseover.autocomplete",e,function(){d.activate(a(this).data("index"))}),c.on("mouseout.autocomplete",function(){d.selectedIndex=-1,c.children("."+f).removeClass(f)}),c.on("click.autocomplete",e,function(){d.select(a(this).data("index"))}),c.on("click.autocomplete",function(){clearTimeout(d.blurTimeoutId)}),d.fixPositionCapture=function(){d.visible&&d.fixPosition()},a(window).on("resize.autocomplete",d.fixPositionCapture),d.el.on("keydown.autocomplete",function(a){d.onKeyPress(a)}),d.el.on("keyup.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("blur.autocomplete",function(){d.onBlur()}),d.el.on("focus.autocomplete",function(){d.onFocus()}),d.el.on("change.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("input.autocomplete",function(a){d.onKeyUp(a)})},onFocus:function(){var a=this;a.disabled||(a.fixPosition(),a.el.val().length>=a.options.minChars&&a.onValueChange())},onBlur:function(){var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);b.blurTimeoutId=setTimeout(function(){b.hide(),b.selection&&b.currentValue!==e&&(c.onInvalidateSelection||a.noop).call(b.element)},200)},abortAjax:function(){var a=this;a.currentRequest&&(a.currentRequest.abort(),a.currentRequest=null)},setOptions:function(b){var c=this,d=a.extend({},c.options,b);c.isLocal=Array.isArray(d.lookup),c.isLocal&&(d.lookup=c.verifySuggestionsFormat(d.lookup)),d.orientation=c.validateOrientation(d.orientation,"bottom"),a(c.suggestionsContainer).css({"max-height":d.maxHeight+"px",width:d.width+"px","z-index":d.zIndex}),this.options=d},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){var a=this;a.disabled=!0,clearTimeout(a.onChangeTimeout),a.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var b=this,c=a(b.suggestionsContainer),d=c.parent().get(0);if(d===document.body||b.options.forceFixPosition){var e=b.options.orientation,f=c.outerHeight(),g=b.el.outerHeight(),h=b.el.offset(),i={top:h.top,left:h.left};if("auto"===e){var j=a(window).height(),k=a(window).scrollTop(),l=-k+h.top-f,m=k+j-(h.top+g+f);e=Math.max(l,m)===l?"top":"bottom"}if("top"===e?i.top+=-f:i.top+=g,d!==document.body){var n,o=c.css("opacity");b.visible||c.css("opacity",0).show(),n=c.offsetParent().offset(),i.top-=n.top,i.top+=d.scrollTop,i.left-=n.left,b.visible||c.css("opacity",o).hide()}"auto"===b.options.width&&(i.width=b.el.outerWidth()+"px"),c.css(i)}},isCursorAtEnd:function(){var a,b=this,c=b.el.val().length,d=b.element.selectionStart;return"number"==typeof d?d===c:!document.selection||(a=document.selection.createRange(),a.moveStart("character",-c),c===a.text.length)},onKeyPress:function(a){var b=this;if(!b.disabled&&!b.visible&&a.which===h.DOWN&&b.currentValue)return void b.suggest();if(!b.disabled&&b.visible){switch(a.which){case h.ESC:b.el.val(b.currentValue),b.hide();break;case h.RIGHT:if(b.hint&&b.options.onHint&&b.isCursorAtEnd()){b.selectHint();break}return;case h.TAB:if(b.hint&&b.options.onHint)return void b.selectHint();if(b.selectedIndex===-1)return void b.hide();if(b.select(b.selectedIndex),b.options.tabDisabled===!1)return;break;case h.RETURN:if(b.selectedIndex===-1)return void b.hide();b.select(b.selectedIndex);break;case h.UP:b.moveUp();break;case h.DOWN:b.moveDown();break;default:return}a.stopImmediatePropagation(),a.preventDefault()}},onKeyUp:function(a){var b=this;if(!b.disabled){switch(a.which){case h.UP:case h.DOWN:return}clearTimeout(b.onChangeTimeout),b.currentValue!==b.el.val()&&(b.findBestHint(),b.options.deferRequestBy>0?b.onChangeTimeout=setTimeout(function(){b.onValueChange()},b.options.deferRequestBy):b.onValueChange())}},onValueChange:function(){if(this.ignoreValueChange)return void(this.ignoreValueChange=!1);var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);return b.selection&&b.currentValue!==e&&(b.selection=null,(c.onInvalidateSelection||a.noop).call(b.element)),clearTimeout(b.onChangeTimeout),b.currentValue=d,b.selectedIndex=-1,c.triggerSelectOnValidInput&&b.isExactMatch(e)?void b.select(0):void(e.length<c.minChars?b.hide():b.getSuggestions(e))},isExactMatch:function(a){var b=this.suggestions;return 1===b.length&&b[0].value.toLowerCase()===a.toLowerCase()},getQuery:function(b){var c,d=this.options.delimiter;return d?(c=b.split(d),a.trim(c[c.length-1])):b},getSuggestionsLocal:function(b){var c,d=this,e=d.options,f=b.toLowerCase(),g=e.lookupFilter,h=parseInt(e.lookupLimit,10);return c={suggestions:a.grep(e.lookup,function(a){return g(a,b,f)})},h&&c.suggestions.length>h&&(c.suggestions=c.suggestions.slice(0,h)),c},getSuggestions:function(b){var c,d,e,f,g=this,h=g.options,i=h.serviceUrl;if(h.params[h.paramName]=b,h.onSearchStart.call(g.element,h.params)!==!1){if(d=h.ignoreParams?null:h.params,a.isFunction(h.lookup))return void h.lookup(b,function(a){g.suggestions=a.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,a.suggestions)});g.isLocal?c=g.getSuggestionsLocal(b):(a.isFunction(i)&&(i=i.call(g.element,b)),e=i+"?"+a.param(d||{}),c=g.cachedResponse[e]),c&&Array.isArray(c.suggestions)?(g.suggestions=c.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,c.suggestions)):g.isBadQuery(b)?h.onSearchComplete.call(g.element,b,[]):(g.abortAjax(),f={url:i,data:d,type:h.type,dataType:h.dataType},a.extend(f,h.ajaxSettings),g.currentRequest=a.ajax(f).done(function(a){var c;g.currentRequest=null,c=h.transformResult(a,b),g.processResponse(c,b,e),h.onSearchComplete.call(g.element,b,c.suggestions)}).fail(function(a,c,d){h.onSearchError.call(g.element,b,a,c,d)}))}},isBadQuery:function(a){if(!this.options.preventBadQueries)return!1;for(var b=this.badQueries,c=b.length;c--;)if(0===a.indexOf(b[c]))return!0;return!1},hide:function(){var b=this,c=a(b.suggestionsContainer);a.isFunction(b.options.onHide)&&b.visible&&b.options.onHide.call(b.element,c),b.visible=!1,b.selectedIndex=-1,clearTimeout(b.onChangeTimeout),a(b.suggestionsContainer).hide(),b.signalHint(null)},suggest:function(){if(!this.suggestions.length)return void(this.options.showNoSuggestionNotice?this.noSuggestions():this.hide());var b,c=this,d=c.options,e=d.groupBy,f=d.formatResult,g=c.getQuery(c.currentValue),h=c.classes.suggestion,i=c.classes.selected,j=a(c.suggestionsContainer),k=a(c.noSuggestionsContainer),l=d.beforeRender,m="",n=function(a,c){var f=a.data[e];return b===f?"":(b=f,d.formatGroup(a,b))};return d.triggerSelectOnValidInput&&c.isExactMatch(g)?void c.select(0):(a.each(c.suggestions,function(a,b){e&&(m+=n(b,g,a)),m+='<div class="'+h+'" data-index="'+a+'">'+f(b,g,a)+"</div>"}),this.adjustContainerWidth(),k.detach(),j.html(m),a.isFunction(l)&&l.call(c.element,j,c.suggestions),c.fixPosition(),j.show(),d.autoSelectFirst&&(c.selectedIndex=0,j.scrollTop(0),j.children("."+h).first().addClass(i)),c.visible=!0,void c.findBestHint())},noSuggestions:function(){var b=this,c=b.options.beforeRender,d=a(b.suggestionsContainer),e=a(b.noSuggestionsContainer);this.adjustContainerWidth(),e.detach(),d.empty(),d.append(e),a.isFunction(c)&&c.call(b.element,d,b.suggestions),b.fixPosition(),d.show(),b.visible=!0},adjustContainerWidth:function(){var b,c=this,d=c.options,e=a(c.suggestionsContainer);"auto"===d.width?(b=c.el.outerWidth(),e.css("width",b>0?b:300)):"flex"===d.width&&e.css("width","")},findBestHint:function(){var b=this,c=b.el.val().toLowerCase(),d=null;c&&(a.each(b.suggestions,function(a,b){var e=0===b.value.toLowerCase().indexOf(c);return e&&(d=b),!e}),b.signalHint(d))},signalHint:function(b){var c="",d=this;b&&(c=d.currentValue+b.value.substr(d.currentValue.length)),d.hintValue!==c&&(d.hintValue=c,d.hint=b,(this.options.onHint||a.noop)(c))},verifySuggestionsFormat:function(b){return b.length&&"string"==typeof b[0]?a.map(b,function(a){return{value:a,data:null}}):b},validateOrientation:function(b,c){return b=a.trim(b||"").toLowerCase(),a.inArray(b,["auto","bottom","top"])===-1&&(b=c),b},processResponse:function(a,b,c){var d=this,e=d.options;a.suggestions=d.verifySuggestionsFormat(a.suggestions),e.noCache||(d.cachedResponse[c]=a,e.preventBadQueries&&!a.suggestions.length&&d.badQueries.push(b)),b===d.getQuery(d.currentValue)&&(d.suggestions=a.suggestions,d.suggest())},activate:function(b){var c,d=this,e=d.classes.selected,f=a(d.suggestionsContainer),g=f.find("."+d.classes.suggestion);return f.find("."+e).removeClass(e),d.selectedIndex=b,d.selectedIndex!==-1&&g.length>d.selectedIndex?(c=g.get(d.selectedIndex),a(c).addClass(e),c):null},selectHint:function(){var b=this,c=a.inArray(b.hint,b.suggestions);b.select(c)},select:function(a){var b=this;b.hide(),b.onSelect(a)},moveUp:function(){var b=this;if(b.selectedIndex!==-1)return 0===b.selectedIndex?(a(b.suggestionsContainer).children("."+b.classes.suggestion).first().removeClass(b.classes.selected),b.selectedIndex=-1,b.ignoreValueChange=!1,b.el.val(b.currentValue),void b.findBestHint()):void b.adjustScroll(b.selectedIndex-1)},moveDown:function(){var a=this;a.selectedIndex!==a.suggestions.length-1&&a.adjustScroll(a.selectedIndex+1)},adjustScroll:function(b){var c=this,d=c.activate(b);if(d){var e,f,g,h=a(d).outerHeight();e=d.offsetTop,f=a(c.suggestionsContainer).scrollTop(),g=f+c.options.maxHeight-h,e<f?a(c.suggestionsContainer).scrollTop(e):e>g&&a(c.suggestionsContainer).scrollTop(e-c.options.maxHeight+h),c.options.preserveInput||(c.ignoreValueChange=!0,c.el.val(c.getValue(c.suggestions[b].value))),c.signalHint(null)}},onSelect:function(b){var c=this,d=c.options.onSelect,e=c.suggestions[b];c.currentValue=c.getValue(e.value),c.currentValue===c.el.val()||c.options.preserveInput||c.el.val(c.currentValue),c.signalHint(null),c.suggestions=[],c.selection=e,a.isFunction(d)&&d.call(c.element,e)},getValue:function(a){var b,c,d=this,e=d.options.delimiter;return e?(b=d.currentValue,c=b.split(e),1===c.length?a:b.substr(0,b.length-c[c.length-1].length)+a):a},dispose:function(){var b=this;b.el.off(".autocomplete").removeData("autocomplete"),a(window).off("resize.autocomplete",b.fixPositionCapture),a(b.suggestionsContainer).remove()}},a.fn.devbridgeAutocomplete=function(c,d){var e="autocomplete";return arguments.length?this.each(function(){var f=a(this),g=f.data(e);"string"==typeof c?g&&"function"==typeof g[c]&&g[c](d):(g&&g.dispose&&g.dispose(),g=new b(this,c),f.data(e,g))}):this.first().data(e)},a.fn.wfactory_clearfy_autocomplete||(a.fn.wfactory_clearfy_autocomplete=a.fn.devbridgeAutocomplete)});
|
5 |
* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.
|
6 |
* For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete
|
7 |
*/
|
8 |
+
!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports&&"function"==typeof require?require("jquery"):jQuery)}(function(a){"use strict";function b(c,d){var e=this;e.element=c,e.el=a(c),e.suggestions=[],e.badQueries=[],e.selectedIndex=-1,e.currentValue=e.element.value,e.timeoutId=null,e.cachedResponse={},e.onChangeTimeout=null,e.onChange=null,e.isLocal=!1,e.suggestionsContainer=null,e.noSuggestionsContainer=null,e.options=a.extend(!0,{},b.defaults,d),e.classes={selected:"wbcr-factory-clearfy-237__autocomplete-selected",suggestion:"wbcr-factory-clearfy-237__autocomplete-suggestion"},e.hint=null,e.hintValue="",e.selection=null,e.initialize(),e.setOptions(d)}function c(a,b,c){return a.value.toLowerCase().indexOf(c)!==-1}function d(b){return"string"==typeof b?a.parseJSON(b):b}function e(a,b){if(!b)return a.value;var c="("+g.escapeRegExChars(b)+")";return a.value.replace(new RegExp(c,"gi"),"<strong>$1</strong>").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/<(\/?strong)>/g,"<$1>")}function f(a,b){return'<div class="wbcr-factory-clearfy-237__autocomplete-group">'+b+"</div>"}var g=function(){return{escapeRegExChars:function(a){return a.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")},createNode:function(a){var b=document.createElement("div");return b.className=a,b.style.position="absolute",b.style.display="none",b}}}(),h={ESC:27,TAB:9,RETURN:13,LEFT:37,UP:38,RIGHT:39,DOWN:40},i=a.noop;b.utils=g,a.Autocomplete=b,b.defaults={ajaxSettings:{},autoSelectFirst:!1,appendTo:"body",serviceUrl:null,lookup:null,onSelect:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:e,formatGroup:f,delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:i,onSearchComplete:i,onSearchError:i,preserveInput:!1,containerClass:"wbcr-factory-clearfy-237__autocomplete-suggestions",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:c,paramName:"query",transformResult:d,showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1},b.prototype={initialize:function(){var c,d=this,e="."+d.classes.suggestion,f=d.classes.selected,g=d.options;d.element.setAttribute("autocomplete","off"),d.noSuggestionsContainer=a('<div class="autocomplete-no-suggestion"></div>').html(this.options.noSuggestionNotice).get(0),d.suggestionsContainer=b.utils.createNode(g.containerClass),c=a(d.suggestionsContainer),c.appendTo(g.appendTo||"body"),"auto"!==g.width&&c.css("width",g.width),c.on("mouseover.autocomplete",e,function(){d.activate(a(this).data("index"))}),c.on("mouseout.autocomplete",function(){d.selectedIndex=-1,c.children("."+f).removeClass(f)}),c.on("click.autocomplete",e,function(){d.select(a(this).data("index"))}),c.on("click.autocomplete",function(){clearTimeout(d.blurTimeoutId)}),d.fixPositionCapture=function(){d.visible&&d.fixPosition()},a(window).on("resize.autocomplete",d.fixPositionCapture),d.el.on("keydown.autocomplete",function(a){d.onKeyPress(a)}),d.el.on("keyup.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("blur.autocomplete",function(){d.onBlur()}),d.el.on("focus.autocomplete",function(){d.onFocus()}),d.el.on("change.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("input.autocomplete",function(a){d.onKeyUp(a)})},onFocus:function(){var a=this;a.disabled||(a.fixPosition(),a.el.val().length>=a.options.minChars&&a.onValueChange())},onBlur:function(){var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);b.blurTimeoutId=setTimeout(function(){b.hide(),b.selection&&b.currentValue!==e&&(c.onInvalidateSelection||a.noop).call(b.element)},200)},abortAjax:function(){var a=this;a.currentRequest&&(a.currentRequest.abort(),a.currentRequest=null)},setOptions:function(b){var c=this,d=a.extend({},c.options,b);c.isLocal=Array.isArray(d.lookup),c.isLocal&&(d.lookup=c.verifySuggestionsFormat(d.lookup)),d.orientation=c.validateOrientation(d.orientation,"bottom"),a(c.suggestionsContainer).css({"max-height":d.maxHeight+"px",width:d.width+"px","z-index":d.zIndex}),this.options=d},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){var a=this;a.disabled=!0,clearTimeout(a.onChangeTimeout),a.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var b=this,c=a(b.suggestionsContainer),d=c.parent().get(0);if(d===document.body||b.options.forceFixPosition){var e=b.options.orientation,f=c.outerHeight(),g=b.el.outerHeight(),h=b.el.offset(),i={top:h.top,left:h.left};if("auto"===e){var j=a(window).height(),k=a(window).scrollTop(),l=-k+h.top-f,m=k+j-(h.top+g+f);e=Math.max(l,m)===l?"top":"bottom"}if("top"===e?i.top+=-f:i.top+=g,d!==document.body){var n,o=c.css("opacity");b.visible||c.css("opacity",0).show(),n=c.offsetParent().offset(),i.top-=n.top,i.top+=d.scrollTop,i.left-=n.left,b.visible||c.css("opacity",o).hide()}"auto"===b.options.width&&(i.width=b.el.outerWidth()+"px"),c.css(i)}},isCursorAtEnd:function(){var a,b=this,c=b.el.val().length,d=b.element.selectionStart;return"number"==typeof d?d===c:!document.selection||(a=document.selection.createRange(),a.moveStart("character",-c),c===a.text.length)},onKeyPress:function(a){var b=this;if(!b.disabled&&!b.visible&&a.which===h.DOWN&&b.currentValue)return void b.suggest();if(!b.disabled&&b.visible){switch(a.which){case h.ESC:b.el.val(b.currentValue),b.hide();break;case h.RIGHT:if(b.hint&&b.options.onHint&&b.isCursorAtEnd()){b.selectHint();break}return;case h.TAB:if(b.hint&&b.options.onHint)return void b.selectHint();if(b.selectedIndex===-1)return void b.hide();if(b.select(b.selectedIndex),b.options.tabDisabled===!1)return;break;case h.RETURN:if(b.selectedIndex===-1)return void b.hide();b.select(b.selectedIndex);break;case h.UP:b.moveUp();break;case h.DOWN:b.moveDown();break;default:return}a.stopImmediatePropagation(),a.preventDefault()}},onKeyUp:function(a){var b=this;if(!b.disabled){switch(a.which){case h.UP:case h.DOWN:return}clearTimeout(b.onChangeTimeout),b.currentValue!==b.el.val()&&(b.findBestHint(),b.options.deferRequestBy>0?b.onChangeTimeout=setTimeout(function(){b.onValueChange()},b.options.deferRequestBy):b.onValueChange())}},onValueChange:function(){if(this.ignoreValueChange)return void(this.ignoreValueChange=!1);var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);return b.selection&&b.currentValue!==e&&(b.selection=null,(c.onInvalidateSelection||a.noop).call(b.element)),clearTimeout(b.onChangeTimeout),b.currentValue=d,b.selectedIndex=-1,c.triggerSelectOnValidInput&&b.isExactMatch(e)?void b.select(0):void(e.length<c.minChars?b.hide():b.getSuggestions(e))},isExactMatch:function(a){var b=this.suggestions;return 1===b.length&&b[0].value.toLowerCase()===a.toLowerCase()},getQuery:function(b){var c,d=this.options.delimiter;return d?(c=b.split(d),a.trim(c[c.length-1])):b},getSuggestionsLocal:function(b){var c,d=this,e=d.options,f=b.toLowerCase(),g=e.lookupFilter,h=parseInt(e.lookupLimit,10);return c={suggestions:a.grep(e.lookup,function(a){return g(a,b,f)})},h&&c.suggestions.length>h&&(c.suggestions=c.suggestions.slice(0,h)),c},getSuggestions:function(b){var c,d,e,f,g=this,h=g.options,i=h.serviceUrl;if(h.params[h.paramName]=b,h.onSearchStart.call(g.element,h.params)!==!1){if(d=h.ignoreParams?null:h.params,a.isFunction(h.lookup))return void h.lookup(b,function(a){g.suggestions=a.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,a.suggestions)});g.isLocal?c=g.getSuggestionsLocal(b):(a.isFunction(i)&&(i=i.call(g.element,b)),e=i+"?"+a.param(d||{}),c=g.cachedResponse[e]),c&&Array.isArray(c.suggestions)?(g.suggestions=c.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,c.suggestions)):g.isBadQuery(b)?h.onSearchComplete.call(g.element,b,[]):(g.abortAjax(),f={url:i,data:d,type:h.type,dataType:h.dataType},a.extend(f,h.ajaxSettings),g.currentRequest=a.ajax(f).done(function(a){var c;g.currentRequest=null,c=h.transformResult(a,b),g.processResponse(c,b,e),h.onSearchComplete.call(g.element,b,c.suggestions)}).fail(function(a,c,d){h.onSearchError.call(g.element,b,a,c,d)}))}},isBadQuery:function(a){if(!this.options.preventBadQueries)return!1;for(var b=this.badQueries,c=b.length;c--;)if(0===a.indexOf(b[c]))return!0;return!1},hide:function(){var b=this,c=a(b.suggestionsContainer);a.isFunction(b.options.onHide)&&b.visible&&b.options.onHide.call(b.element,c),b.visible=!1,b.selectedIndex=-1,clearTimeout(b.onChangeTimeout),a(b.suggestionsContainer).hide(),b.signalHint(null)},suggest:function(){if(!this.suggestions.length)return void(this.options.showNoSuggestionNotice?this.noSuggestions():this.hide());var b,c=this,d=c.options,e=d.groupBy,f=d.formatResult,g=c.getQuery(c.currentValue),h=c.classes.suggestion,i=c.classes.selected,j=a(c.suggestionsContainer),k=a(c.noSuggestionsContainer),l=d.beforeRender,m="",n=function(a,c){var f=a.data[e];return b===f?"":(b=f,d.formatGroup(a,b))};return d.triggerSelectOnValidInput&&c.isExactMatch(g)?void c.select(0):(a.each(c.suggestions,function(a,b){e&&(m+=n(b,g,a)),m+='<div class="'+h+'" data-index="'+a+'">'+f(b,g,a)+"</div>"}),this.adjustContainerWidth(),k.detach(),j.html(m),a.isFunction(l)&&l.call(c.element,j,c.suggestions),c.fixPosition(),j.show(),d.autoSelectFirst&&(c.selectedIndex=0,j.scrollTop(0),j.children("."+h).first().addClass(i)),c.visible=!0,void c.findBestHint())},noSuggestions:function(){var b=this,c=b.options.beforeRender,d=a(b.suggestionsContainer),e=a(b.noSuggestionsContainer);this.adjustContainerWidth(),e.detach(),d.empty(),d.append(e),a.isFunction(c)&&c.call(b.element,d,b.suggestions),b.fixPosition(),d.show(),b.visible=!0},adjustContainerWidth:function(){var b,c=this,d=c.options,e=a(c.suggestionsContainer);"auto"===d.width?(b=c.el.outerWidth(),e.css("width",b>0?b:300)):"flex"===d.width&&e.css("width","")},findBestHint:function(){var b=this,c=b.el.val().toLowerCase(),d=null;c&&(a.each(b.suggestions,function(a,b){var e=0===b.value.toLowerCase().indexOf(c);return e&&(d=b),!e}),b.signalHint(d))},signalHint:function(b){var c="",d=this;b&&(c=d.currentValue+b.value.substr(d.currentValue.length)),d.hintValue!==c&&(d.hintValue=c,d.hint=b,(this.options.onHint||a.noop)(c))},verifySuggestionsFormat:function(b){return b.length&&"string"==typeof b[0]?a.map(b,function(a){return{value:a,data:null}}):b},validateOrientation:function(b,c){return b=a.trim(b||"").toLowerCase(),a.inArray(b,["auto","bottom","top"])===-1&&(b=c),b},processResponse:function(a,b,c){var d=this,e=d.options;a.suggestions=d.verifySuggestionsFormat(a.suggestions),e.noCache||(d.cachedResponse[c]=a,e.preventBadQueries&&!a.suggestions.length&&d.badQueries.push(b)),b===d.getQuery(d.currentValue)&&(d.suggestions=a.suggestions,d.suggest())},activate:function(b){var c,d=this,e=d.classes.selected,f=a(d.suggestionsContainer),g=f.find("."+d.classes.suggestion);return f.find("."+e).removeClass(e),d.selectedIndex=b,d.selectedIndex!==-1&&g.length>d.selectedIndex?(c=g.get(d.selectedIndex),a(c).addClass(e),c):null},selectHint:function(){var b=this,c=a.inArray(b.hint,b.suggestions);b.select(c)},select:function(a){var b=this;b.hide(),b.onSelect(a)},moveUp:function(){var b=this;if(b.selectedIndex!==-1)return 0===b.selectedIndex?(a(b.suggestionsContainer).children("."+b.classes.suggestion).first().removeClass(b.classes.selected),b.selectedIndex=-1,b.ignoreValueChange=!1,b.el.val(b.currentValue),void b.findBestHint()):void b.adjustScroll(b.selectedIndex-1)},moveDown:function(){var a=this;a.selectedIndex!==a.suggestions.length-1&&a.adjustScroll(a.selectedIndex+1)},adjustScroll:function(b){var c=this,d=c.activate(b);if(d){var e,f,g,h=a(d).outerHeight();e=d.offsetTop,f=a(c.suggestionsContainer).scrollTop(),g=f+c.options.maxHeight-h,e<f?a(c.suggestionsContainer).scrollTop(e):e>g&&a(c.suggestionsContainer).scrollTop(e-c.options.maxHeight+h),c.options.preserveInput||(c.ignoreValueChange=!0,c.el.val(c.getValue(c.suggestions[b].value))),c.signalHint(null)}},onSelect:function(b){var c=this,d=c.options.onSelect,e=c.suggestions[b];c.currentValue=c.getValue(e.value),c.currentValue===c.el.val()||c.options.preserveInput||c.el.val(c.currentValue),c.signalHint(null),c.suggestions=[],c.selection=e,a.isFunction(d)&&d.call(c.element,e)},getValue:function(a){var b,c,d=this,e=d.options.delimiter;return e?(b=d.currentValue,c=b.split(e),1===c.length?a:b.substr(0,b.length-c[c.length-1].length)+a):a},dispose:function(){var b=this;b.el.off(".autocomplete").removeData("autocomplete"),a(window).off("resize.autocomplete",b.fixPositionCapture),a(b.suggestionsContainer).remove()}},a.fn.devbridgeAutocomplete=function(c,d){var e="autocomplete";return arguments.length?this.each(function(){var f=a(this),g=f.data(e);"string"==typeof c?g&&"function"==typeof g[c]&&g[c](d):(g&&g.dispose&&g.dispose(),g=new b(this,c),f.data(e,g))}):this.first().data(e)},a.fn.wfactory_clearfy_autocomplete||(a.fn.wfactory_clearfy_autocomplete=a.fn.devbridgeAutocomplete)});
|
libs/factory/clearfy/boot.php
CHANGED
@@ -14,22 +14,22 @@ if( !defined('ABSPATH') ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( defined('
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
-
define('
|
22 |
|
23 |
-
define('
|
24 |
|
25 |
-
define('
|
26 |
-
define('
|
27 |
|
28 |
-
load_plugin_textdomain('
|
29 |
|
30 |
-
require(
|
31 |
-
require(
|
32 |
-
require(
|
33 |
|
34 |
// module provides function only for the admin area
|
35 |
if( is_admin() ) {
|
@@ -38,13 +38,13 @@ if( is_admin() ) {
|
|
38 |
* на все страницы админпанели.
|
39 |
*/
|
40 |
add_action('admin_enqueue_scripts', function ($hook) {
|
41 |
-
wp_enqueue_script('wbcr-factory-clearfy-
|
42 |
'jquery',
|
43 |
-
'wfactory-
|
44 |
-
],
|
45 |
|
46 |
-
require_once
|
47 |
-
$all_options = \WBCR\
|
48 |
|
49 |
if( empty($all_options) ) {
|
50 |
return;
|
@@ -72,18 +72,18 @@ if( is_admin() ) {
|
|
72 |
return;
|
73 |
}
|
74 |
|
75 |
-
wp_localize_script('wbcr-factory-clearfy-
|
76 |
});
|
77 |
|
78 |
-
if( defined('
|
79 |
-
require(
|
80 |
-
require(
|
81 |
-
require(
|
82 |
-
require(
|
83 |
|
84 |
-
require(
|
85 |
-
require(
|
86 |
-
require(
|
87 |
-
require(
|
88 |
}
|
89 |
}
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( defined('FACTORY_CLEARFY_237_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
define('FACTORY_CLEARFY_237_LOADED', true);
|
22 |
|
23 |
+
define('FACTORY_CLEARFY_237', '2.3.7');
|
24 |
|
25 |
+
define('FACTORY_CLEARFY_237_DIR', dirname(__FILE__));
|
26 |
+
define('FACTORY_CLEARFY_237_URL', plugins_url(null, __FILE__));
|
27 |
|
28 |
+
load_plugin_textdomain('wbcr_factory_clearfy_237', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
29 |
|
30 |
+
require(FACTORY_CLEARFY_237_DIR . '/includes/ajax-handlers.php');
|
31 |
+
require(FACTORY_CLEARFY_237_DIR . '/includes/class-helpers.php');
|
32 |
+
require(FACTORY_CLEARFY_237_DIR . '/includes/class-configurate.php');
|
33 |
|
34 |
// module provides function only for the admin area
|
35 |
if( is_admin() ) {
|
38 |
* на все страницы админпанели.
|
39 |
*/
|
40 |
add_action('admin_enqueue_scripts', function ($hook) {
|
41 |
+
wp_enqueue_script('wbcr-factory-clearfy-237-global', FACTORY_CLEARFY_237_URL . '/assets/js/clearfy-globals.js', [
|
42 |
'jquery',
|
43 |
+
'wfactory-446-core-general'
|
44 |
+
], FACTORY_CLEARFY_237);
|
45 |
|
46 |
+
require_once FACTORY_CLEARFY_237_DIR . '/includes/class-search-options.php';
|
47 |
+
$all_options = \WBCR\Factory_Clearfy_237\Search_Options::get_all_options();
|
48 |
|
49 |
if( empty($all_options) ) {
|
50 |
return;
|
72 |
return;
|
73 |
}
|
74 |
|
75 |
+
wp_localize_script('wbcr-factory-clearfy-237-global', 'wfactory_clearfy_search_options', $formated_options);
|
76 |
});
|
77 |
|
78 |
+
if( defined('FACTORY_PAGES_445_LOADED') ) {
|
79 |
+
require(FACTORY_CLEARFY_237_DIR . '/pages/class-pages.php');
|
80 |
+
require(FACTORY_CLEARFY_237_DIR . '/pages/class-page-more-features.php');
|
81 |
+
require(FACTORY_CLEARFY_237_DIR . '/pages/class-page-license.php');
|
82 |
+
require(FACTORY_CLEARFY_237_DIR . '/pages/class-pages-components.php');
|
83 |
|
84 |
+
require(FACTORY_CLEARFY_237_DIR . '/pages/setup-parts/class-step.php');
|
85 |
+
require(FACTORY_CLEARFY_237_DIR . '/pages/setup-parts/class-step-form.php');
|
86 |
+
require(FACTORY_CLEARFY_237_DIR . '/pages/setup-parts/class-step-custom.php');
|
87 |
+
require(FACTORY_CLEARFY_237_DIR . '/pages/class-page-setup.php');
|
88 |
}
|
89 |
}
|
libs/factory/clearfy/includes/ajax-handlers.php
CHANGED
@@ -15,12 +15,12 @@ if( !defined('ABSPATH') ) {
|
|
15 |
/**
|
16 |
* Обработчик ajax запросов для виджета подписки на новости
|
17 |
*
|
18 |
-
* @param
|
19 |
*
|
20 |
* @since 2.3.0
|
21 |
*
|
22 |
*/
|
23 |
-
function
|
24 |
{
|
25 |
$plugin_name = $plugin_instance->request->post('plugin_name', null, true);
|
26 |
|
@@ -34,11 +34,11 @@ function wbcr_factory_clearfy_236_subscribe($plugin_instance)
|
|
34 |
check_admin_referer("clearfy_subscribe_for_{$plugin_name}");
|
35 |
|
36 |
if( empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
|
37 |
-
wp_send_json_error(['error_message' => __('You did not send your email address or it is incorrect!', '
|
38 |
}
|
39 |
|
40 |
if( empty($group_id) ) {
|
41 |
-
wp_send_json_error(['error_message' => __('Group ID is empty!', '
|
42 |
}
|
43 |
|
44 |
$response = wp_remote_post('https://clearfy.pro/wp-json/mailerlite/v1/subscribe/', [
|
@@ -63,7 +63,7 @@ function wbcr_factory_clearfy_236_subscribe($plugin_instance)
|
|
63 |
wp_send_json_success(['subscribed' => $data['subscribed']]);
|
64 |
}
|
65 |
|
66 |
-
wp_send_json_error(['error_message' => __('Unknown error while trying to subscribe to newsletter.', '
|
67 |
|
68 |
die();
|
69 |
}
|
@@ -71,12 +71,12 @@ function wbcr_factory_clearfy_236_subscribe($plugin_instance)
|
|
71 |
/**
|
72 |
* Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
|
73 |
*
|
74 |
-
* @param
|
75 |
*
|
76 |
* @since 2.0.7
|
77 |
*
|
78 |
*/
|
79 |
-
function
|
80 |
{
|
81 |
|
82 |
$plugin_name = $plugin_instance->request->post('plugin_name', null, true);
|
@@ -91,7 +91,7 @@ function wbcr_factory_clearfy_236_check_license($plugin_instance)
|
|
91 |
check_admin_referer("clearfy_activate_license_for_{$plugin_name}");
|
92 |
|
93 |
if( empty($action) || !in_array($action, ['activate', 'deactivate', 'sync', 'unsubscribe']) ) {
|
94 |
-
wp_send_json_error(['error_message' => __('Licensing action not passed or this action is prohibited!', '
|
95 |
die();
|
96 |
}
|
97 |
|
@@ -102,23 +102,23 @@ function wbcr_factory_clearfy_236_check_license($plugin_instance)
|
|
102 |
switch( $action ) {
|
103 |
case 'activate':
|
104 |
if( empty($license_key) || strlen($license_key) > 32 ) {
|
105 |
-
wp_send_json_error(['error_message' => __('License key is empty or license key too long (license key is 32 characters long)', '
|
106 |
} else {
|
107 |
$plugin_instance->premium->activate($license_key);
|
108 |
-
$success_message = __('Your license has been successfully activated', '
|
109 |
}
|
110 |
break;
|
111 |
case 'deactivate':
|
112 |
$plugin_instance->premium->deactivate();
|
113 |
-
$success_message = __('The license is deactivated', '
|
114 |
break;
|
115 |
case 'sync':
|
116 |
$plugin_instance->premium->sync();
|
117 |
-
$success_message = __('The license has been updated', '
|
118 |
break;
|
119 |
case 'unsubscribe':
|
120 |
$plugin_instance->premium->cancel_paid_subscription();
|
121 |
-
$success_message = __('Subscription success cancelled', '
|
122 |
break;
|
123 |
}
|
124 |
} catch( Exception $e ) {
|
15 |
/**
|
16 |
* Обработчик ajax запросов для виджета подписки на новости
|
17 |
*
|
18 |
+
* @param Wbcr_Factory446_Plugin $plugin_instance
|
19 |
*
|
20 |
* @since 2.3.0
|
21 |
*
|
22 |
*/
|
23 |
+
function wbcr_factory_clearfy_237_subscribe($plugin_instance)
|
24 |
{
|
25 |
$plugin_name = $plugin_instance->request->post('plugin_name', null, true);
|
26 |
|
34 |
check_admin_referer("clearfy_subscribe_for_{$plugin_name}");
|
35 |
|
36 |
if( empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
|
37 |
+
wp_send_json_error(['error_message' => __('You did not send your email address or it is incorrect!', 'wbcr_factory_clearfy_237')]);
|
38 |
}
|
39 |
|
40 |
if( empty($group_id) ) {
|
41 |
+
wp_send_json_error(['error_message' => __('Group ID is empty!', 'wbcr_factory_clearfy_237')]);
|
42 |
}
|
43 |
|
44 |
$response = wp_remote_post('https://clearfy.pro/wp-json/mailerlite/v1/subscribe/', [
|
63 |
wp_send_json_success(['subscribed' => $data['subscribed']]);
|
64 |
}
|
65 |
|
66 |
+
wp_send_json_error(['error_message' => __('Unknown error while trying to subscribe to newsletter.', 'wbcr_factory_clearfy_237')]);
|
67 |
|
68 |
die();
|
69 |
}
|
71 |
/**
|
72 |
* Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
|
73 |
*
|
74 |
+
* @param Wbcr_Factory446_Plugin $plugin_instance
|
75 |
*
|
76 |
* @since 2.0.7
|
77 |
*
|
78 |
*/
|
79 |
+
function wbcr_factory_clearfy_237_check_license($plugin_instance)
|
80 |
{
|
81 |
|
82 |
$plugin_name = $plugin_instance->request->post('plugin_name', null, true);
|
91 |
check_admin_referer("clearfy_activate_license_for_{$plugin_name}");
|
92 |
|
93 |
if( empty($action) || !in_array($action, ['activate', 'deactivate', 'sync', 'unsubscribe']) ) {
|
94 |
+
wp_send_json_error(['error_message' => __('Licensing action not passed or this action is prohibited!', 'wbcr_factory_clearfy_237')]);
|
95 |
die();
|
96 |
}
|
97 |
|
102 |
switch( $action ) {
|
103 |
case 'activate':
|
104 |
if( empty($license_key) || strlen($license_key) > 32 ) {
|
105 |
+
wp_send_json_error(['error_message' => __('License key is empty or license key too long (license key is 32 characters long)', 'wbcr_factory_clearfy_237')]);
|
106 |
} else {
|
107 |
$plugin_instance->premium->activate($license_key);
|
108 |
+
$success_message = __('Your license has been successfully activated', 'wbcr_factory_clearfy_237');
|
109 |
}
|
110 |
break;
|
111 |
case 'deactivate':
|
112 |
$plugin_instance->premium->deactivate();
|
113 |
+
$success_message = __('The license is deactivated', 'wbcr_factory_clearfy_237');
|
114 |
break;
|
115 |
case 'sync':
|
116 |
$plugin_instance->premium->sync();
|
117 |
+
$success_message = __('The license has been updated', 'wbcr_factory_clearfy_237');
|
118 |
break;
|
119 |
case 'unsubscribe':
|
120 |
$plugin_instance->premium->cancel_paid_subscription();
|
121 |
+
$success_message = __('Subscription success cancelled', 'wbcr_factory_clearfy_237');
|
122 |
break;
|
123 |
}
|
124 |
} catch( Exception $e ) {
|
libs/factory/clearfy/includes/class-configurate.php
CHANGED
@@ -13,12 +13,12 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
* @copyright (c) 2018, Webcraftic Ltd
|
14 |
*
|
15 |
*/
|
16 |
-
abstract class
|
17 |
|
18 |
/**
|
19 |
-
* @param
|
20 |
*/
|
21 |
-
public function __construct(
|
22 |
$this->plugin = $plugin;
|
23 |
$this->registerActionsAndFilters();
|
24 |
}
|
13 |
* @copyright (c) 2018, Webcraftic Ltd
|
14 |
*
|
15 |
*/
|
16 |
+
abstract class Wbcr_FactoryClearfy237_Configurate {
|
17 |
|
18 |
/**
|
19 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
20 |
*/
|
21 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
22 |
$this->plugin = $plugin;
|
23 |
$this->registerActionsAndFilters();
|
24 |
}
|
libs/factory/clearfy/includes/class-helpers.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
// Exit if accessed directly
|
3 |
-
if
|
4 |
exit;
|
5 |
}
|
6 |
|
@@ -14,24 +14,25 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
* @copyright (c) 2018, Webcraftic Ltd
|
15 |
*
|
16 |
*/
|
17 |
-
class
|
18 |
|
19 |
/**
|
20 |
* Recursive sanitation for an array
|
21 |
*
|
22 |
-
* @since 2.0.5
|
23 |
-
*
|
24 |
* @param $array
|
25 |
*
|
26 |
* @return mixed
|
|
|
|
|
27 |
*/
|
28 |
-
public static function recursiveSanitizeArray(
|
29 |
-
|
30 |
-
|
31 |
-
|
|
|
32 |
} else {
|
33 |
-
if
|
34 |
-
$value = $function(
|
35 |
}
|
36 |
}
|
37 |
}
|
@@ -42,14 +43,15 @@ class WbcrFactoryClearfy236_Helpers {
|
|
42 |
/**
|
43 |
* Is permalink enabled?
|
44 |
*
|
45 |
-
* @since 1.0.0
|
46 |
* @return bool
|
|
|
47 |
* @global WP_Rewrite $wp_rewrite
|
48 |
*/
|
49 |
-
public static function isPermalink()
|
|
|
50 |
global $wp_rewrite;
|
51 |
|
52 |
-
if
|
53 |
return false;
|
54 |
}
|
55 |
|
@@ -59,44 +61,47 @@ class WbcrFactoryClearfy236_Helpers {
|
|
59 |
/**
|
60 |
* Display 404 page to bump bots and bad guys
|
61 |
*
|
62 |
-
* @param bool $simple
|
63 |
*/
|
64 |
-
public static function setError404()
|
|
|
65 |
global $wp_query;
|
66 |
|
67 |
-
if
|
68 |
-
status_header(
|
69 |
nocache_headers();
|
70 |
}
|
71 |
|
72 |
-
if
|
73 |
$wp_query->set_404();
|
74 |
-
get_template_part(
|
75 |
} else {
|
76 |
global $pagenow;
|
77 |
|
78 |
$pagenow = 'index.php';
|
79 |
|
80 |
-
if
|
81 |
-
define(
|
82 |
}
|
83 |
|
84 |
wp();
|
85 |
|
86 |
-
$_SERVER['REQUEST_URI'] = self::userTrailingslashit(
|
87 |
|
88 |
-
require_once(
|
89 |
}
|
90 |
|
91 |
exit();
|
92 |
}
|
93 |
|
94 |
-
public static function useTrailingSlashes()
|
95 |
-
|
|
|
96 |
}
|
97 |
|
98 |
-
public static function userTrailingslashit(
|
99 |
-
|
|
|
100 |
}
|
101 |
|
102 |
/**
|
@@ -104,18 +109,19 @@ class WbcrFactoryClearfy236_Helpers {
|
|
104 |
*
|
105 |
* @param string $string
|
106 |
* @param string $find
|
107 |
-
* @param bool
|
108 |
*
|
109 |
* @return bool
|
110 |
*/
|
111 |
-
public static function strContains(
|
112 |
-
|
|
|
113 |
return false;
|
114 |
}
|
115 |
|
116 |
-
$pos = $case_sensitive ? strpos(
|
117 |
|
118 |
-
return !
|
119 |
}
|
120 |
|
121 |
/**
|
@@ -123,16 +129,17 @@ class WbcrFactoryClearfy236_Helpers {
|
|
123 |
*
|
124 |
* @param string $string
|
125 |
* @param string $find
|
126 |
-
* @param bool
|
127 |
*
|
128 |
* @return bool
|
129 |
*/
|
130 |
-
public static function strStartsWith(
|
131 |
-
|
132 |
-
|
|
|
133 |
}
|
134 |
|
135 |
-
return stripos(
|
136 |
}
|
137 |
|
138 |
/**
|
@@ -144,35 +151,38 @@ class WbcrFactoryClearfy236_Helpers {
|
|
144 |
*
|
145 |
* @return bool
|
146 |
*/
|
147 |
-
public static function strEndsWith(
|
148 |
-
|
|
|
149 |
|
150 |
-
if
|
151 |
-
return strrpos(
|
152 |
}
|
153 |
|
154 |
-
return strripos(
|
155 |
}
|
156 |
|
157 |
-
public static function arrayMergeInsert(
|
158 |
-
|
159 |
-
|
|
|
160 |
}
|
161 |
-
$key_position = (
|
162 |
-
if
|
163 |
-
return array_merge(
|
164 |
}
|
165 |
-
if
|
166 |
-
$key_position
|
167 |
}
|
168 |
|
169 |
-
return array_merge(
|
170 |
}
|
171 |
|
172 |
-
public static function maybeGetPostJson(
|
173 |
-
|
174 |
-
|
175 |
-
|
|
|
176 |
$result = [];
|
177 |
}
|
178 |
|
@@ -182,8 +192,9 @@ class WbcrFactoryClearfy236_Helpers {
|
|
182 |
}
|
183 |
}
|
184 |
|
185 |
-
public static function getEscapeJson(
|
186 |
-
|
|
|
187 |
}
|
188 |
|
189 |
/**
|
@@ -193,9 +204,10 @@ class WbcrFactoryClearfy236_Helpers {
|
|
193 |
*
|
194 |
* @return string
|
195 |
*/
|
196 |
-
public static function replaceMsUrl(
|
197 |
-
|
198 |
-
|
|
|
199 |
}
|
200 |
|
201 |
return $string;
|
@@ -206,60 +218,63 @@ class WbcrFactoryClearfy236_Helpers {
|
|
206 |
*
|
207 |
* @return void
|
208 |
*/
|
209 |
-
public static function flushPageCache()
|
210 |
-
|
211 |
-
|
|
|
212 |
$blog_id = get_current_blog_id();
|
213 |
-
wp_cache_clear_cache(
|
214 |
} else {
|
215 |
wp_cache_clear_cache();
|
216 |
}
|
217 |
-
} else if
|
218 |
-
do_action(
|
219 |
-
} else if
|
220 |
w3tc_pgcache_flush();
|
221 |
-
} else if
|
222 |
wp_fast_cache_bulk_delete_all();
|
223 |
-
} else if
|
224 |
$wpfc = new WpFastestCache();
|
225 |
$wpfc->deleteCache();
|
226 |
-
} else if
|
227 |
c_ws_plugin__qcache_purging_routines::purge_cache_dir(); // quick cache
|
228 |
-
} else if
|
229 |
zencache::clear();
|
230 |
-
} else if
|
231 |
comet_cache::clear();
|
232 |
-
} else if
|
|
|
|
|
233 |
// WPEngine cache purge/flush methods to call by default
|
234 |
$wpe_methods = [
|
235 |
'purge_varnish_cache',
|
236 |
];
|
237 |
|
238 |
// More agressive clear/flush/purge behind a filter
|
239 |
-
if
|
240 |
-
$wpe_methods = array_merge(
|
241 |
}
|
242 |
|
243 |
// Filtering the entire list of WpeCommon methods to be called (for advanced usage + easier testing)
|
244 |
-
$wpe_methods = apply_filters(
|
245 |
|
246 |
-
foreach
|
247 |
-
if
|
248 |
WpeCommon::$wpe_method();
|
249 |
}
|
250 |
}
|
251 |
-
} else if
|
252 |
sg_cachepress_purge_cache();
|
253 |
-
} else if
|
254 |
// fallback for WP-Super-Cache
|
255 |
global $cache_path;
|
256 |
-
if
|
257 |
$blog_id = get_current_blog_id();
|
258 |
-
prune_super_cache(
|
259 |
-
prune_super_cache(
|
260 |
} else {
|
261 |
-
prune_super_cache(
|
262 |
-
prune_super_cache(
|
263 |
}
|
264 |
}
|
265 |
}
|
1 |
<?php
|
2 |
// Exit if accessed directly
|
3 |
+
if( !defined('ABSPATH') ) {
|
4 |
exit;
|
5 |
}
|
6 |
|
14 |
* @copyright (c) 2018, Webcraftic Ltd
|
15 |
*
|
16 |
*/
|
17 |
+
class WbcrFactoryClearfy237_Helpers {
|
18 |
|
19 |
/**
|
20 |
* Recursive sanitation for an array
|
21 |
*
|
|
|
|
|
22 |
* @param $array
|
23 |
*
|
24 |
* @return mixed
|
25 |
+
* @since 2.0.5
|
26 |
+
*
|
27 |
*/
|
28 |
+
public static function recursiveSanitizeArray($array, $function)
|
29 |
+
{
|
30 |
+
foreach($array as $key => &$value) {
|
31 |
+
if( is_array($value) ) {
|
32 |
+
$value = self::recursiveSanitizeArray($value, $function);
|
33 |
} else {
|
34 |
+
if( function_exists($function) ) {
|
35 |
+
$value = $function($value);
|
36 |
}
|
37 |
}
|
38 |
}
|
43 |
/**
|
44 |
* Is permalink enabled?
|
45 |
*
|
|
|
46 |
* @return bool
|
47 |
+
* @since 1.0.0
|
48 |
* @global WP_Rewrite $wp_rewrite
|
49 |
*/
|
50 |
+
public static function isPermalink()
|
51 |
+
{
|
52 |
global $wp_rewrite;
|
53 |
|
54 |
+
if( !isset($wp_rewrite) || !is_object($wp_rewrite) || !$wp_rewrite->using_permalinks() ) {
|
55 |
return false;
|
56 |
}
|
57 |
|
61 |
/**
|
62 |
* Display 404 page to bump bots and bad guys
|
63 |
*
|
64 |
+
* @param bool $simple If true force displaying basic 404 page
|
65 |
*/
|
66 |
+
public static function setError404()
|
67 |
+
{
|
68 |
global $wp_query;
|
69 |
|
70 |
+
if( function_exists('status_header') ) {
|
71 |
+
status_header('404');
|
72 |
nocache_headers();
|
73 |
}
|
74 |
|
75 |
+
if( $wp_query && is_object($wp_query) ) {
|
76 |
$wp_query->set_404();
|
77 |
+
get_template_part(404);
|
78 |
} else {
|
79 |
global $pagenow;
|
80 |
|
81 |
$pagenow = 'index.php';
|
82 |
|
83 |
+
if( !defined('WP_USE_THEMES') ) {
|
84 |
+
define('WP_USE_THEMES', true);
|
85 |
}
|
86 |
|
87 |
wp();
|
88 |
|
89 |
+
$_SERVER['REQUEST_URI'] = self::userTrailingslashit('/hmwp_404');
|
90 |
|
91 |
+
require_once(ABSPATH . WPINC . '/template-loader.php');
|
92 |
}
|
93 |
|
94 |
exit();
|
95 |
}
|
96 |
|
97 |
+
public static function useTrailingSlashes()
|
98 |
+
{
|
99 |
+
return ('/' === substr(get_option('permalink_structure'), -1, 1));
|
100 |
}
|
101 |
|
102 |
+
public static function userTrailingslashit($string)
|
103 |
+
{
|
104 |
+
return self::useTrailingSlashes() ? trailingslashit($string) : untrailingslashit($string);
|
105 |
}
|
106 |
|
107 |
/**
|
109 |
*
|
110 |
* @param string $string
|
111 |
* @param string $find
|
112 |
+
* @param bool $case_sensitive
|
113 |
*
|
114 |
* @return bool
|
115 |
*/
|
116 |
+
public static function strContains($string, $find, $case_sensitive = true)
|
117 |
+
{
|
118 |
+
if( empty($string) || empty($find) ) {
|
119 |
return false;
|
120 |
}
|
121 |
|
122 |
+
$pos = $case_sensitive ? strpos($string, $find) : stripos($string, $find);
|
123 |
|
124 |
+
return !($pos === false);
|
125 |
}
|
126 |
|
127 |
/**
|
129 |
*
|
130 |
* @param string $string
|
131 |
* @param string $find
|
132 |
+
* @param bool $case_sensitive
|
133 |
*
|
134 |
* @return bool
|
135 |
*/
|
136 |
+
public static function strStartsWith($string, $find, $case_sensitive = true)
|
137 |
+
{
|
138 |
+
if( $case_sensitive ) {
|
139 |
+
return strpos($string, $find) === 0;
|
140 |
}
|
141 |
|
142 |
+
return stripos($string, $find) === 0;
|
143 |
}
|
144 |
|
145 |
/**
|
151 |
*
|
152 |
* @return bool
|
153 |
*/
|
154 |
+
public static function strEndsWith($string, $find, $case_sensitive = true)
|
155 |
+
{
|
156 |
+
$expected_position = strlen($string) - strlen($find);
|
157 |
|
158 |
+
if( $case_sensitive ) {
|
159 |
+
return strrpos($string, $find, 0) === $expected_position;
|
160 |
}
|
161 |
|
162 |
+
return strripos($string, $find, 0) === $expected_position;
|
163 |
}
|
164 |
|
165 |
+
public static function arrayMergeInsert(array $arr, array $inserted, $position = 'bottom', $key = null)
|
166 |
+
{
|
167 |
+
if( $position == 'top' ) {
|
168 |
+
return array_merge($inserted, $arr);
|
169 |
}
|
170 |
+
$key_position = ($key === null) ? false : array_search($key, array_keys($arr));
|
171 |
+
if( $key_position === false or ($position != 'before' and $position != 'after') ) {
|
172 |
+
return array_merge($arr, $inserted);
|
173 |
}
|
174 |
+
if( $position == 'after' ) {
|
175 |
+
$key_position++;
|
176 |
}
|
177 |
|
178 |
+
return array_merge(array_slice($arr, 0, $key_position, true), $inserted, array_slice($arr, $key_position, null, true));
|
179 |
}
|
180 |
|
181 |
+
public static function maybeGetPostJson($name)
|
182 |
+
{
|
183 |
+
if( isset($_POST[$name]) and is_string($_POST[$name]) ) {
|
184 |
+
$result = json_decode(stripslashes($_POST[$name]), true);
|
185 |
+
if( !is_array($result) ) {
|
186 |
$result = [];
|
187 |
}
|
188 |
|
192 |
}
|
193 |
}
|
194 |
|
195 |
+
public static function getEscapeJson(array $data)
|
196 |
+
{
|
197 |
+
return htmlspecialchars(json_encode($data), ENT_QUOTES, 'UTF-8');
|
198 |
}
|
199 |
|
200 |
/**
|
204 |
*
|
205 |
* @return string
|
206 |
*/
|
207 |
+
public static function replaceMsUrl($string)
|
208 |
+
{
|
209 |
+
if( is_multisite() && BLOG_ID_CURRENT_SITE != get_current_blog_id() ) {
|
210 |
+
return str_replace(get_site_url(BLOG_ID_CURRENT_SITE), get_site_url(get_current_blog_id()), $string);
|
211 |
}
|
212 |
|
213 |
return $string;
|
218 |
*
|
219 |
* @return void
|
220 |
*/
|
221 |
+
public static function flushPageCache()
|
222 |
+
{
|
223 |
+
if( function_exists('wp_cache_clear_cache') ) {
|
224 |
+
if( is_multisite() ) {
|
225 |
$blog_id = get_current_blog_id();
|
226 |
+
wp_cache_clear_cache($blog_id);
|
227 |
} else {
|
228 |
wp_cache_clear_cache();
|
229 |
}
|
230 |
+
} else if( has_action('cachify_flush_cache') ) {
|
231 |
+
do_action('cachify_flush_cache');
|
232 |
+
} else if( function_exists('w3tc_pgcache_flush') ) {
|
233 |
w3tc_pgcache_flush();
|
234 |
+
} else if( function_exists('wp_fast_cache_bulk_delete_all') ) {
|
235 |
wp_fast_cache_bulk_delete_all();
|
236 |
+
} else if( class_exists('WpFastestCache') ) {
|
237 |
$wpfc = new WpFastestCache();
|
238 |
$wpfc->deleteCache();
|
239 |
+
} else if( class_exists('c_ws_plugin__qcache_purging_routines') ) {
|
240 |
c_ws_plugin__qcache_purging_routines::purge_cache_dir(); // quick cache
|
241 |
+
} else if( class_exists('zencache') ) {
|
242 |
zencache::clear();
|
243 |
+
} else if( class_exists('comet_cache') ) {
|
244 |
comet_cache::clear();
|
245 |
+
} else if( class_exists('WCL_Cache_Helpers') ) {
|
246 |
+
WCL_Cache_Helpers::deleteCache();
|
247 |
+
} else if( class_exists('WpeCommon') ) {
|
248 |
// WPEngine cache purge/flush methods to call by default
|
249 |
$wpe_methods = [
|
250 |
'purge_varnish_cache',
|
251 |
];
|
252 |
|
253 |
// More agressive clear/flush/purge behind a filter
|
254 |
+
if( apply_filters('wbcr/factory/flush_wpengine_aggressive', false) ) {
|
255 |
+
$wpe_methods = array_merge($wpe_methods, ['purge_memcached', 'clear_maxcdn_cache']);
|
256 |
}
|
257 |
|
258 |
// Filtering the entire list of WpeCommon methods to be called (for advanced usage + easier testing)
|
259 |
+
$wpe_methods = apply_filters('wbcr/factory/wpengine_methods', $wpe_methods);
|
260 |
|
261 |
+
foreach($wpe_methods as $wpe_method) {
|
262 |
+
if( method_exists('WpeCommon', $wpe_method) ) {
|
263 |
WpeCommon::$wpe_method();
|
264 |
}
|
265 |
}
|
266 |
+
} else if( function_exists('sg_cachepress_purge_cache') ) {
|
267 |
sg_cachepress_purge_cache();
|
268 |
+
} else if( file_exists(WP_CONTENT_DIR . '/wp-cache-config.php') && function_exists('prune_super_cache') ) {
|
269 |
// fallback for WP-Super-Cache
|
270 |
global $cache_path;
|
271 |
+
if( is_multisite() ) {
|
272 |
$blog_id = get_current_blog_id();
|
273 |
+
prune_super_cache(get_supercache_dir($blog_id), true);
|
274 |
+
prune_super_cache($cache_path . 'blogs/', true);
|
275 |
} else {
|
276 |
+
prune_super_cache($cache_path . 'supercache/', true);
|
277 |
+
prune_super_cache($cache_path, true);
|
278 |
}
|
279 |
}
|
280 |
}
|
libs/factory/clearfy/includes/class-search-options.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* Class Search options
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Clearfy_237;
|
4 |
|
5 |
/**
|
6 |
* Class Search options
|
libs/factory/clearfy/langs/{wbcr_factory_clearfy_236-ru_RU.mo → wbcr_factory_clearfy_237-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/clearfy/langs/{wbcr_factory_clearfy_236-ru_RU.po → wbcr_factory_clearfy_237-ru_RU.po}
RENAMED
File without changes
|
libs/factory/clearfy/pages/class-page-license.php
CHANGED
@@ -11,7 +11,7 @@ if( !defined('ABSPATH') ) {
|
|
11 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
12 |
* @since 2.0.7
|
13 |
*/
|
14 |
-
class
|
15 |
|
16 |
/**
|
17 |
* {@inheritdoc}
|
@@ -80,7 +80,7 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
80 |
|
81 |
/**
|
82 |
* @since 2.0.7
|
83 |
-
* @var \WBCR\
|
84 |
*/
|
85 |
protected $premium;
|
86 |
|
@@ -98,7 +98,7 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
98 |
|
99 |
/**
|
100 |
* @since 2.0.7
|
101 |
-
* @var \WBCR\
|
102 |
*/
|
103 |
protected $premium_license;
|
104 |
|
@@ -107,9 +107,9 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
107 |
|
108 |
/**
|
109 |
* {@inheritdoc}
|
110 |
-
* @param
|
111 |
*/
|
112 |
-
public function __construct(
|
113 |
{
|
114 |
$this->plugin = $plugin;
|
115 |
|
@@ -136,8 +136,8 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
136 |
{
|
137 |
parent::assets($scripts, $styles);
|
138 |
|
139 |
-
$this->styles->add(
|
140 |
-
$this->scripts->add(
|
141 |
}
|
142 |
|
143 |
/**
|
@@ -147,7 +147,7 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
147 |
*/
|
148 |
public function ajax_handler()
|
149 |
{
|
150 |
-
|
151 |
}
|
152 |
|
153 |
/**
|
@@ -157,7 +157,7 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
157 |
{
|
158 |
?>
|
159 |
<div id="wcl-license-wrapper"
|
160 |
-
data-loader="<?php echo
|
161 |
data-plugin-name="<?php echo esc_attr($this->plugin_name); ?>"
|
162 |
data-nonce="<?php echo wp_create_nonce("clearfy_activate_license_for_{$this->plugin_name}") ?>">
|
163 |
<?php $this->show_license_form(); ?>
|
@@ -263,11 +263,11 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
263 |
if( $this->is_premium ):
|
264 |
?>
|
265 |
<p style="margin-top: 10px;">
|
266 |
-
<?php printf(__('<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', '
|
267 |
</p>
|
268 |
<?php else: ?>
|
269 |
<p style="margin-top: 10px;">
|
270 |
-
<?php printf(__('Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', '
|
271 |
</p>
|
272 |
<?php endif;
|
273 |
}
|
@@ -279,16 +279,16 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
279 |
{
|
280 |
?>
|
281 |
<div id="license-manager"
|
282 |
-
class="factory-bootstrap-
|
283 |
<div>
|
284 |
-
<h3><?php printf(__('Activate %s', '
|
285 |
<?php echo $this->get_plan_description() ?>
|
286 |
</div>
|
287 |
<br>
|
288 |
<?php if( is_wp_error($notice) ) : ?>
|
289 |
<div class="license-message <?= $this->get_license_type() ?>-license-message">
|
290 |
<div class="alert <?php echo esc_attr($notice->get_error_code()); ?>">
|
291 |
-
<h4 class="alert-heading"><?php _e($notice->get_error_message(), '
|
292 |
</div>
|
293 |
</div>
|
294 |
<?php endif; ?>
|
@@ -298,20 +298,20 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
298 |
<a href="<?php echo $this->plugin->get_support()->get_pricing_url(true, 'license_page'); ?>"
|
299 |
class="purchase-premium" target="_blank" rel="noopener">
|
300 |
<span class="btn btn-gold btn-inner-wrap">
|
301 |
-
<?php _e('Upgrade to Premium', '
|
302 |
</span>
|
303 |
</a>
|
304 |
-
<p><?php printf(__('Your current license for %1$s:', '
|
305 |
<?php endif; ?>
|
306 |
<div class="license-details-block <?= $this->get_license_type() ?>-details-block">
|
307 |
<?php if( $this->is_premium ): ?>
|
308 |
<a data-action="deactivate" href="#"
|
309 |
class="btn btn-default btn-small license-delete-button wcl-control-btn">
|
310 |
-
<?php _e('Delete Key', '
|
311 |
</a>
|
312 |
<a data-action="sync" href="#"
|
313 |
class="btn btn-default btn-small license-synchronization-button wcl-control-btn">
|
314 |
-
<?php _e('Synchronization', '
|
315 |
</a>
|
316 |
<?php endif; ?>
|
317 |
<h3>
|
@@ -330,19 +330,19 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
330 |
<?php endif; ?>
|
331 |
<div class="license-key-description">
|
332 |
<?php if( !$this->is_premium ): ?>
|
333 |
-
<p><?php _e('Public License is a GPLv3 compatible license allowing you to change and use this version of the plugin for free. Please keep in mind this license covers only free edition of the plugin. Premium versions are distributed with other type of a license.', '
|
334 |
<?php else: ?>
|
335 |
-
<p><?php _e('Сommercial license, only to the premium add-on to this free plugin. You cannot distribute or modify the premium add-on. But free plugin is a GPLv3 compatible license allowing you to change and use this version of the plugin for free.', '
|
336 |
<?php endif; ?>
|
337 |
<?php if( $this->is_premium && $this->premium_has_subscription ): ?>
|
338 |
<p class="activate-trial-hint">
|
339 |
-
<?php _e('You use a paid subscription for the plugin updates. In case you don’t want to receive paid updates, please, click <a data-action="unsubscribe" class="wcl-control-btn" href="#">cancel subscription</a>', '
|
340 |
</p>
|
341 |
<?php endif; ?>
|
342 |
|
343 |
<?php if( $this->get_license_type() == 'trial' ): ?>
|
344 |
<p class="activate-error-hint">
|
345 |
-
<?php printf(__('Your license has expired, please extend the license to get updates and support.', '
|
346 |
</p>
|
347 |
<?php endif; ?>
|
348 |
</div>
|
@@ -350,19 +350,19 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
350 |
<tr>
|
351 |
<!--<td class="license-param license-param-domain">
|
352 |
<span class="license-value"><?php echo esc_attr($_SERVER['SERVER_NAME']); ?></span>
|
353 |
-
<span class="license-value-name"><?php _e('domain', '
|
354 |
</td>-->
|
355 |
<td class="license-param license-param-days">
|
356 |
<span class="license-value"><?= $this->get_plan() ?></span>
|
357 |
-
<span class="license-value-name"><?php _e('plan', '
|
358 |
</td>
|
359 |
<?php if( $this->is_premium ) : ?>
|
360 |
<td class="license-param license-param-sites">
|
361 |
<span class="license-value">
|
362 |
<?php echo esc_attr($this->premium_license->get_count_active_sites()); ?>
|
363 |
-
<?php _e('of', '
|
364 |
<?php echo esc_attr($this->premium_license->get_sites_quota()); ?></span>
|
365 |
-
<span class="license-value-name"><?php _e('active sites', '
|
366 |
</td>
|
367 |
<?php endif; ?>
|
368 |
<td class="license-param license-param-version">
|
@@ -372,8 +372,8 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
372 |
<?php if( $this->is_premium ): ?>
|
373 |
<td class="license-param license-param-days">
|
374 |
<?php if( $this->get_license_type() == 'trial' ): ?>
|
375 |
-
<span class="license-value"><?php _e('EXPIRED!', '
|
376 |
-
<span class="license-value-name"><?php _e('please update the key', '
|
377 |
<?php else: ?>
|
378 |
<span class="license-value">
|
379 |
<?php
|
@@ -383,9 +383,9 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
383 |
echo $this->get_expiration_days();
|
384 |
}
|
385 |
?>
|
386 |
-
<small> <?php _e('day(s)', '
|
387 |
</span>
|
388 |
-
<span class="license-value-name"><?php _e('remained', '
|
389 |
<?php endif; ?>
|
390 |
</td>
|
391 |
<?php endif; ?>
|
@@ -396,14 +396,14 @@ class Wbcr_FactoryClearfy236_LicensePage extends Wbcr_FactoryClearfy236_PageBase
|
|
396 |
<div class="license-input">
|
397 |
<form action="" method="post">
|
398 |
<?php if($this->is_premium): ?>
|
399 |
-
<p><?php _e('Have a key to activate the premium version? Paste it here:', '
|
400 |
<?php else: ?>
|
401 |
-
<p><?php _e('Have a key to activate the plugin? Paste it here:', '
|
402 |
<p>
|
403 |
<?php endif; ?>
|
404 |
<button data-action="activate" class="btn btn-default wcl-control-btn" type="button"
|
405 |
id="license-submit">
|
406 |
-
<?php _e('Submit Key', '
|
407 |
</button>
|
408 |
<div class="license-key-wrap">
|
409 |
<input type="text" id="license-key" name="licensekey" value="" class="form-control"/>
|
11 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
12 |
* @since 2.0.7
|
13 |
*/
|
14 |
+
class Wbcr_FactoryClearfy237_LicensePage extends Wbcr_FactoryClearfy237_PageBase {
|
15 |
|
16 |
/**
|
17 |
* {@inheritdoc}
|
80 |
|
81 |
/**
|
82 |
* @since 2.0.7
|
83 |
+
* @var \WBCR\Factory_446\Premium\Provider
|
84 |
*/
|
85 |
protected $premium;
|
86 |
|
98 |
|
99 |
/**
|
100 |
* @since 2.0.7
|
101 |
+
* @var \WBCR\Factory_446\Premium\Interfaces\License
|
102 |
*/
|
103 |
protected $premium_license;
|
104 |
|
107 |
|
108 |
/**
|
109 |
* {@inheritdoc}
|
110 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
111 |
*/
|
112 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin)
|
113 |
{
|
114 |
$this->plugin = $plugin;
|
115 |
|
136 |
{
|
137 |
parent::assets($scripts, $styles);
|
138 |
|
139 |
+
$this->styles->add(FACTORY_CLEARFY_237_URL . '/assets/css/license-manager.css');
|
140 |
+
$this->scripts->add(FACTORY_CLEARFY_237_URL . '/assets/js/clearfy-license-manager.js');
|
141 |
}
|
142 |
|
143 |
/**
|
147 |
*/
|
148 |
public function ajax_handler()
|
149 |
{
|
150 |
+
wbcr_factory_clearfy_237_check_license($this->plugin);
|
151 |
}
|
152 |
|
153 |
/**
|
157 |
{
|
158 |
?>
|
159 |
<div id="wcl-license-wrapper"
|
160 |
+
data-loader="<?php echo FACTORY_CLEARFY_237_URL . '/assets/img/loader.gif'; ?>"
|
161 |
data-plugin-name="<?php echo esc_attr($this->plugin_name); ?>"
|
162 |
data-nonce="<?php echo wp_create_nonce("clearfy_activate_license_for_{$this->plugin_name}") ?>">
|
163 |
<?php $this->show_license_form(); ?>
|
263 |
if( $this->is_premium ):
|
264 |
?>
|
265 |
<p style="margin-top: 10px;">
|
266 |
+
<?php printf(__('<a href="%s" target="_blank" rel="noopener">Lean more</a> about the premium version and get the license key to activate it now!', 'wbcr_factory_clearfy_237'), $this->plugin->get_support()->get_pricing_url(true, 'license_page')); ?>
|
267 |
</p>
|
268 |
<?php else: ?>
|
269 |
<p style="margin-top: 10px;">
|
270 |
+
<?php printf(__('Can’t find your key? Go to <a href="%s" target="_blank" rel="noopener">this page</a> and login using the e-mail address associated with your purchase.', 'wbcr_factory_clearfy_237'), $this->plugin->get_support()->get_contacts_url(true, 'license_page')) ?>
|
271 |
</p>
|
272 |
<?php endif;
|
273 |
}
|
279 |
{
|
280 |
?>
|
281 |
<div id="license-manager"
|
282 |
+
class="factory-bootstrap-446 onp-page-wrap <?= $this->get_license_type() ?>-license-manager-content">
|
283 |
<div>
|
284 |
+
<h3><?php printf(__('Activate %s', 'wbcr_factory_clearfy_237'), $this->plan_name) ?></h3>
|
285 |
<?php echo $this->get_plan_description() ?>
|
286 |
</div>
|
287 |
<br>
|
288 |
<?php if( is_wp_error($notice) ) : ?>
|
289 |
<div class="license-message <?= $this->get_license_type() ?>-license-message">
|
290 |
<div class="alert <?php echo esc_attr($notice->get_error_code()); ?>">
|
291 |
+
<h4 class="alert-heading"><?php _e($notice->get_error_message(), 'wbcr_factory_clearfy_237') ?></h4>
|
292 |
</div>
|
293 |
</div>
|
294 |
<?php endif; ?>
|
298 |
<a href="<?php echo $this->plugin->get_support()->get_pricing_url(true, 'license_page'); ?>"
|
299 |
class="purchase-premium" target="_blank" rel="noopener">
|
300 |
<span class="btn btn-gold btn-inner-wrap">
|
301 |
+
<?php _e('Upgrade to Premium', 'wbcr_factory_clearfy_237') ?>
|
302 |
</span>
|
303 |
</a>
|
304 |
+
<p><?php printf(__('Your current license for %1$s:', 'wbcr_factory_clearfy_237'), $this->plugin->getPluginTitle()) ?></p>
|
305 |
<?php endif; ?>
|
306 |
<div class="license-details-block <?= $this->get_license_type() ?>-details-block">
|
307 |
<?php if( $this->is_premium ): ?>
|
308 |
<a data-action="deactivate" href="#"
|
309 |
class="btn btn-default btn-small license-delete-button wcl-control-btn">
|
310 |
+
<?php _e('Delete Key', 'wbcr_factory_clearfy_237') ?>
|
311 |
</a>
|
312 |
<a data-action="sync" href="#"
|
313 |
class="btn btn-default btn-small license-synchronization-button wcl-control-btn">
|
314 |
+
<?php _e('Synchronization', 'wbcr_factory_clearfy_237') ?>
|
315 |
</a>
|
316 |
<?php endif; ?>
|
317 |
<h3>
|
330 |
<?php endif; ?>
|
331 |
<div class="license-key-description">
|
332 |
<?php if( !$this->is_premium ): ?>
|
333 |
+
<p><?php _e('Public License is a GPLv3 compatible license allowing you to change and use this version of the plugin for free. Please keep in mind this license covers only free edition of the plugin. Premium versions are distributed with other type of a license.', 'wbcr_factory_clearfy_237') ?></p>
|
334 |
<?php else: ?>
|
335 |
+
<p><?php _e('Сommercial license, only to the premium add-on to this free plugin. You cannot distribute or modify the premium add-on. But free plugin is a GPLv3 compatible license allowing you to change and use this version of the plugin for free.', 'wbcr_factory_clearfy_237') ?></p>
|
336 |
<?php endif; ?>
|
337 |
<?php if( $this->is_premium && $this->premium_has_subscription ): ?>
|
338 |
<p class="activate-trial-hint">
|
339 |
+
<?php _e('You use a paid subscription for the plugin updates. In case you don’t want to receive paid updates, please, click <a data-action="unsubscribe" class="wcl-control-btn" href="#">cancel subscription</a>', 'wbcr_factory_clearfy_237') ?>
|
340 |
</p>
|
341 |
<?php endif; ?>
|
342 |
|
343 |
<?php if( $this->get_license_type() == 'trial' ): ?>
|
344 |
<p class="activate-error-hint">
|
345 |
+
<?php printf(__('Your license has expired, please extend the license to get updates and support.', 'wbcr_factory_clearfy_237'), '') ?>
|
346 |
</p>
|
347 |
<?php endif; ?>
|
348 |
</div>
|
350 |
<tr>
|
351 |
<!--<td class="license-param license-param-domain">
|
352 |
<span class="license-value"><?php echo esc_attr($_SERVER['SERVER_NAME']); ?></span>
|
353 |
+
<span class="license-value-name"><?php _e('domain', 'wbcr_factory_clearfy_237') ?></span>
|
354 |
</td>-->
|
355 |
<td class="license-param license-param-days">
|
356 |
<span class="license-value"><?= $this->get_plan() ?></span>
|
357 |
+
<span class="license-value-name"><?php _e('plan', 'wbcr_factory_clearfy_237') ?></span>
|
358 |
</td>
|
359 |
<?php if( $this->is_premium ) : ?>
|
360 |
<td class="license-param license-param-sites">
|
361 |
<span class="license-value">
|
362 |
<?php echo esc_attr($this->premium_license->get_count_active_sites()); ?>
|
363 |
+
<?php _e('of', 'wbcr_factory_clearfy_237') ?>
|
364 |
<?php echo esc_attr($this->premium_license->get_sites_quota()); ?></span>
|
365 |
+
<span class="license-value-name"><?php _e('active sites', 'wbcr_factory_clearfy_237') ?></span>
|
366 |
</td>
|
367 |
<?php endif; ?>
|
368 |
<td class="license-param license-param-version">
|
372 |
<?php if( $this->is_premium ): ?>
|
373 |
<td class="license-param license-param-days">
|
374 |
<?php if( $this->get_license_type() == 'trial' ): ?>
|
375 |
+
<span class="license-value"><?php _e('EXPIRED!', 'wbcr_factory_clearfy_237') ?></span>
|
376 |
+
<span class="license-value-name"><?php _e('please update the key', 'wbcr_factory_clearfy_237') ?></span>
|
377 |
<?php else: ?>
|
378 |
<span class="license-value">
|
379 |
<?php
|
383 |
echo $this->get_expiration_days();
|
384 |
}
|
385 |
?>
|
386 |
+
<small> <?php _e('day(s)', 'wbcr_factory_clearfy_237') ?></small>
|
387 |
</span>
|
388 |
+
<span class="license-value-name"><?php _e('remained', 'wbcr_factory_clearfy_237') ?></span>
|
389 |
<?php endif; ?>
|
390 |
</td>
|
391 |
<?php endif; ?>
|
396 |
<div class="license-input">
|
397 |
<form action="" method="post">
|
398 |
<?php if($this->is_premium): ?>
|
399 |
+
<p><?php _e('Have a key to activate the premium version? Paste it here:', 'wbcr_factory_clearfy_237') ?><p>
|
400 |
<?php else: ?>
|
401 |
+
<p><?php _e('Have a key to activate the plugin? Paste it here:', 'wbcr_factory_clearfy_237') ?>
|
402 |
<p>
|
403 |
<?php endif; ?>
|
404 |
<button data-action="activate" class="btn btn-default wcl-control-btn" type="button"
|
405 |
id="license-submit">
|
406 |
+
<?php _e('Submit Key', 'wbcr_factory_clearfy_237') ?>
|
407 |
</button>
|
408 |
<div class="license-key-wrap">
|
409 |
<input type="text" id="license-key" name="licensekey" value="" class="form-control"/>
|
libs/factory/clearfy/pages/class-page-more-features.php
CHANGED
@@ -15,7 +15,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
15 |
}
|
16 |
|
17 |
|
18 |
-
class
|
19 |
|
20 |
/**
|
21 |
* {@inheritDoc}
|
@@ -60,8 +60,8 @@ class Wbcr_FactoryClearfy236_MoreFeaturesPage extends Wbcr_FactoryPages444_Impre
|
|
60 |
*/
|
61 |
public $internal = true;
|
62 |
|
63 |
-
public function __construct(
|
64 |
-
$this->menu_title = __( 'More features (<b>free</b>)', '
|
65 |
|
66 |
parent::__construct( $plugin );
|
67 |
|
@@ -74,7 +74,7 @@ class Wbcr_FactoryClearfy236_MoreFeaturesPage extends Wbcr_FactoryPages444_Impre
|
|
74 |
* @return string
|
75 |
*/
|
76 |
public function getPageTitle() {
|
77 |
-
return __( 'More features', '
|
78 |
}
|
79 |
|
80 |
/**
|
@@ -88,66 +88,66 @@ class Wbcr_FactoryClearfy236_MoreFeaturesPage extends Wbcr_FactoryPages444_Impre
|
|
88 |
<div class="col-sm-4">
|
89 |
<div class="wbcr-factory-feature-box">
|
90 |
<span class="dashicons dashicons-yes"></span>
|
91 |
-
<h3><?php _e( 'Code cleaning', '
|
92 |
-
<p><?php _e( 'Clears the source code of the page from unused code.', '
|
93 |
</div>
|
94 |
</div>
|
95 |
<div class="col-sm-4">
|
96 |
<div class="wbcr-factory-feature-box">
|
97 |
<span class="dashicons dashicons-chart-bar"></span>
|
98 |
-
<h3><?php _e( 'Improve SEO', '
|
99 |
-
<p><?php _e( 'Removes duplicate pages, closes external links, changes the headers of the server.', '
|
100 |
</div>
|
101 |
</div>
|
102 |
<div class="col-sm-4">
|
103 |
<div class="wbcr-factory-feature-box">
|
104 |
<span class="dashicons dashicons-shield-alt"></span>
|
105 |
-
<h3><?php _e( 'Site protection', '
|
106 |
-
<p><?php _e( 'Enables and disables features that improve the protection of your site.', '
|
107 |
</div>
|
108 |
</div>
|
109 |
<div class="col-sm-4">
|
110 |
<div class="wbcr-factory-feature-box">
|
111 |
<span class="dashicons dashicons-welcome-comments"></span>
|
112 |
-
<h3><?php _e( 'Disable comments', '
|
113 |
-
<p><?php _e( 'Disables comments on the entire site or on specific pages.', '
|
114 |
</div>
|
115 |
</div>
|
116 |
<div class="col-sm-4">
|
117 |
<div class="wbcr-factory-feature-box">
|
118 |
<span class="dashicons dashicons-update"></span>
|
119 |
-
<h3><?php _e( 'Manage updates', '
|
120 |
<p><?php _e( 'Enables or disables automatically updates for plugins, themes and core. It is also possible
|
121 |
-
to disable all updates.', '
|
122 |
</div>
|
123 |
</div>
|
124 |
<div class="col-sm-4">
|
125 |
<div class="wbcr-factory-feature-box">
|
126 |
<span class="dashicons dashicons-admin-plugins"></span>
|
127 |
-
<h3><?php _e( 'Manage widgets', '
|
128 |
-
<p><?php _e( 'Allows you to remove unused widgets.', '
|
129 |
</div>
|
130 |
</div>
|
131 |
<div class="col-sm-4">
|
132 |
<div class="wbcr-factory-feature-box">
|
133 |
<span class="dashicons dashicons-dashboard"></span>
|
134 |
-
<h3><?php _e( 'Speed Optimization', '
|
135 |
-
<p><?php _e( 'Increases performance by disabling unused functions and reducing the number of requests.', '
|
136 |
</div>
|
137 |
</div>
|
138 |
<div class="col-sm-4">
|
139 |
<div class="wbcr-factory-feature-box">
|
140 |
<span class="dashicons dashicons-visibility"></span>
|
141 |
-
<h3><?php _e( 'Site privacy', '
|
142 |
<p><?php _e( 'Allows you to hide the version of the site and plugins. Allows you to hide your
|
143 |
-
WordPress.', '
|
144 |
</div>
|
145 |
</div>
|
146 |
<div class="col-sm-4">
|
147 |
<div class="wbcr-factory-feature-box">
|
148 |
<span class="dashicons dashicons-admin-settings"></span>
|
149 |
-
<h3><?php _e( 'Easy setup', '
|
150 |
-
<p><?php _e( 'In quick mode, you can easily configure the plugin according to your needs.', '
|
151 |
</div>
|
152 |
</div>
|
153 |
</div>
|
@@ -161,7 +161,7 @@ class Wbcr_FactoryClearfy236_MoreFeaturesPage extends Wbcr_FactoryPages444_Impre
|
|
161 |
$url .= '?utm_source=wordpress.org&utm_campaign=' . $this->plugin->getPluginName();
|
162 |
?>
|
163 |
<a href="<?= $url ?>" class="wbcr-factory-premium-button" target="_blank">
|
164 |
-
<?php _e( 'Get the ultimate plugin 100% FREE', '
|
165 |
</a>
|
166 |
</div>
|
167 |
<?php
|
15 |
}
|
16 |
|
17 |
|
18 |
+
class Wbcr_FactoryClearfy237_MoreFeaturesPage extends Wbcr_FactoryPages445_ImpressiveThemplate {
|
19 |
|
20 |
/**
|
21 |
* {@inheritDoc}
|
60 |
*/
|
61 |
public $internal = true;
|
62 |
|
63 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
64 |
+
$this->menu_title = __( 'More features (<b>free</b>)', 'wbcr_factory_clearfy_237' );
|
65 |
|
66 |
parent::__construct( $plugin );
|
67 |
|
74 |
* @return string
|
75 |
*/
|
76 |
public function getPageTitle() {
|
77 |
+
return __( 'More features', 'wbcr_factory_clearfy_237' );
|
78 |
}
|
79 |
|
80 |
/**
|
88 |
<div class="col-sm-4">
|
89 |
<div class="wbcr-factory-feature-box">
|
90 |
<span class="dashicons dashicons-yes"></span>
|
91 |
+
<h3><?php _e( 'Code cleaning', 'wbcr_factory_clearfy_237' ) ?></h3>
|
92 |
+
<p><?php _e( 'Clears the source code of the page from unused code.', 'wbcr_factory_clearfy_237' ) ?></p>
|
93 |
</div>
|
94 |
</div>
|
95 |
<div class="col-sm-4">
|
96 |
<div class="wbcr-factory-feature-box">
|
97 |
<span class="dashicons dashicons-chart-bar"></span>
|
98 |
+
<h3><?php _e( 'Improve SEO', 'wbcr_factory_clearfy_237' ) ?></h3>
|
99 |
+
<p><?php _e( 'Removes duplicate pages, closes external links, changes the headers of the server.', 'wbcr_factory_clearfy_237' ) ?></p>
|
100 |
</div>
|
101 |
</div>
|
102 |
<div class="col-sm-4">
|
103 |
<div class="wbcr-factory-feature-box">
|
104 |
<span class="dashicons dashicons-shield-alt"></span>
|
105 |
+
<h3><?php _e( 'Site protection', 'wbcr_factory_clearfy_237' ) ?></h3>
|
106 |
+
<p><?php _e( 'Enables and disables features that improve the protection of your site.', 'wbcr_factory_clearfy_237' ) ?></p>
|
107 |
</div>
|
108 |
</div>
|
109 |
<div class="col-sm-4">
|
110 |
<div class="wbcr-factory-feature-box">
|
111 |
<span class="dashicons dashicons-welcome-comments"></span>
|
112 |
+
<h3><?php _e( 'Disable comments', 'wbcr_factory_clearfy_237' ) ?></h3>
|
113 |
+
<p><?php _e( 'Disables comments on the entire site or on specific pages.', 'wbcr_factory_clearfy_237' ) ?></p>
|
114 |
</div>
|
115 |
</div>
|
116 |
<div class="col-sm-4">
|
117 |
<div class="wbcr-factory-feature-box">
|
118 |
<span class="dashicons dashicons-update"></span>
|
119 |
+
<h3><?php _e( 'Manage updates', 'wbcr_factory_clearfy_237' ) ?></h3>
|
120 |
<p><?php _e( 'Enables or disables automatically updates for plugins, themes and core. It is also possible
|
121 |
+
to disable all updates.', 'wbcr_factory_clearfy_237' ) ?></p>
|
122 |
</div>
|
123 |
</div>
|
124 |
<div class="col-sm-4">
|
125 |
<div class="wbcr-factory-feature-box">
|
126 |
<span class="dashicons dashicons-admin-plugins"></span>
|
127 |
+
<h3><?php _e( 'Manage widgets', 'wbcr_factory_clearfy_237' ) ?></h3>
|
128 |
+
<p><?php _e( 'Allows you to remove unused widgets.', 'wbcr_factory_clearfy_237' ) ?></p>
|
129 |
</div>
|
130 |
</div>
|
131 |
<div class="col-sm-4">
|
132 |
<div class="wbcr-factory-feature-box">
|
133 |
<span class="dashicons dashicons-dashboard"></span>
|
134 |
+
<h3><?php _e( 'Speed Optimization', 'wbcr_factory_clearfy_237' ) ?></h3>
|
135 |
+
<p><?php _e( 'Increases performance by disabling unused functions and reducing the number of requests.', 'wbcr_factory_clearfy_237' ) ?></p>
|
136 |
</div>
|
137 |
</div>
|
138 |
<div class="col-sm-4">
|
139 |
<div class="wbcr-factory-feature-box">
|
140 |
<span class="dashicons dashicons-visibility"></span>
|
141 |
+
<h3><?php _e( 'Site privacy', 'wbcr_factory_clearfy_237' ) ?></h3>
|
142 |
<p><?php _e( 'Allows you to hide the version of the site and plugins. Allows you to hide your
|
143 |
+
WordPress.', 'wbcr_factory_clearfy_237' ) ?></p>
|
144 |
</div>
|
145 |
</div>
|
146 |
<div class="col-sm-4">
|
147 |
<div class="wbcr-factory-feature-box">
|
148 |
<span class="dashicons dashicons-admin-settings"></span>
|
149 |
+
<h3><?php _e( 'Easy setup', 'wbcr_factory_clearfy_237' ) ?></h3>
|
150 |
+
<p><?php _e( 'In quick mode, you can easily configure the plugin according to your needs.', 'wbcr_factory_clearfy_237' ) ?></p>
|
151 |
</div>
|
152 |
</div>
|
153 |
</div>
|
161 |
$url .= '?utm_source=wordpress.org&utm_campaign=' . $this->plugin->getPluginName();
|
162 |
?>
|
163 |
<a href="<?= $url ?>" class="wbcr-factory-premium-button" target="_blank">
|
164 |
+
<?php _e( 'Get the ultimate plugin 100% FREE', 'wbcr_factory_clearfy_237' ) ?>
|
165 |
</a>
|
166 |
</div>
|
167 |
<?php
|
libs/factory/clearfy/pages/class-page-setup.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
@@ -10,15 +10,15 @@ if( !defined('ABSPATH') ) {
|
|
10 |
/**
|
11 |
* Класс страницы, которая реализует функции мастера установки.
|
12 |
*
|
13 |
-
* Этот класс унаследован от стандартного шаблона страницы \
|
14 |
* поэтому все его инструменты могут быть применены и в этом классе. Но вы должны учитывать, что
|
15 |
* поведение экшенов страницы было изменено. В данной реализации экшены используется для пагинации шагов.
|
16 |
*
|
17 |
-
* @package WBCR\
|
18 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
19 |
* @since 2.2.2
|
20 |
*/
|
21 |
-
class Setup extends \
|
22 |
|
23 |
const DEFAULT_STEP = 'step0';
|
24 |
|
@@ -68,20 +68,20 @@ class Setup extends \Wbcr_FactoryPages444_ImpressiveThemplate {
|
|
68 |
private $steps = [];
|
69 |
|
70 |
/**
|
71 |
-
* @param \
|
72 |
*/
|
73 |
-
public function __construct(\
|
74 |
{
|
75 |
$this->id = 'setup';
|
76 |
|
77 |
-
$this->menu_title = __('Setup master', '
|
78 |
-
$this->page_menu_short_description = __('Setup master', '
|
79 |
parent::__construct($plugin);
|
80 |
}
|
81 |
|
82 |
public function getPageTitle()
|
83 |
{
|
84 |
-
return __('Setup', '
|
85 |
}
|
86 |
|
87 |
public function get_close_wizard_url()
|
@@ -135,18 +135,18 @@ class Setup extends \Wbcr_FactoryPages444_ImpressiveThemplate {
|
|
135 |
/**
|
136 |
* Requests assets (js and css) for the page.
|
137 |
*
|
138 |
-
* @param \
|
139 |
-
* @param \
|
140 |
*
|
141 |
* @return void
|
142 |
-
* @see
|
143 |
*
|
144 |
*/
|
145 |
public function assets($scripts, $styles)
|
146 |
{
|
147 |
parent::assets($scripts, $styles);
|
148 |
|
149 |
-
$this->styles->add(
|
150 |
|
151 |
// Require step assets
|
152 |
if( isset($_GET['action']) && false !== strpos($_GET['action'], 'step') && isset($this->steps[$_GET['action']]) ) {
|
@@ -163,8 +163,8 @@ class Setup extends \Wbcr_FactoryPages444_ImpressiveThemplate {
|
|
163 |
protected function showPage($content = null)
|
164 |
{
|
165 |
?>
|
166 |
-
<div class="w-factory-clearfy-
|
167 |
-
<ol class="w-factory-clearfy-
|
168 |
<?php foreach($this->steps as $step): ?>
|
169 |
<?php if( self::DEFAULT_STEP === $step->get_id() ) {
|
170 |
continue;
|
@@ -172,11 +172,11 @@ class Setup extends \Wbcr_FactoryPages444_ImpressiveThemplate {
|
|
172 |
<li <?php if($this->current_step === $step->get_id()): ?>class="active"<?php endif; ?>><?php echo $step->get_title(); ?></li>
|
173 |
<?php endforeach; ?>
|
174 |
</ol>
|
175 |
-
<div class="w-factory-clearfy-
|
176 |
<?php echo $content; ?>
|
177 |
</div>
|
178 |
-
<a class="w-factory-clearfy-
|
179 |
-
<?php _e('Not now', '
|
180 |
</a>
|
181 |
</div>
|
182 |
<?php
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\FactoryClearfy237\Pages;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
10 |
/**
|
11 |
* Класс страницы, которая реализует функции мастера установки.
|
12 |
*
|
13 |
+
* Этот класс унаследован от стандартного шаблона страницы \Wbcr_FactoryPages445_ImpressiveThemplate,
|
14 |
* поэтому все его инструменты могут быть применены и в этом классе. Но вы должны учитывать, что
|
15 |
* поведение экшенов страницы было изменено. В данной реализации экшены используется для пагинации шагов.
|
16 |
*
|
17 |
+
* @package WBCR\FactoryClearfy237\Pages
|
18 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
19 |
* @since 2.2.2
|
20 |
*/
|
21 |
+
class Setup extends \Wbcr_FactoryPages445_ImpressiveThemplate {
|
22 |
|
23 |
const DEFAULT_STEP = 'step0';
|
24 |
|
68 |
private $steps = [];
|
69 |
|
70 |
/**
|
71 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
72 |
*/
|
73 |
+
public function __construct(\Wbcr_Factory446_Plugin $plugin)
|
74 |
{
|
75 |
$this->id = 'setup';
|
76 |
|
77 |
+
$this->menu_title = __('Setup master', 'wbcr_factory_clearfy_237');
|
78 |
+
$this->page_menu_short_description = __('Setup master', 'wbcr_factory_clearfy_237');
|
79 |
parent::__construct($plugin);
|
80 |
}
|
81 |
|
82 |
public function getPageTitle()
|
83 |
{
|
84 |
+
return __('Setup', 'wbcr_factory_clearfy_237');
|
85 |
}
|
86 |
|
87 |
public function get_close_wizard_url()
|
135 |
/**
|
136 |
* Requests assets (js and css) for the page.
|
137 |
*
|
138 |
+
* @param \Wbcr_Factory446_ScriptList $scripts
|
139 |
+
* @param \Wbcr_Factory446_StyleList $styles
|
140 |
*
|
141 |
* @return void
|
142 |
+
* @see Wbcr_FactoryPages445_AdminPage
|
143 |
*
|
144 |
*/
|
145 |
public function assets($scripts, $styles)
|
146 |
{
|
147 |
parent::assets($scripts, $styles);
|
148 |
|
149 |
+
$this->styles->add(FACTORY_CLEARFY_237_URL . '/assets/css/page-setup.css');
|
150 |
|
151 |
// Require step assets
|
152 |
if( isset($_GET['action']) && false !== strpos($_GET['action'], 'step') && isset($this->steps[$_GET['action']]) ) {
|
163 |
protected function showPage($content = null)
|
164 |
{
|
165 |
?>
|
166 |
+
<div class="w-factory-clearfy-237-setup">
|
167 |
+
<ol class="w-factory-clearfy-237-setup-steps">
|
168 |
<?php foreach($this->steps as $step): ?>
|
169 |
<?php if( self::DEFAULT_STEP === $step->get_id() ) {
|
170 |
continue;
|
172 |
<li <?php if($this->current_step === $step->get_id()): ?>class="active"<?php endif; ?>><?php echo $step->get_title(); ?></li>
|
173 |
<?php endforeach; ?>
|
174 |
</ol>
|
175 |
+
<div class="w-factory-clearfy-237-setup-content">
|
176 |
<?php echo $content; ?>
|
177 |
</div>
|
178 |
+
<a class="w-factory-clearfy-237-setup-footer-links" href="<?php echo esc_url($this->get_close_wizard_url()); ?>">
|
179 |
+
<?php _e('Not now', 'wbcr_factory_clearfy_237') ?>
|
180 |
</a>
|
181 |
</div>
|
182 |
<?php
|
libs/factory/clearfy/pages/class-pages-components.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* This file is the add-ons page.
|
@@ -16,7 +16,7 @@ if( !defined('ABSPATH') ) {
|
|
16 |
exit;
|
17 |
}
|
18 |
|
19 |
-
class Components extends \
|
20 |
|
21 |
/**
|
22 |
* The id of the page in the admin menu.
|
@@ -24,7 +24,7 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
|
|
24 |
* Mainly used to navigate between pages.
|
25 |
*
|
26 |
* @since 1.0.0
|
27 |
-
* @see
|
28 |
*
|
29 |
* @var string
|
30 |
*/
|
@@ -41,12 +41,12 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
|
|
41 |
public $available_for_multisite = true;
|
42 |
|
43 |
/**
|
44 |
-
* @param \
|
45 |
*/
|
46 |
-
public function __construct(\
|
47 |
{
|
48 |
-
$this->menu_title = __('Components', '
|
49 |
-
$this->page_menu_short_description = __('More features for plugin', '
|
50 |
|
51 |
parent::__construct($plugin);
|
52 |
|
@@ -58,18 +58,18 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
|
|
58 |
*
|
59 |
* @return void
|
60 |
* @since 1.0.0
|
61 |
-
* @see
|
62 |
*
|
63 |
*/
|
64 |
public function assets($scripts, $styles)
|
65 |
{
|
66 |
parent::assets($scripts, $styles);
|
67 |
|
68 |
-
$this->styles->add(
|
69 |
|
70 |
/**
|
71 |
-
* @param \
|
72 |
-
* @param \
|
73 |
* @since 1.4.0
|
74 |
*
|
75 |
*/
|
@@ -80,10 +80,10 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
|
|
80 |
* We register notifications for some actions
|
81 |
*
|
82 |
* @param $notices
|
83 |
-
* @param \
|
84 |
*
|
85 |
* @return array
|
86 |
-
* @see libs\factory\pages\themplates\
|
87 |
*/
|
88 |
public function getActionNotices($notices)
|
89 |
{
|
@@ -92,7 +92,7 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
|
|
92 |
'wbcr-force-update-components-success' => 1
|
93 |
],
|
94 |
'type' => 'success',
|
95 |
-
'message' => __('Components have been successfully updated to the latest version.', '
|
96 |
];
|
97 |
|
98 |
$notices[] = [
|
@@ -100,7 +100,7 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
|
|
100 |
'wbcr-force-update-components-error' => 'inactive_licence'
|
101 |
],
|
102 |
'type' => 'danger',
|
103 |
-
'message' => __('To use premium components, you need activate a license!', '
|
104 |
];
|
105 |
|
106 |
$notices[] = [
|
@@ -173,12 +173,12 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
|
|
173 |
$components = apply_filters('wbcr/clearfy/components/items_list', $components);
|
174 |
|
175 |
?>
|
176 |
-
<div class="wbcr-factory-page-group-header"><?php _e('<strong>Plugin Components</strong>.', '
|
177 |
<p>
|
178 |
-
<?php _e('These are components of the plugin bundle. When you activate the plugin, all the components turned on by default. If you don’t need some function, you can easily turn it off on this page.', '
|
179 |
</p>
|
180 |
</div>
|
181 |
-
<div class="wbc-factory-clearfy-
|
182 |
<?php
|
183 |
/**
|
184 |
* @since 1.4.0
|
@@ -229,7 +229,7 @@ class Components extends \Wbcr_FactoryClearfy236_PageBase {
|
|
229 |
<div class="plugin-card-bottom">
|
230 |
<?php if( !(isset($component['disable_button']) && $component['disable_button']) ): ?>
|
231 |
<?php if( 'premium' === $component['build'] && !($this->plugin->premium->is_activate() && $this->plugin->premium->is_install_package()) ): ?>
|
232 |
-
<a target="_blank" href="<?php echo esc_url($component['url']) ?>" class="button button-default install-now"><?php _e('Read more', '
|
233 |
<?php else: ?>
|
234 |
<?php $delete_button->render_button(); ?><?php $install_button->render_button(); ?>
|
235 |
<?php endif; ?>
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\FactoryClearfy237\Pages;
|
4 |
|
5 |
/**
|
6 |
* This file is the add-ons page.
|
16 |
exit;
|
17 |
}
|
18 |
|
19 |
+
class Components extends \Wbcr_FactoryClearfy237_PageBase {
|
20 |
|
21 |
/**
|
22 |
* The id of the page in the admin menu.
|
24 |
* Mainly used to navigate between pages.
|
25 |
*
|
26 |
* @since 1.0.0
|
27 |
+
* @see FactoryPages445_AdminPage
|
28 |
*
|
29 |
* @var string
|
30 |
*/
|
41 |
public $available_for_multisite = true;
|
42 |
|
43 |
/**
|
44 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
45 |
*/
|
46 |
+
public function __construct(\Wbcr_Factory446_Plugin $plugin)
|
47 |
{
|
48 |
+
$this->menu_title = __('Components', 'wbcr_factory_clearfy_237');
|
49 |
+
$this->page_menu_short_description = __('More features for plugin', 'wbcr_factory_clearfy_237');
|
50 |
|
51 |
parent::__construct($plugin);
|
52 |
|
58 |
*
|
59 |
* @return void
|
60 |
* @since 1.0.0
|
61 |
+
* @see FactoryPages445_AdminPage
|
62 |
*
|
63 |
*/
|
64 |
public function assets($scripts, $styles)
|
65 |
{
|
66 |
parent::assets($scripts, $styles);
|
67 |
|
68 |
+
$this->styles->add(FACTORY_CLEARFY_237_URL . '/assets/css/components.css');
|
69 |
|
70 |
/**
|
71 |
+
* @param \Wbcr_Factory446_StyleList $styles
|
72 |
+
* @param \Wbcr_Factory446_ScriptList $scripts
|
73 |
* @since 1.4.0
|
74 |
*
|
75 |
*/
|
80 |
* We register notifications for some actions
|
81 |
*
|
82 |
* @param $notices
|
83 |
+
* @param \Wbcr_Factory446_Plugin $plugin
|
84 |
*
|
85 |
* @return array
|
86 |
+
* @see libs\factory\pages\themplates\FactoryPages445_ImpressiveThemplate
|
87 |
*/
|
88 |
public function getActionNotices($notices)
|
89 |
{
|
92 |
'wbcr-force-update-components-success' => 1
|
93 |
],
|
94 |
'type' => 'success',
|
95 |
+
'message' => __('Components have been successfully updated to the latest version.', 'wbcr_factory_clearfy_237')
|
96 |
];
|
97 |
|
98 |
$notices[] = [
|
100 |
'wbcr-force-update-components-error' => 'inactive_licence'
|
101 |
],
|
102 |
'type' => 'danger',
|
103 |
+
'message' => __('To use premium components, you need activate a license!', 'wbcr_factory_clearfy_237') . '<a href="admin.php?page=license-wbcr_clearfy" class="btn btn-gold">' . __('Activate license', 'wbcr_factory_clearfy_237') . '</a>'
|
104 |
];
|
105 |
|
106 |
$notices[] = [
|
173 |
$components = apply_filters('wbcr/clearfy/components/items_list', $components);
|
174 |
|
175 |
?>
|
176 |
+
<div class="wbcr-factory-page-group-header"><?php _e('<strong>Plugin Components</strong>.', 'wbcr_factory_clearfy_237') ?>
|
177 |
<p>
|
178 |
+
<?php _e('These are components of the plugin bundle. When you activate the plugin, all the components turned on by default. If you don’t need some function, you can easily turn it off on this page.', 'wbcr_factory_clearfy_237') ?>
|
179 |
</p>
|
180 |
</div>
|
181 |
+
<div class="wbc-factory-clearfy-237-components">
|
182 |
<?php
|
183 |
/**
|
184 |
* @since 1.4.0
|
229 |
<div class="plugin-card-bottom">
|
230 |
<?php if( !(isset($component['disable_button']) && $component['disable_button']) ): ?>
|
231 |
<?php if( 'premium' === $component['build'] && !($this->plugin->premium->is_activate() && $this->plugin->premium->is_install_package()) ): ?>
|
232 |
+
<a target="_blank" href="<?php echo esc_url($component['url']) ?>" class="button button-default install-now"><?php _e('Read more', 'wbcr_factory_clearfy_237'); ?></a>
|
233 |
<?php else: ?>
|
234 |
<?php $delete_button->render_button(); ?><?php $install_button->render_button(); ?>
|
235 |
<?php endif; ?>
|
libs/factory/clearfy/pages/class-pages.php
CHANGED
@@ -14,7 +14,7 @@ if( !defined('ABSPATH') ) {
|
|
14 |
}
|
15 |
|
16 |
/**
|
17 |
-
* Class
|
18 |
*
|
19 |
* @method string getInfoWidget() - get widget content information
|
20 |
* @method string getRatingWidget(array $args = []) - get widget content rating
|
@@ -23,7 +23,7 @@ if( !defined('ABSPATH') ) {
|
|
23 |
* @method string getBusinessSuggetionWidget()
|
24 |
* @method string getSupportWidget
|
25 |
*/
|
26 |
-
class
|
27 |
|
28 |
/**
|
29 |
* {@inheritDoc}
|
@@ -58,9 +58,9 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
58 |
public $show_search_options_form = true;
|
59 |
|
60 |
/**
|
61 |
-
* @param
|
62 |
*/
|
63 |
-
public function __construct(
|
64 |
{
|
65 |
parent::__construct($plugin);
|
66 |
|
@@ -101,18 +101,18 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
101 |
/**
|
102 |
* Requests assets (js and css) for the page.
|
103 |
*
|
104 |
-
* @param
|
105 |
-
* @param
|
106 |
*
|
107 |
* @return void
|
108 |
-
* @see
|
109 |
*
|
110 |
*/
|
111 |
public function assets($scripts, $styles)
|
112 |
{
|
113 |
parent::assets($scripts, $styles);
|
114 |
|
115 |
-
$this->styles->add(
|
116 |
|
117 |
// todo: вынести все общие скрипты и стили фреймворка, продумать совместимость с другими плагинами
|
118 |
if( defined('WCL_PLUGIN_URL') ) {
|
@@ -120,19 +120,19 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
120 |
}
|
121 |
|
122 |
if( !($this->plugin->has_premium() && $this->plugin->premium->is_active()) ) {
|
123 |
-
$this->scripts->add(
|
124 |
'jquery',
|
125 |
-
'wfactory-
|
126 |
-
'wbcr-factory-clearfy-
|
127 |
-
], 'wbcr-factory-clearfy-
|
128 |
}
|
129 |
|
130 |
// Script for search form on plugin options
|
131 |
if( $this->show_search_options_form && "options" === $this->type ) {
|
132 |
-
$this->styles->add(
|
133 |
|
134 |
-
$this->scripts->add(
|
135 |
-
$this->scripts->add(
|
136 |
}
|
137 |
|
138 |
/**
|
@@ -151,11 +151,11 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
151 |
*/
|
152 |
public function subsribe_widget_ajax_handler()
|
153 |
{
|
154 |
-
|
155 |
}
|
156 |
|
157 |
/**
|
158 |
-
* @return
|
159 |
*/
|
160 |
public function request()
|
161 |
{
|
@@ -254,7 +254,7 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
254 |
/**
|
255 |
* @since 4.0.9 - является устаревшим
|
256 |
*/
|
257 |
-
$widgets =
|
258 |
$widgets,
|
259 |
$position,
|
260 |
$this->plugin,
|
@@ -283,24 +283,24 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
283 |
$purchase_url = $this->plugin->get_support()->get_pricing_url(true, 'right_sidebar_ads');
|
284 |
|
285 |
$default_features = [
|
286 |
-
'4_premium' => __('4 premium components now;', '
|
287 |
-
'40_premium' => __('40 new premium components within a year for the single price;', '
|
288 |
-
'multisite_support' => __('Multisite support;', '
|
289 |
-
'advance_settings' => __('Advanced settings;', '
|
290 |
-
'no_ads' => __('No ads;', '
|
291 |
-
'perfect_support' => __('Perfect support.', '
|
292 |
];
|
293 |
|
294 |
/**
|
295 |
* @since 2.0.8 - added
|
296 |
*/
|
297 |
-
$suggetion_title = __('MORE IN CLEARFY <span>BUSINESS</span>', '
|
298 |
$suggetion_title = apply_filters('wbcr/clearfy/pages/suggetion_title', $suggetion_title, $plugin_name, $this->id);
|
299 |
|
300 |
/**
|
301 |
* @since 2.0.8 - deprecated
|
302 |
*/
|
303 |
-
$suggetion_features =
|
304 |
$default_features,
|
305 |
$this->plugin->getPluginName(),
|
306 |
$this->id
|
@@ -316,7 +316,7 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
316 |
$suggetion_features = $default_features;
|
317 |
}
|
318 |
?>
|
319 |
-
<div class="wbcr-factory-sidebar-widget wbcr-factory-clearfy-
|
320 |
<h3><?php echo $suggetion_title; ?></h3>
|
321 |
<ul>
|
322 |
<?php if( !empty($suggetion_features) ): ?>
|
@@ -327,7 +327,7 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
327 |
</ul>
|
328 |
<a href="<?php echo $purchase_url ?>" class="wbcr-factory-purchase-premium" target="_blank"
|
329 |
rel="noopener">
|
330 |
-
<?php printf(__('Upgrade for $%s', '
|
331 |
</a>
|
332 |
</div>
|
333 |
<?php
|
@@ -349,25 +349,25 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
349 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC"
|
350 |
alt=""/>
|
351 |
</span>
|
352 |
-
- <?php _e('A neutral setting that can not harm your site, but you must be sure that you need to use it.', '
|
353 |
</li>
|
354 |
<li>
|
355 |
<span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-grey">
|
356 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC"
|
357 |
alt=""/>
|
358 |
</span>
|
359 |
-
- <?php _e('When set this option, you must be careful. Plugins and themes may depend on this function. You must be sure that you can disable this feature for the site.', '
|
360 |
</li>
|
361 |
<li>
|
362 |
<span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-green">
|
363 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC"
|
364 |
alt=""/>
|
365 |
</span>
|
366 |
-
- <?php _e('Absolutely safe setting, We recommend to use.', '
|
367 |
</li>
|
368 |
</ul>
|
369 |
----------<br>
|
370 |
-
<p><?php _e('Hover to the icon to get help for the feature you selected.', '
|
371 |
</div>
|
372 |
<?php
|
373 |
}
|
@@ -389,19 +389,19 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
389 |
$page_url = $args[0];
|
390 |
}
|
391 |
|
392 |
-
$page_url = apply_filters('
|
393 |
|
394 |
?>
|
395 |
<div class="wbcr-factory-sidebar-widget">
|
396 |
<p>
|
397 |
-
<strong><?php _e('Do you want the plugin to improved and update?', '
|
398 |
</p>
|
399 |
-
<p><?php _e('Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', '
|
400 |
-
<p><?php _e('And also write your ideas on how to extend or improve the plugin.', '
|
401 |
<p>
|
402 |
<i class="wbcr-factory-icon-5stars"></i>
|
403 |
<a href="<?php echo $page_url; ?>" title="Go rate us" target="_blank">
|
404 |
-
<strong><?php _e('Go rate us and push ideas', '
|
405 |
</a>
|
406 |
</p>
|
407 |
</div>
|
@@ -419,7 +419,7 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
419 |
?>
|
420 |
<div class="wbcr-factory-sidebar-widget">
|
421 |
<p>
|
422 |
-
<strong><?php _e('Donation for plugin development', '
|
423 |
</p>
|
424 |
<?php if( get_locale() !== 'ru_RU' ): ?>
|
425 |
<form id="wbcr-factory-paypal-donation-form" action="https://www.paypal.com/cgi-bin/webscr"
|
@@ -427,7 +427,7 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
427 |
<input type="hidden" name="cmd" value="_s-xclick">
|
428 |
<input type="hidden" name="hosted_button_id" value="VDX7JNTQPNPFW">
|
429 |
<div class="wbcr-factory-donation-price">5$</div>
|
430 |
-
<input type="image" src="<?php echo
|
431 |
border="0" name="submit" alt="PayPal – The safer, easier way to pay online!">
|
432 |
</form>
|
433 |
<?php else: ?>
|
@@ -452,19 +452,19 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
452 |
|
453 |
?>
|
454 |
<div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
|
455 |
-
<p><strong><?php _e('Having Issues?', '
|
456 |
<div class="wbcr-clr-support-widget-body">
|
457 |
<p>
|
458 |
-
<?php _e('We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', '
|
459 |
</p>
|
460 |
<ul>
|
461 |
<li><span class="dashicons dashicons-sos"></span>
|
462 |
<a href="<?php echo $free_support_url; ?>" target="_blank"
|
463 |
-
rel="noopener"><?php _e('Get starting free support', '
|
464 |
</li>
|
465 |
<li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
|
466 |
<span class="dashicons dashicons-warning"></span>
|
467 |
-
<?php printf(__('If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', '
|
468 |
</li>
|
469 |
</ul>
|
470 |
</div>
|
@@ -479,27 +479,27 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
479 |
$terms = "https://cm-wp.com/?bizpanda=privacy-policy";
|
480 |
?>
|
481 |
<div id="wbcr-clr-subscribe-widget" class="wbcr-factory-sidebar-widget wbcr-factory-subscribe-widget">
|
482 |
-
<p><strong><?php _e('Subscribe to plugin’s newsletter', '
|
483 |
<div class="wbcr-clr-subscribe-widget-body">
|
484 |
|
485 |
<div class="wbcr-factory-subscribe-widget__message-contanier">
|
486 |
<div class="wbcr-factory-subscribe-widget__text wbcr-factory-subscribe-widget__text--success">
|
487 |
-
<?php _e("Thank you, you have successfully subscribed!", '
|
488 |
</div>
|
489 |
<div class="wbcr-factory-subscribe-widget__text wbcr-factory-subscribe-widget__text--success2">
|
490 |
-
<?php _e("Thank you for your subscription, a confirmation email has been sent to you. You need to confirm your subscription to complete this process.", '
|
491 |
</div>
|
492 |
</div>
|
493 |
|
494 |
<form id="wbcr-factory-subscribe-widget__subscribe-form" method="post" data-nonce="<?php echo wp_create_nonce('clearfy_subscribe_for_' . $this->plugin->getPluginName()) ?>">
|
495 |
-
<input id="wbcr-factory-subscribe-widget__email" class="wbcr-factory-subscribe-widget__field" type="email" name="email" placeholder="<?php _e('Enter your email address', '
|
496 |
<label class="wbcr-factory-subscribe-widget__checkbox-label">
|
497 |
<input class="wbcr-factory-subscribe-widget__checkbox" type="checkbox" name="agree_terms" required>
|
498 |
-
<?php echo sprintf(__("I confirm to subscribe to the CreativeMotion newsletter to receive the latest news. You can find how we use your information on our %s Privacy Policy %s", '
|
499 |
</label>
|
500 |
<input type="hidden" id="wbcr-factory-subscribe-widget__group-id" value="<?php echo esc_attr($group_id); ?>">
|
501 |
<input type="hidden" id="wbcr-factory-subscribe-widget__plugin-name" value="<?php echo esc_attr($this->plugin->getPluginName()); ?>">
|
502 |
-
<input type="submit" class="btn wbcr-factory-subscribe-widget__button" value="<?php _e('Subscribe', '
|
503 |
</form>
|
504 |
</div>
|
505 |
</div>
|
@@ -514,13 +514,13 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
514 |
*/
|
515 |
public function register_options_to_search()
|
516 |
{
|
517 |
-
require_once
|
518 |
|
519 |
$options = $this->getPageOptions();
|
520 |
$page_url = $this->getBaseUrl();
|
521 |
$page_id = $this->getResultId();
|
522 |
|
523 |
-
\WBCR\
|
524 |
}
|
525 |
|
526 |
/**
|
@@ -534,11 +534,11 @@ class Wbcr_FactoryClearfy236_PageBase extends Wbcr_FactoryPages444_ImpressiveThe
|
|
534 |
return;
|
535 |
}
|
536 |
?>
|
537 |
-
<div id="wbcr-factory-clearfy-
|
538 |
-
<label for="autocomplete" class="wbcr-factory-clearfy-
|
539 |
-
<?php _e('Can\'t find the settings you need? Use the search by the plugin options:', '
|
540 |
</label>
|
541 |
-
<input type="text" name="country" id="wbcr-factory-clearfy-
|
542 |
|
543 |
</div>
|
544 |
<?php
|
14 |
}
|
15 |
|
16 |
/**
|
17 |
+
* Class Wbcr_FactoryPages445_ImpressiveThemplate
|
18 |
*
|
19 |
* @method string getInfoWidget() - get widget content information
|
20 |
* @method string getRatingWidget(array $args = []) - get widget content rating
|
23 |
* @method string getBusinessSuggetionWidget()
|
24 |
* @method string getSupportWidget
|
25 |
*/
|
26 |
+
class Wbcr_FactoryClearfy237_PageBase extends Wbcr_FactoryPages445_ImpressiveThemplate {
|
27 |
|
28 |
/**
|
29 |
* {@inheritDoc}
|
58 |
public $show_search_options_form = true;
|
59 |
|
60 |
/**
|
61 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
62 |
*/
|
63 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin)
|
64 |
{
|
65 |
parent::__construct($plugin);
|
66 |
|
101 |
/**
|
102 |
* Requests assets (js and css) for the page.
|
103 |
*
|
104 |
+
* @param Wbcr_Factory446_ScriptList $scripts
|
105 |
+
* @param Wbcr_Factory446_StyleList $styles
|
106 |
*
|
107 |
* @return void
|
108 |
+
* @see Wbcr_FactoryPages445_AdminPage
|
109 |
*
|
110 |
*/
|
111 |
public function assets($scripts, $styles)
|
112 |
{
|
113 |
parent::assets($scripts, $styles);
|
114 |
|
115 |
+
$this->styles->add(FACTORY_CLEARFY_237_URL . '/assets/css/clearfy-base.css');
|
116 |
|
117 |
// todo: вынести все общие скрипты и стили фреймворка, продумать совместимость с другими плагинами
|
118 |
if( defined('WCL_PLUGIN_URL') ) {
|
120 |
}
|
121 |
|
122 |
if( !($this->plugin->has_premium() && $this->plugin->premium->is_active()) ) {
|
123 |
+
$this->scripts->add(FACTORY_CLEARFY_237_URL . '/assets/js/clearfy-widgets.js', [
|
124 |
'jquery',
|
125 |
+
'wfactory-446-core-general',
|
126 |
+
'wbcr-factory-clearfy-237-global'
|
127 |
+
], 'wbcr-factory-clearfy-237-widgets');
|
128 |
}
|
129 |
|
130 |
// Script for search form on plugin options
|
131 |
if( $this->show_search_options_form && "options" === $this->type ) {
|
132 |
+
$this->styles->add(FACTORY_CLEARFY_237_URL . '/assets/css/libs/autocomplete.css');
|
133 |
|
134 |
+
$this->scripts->add(FACTORY_CLEARFY_237_URL . '/assets/js/libs/jquery.autocomplete.min.js');
|
135 |
+
$this->scripts->add(FACTORY_CLEARFY_237_URL . '/assets/js/clearfy-search-options.js');
|
136 |
}
|
137 |
|
138 |
/**
|
151 |
*/
|
152 |
public function subsribe_widget_ajax_handler()
|
153 |
{
|
154 |
+
wbcr_factory_clearfy_237_subscribe($this->plugin);
|
155 |
}
|
156 |
|
157 |
/**
|
158 |
+
* @return Wbcr_Factory446_Request
|
159 |
*/
|
160 |
public function request()
|
161 |
{
|
254 |
/**
|
255 |
* @since 4.0.9 - является устаревшим
|
256 |
*/
|
257 |
+
$widgets = wbcr_factory_446_apply_filters_deprecated('wbcr_factory_pages_445_imppage_get_widgets', [
|
258 |
$widgets,
|
259 |
$position,
|
260 |
$this->plugin,
|
283 |
$purchase_url = $this->plugin->get_support()->get_pricing_url(true, 'right_sidebar_ads');
|
284 |
|
285 |
$default_features = [
|
286 |
+
'4_premium' => __('4 premium components now;', 'wbcr_factory_clearfy_237'),
|
287 |
+
'40_premium' => __('40 new premium components within a year for the single price;', 'wbcr_factory_clearfy_237'),
|
288 |
+
'multisite_support' => __('Multisite support;', 'wbcr_factory_clearfy_237'),
|
289 |
+
'advance_settings' => __('Advanced settings;', 'wbcr_factory_clearfy_237'),
|
290 |
+
'no_ads' => __('No ads;', 'wbcr_factory_clearfy_237'),
|
291 |
+
'perfect_support' => __('Perfect support.', 'wbcr_factory_clearfy_237')
|
292 |
];
|
293 |
|
294 |
/**
|
295 |
* @since 2.0.8 - added
|
296 |
*/
|
297 |
+
$suggetion_title = __('MORE IN CLEARFY <span>BUSINESS</span>', 'wbcr_factory_clearfy_237');
|
298 |
$suggetion_title = apply_filters('wbcr/clearfy/pages/suggetion_title', $suggetion_title, $plugin_name, $this->id);
|
299 |
|
300 |
/**
|
301 |
* @since 2.0.8 - deprecated
|
302 |
*/
|
303 |
+
$suggetion_features = wbcr_factory_446_apply_filters_deprecated('wbcr/clearfy/page_bussines_suggetion_features', [
|
304 |
$default_features,
|
305 |
$this->plugin->getPluginName(),
|
306 |
$this->id
|
316 |
$suggetion_features = $default_features;
|
317 |
}
|
318 |
?>
|
319 |
+
<div class="wbcr-factory-sidebar-widget wbcr-factory-clearfy-237-pro-suggettion">
|
320 |
<h3><?php echo $suggetion_title; ?></h3>
|
321 |
<ul>
|
322 |
<?php if( !empty($suggetion_features) ): ?>
|
327 |
</ul>
|
328 |
<a href="<?php echo $purchase_url ?>" class="wbcr-factory-purchase-premium" target="_blank"
|
329 |
rel="noopener">
|
330 |
+
<?php printf(__('Upgrade for $%s', 'wbcr_factory_clearfy_237'), $upgrade_price) ?>
|
331 |
</a>
|
332 |
</div>
|
333 |
<?php
|
349 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC"
|
350 |
alt=""/>
|
351 |
</span>
|
352 |
+
- <?php _e('A neutral setting that can not harm your site, but you must be sure that you need to use it.', 'wbcr_factory_clearfy_237'); ?>
|
353 |
</li>
|
354 |
<li>
|
355 |
<span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-grey">
|
356 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC"
|
357 |
alt=""/>
|
358 |
</span>
|
359 |
+
- <?php _e('When set this option, you must be careful. Plugins and themes may depend on this function. You must be sure that you can disable this feature for the site.', 'wbcr_factory_clearfy_237'); ?>
|
360 |
</li>
|
361 |
<li>
|
362 |
<span class="wbcr-factory-hint-icon-simple wbcr-factory-simple-green">
|
363 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC"
|
364 |
alt=""/>
|
365 |
</span>
|
366 |
+
- <?php _e('Absolutely safe setting, We recommend to use.', 'wbcr_factory_clearfy_237'); ?>
|
367 |
</li>
|
368 |
</ul>
|
369 |
----------<br>
|
370 |
+
<p><?php _e('Hover to the icon to get help for the feature you selected.', 'wbcr_factory_clearfy_237'); ?></p>
|
371 |
</div>
|
372 |
<?php
|
373 |
}
|
389 |
$page_url = $args[0];
|
390 |
}
|
391 |
|
392 |
+
$page_url = apply_filters('wbcr_factory_pages_445_imppage_rating_widget_url', $page_url, $this->plugin->getPluginName(), $this->getResultId());
|
393 |
|
394 |
?>
|
395 |
<div class="wbcr-factory-sidebar-widget">
|
396 |
<p>
|
397 |
+
<strong><?php _e('Do you want the plugin to improved and update?', 'wbcr_factory_clearfy_237'); ?></strong>
|
398 |
</p>
|
399 |
+
<p><?php _e('Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', 'wbcr_factory_clearfy_237'); ?></p>
|
400 |
+
<p><?php _e('And also write your ideas on how to extend or improve the plugin.', 'wbcr_factory_clearfy_237'); ?></p>
|
401 |
<p>
|
402 |
<i class="wbcr-factory-icon-5stars"></i>
|
403 |
<a href="<?php echo $page_url; ?>" title="Go rate us" target="_blank">
|
404 |
+
<strong><?php _e('Go rate us and push ideas', 'wbcr_factory_clearfy_237'); ?></strong>
|
405 |
</a>
|
406 |
</p>
|
407 |
</div>
|
419 |
?>
|
420 |
<div class="wbcr-factory-sidebar-widget">
|
421 |
<p>
|
422 |
+
<strong><?php _e('Donation for plugin development', 'wbcr_factory_clearfy_237'); ?></strong>
|
423 |
</p>
|
424 |
<?php if( get_locale() !== 'ru_RU' ): ?>
|
425 |
<form id="wbcr-factory-paypal-donation-form" action="https://www.paypal.com/cgi-bin/webscr"
|
427 |
<input type="hidden" name="cmd" value="_s-xclick">
|
428 |
<input type="hidden" name="hosted_button_id" value="VDX7JNTQPNPFW">
|
429 |
<div class="wbcr-factory-donation-price">5$</div>
|
430 |
+
<input type="image" src="<?php echo FACTORY_PAGES_445_URL ?>/templates/assets/img/paypal-donate.png"
|
431 |
border="0" name="submit" alt="PayPal – The safer, easier way to pay online!">
|
432 |
</form>
|
433 |
<?php else: ?>
|
452 |
|
453 |
?>
|
454 |
<div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
|
455 |
+
<p><strong><?php _e('Having Issues?', 'wbcr_factory_clearfy_237'); ?></strong></p>
|
456 |
<div class="wbcr-clr-support-widget-body">
|
457 |
<p>
|
458 |
+
<?php _e('We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', 'wbcr_factory_clearfy_237'); ?>
|
459 |
</p>
|
460 |
<ul>
|
461 |
<li><span class="dashicons dashicons-sos"></span>
|
462 |
<a href="<?php echo $free_support_url; ?>" target="_blank"
|
463 |
+
rel="noopener"><?php _e('Get starting free support', 'wbcr_factory_clearfy_237'); ?></a>
|
464 |
</li>
|
465 |
<li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
|
466 |
<span class="dashicons dashicons-warning"></span>
|
467 |
+
<?php printf(__('If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', 'wbcr_factory_clearfy_237'), $hot_support_url); ?>
|
468 |
</li>
|
469 |
</ul>
|
470 |
</div>
|
479 |
$terms = "https://cm-wp.com/?bizpanda=privacy-policy";
|
480 |
?>
|
481 |
<div id="wbcr-clr-subscribe-widget" class="wbcr-factory-sidebar-widget wbcr-factory-subscribe-widget">
|
482 |
+
<p><strong><?php _e('Subscribe to plugin’s newsletter', 'wbcr_factory_clearfy_237'); ?></strong></p>
|
483 |
<div class="wbcr-clr-subscribe-widget-body">
|
484 |
|
485 |
<div class="wbcr-factory-subscribe-widget__message-contanier">
|
486 |
<div class="wbcr-factory-subscribe-widget__text wbcr-factory-subscribe-widget__text--success">
|
487 |
+
<?php _e("Thank you, you have successfully subscribed!", 'wbcr_factory_clearfy_237') ?>
|
488 |
</div>
|
489 |
<div class="wbcr-factory-subscribe-widget__text wbcr-factory-subscribe-widget__text--success2">
|
490 |
+
<?php _e("Thank you for your subscription, a confirmation email has been sent to you. You need to confirm your subscription to complete this process.", 'wbcr_factory_clearfy_237'); ?>
|
491 |
</div>
|
492 |
</div>
|
493 |
|
494 |
<form id="wbcr-factory-subscribe-widget__subscribe-form" method="post" data-nonce="<?php echo wp_create_nonce('clearfy_subscribe_for_' . $this->plugin->getPluginName()) ?>">
|
495 |
+
<input id="wbcr-factory-subscribe-widget__email" class="wbcr-factory-subscribe-widget__field" type="email" name="email" placeholder="<?php _e('Enter your email address', 'wbcr_factory_clearfy_237'); ?>" required>
|
496 |
<label class="wbcr-factory-subscribe-widget__checkbox-label">
|
497 |
<input class="wbcr-factory-subscribe-widget__checkbox" type="checkbox" name="agree_terms" required>
|
498 |
+
<?php echo sprintf(__("I confirm to subscribe to the CreativeMotion newsletter to receive the latest news. You can find how we use your information on our %s Privacy Policy %s", 'wbcr_factory_clearfy_237'), '<a href="' . $terms . '" target="_blank">', '</a>'); ?>
|
499 |
</label>
|
500 |
<input type="hidden" id="wbcr-factory-subscribe-widget__group-id" value="<?php echo esc_attr($group_id); ?>">
|
501 |
<input type="hidden" id="wbcr-factory-subscribe-widget__plugin-name" value="<?php echo esc_attr($this->plugin->getPluginName()); ?>">
|
502 |
+
<input type="submit" class="btn wbcr-factory-subscribe-widget__button" value="<?php _e('Subscribe', 'wbcr_factory_clearfy_237'); ?>">
|
503 |
</form>
|
504 |
</div>
|
505 |
</div>
|
514 |
*/
|
515 |
public function register_options_to_search()
|
516 |
{
|
517 |
+
require_once FACTORY_CLEARFY_237_DIR . '/includes/class-search-options.php';
|
518 |
|
519 |
$options = $this->getPageOptions();
|
520 |
$page_url = $this->getBaseUrl();
|
521 |
$page_id = $this->getResultId();
|
522 |
|
523 |
+
\WBCR\Factory_Clearfy_237\Search_Options::register_options($options, $page_url, $page_id);
|
524 |
}
|
525 |
|
526 |
/**
|
534 |
return;
|
535 |
}
|
536 |
?>
|
537 |
+
<div id="wbcr-factory-clearfy-237__search_options_form" class="wbcr-factory-clearfy-237__autocomplete-wrap">
|
538 |
+
<label for="autocomplete" class="wbcr-factory-clearfy-237__autocomplete-label">
|
539 |
+
<?php _e('Can\'t find the settings you need? Use the search by the plugin options:', 'wbcr_factory_clearfy_237'); ?>
|
540 |
</label>
|
541 |
+
<input type="text" name="country" id="wbcr-factory-clearfy-237__autocomplete"/>
|
542 |
|
543 |
</div>
|
544 |
<?php
|
libs/factory/clearfy/pages/setup-parts/class-step-custom.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* Step
|
@@ -18,10 +18,10 @@ class Step_Custom extends Step {
|
|
18 |
public function render_button($continue = true, $skip = false, $custom_title = null, $align = 'right')
|
19 |
{
|
20 |
$this->set_button_handler();
|
21 |
-
$button_title = !empty($custom_title) ? $custom_title : __('Continue', '
|
22 |
|
23 |
if( !$this->get_next_id() ) {
|
24 |
-
$button_title = __('Finish', '
|
25 |
}
|
26 |
|
27 |
if( !in_array($align, ['center', 'left', 'right']) ) {
|
@@ -29,13 +29,13 @@ class Step_Custom extends Step {
|
|
29 |
}
|
30 |
|
31 |
?>
|
32 |
-
<form method="post" id="w-factory-clearfy-
|
33 |
-
<div class="w-factory-clearfy-
|
34 |
<?php if( $skip ): ?>
|
35 |
-
<input type="submit" name="skip_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-clearfy-
|
36 |
<?php endif; ?>
|
37 |
<?php if( $continue ): ?>
|
38 |
-
<input type="submit" name="continue_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-clearfy-
|
39 |
<?php endif; ?>
|
40 |
</div>
|
41 |
</form>
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\FactoryClearfy237\Pages;
|
4 |
|
5 |
/**
|
6 |
* Step
|
18 |
public function render_button($continue = true, $skip = false, $custom_title = null, $align = 'right')
|
19 |
{
|
20 |
$this->set_button_handler();
|
21 |
+
$button_title = !empty($custom_title) ? $custom_title : __('Continue', 'wbcr_factory_clearfy_237');
|
22 |
|
23 |
if( !$this->get_next_id() ) {
|
24 |
+
$button_title = __('Finish', 'wbcr_factory_clearfy_237');
|
25 |
}
|
26 |
|
27 |
if( !in_array($align, ['center', 'left', 'right']) ) {
|
29 |
}
|
30 |
|
31 |
?>
|
32 |
+
<form method="post" id="w-factory-clearfy-237__setup-form-<?php echo $this->get_id() ?>" class="form-horizontal">
|
33 |
+
<div class="w-factory-clearfy-237__form-buttons" style="text-align: <?php echo esc_attr($align); ?>">
|
34 |
<?php if( $skip ): ?>
|
35 |
+
<input type="submit" name="skip_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-clearfy-237__skip-button" value="<?php _e('Skip', 'wbcr_factory_clearfy_237') ?>">
|
36 |
<?php endif; ?>
|
37 |
<?php if( $continue ): ?>
|
38 |
+
<input type="submit" name="continue_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-clearfy-237__continue-button" value="<?php echo $button_title; ?>">
|
39 |
<?php endif; ?>
|
40 |
</div>
|
41 |
</form>
|
libs/factory/clearfy/pages/setup-parts/class-step-form.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* Step
|
@@ -10,7 +10,7 @@ namespace WBCR\FactoryClearfy236\Pages;
|
|
10 |
*/
|
11 |
class Step_Form extends Step {
|
12 |
|
13 |
-
public function __construct(\WBCR\
|
14 |
{
|
15 |
parent::__construct($page);
|
16 |
}
|
@@ -33,12 +33,12 @@ class Step_Form extends Step {
|
|
33 |
protected function instance_form($options)
|
34 |
{
|
35 |
|
36 |
-
$form = new \
|
37 |
'scope' => rtrim($this->plugin->getPrefix(), '_'),
|
38 |
'name' => $this->page->getResultId() . "-options-" . $this->get_id()
|
39 |
], $this->plugin);
|
40 |
|
41 |
-
$form->setProvider(new \
|
42 |
|
43 |
$form_options = [];
|
44 |
|
@@ -83,20 +83,20 @@ class Step_Form extends Step {
|
|
83 |
return $form;
|
84 |
}
|
85 |
|
86 |
-
protected function render_form(\
|
87 |
{
|
88 |
?>
|
89 |
-
<form method="post" id="w-factory-clearfy-
|
90 |
<?php $form->html(); ?>
|
91 |
-
<div class="w-factory-clearfy-
|
92 |
-
<!--<input type="submit" name="skip_button_<?php /*echo $this->get_id() */ ?>" class="button-primary button button-large w-factory-clearfy-
|
93 |
-
<input type="submit" name="continue_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-clearfy-
|
94 |
</div>
|
95 |
</form>
|
96 |
<?php
|
97 |
}
|
98 |
|
99 |
-
protected function set_form_handler(\
|
100 |
{
|
101 |
if( isset($_POST['continue_button_' . $this->get_id()]) ) {
|
102 |
$form->save();
|
@@ -121,8 +121,8 @@ class Step_Form extends Step {
|
|
121 |
$form = $this->instance_form($this->get_form_options());
|
122 |
?>
|
123 |
<div id="WBCR" class="wrap">
|
124 |
-
<div class="wbcr-factory-pages-
|
125 |
-
<div class="w-factory-clearfy-
|
126 |
<h3><?php echo $this->get_title(); ?></h3>
|
127 |
<p style="text-align: left;"><?php echo $this->get_form_description(); ?></p>
|
128 |
</div>
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\FactoryClearfy237\Pages;
|
4 |
|
5 |
/**
|
6 |
* Step
|
10 |
*/
|
11 |
class Step_Form extends Step {
|
12 |
|
13 |
+
public function __construct(\WBCR\FactoryClearfy237\Pages\Setup $page)
|
14 |
{
|
15 |
parent::__construct($page);
|
16 |
}
|
33 |
protected function instance_form($options)
|
34 |
{
|
35 |
|
36 |
+
$form = new \Wbcr_FactoryForms443_Form([
|
37 |
'scope' => rtrim($this->plugin->getPrefix(), '_'),
|
38 |
'name' => $this->page->getResultId() . "-options-" . $this->get_id()
|
39 |
], $this->plugin);
|
40 |
|
41 |
+
$form->setProvider(new \Wbcr_FactoryForms443_OptionsValueProvider($this->plugin));
|
42 |
|
43 |
$form_options = [];
|
44 |
|
83 |
return $form;
|
84 |
}
|
85 |
|
86 |
+
protected function render_form(\Wbcr_FactoryForms443_Form $form)
|
87 |
{
|
88 |
?>
|
89 |
+
<form method="post" id="w-factory-clearfy-237__setup-form-<?php echo $this->get_id() ?>" class="w-factory-clearfy-237__setup-form form-horizontal">
|
90 |
<?php $form->html(); ?>
|
91 |
+
<div class="w-factory-clearfy-237__form-buttons">
|
92 |
+
<!--<input type="submit" name="skip_button_<?php /*echo $this->get_id() */ ?>" class="button-primary button button-large w-factory-clearfy-237__skip-button" value="<?php /*_e('Skip', 'wbcr_factory_clearfy_237') */ ?>">-->
|
93 |
+
<input type="submit" name="continue_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-clearfy-237__continue-button" value="<?php _e('Continue', 'wbcr_factory_clearfy_237') ?>">
|
94 |
</div>
|
95 |
</form>
|
96 |
<?php
|
97 |
}
|
98 |
|
99 |
+
protected function set_form_handler(\Wbcr_FactoryForms443_Form $form)
|
100 |
{
|
101 |
if( isset($_POST['continue_button_' . $this->get_id()]) ) {
|
102 |
$form->save();
|
121 |
$form = $this->instance_form($this->get_form_options());
|
122 |
?>
|
123 |
<div id="WBCR" class="wrap">
|
124 |
+
<div class="wbcr-factory-pages-445-impressive-page-template factory-bootstrap-446 factory-fontawesome-000">
|
125 |
+
<div class="w-factory-clearfy-237-setup__inner-wrap">
|
126 |
<h3><?php echo $this->get_title(); ?></h3>
|
127 |
<p style="text-align: left;"><?php echo $this->get_form_description(); ?></p>
|
128 |
</div>
|
libs/factory/clearfy/pages/setup-parts/class-step.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* Step
|
@@ -16,16 +16,16 @@ abstract class Step {
|
|
16 |
protected $next_id = false;
|
17 |
|
18 |
/**
|
19 |
-
* @var \WBCR\
|
20 |
*/
|
21 |
protected $page;
|
22 |
|
23 |
/**
|
24 |
-
* @var \
|
25 |
*/
|
26 |
protected $plugin;
|
27 |
|
28 |
-
public function __construct(\WBCR\
|
29 |
{
|
30 |
$this->page = $page;
|
31 |
$this->plugin = $page->plugin;
|
@@ -51,7 +51,7 @@ abstract class Step {
|
|
51 |
*
|
52 |
* @return void
|
53 |
* @since 1.0.0
|
54 |
-
* @see
|
55 |
*
|
56 |
*/
|
57 |
public function assets($scripts, $styles)
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\FactoryClearfy237\Pages;
|
4 |
|
5 |
/**
|
6 |
* Step
|
16 |
protected $next_id = false;
|
17 |
|
18 |
/**
|
19 |
+
* @var \WBCR\FactoryClearfy237\Pages\Setup
|
20 |
*/
|
21 |
protected $page;
|
22 |
|
23 |
/**
|
24 |
+
* @var \Wbcr_Factory446_Plugin
|
25 |
*/
|
26 |
protected $plugin;
|
27 |
|
28 |
+
public function __construct(\WBCR\FactoryClearfy237\Pages\Setup $page)
|
29 |
{
|
30 |
$this->page = $page;
|
31 |
$this->plugin = $page->plugin;
|
51 |
*
|
52 |
* @return void
|
53 |
* @since 1.0.0
|
54 |
+
* @see FactoryPages445_AdminPage
|
55 |
*
|
56 |
*/
|
57 |
public function assets($scripts, $styles)
|
libs/factory/core/ajax/install-addons.php
CHANGED
@@ -15,7 +15,7 @@ if( !defined('ABSPATH') ) {
|
|
15 |
/**
|
16 |
* This action allows you to process Ajax requests to activate external components Clearfy
|
17 |
*/
|
18 |
-
function
|
19 |
{
|
20 |
check_ajax_referer('updates');
|
21 |
|
@@ -24,11 +24,11 @@ function wfactory_445_install_components($plugin_instance)
|
|
24 |
$storage = $plugin_instance->request->post('storage', null, true);
|
25 |
|
26 |
if( !current_user_can('update_plugins') ) {
|
27 |
-
wp_die(__('You don\'t have enough capability to edit this information.', '
|
28 |
}
|
29 |
|
30 |
if( empty($slug) || empty($action) ) {
|
31 |
-
wp_send_json_error(['error_message' => __('Required attributes are not passed or empty.', '
|
32 |
}
|
33 |
$success = false;
|
34 |
$send_data = [];
|
@@ -44,7 +44,7 @@ function wfactory_445_install_components($plugin_instance)
|
|
44 |
$success = true;
|
45 |
}
|
46 |
} else {
|
47 |
-
wp_send_json_error(['error_message' => __('You are trying to perform an invalid action.', '
|
48 |
}
|
49 |
} else if( $storage == 'wordpress' || $storage == 'creativemotion' ) {
|
50 |
if( !empty($slug) ) {
|
@@ -80,7 +80,7 @@ function wfactory_445_install_components($plugin_instance)
|
|
80 |
/*if ( $action == 'deactivate' ) {
|
81 |
$is_need_rewrite_rules = $plugin_instance->getPopulateOption( 'need_rewrite_rules' );
|
82 |
if ( $is_need_rewrite_rules ) {
|
83 |
-
$send_data['need_rewrite_rules'] = sprintf( '<span class="wbcr-clr-need-rewrite-rules-message">' . __( 'When you deactivate some components, permanent links may work incorrectly. If this happens, please, <a href="%s">update the permalinks</a>, so you could complete the deactivation.', '
|
84 |
}
|
85 |
}*/
|
86 |
|
@@ -94,7 +94,7 @@ function wfactory_445_install_components($plugin_instance)
|
|
94 |
wp_send_json_success($send_data);
|
95 |
}
|
96 |
|
97 |
-
wp_send_json_error(['error_message' => __('An unknown error occurred during the activation of the component.', '
|
98 |
}
|
99 |
|
100 |
/**
|
@@ -102,18 +102,18 @@ function wfactory_445_install_components($plugin_instance)
|
|
102 |
* to get the component to work. Usually this is a call to the installation functions,
|
103 |
* but in some cases, overwriting permanent references or compatibility checks.
|
104 |
*/
|
105 |
-
function
|
106 |
{
|
107 |
check_ajax_referer('updates');
|
108 |
|
109 |
$component_name = $plugin_instance->request->post('plugin', null, true);
|
110 |
|
111 |
if( !current_user_can('update_plugins') ) {
|
112 |
-
wp_send_json_error(['error_message' => __('You don\'t have enough capability to edit this information.', '
|
113 |
}
|
114 |
|
115 |
if( empty($component_name) ) {
|
116 |
-
wp_send_json_error(['error_message' => __('Required attribute [component_name] is empty.', '
|
117 |
}
|
118 |
// todo: для совместимости с плагином Clearfy
|
119 |
if( "wbcr_clearfy" === $plugin_instance->getPluginName() ) {
|
@@ -133,7 +133,7 @@ function wfactory_445_prepare_component($plugin_instance)
|
|
133 |
*
|
134 |
* @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
|
135 |
*/
|
136 |
-
function
|
137 |
{
|
138 |
check_ajax_referer('updates');
|
139 |
|
15 |
/**
|
16 |
* This action allows you to process Ajax requests to activate external components Clearfy
|
17 |
*/
|
18 |
+
function wfactory_446_install_components($plugin_instance)
|
19 |
{
|
20 |
check_ajax_referer('updates');
|
21 |
|
24 |
$storage = $plugin_instance->request->post('storage', null, true);
|
25 |
|
26 |
if( !current_user_can('update_plugins') ) {
|
27 |
+
wp_die(__('You don\'t have enough capability to edit this information.', 'wbcr_factory_446'), __('Something went wrong.'), 403);
|
28 |
}
|
29 |
|
30 |
if( empty($slug) || empty($action) ) {
|
31 |
+
wp_send_json_error(['error_message' => __('Required attributes are not passed or empty.', 'wbcr_factory_446')]);
|
32 |
}
|
33 |
$success = false;
|
34 |
$send_data = [];
|
44 |
$success = true;
|
45 |
}
|
46 |
} else {
|
47 |
+
wp_send_json_error(['error_message' => __('You are trying to perform an invalid action.', 'wbcr_factory_446')]);
|
48 |
}
|
49 |
} else if( $storage == 'wordpress' || $storage == 'creativemotion' ) {
|
50 |
if( !empty($slug) ) {
|
80 |
/*if ( $action == 'deactivate' ) {
|
81 |
$is_need_rewrite_rules = $plugin_instance->getPopulateOption( 'need_rewrite_rules' );
|
82 |
if ( $is_need_rewrite_rules ) {
|
83 |
+
$send_data['need_rewrite_rules'] = sprintf( '<span class="wbcr-clr-need-rewrite-rules-message">' . __( 'When you deactivate some components, permanent links may work incorrectly. If this happens, please, <a href="%s">update the permalinks</a>, so you could complete the deactivation.', 'wbcr_factory_446' ), admin_url( 'options-permalink.php' ) . '</span>' );
|
84 |
}
|
85 |
}*/
|
86 |
|
94 |
wp_send_json_success($send_data);
|
95 |
}
|
96 |
|
97 |
+
wp_send_json_error(['error_message' => __('An unknown error occurred during the activation of the component.', 'wbcr_factory_446')]);
|
98 |
}
|
99 |
|
100 |
/**
|
102 |
* to get the component to work. Usually this is a call to the installation functions,
|
103 |
* but in some cases, overwriting permanent references or compatibility checks.
|
104 |
*/
|
105 |
+
function wfactory_446_prepare_component($plugin_instance)
|
106 |
{
|
107 |
check_ajax_referer('updates');
|
108 |
|
109 |
$component_name = $plugin_instance->request->post('plugin', null, true);
|
110 |
|
111 |
if( !current_user_can('update_plugins') ) {
|
112 |
+
wp_send_json_error(['error_message' => __('You don\'t have enough capability to edit this information.', 'wbcr_factory_446')], 403);
|
113 |
}
|
114 |
|
115 |
if( empty($component_name) ) {
|
116 |
+
wp_send_json_error(['error_message' => __('Required attribute [component_name] is empty.', 'wbcr_factory_446')]);
|
117 |
}
|
118 |
// todo: для совместимости с плагином Clearfy
|
119 |
if( "wbcr_clearfy" === $plugin_instance->getPluginName() ) {
|
133 |
*
|
134 |
* @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
|
135 |
*/
|
136 |
+
function wfactory_446_creativemotion_install_plugin($plugin_instance)
|
137 |
{
|
138 |
check_ajax_referer('updates');
|
139 |
|
libs/factory/core/assets/js/core-components.js
CHANGED
@@ -20,7 +20,7 @@
|
|
20 |
* This event is intended for installation, removal, activation, deactivation of external add-ons
|
21 |
*/
|
22 |
|
23 |
-
$(document).on('click', '.wfactory-
|
24 |
var $this = $(this),
|
25 |
button_i18n = $(this).data('i18n'),
|
26 |
plugin_slug = $(this).data('slug'),
|
@@ -30,11 +30,11 @@
|
|
30 |
wpnonce = $(this).data('wpnonce');
|
31 |
|
32 |
var action = ('creativemotion' === storage)
|
33 |
-
? 'wfactory-
|
34 |
: 'install-plugin';
|
35 |
|
36 |
if( storage === 'freemius' || ((storage === 'wordpress' || storage === 'creativemotion' || storage === 'internal') && (plugin_action === 'activate' || plugin_action === 'deactivate')) ) {
|
37 |
-
action = 'wfactory-
|
38 |
} else if( storage === 'wordpress' && plugin_action === 'delete' ) {
|
39 |
action = 'delete-plugin';
|
40 |
}
|
@@ -54,11 +54,11 @@
|
|
54 |
|
55 |
$this.addClass('disabled').text(button_i18n.loading);
|
56 |
|
57 |
-
$.
|
58 |
|
59 |
self.sendRequest(data, function(response) {
|
60 |
if( !response || !response.success ) {
|
61 |
-
$.
|
62 |
$this,
|
63 |
data,
|
64 |
response
|
@@ -80,7 +80,7 @@
|
|
80 |
$this.removeClass('button-default').addClass('button-primary');
|
81 |
}
|
82 |
|
83 |
-
$.
|
84 |
$this,
|
85 |
data,
|
86 |
response
|
@@ -96,7 +96,7 @@
|
|
96 |
$this.removeClass('button-primary').addClass('button-default');
|
97 |
}
|
98 |
|
99 |
-
$.
|
100 |
$this,
|
101 |
data,
|
102 |
response
|
@@ -124,7 +124,7 @@
|
|
124 |
$this.removeClass('button-default').addClass('button-primary');
|
125 |
}
|
126 |
|
127 |
-
$.
|
128 |
$this,
|
129 |
data,
|
130 |
response
|
@@ -134,7 +134,7 @@
|
|
134 |
|
135 |
plugin_action = 'install';
|
136 |
|
137 |
-
$.
|
138 |
}
|
139 |
} else {
|
140 |
if( plugin_action === 'install' ) {
|
@@ -144,7 +144,7 @@
|
|
144 |
|
145 |
$this.text(button_i18n[plugin_action]);
|
146 |
|
147 |
-
$.
|
148 |
});
|
149 |
|
150 |
return false;
|
@@ -169,7 +169,7 @@
|
|
169 |
.addClass('disabled')
|
170 |
.text(button_i18n.preparation);
|
171 |
|
172 |
-
sendData.action = 'wfactory-
|
173 |
|
174 |
this.sendRequest(sendData, function(response) {
|
175 |
componentButton.removeClass('disabled');
|
@@ -177,7 +177,7 @@
|
|
177 |
if( !response || !response.success ) {
|
178 |
componentButton.text(button_i18n['activate']);
|
179 |
|
180 |
-
$.
|
181 |
componentButton,
|
182 |
sendData,
|
183 |
response
|
@@ -187,7 +187,7 @@
|
|
187 |
|
188 |
componentButton.removeClass('button-primary').text(button_i18n['deactivate']);
|
189 |
|
190 |
-
$.
|
191 |
componentButton,
|
192 |
sendData,
|
193 |
response
|
@@ -210,7 +210,7 @@
|
|
210 |
console.log(xhr.responseText);
|
211 |
console.log(thrownError);
|
212 |
|
213 |
-
$.
|
214 |
xhr,
|
215 |
ajaxOptions,
|
216 |
thrownError
|
20 |
* This event is intended for installation, removal, activation, deactivation of external add-ons
|
21 |
*/
|
22 |
|
23 |
+
$(document).on('click', '.wfactory-446-process-button', function() {
|
24 |
var $this = $(this),
|
25 |
button_i18n = $(this).data('i18n'),
|
26 |
plugin_slug = $(this).data('slug'),
|
30 |
wpnonce = $(this).data('wpnonce');
|
31 |
|
32 |
var action = ('creativemotion' === storage)
|
33 |
+
? 'wfactory-446-creativemotion-install-plugin'
|
34 |
: 'install-plugin';
|
35 |
|
36 |
if( storage === 'freemius' || ((storage === 'wordpress' || storage === 'creativemotion' || storage === 'internal') && (plugin_action === 'activate' || plugin_action === 'deactivate')) ) {
|
37 |
+
action = 'wfactory-446-intall-component';
|
38 |
} else if( storage === 'wordpress' && plugin_action === 'delete' ) {
|
39 |
action = 'delete-plugin';
|
40 |
}
|
54 |
|
55 |
$this.addClass('disabled').text(button_i18n.loading);
|
56 |
|
57 |
+
$.wfactory_446.hooks.run('core/components/pre_update', [$this, data]);
|
58 |
|
59 |
self.sendRequest(data, function(response) {
|
60 |
if( !response || !response.success ) {
|
61 |
+
$.wfactory_446.hooks.run('core/components/update_error', [
|
62 |
$this,
|
63 |
data,
|
64 |
response
|
80 |
$this.removeClass('button-default').addClass('button-primary');
|
81 |
}
|
82 |
|
83 |
+
$.wfactory_446.hooks.run('core/components/installed', [
|
84 |
$this,
|
85 |
data,
|
86 |
response
|
96 |
$this.removeClass('button-primary').addClass('button-default');
|
97 |
}
|
98 |
|
99 |
+
$.wfactory_446.hooks.run('core/components/pre_activate', [
|
100 |
$this,
|
101 |
data,
|
102 |
response
|
124 |
$this.removeClass('button-default').addClass('button-primary');
|
125 |
}
|
126 |
|
127 |
+
$.wfactory_446.hooks.run('core/components/deactivated', [
|
128 |
$this,
|
129 |
data,
|
130 |
response
|
134 |
|
135 |
plugin_action = 'install';
|
136 |
|
137 |
+
$.wfactory_446.hooks.run('core/components/deleted', [$this, data, response]);
|
138 |
}
|
139 |
} else {
|
140 |
if( plugin_action === 'install' ) {
|
144 |
|
145 |
$this.text(button_i18n[plugin_action]);
|
146 |
|
147 |
+
$.wfactory_446.hooks.run('core/components/updated', [$this, data, response]);
|
148 |
});
|
149 |
|
150 |
return false;
|
169 |
.addClass('disabled')
|
170 |
.text(button_i18n.preparation);
|
171 |
|
172 |
+
sendData.action = 'wfactory-446-prepare-component';
|
173 |
|
174 |
this.sendRequest(sendData, function(response) {
|
175 |
componentButton.removeClass('disabled');
|
177 |
if( !response || !response.success ) {
|
178 |
componentButton.text(button_i18n['activate']);
|
179 |
|
180 |
+
$.wfactory_446.hooks.run('core/components/activation_error', [
|
181 |
componentButton,
|
182 |
sendData,
|
183 |
response
|
187 |
|
188 |
componentButton.removeClass('button-primary').text(button_i18n['deactivate']);
|
189 |
|
190 |
+
$.wfactory_446.hooks.run('core/components/activated', [
|
191 |
componentButton,
|
192 |
sendData,
|
193 |
response
|
210 |
console.log(xhr.responseText);
|
211 |
console.log(thrownError);
|
212 |
|
213 |
+
$.wfactory_446.hooks.run('core/components/ajax_error', [
|
214 |
xhr,
|
215 |
ajaxOptions,
|
216 |
thrownError
|
libs/factory/core/assets/js/core-general.js
CHANGED
@@ -8,11 +8,11 @@
|
|
8 |
(function($) {
|
9 |
'use strict';
|
10 |
|
11 |
-
if( !$.
|
12 |
-
$.
|
13 |
}
|
14 |
|
15 |
-
$.
|
16 |
|
17 |
/**
|
18 |
* A set of registered filters.
|
@@ -79,20 +79,20 @@
|
|
79 |
}
|
80 |
};
|
81 |
|
82 |
-
$.
|
83 |
|
84 |
/**
|
85 |
* Applies filters to a given input value.
|
86 |
*/
|
87 |
run: function(filterName, args) {
|
88 |
-
$.
|
89 |
},
|
90 |
|
91 |
/**
|
92 |
* Registers a new filter.
|
93 |
*/
|
94 |
add: function(filterName, callback, priority) {
|
95 |
-
$.
|
96 |
}
|
97 |
};
|
98 |
|
8 |
(function($) {
|
9 |
'use strict';
|
10 |
|
11 |
+
if( !$.wfactory_446 ) {
|
12 |
+
$.wfactory_446 = {};
|
13 |
}
|
14 |
|
15 |
+
$.wfactory_446.filters = $.wfactory_446.filters || {
|
16 |
|
17 |
/**
|
18 |
* A set of registered filters.
|
79 |
}
|
80 |
};
|
81 |
|
82 |
+
$.wfactory_446.hooks = $.wfactory_446.hooks || {
|
83 |
|
84 |
/**
|
85 |
* Applies filters to a given input value.
|
86 |
*/
|
87 |
run: function(filterName, args) {
|
88 |
+
$.wfactory_446.filters.run(filterName, args);
|
89 |
},
|
90 |
|
91 |
/**
|
92 |
* Registers a new filter.
|
93 |
*/
|
94 |
add: function(filterName, callback, priority) {
|
95 |
+
$.wfactory_446.filters.add(filterName, callback, priority);
|
96 |
}
|
97 |
};
|
98 |
|
libs/factory/core/boot.php
CHANGED
@@ -14,60 +14,60 @@ if( !defined('ABSPATH') ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( defined('
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
-
define('
|
22 |
|
23 |
-
define('
|
24 |
|
25 |
-
define('
|
26 |
-
define('
|
27 |
|
28 |
-
load_plugin_textdomain('
|
29 |
|
30 |
#comp merge
|
31 |
-
require_once(
|
32 |
|
33 |
-
require_once(
|
34 |
-
require_once(
|
35 |
|
36 |
-
require_once(
|
37 |
-
require_once(
|
38 |
-
require_once(
|
39 |
-
require_once(
|
40 |
-
require_once(
|
41 |
|
42 |
// ASSETS
|
43 |
-
require_once(
|
44 |
-
require_once(
|
45 |
-
require_once(
|
46 |
|
47 |
// PREMIUM
|
48 |
-
require_once(
|
49 |
-
require_once(
|
50 |
-
require_once(
|
51 |
|
52 |
// UPDATES
|
53 |
-
require_once(
|
54 |
-
require_once(
|
55 |
-
require_once(
|
56 |
-
require_once(
|
57 |
-
require_once(
|
58 |
|
59 |
-
require_once(
|
60 |
|
61 |
-
require_once(
|
62 |
-
require_once(
|
63 |
#endcomp
|
64 |
|
65 |
add_action('admin_enqueue_scripts', function () {
|
66 |
-
wp_enqueue_script('wfactory-
|
67 |
'jquery'
|
68 |
-
],
|
69 |
-
wp_enqueue_script('wfactory-
|
70 |
'jquery',
|
71 |
-
'wfactory-
|
72 |
-
],
|
73 |
});
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( defined('FACTORY_446_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
define('FACTORY_446_LOADED', true);
|
22 |
|
23 |
+
define( 'FACTORY_446_VERSION', '4.4.6' );
|
24 |
|
25 |
+
define('FACTORY_446_DIR', dirname(__FILE__));
|
26 |
+
define('FACTORY_446_URL', plugins_url(null, __FILE__));
|
27 |
|
28 |
+
load_plugin_textdomain('wbcr_factory_446', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
29 |
|
30 |
#comp merge
|
31 |
+
require_once(FACTORY_446_DIR . '/includes/functions.php');
|
32 |
|
33 |
+
require_once(FACTORY_446_DIR . '/includes/entities/class-factory-paths.php');
|
34 |
+
require_once(FACTORY_446_DIR . '/includes/entities/class-factory-support.php');
|
35 |
|
36 |
+
require_once(FACTORY_446_DIR . '/includes/class-factory-requests.php');
|
37 |
+
require_once(FACTORY_446_DIR . '/includes/class-factory-options.php');
|
38 |
+
require_once(FACTORY_446_DIR . '/includes/class-factory-plugin-base.php');
|
39 |
+
require_once(FACTORY_446_DIR . '/includes/class-factory-migrations.php');
|
40 |
+
require_once(FACTORY_446_DIR . '/includes/class-factory-notices.php');
|
41 |
|
42 |
// ASSETS
|
43 |
+
require_once(FACTORY_446_DIR . '/includes/assets-managment/class-factory-assets-list.php');
|
44 |
+
require_once(FACTORY_446_DIR . '/includes/assets-managment/class-factory-script-list.php');
|
45 |
+
require_once(FACTORY_446_DIR . '/includes/assets-managment/class-factory-style-list.php');
|
46 |
|
47 |
// PREMIUM
|
48 |
+
require_once(FACTORY_446_DIR . '/includes/premium/class-factory-license-interface.php');
|
49 |
+
require_once(FACTORY_446_DIR . '/includes/premium/class-factory-provider-abstract.php');
|
50 |
+
require_once(FACTORY_446_DIR . '/includes/premium/class-factory-manager.php');
|
51 |
|
52 |
// UPDATES
|
53 |
+
require_once(FACTORY_446_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php');
|
54 |
+
require_once(FACTORY_446_DIR . '/includes/updates/repositories/class-factory-wordpress.php');
|
55 |
+
require_once(FACTORY_446_DIR . '/includes/updates/repositories/class-factory-github.php');
|
56 |
+
require_once(FACTORY_446_DIR . '/includes/updates/class-factory-upgrader.php');
|
57 |
+
require_once(FACTORY_446_DIR . '/includes/updates/class-factory-premium-upgrader.php');
|
58 |
|
59 |
+
require_once(FACTORY_446_DIR . '/includes/class-factory-plugin-abstract.php');
|
60 |
|
61 |
+
require_once(FACTORY_446_DIR . '/includes/activation/class-factory-activator.php');
|
62 |
+
require_once(FACTORY_446_DIR . '/includes/activation/class-factory-update.php');
|
63 |
#endcomp
|
64 |
|
65 |
add_action('admin_enqueue_scripts', function () {
|
66 |
+
wp_enqueue_script('wfactory-446-core-general', FACTORY_446_URL . '/assets/js/core-general.js', [
|
67 |
'jquery'
|
68 |
+
], FACTORY_446_VERSION);
|
69 |
+
wp_enqueue_script('wfactory-446-core-components', FACTORY_446_URL . '/assets/js/core-components.js', [
|
70 |
'jquery',
|
71 |
+
'wfactory-446-core-general'
|
72 |
+
], FACTORY_446_VERSION);
|
73 |
});
|
libs/factory/core/includes/activation/class-factory-activator.php
CHANGED
@@ -19,16 +19,16 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
-
abstract class
|
23 |
|
24 |
/**
|
25 |
* Curent plugin.
|
26 |
*
|
27 |
-
* @var
|
28 |
*/
|
29 |
public $plugin;
|
30 |
|
31 |
-
public function __construct(
|
32 |
$this->plugin = $plugin;
|
33 |
}
|
34 |
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
abstract class Wbcr_Factory446_Activator {
|
23 |
|
24 |
/**
|
25 |
* Curent plugin.
|
26 |
*
|
27 |
+
* @var Wbcr_Factory446_Plugin
|
28 |
*/
|
29 |
public $plugin;
|
30 |
|
31 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
32 |
$this->plugin = $plugin;
|
33 |
}
|
34 |
|
libs/factory/core/includes/activation/class-factory-update.php
CHANGED
@@ -20,16 +20,16 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
-
abstract class
|
24 |
|
25 |
/**
|
26 |
* Current plugin
|
27 |
*
|
28 |
-
* @var
|
29 |
*/
|
30 |
var $plugin;
|
31 |
|
32 |
-
public function __construct(
|
33 |
$this->plugin = $plugin;
|
34 |
}
|
35 |
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
abstract class Wbcr_Factory446_Update {
|
24 |
|
25 |
/**
|
26 |
* Current plugin
|
27 |
*
|
28 |
+
* @var Wbcr_Factory446_Plugin
|
29 |
*/
|
30 |
var $plugin;
|
31 |
|
32 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
33 |
$this->plugin = $plugin;
|
34 |
}
|
35 |
|
libs/factory/core/includes/assets-managment/class-factory-assets-list.php
CHANGED
@@ -19,7 +19,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
-
class
|
23 |
|
24 |
protected $all = [];
|
25 |
public $header_place = [];
|
@@ -29,15 +29,15 @@ class Wbcr_Factory445_AssetsList {
|
|
29 |
protected $default_place;
|
30 |
|
31 |
/**
|
32 |
-
* @var
|
33 |
*/
|
34 |
protected $plugin;
|
35 |
|
36 |
/**
|
37 |
-
* @param
|
38 |
* @param bool $defaultIsFooter
|
39 |
*/
|
40 |
-
public function __construct(
|
41 |
$this->plugin = $plugin;
|
42 |
|
43 |
if ( $defaultIsFooter ) {
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
class Wbcr_Factory446_AssetsList {
|
23 |
|
24 |
protected $all = [];
|
25 |
public $header_place = [];
|
29 |
protected $default_place;
|
30 |
|
31 |
/**
|
32 |
+
* @var Wbcr_Factory446_Plugin
|
33 |
*/
|
34 |
protected $plugin;
|
35 |
|
36 |
/**
|
37 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
38 |
* @param bool $defaultIsFooter
|
39 |
*/
|
40 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin, $defaultIsFooter = true ) {
|
41 |
$this->plugin = $plugin;
|
42 |
|
43 |
if ( $defaultIsFooter ) {
|
libs/factory/core/includes/assets-managment/class-factory-script-list.php
CHANGED
@@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
-
class
|
24 |
|
25 |
public $localize_data = [];
|
26 |
public $use_ajax = false;
|
@@ -149,7 +149,7 @@ class Wbcr_Factory445_ScriptList extends Wbcr_Factory445_AssetsList {
|
|
149 |
* @param string $varname
|
150 |
* @param array $data
|
151 |
*
|
152 |
-
* @return
|
153 |
*/
|
154 |
public function localize( $varname, $data ) {
|
155 |
$bindTo = count( $this->all ) == 0 ? null : end( $this->all );
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_Factory446_ScriptList extends Wbcr_Factory446_AssetsList {
|
24 |
|
25 |
public $localize_data = [];
|
26 |
public $use_ajax = false;
|
149 |
* @param string $varname
|
150 |
* @param array $data
|
151 |
*
|
152 |
+
* @return Wbcr_Factory446_ScriptList $this
|
153 |
*/
|
154 |
public function localize( $varname, $data ) {
|
155 |
$bindTo = count( $this->all ) == 0 ? null : end( $this->all );
|
libs/factory/core/includes/assets-managment/class-factory-style-list.php
CHANGED
@@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
-
class
|
24 |
|
25 |
/**
|
26 |
* Adds new items to the collection (default place).
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_Factory446_StyleList extends Wbcr_Factory446_AssetsList {
|
24 |
|
25 |
/**
|
26 |
* Adds new items to the collection (default place).
|
libs/factory/core/includes/class-check-compatibility.php
CHANGED
@@ -75,19 +75,19 @@ if ( ! class_exists( 'Wbcr_Factory_Compatibility' ) ) {
|
|
75 |
$notice_text = $notice_default_text = '';
|
76 |
$notice_default_text .= '<b>' . $this->plugin_title . ' ' . __( 'warning', '' ) . ':</b>' . '<br>';
|
77 |
|
78 |
-
$notice_default_text .= sprintf( __( 'The %s plugin has stopped.', '
|
79 |
$notice_default_text .= __( 'Possible reasons:', '' ) . ' <br>';
|
80 |
|
81 |
$has_one = false;
|
82 |
|
83 |
if ( ! $this->isPhpCompatibility() ) {
|
84 |
$has_one = true;
|
85 |
-
$notice_text .= '- ' . sprintf( __( 'You need to update the PHP version to %s or higher!', '
|
86 |
}
|
87 |
|
88 |
if ( ! $this->isWpCompatibility() ) {
|
89 |
$has_one = true;
|
90 |
-
$notice_text .= '- ' . sprintf( __( 'You need to update WordPress to %s or higher!', '
|
91 |
}
|
92 |
|
93 |
if ( $has_one ) {
|
75 |
$notice_text = $notice_default_text = '';
|
76 |
$notice_default_text .= '<b>' . $this->plugin_title . ' ' . __( 'warning', '' ) . ':</b>' . '<br>';
|
77 |
|
78 |
+
$notice_default_text .= sprintf( __( 'The %s plugin has stopped.', 'wbcr_factory_clearfy_237' ), $this->plugin_title ) . ' ';
|
79 |
$notice_default_text .= __( 'Possible reasons:', '' ) . ' <br>';
|
80 |
|
81 |
$has_one = false;
|
82 |
|
83 |
if ( ! $this->isPhpCompatibility() ) {
|
84 |
$has_one = true;
|
85 |
+
$notice_text .= '- ' . sprintf( __( 'You need to update the PHP version to %s or higher!', 'wbcr_factory_446' ), $this->required_php_version ) . '<br>';
|
86 |
}
|
87 |
|
88 |
if ( ! $this->isWpCompatibility() ) {
|
89 |
$has_one = true;
|
90 |
+
$notice_text .= '- ' . sprintf( __( 'You need to update WordPress to %s or higher!', 'wbcr_factory_446' ), $this->required_wp_version ) . '<br>';
|
91 |
}
|
92 |
|
93 |
if ( $has_one ) {
|
libs/factory/core/includes/class-factory-migrations.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use Exception;
|
6 |
-
use
|
7 |
|
8 |
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit;
|
@@ -35,11 +35,11 @@ class Migrations {
|
|
35 |
/**
|
36 |
* Migrations constructor.
|
37 |
*
|
38 |
-
* @param
|
39 |
*
|
40 |
* @throws Exception
|
41 |
*/
|
42 |
-
public function __construct(
|
43 |
|
44 |
$this->plugin = $plugin;
|
45 |
$plugin_name = $plugin->getPluginName();
|
@@ -129,14 +129,14 @@ class Migrations {
|
|
129 |
$fix_migration_error_url = add_query_arg( 'wbcr_factory_fix_migration_error', 1 );
|
130 |
|
131 |
$notice_text = $migration_error_text;
|
132 |
-
$notice_text .= "<br><br><a href='{$fix_migration_error_url}' class='button button-default'>" . __( 'I fixed, confirm migration', '
|
133 |
|
134 |
$notices[] = [
|
135 |
'id' => 'migration_debug_bar',
|
136 |
'type' => 'error',
|
137 |
'dismissible' => false,
|
138 |
'dismiss_expires' => 0,
|
139 |
-
'text' => '<p><b>' . $this->plugin->getPluginTitle() . ' ' . __( 'migration error', '
|
140 |
];
|
141 |
|
142 |
return $notices;
|
@@ -162,19 +162,19 @@ class Migrations {
|
|
162 |
|
163 |
$migrate_url = add_query_arg( 'wbcr_factory_test_migration', 1 );
|
164 |
|
165 |
-
$notice_text = __( "Plugin activated:", "
|
166 |
|
167 |
-
$notice_text .= __( "Old plugin version (debug):", "
|
168 |
-
$notice_text .= __( "Current plugin version:", "
|
169 |
-
$notice_text .= __( "Need migration:", "
|
170 |
-
$notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "
|
171 |
|
172 |
$notices[] = [
|
173 |
'id' => 'migration_debug_bar',
|
174 |
'type' => 'warning',
|
175 |
'dismissible' => false,
|
176 |
'dismiss_expires' => 0,
|
177 |
-
'text' => '<p><b style="color:red;">' . $this->plugin->getPluginTitle() . ' ' . __( 'migrations DEBUG bar', '
|
178 |
];
|
179 |
|
180 |
return $notices;
|
@@ -505,7 +505,7 @@ class Migrations {
|
|
505 |
$classes = [];
|
506 |
|
507 |
if ( ! function_exists( 'token_get_all' ) ) {
|
508 |
-
throw new Exception( __( 'There is no PHP Tokenizer extension installed on your server, you cannot use the token_get_all function.', '
|
509 |
}
|
510 |
|
511 |
$tokens = token_get_all( $phpCode );
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory446_Plugin;
|
7 |
|
8 |
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit;
|
35 |
/**
|
36 |
* Migrations constructor.
|
37 |
*
|
38 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
39 |
*
|
40 |
* @throws Exception
|
41 |
*/
|
42 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
43 |
|
44 |
$this->plugin = $plugin;
|
45 |
$plugin_name = $plugin->getPluginName();
|
129 |
$fix_migration_error_url = add_query_arg( 'wbcr_factory_fix_migration_error', 1 );
|
130 |
|
131 |
$notice_text = $migration_error_text;
|
132 |
+
$notice_text .= "<br><br><a href='{$fix_migration_error_url}' class='button button-default'>" . __( 'I fixed, confirm migration', 'wbcr_factory_446' ) . "</a>";
|
133 |
|
134 |
$notices[] = [
|
135 |
'id' => 'migration_debug_bar',
|
136 |
'type' => 'error',
|
137 |
'dismissible' => false,
|
138 |
'dismiss_expires' => 0,
|
139 |
+
'text' => '<p><b>' . $this->plugin->getPluginTitle() . ' ' . __( 'migration error', 'wbcr_factory_446' ) . '</b><br>' . $notice_text . '</p>'
|
140 |
];
|
141 |
|
142 |
return $notices;
|
162 |
|
163 |
$migrate_url = add_query_arg( 'wbcr_factory_test_migration', 1 );
|
164 |
|
165 |
+
$notice_text = __( "Plugin activated:", "wbcr_factory_446" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
|
166 |
|
167 |
+
$notice_text .= __( "Old plugin version (debug):", "wbcr_factory_446" ) . ' ' . $this->get_old_plugin_version() . "<br>";
|
168 |
+
$notice_text .= __( "Current plugin version:", "wbcr_factory_446" ) . ' ' . $this->get_current_plugin_version() . "<br>";
|
169 |
+
$notice_text .= __( "Need migration:", "wbcr_factory_446" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
|
170 |
+
$notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_446" ) . "</a><br>";
|
171 |
|
172 |
$notices[] = [
|
173 |
'id' => 'migration_debug_bar',
|
174 |
'type' => 'warning',
|
175 |
'dismissible' => false,
|
176 |
'dismiss_expires' => 0,
|
177 |
+
'text' => '<p><b style="color:red;">' . $this->plugin->getPluginTitle() . ' ' . __( 'migrations DEBUG bar', 'wbcr_factory_446' ) . '</b><br>' . $notice_text . '</p>'
|
178 |
];
|
179 |
|
180 |
return $notices;
|
505 |
$classes = [];
|
506 |
|
507 |
if ( ! function_exists( 'token_get_all' ) ) {
|
508 |
+
throw new Exception( __( 'There is no PHP Tokenizer extension installed on your server, you cannot use the token_get_all function.', 'wbcr_factory_446' ) );
|
509 |
}
|
510 |
|
511 |
$tokens = token_get_all( $phpCode );
|
libs/factory/core/includes/class-factory-notices.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
-
use
|
6 |
|
7 |
// Exit if accessed directly
|
8 |
if( !defined('ABSPATH') ) {
|
@@ -27,7 +27,7 @@ if( !defined('ABSPATH') ) {
|
|
27 |
class Notices {
|
28 |
|
29 |
/**
|
30 |
-
* @var
|
31 |
*/
|
32 |
protected $plugin;
|
33 |
/**
|
@@ -58,7 +58,7 @@ class Notices {
|
|
58 |
/**
|
59 |
* Инициализируем уведомлений сразу после загрузки модуля уведомлений
|
60 |
*
|
61 |
-
* @param
|
62 |
*/
|
63 |
public function __construct($plugin)
|
64 |
{
|
@@ -86,7 +86,7 @@ class Notices {
|
|
86 |
public function currentScreenAction()
|
87 |
{
|
88 |
/**
|
89 |
-
* @since 2.1.2 - Добавлен, модуль factory_notices_000 был удален. Поэтому в этому хуке мы заменили префикс на
|
90 |
*/
|
91 |
$this->notices = apply_filters('wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName());
|
92 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446;
|
4 |
|
5 |
+
use Wbcr_Factory446_Plugin;
|
6 |
|
7 |
// Exit if accessed directly
|
8 |
if( !defined('ABSPATH') ) {
|
27 |
class Notices {
|
28 |
|
29 |
/**
|
30 |
+
* @var Wbcr_Factory446_Plugin
|
31 |
*/
|
32 |
protected $plugin;
|
33 |
/**
|
58 |
/**
|
59 |
* Инициализируем уведомлений сразу после загрузки модуля уведомлений
|
60 |
*
|
61 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
62 |
*/
|
63 |
public function __construct($plugin)
|
64 |
{
|
86 |
public function currentScreenAction()
|
87 |
{
|
88 |
/**
|
89 |
+
* @since 2.1.2 - Добавлен, модуль factory_notices_000 был удален. Поэтому в этому хуке мы заменили префикс на factory_446
|
90 |
*/
|
91 |
$this->notices = apply_filters('wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName());
|
92 |
|
libs/factory/core/includes/class-factory-options.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
@@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
10 |
}
|
11 |
|
12 |
/**
|
13 |
-
* Трейт используется для расширения базового класса плагина
|
14 |
*
|
15 |
* Этот трейт является оберткой для Wordpress функций get_option, get_site_option, update_option, update_site_option,
|
16 |
* delete_option, delete_site_option. Основная задача была получать, обновлять, удалять опции без использования префиксов,
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
10 |
}
|
11 |
|
12 |
/**
|
13 |
+
* Трейт используется для расширения базового класса плагина Wbcr_Factory446_Base, позволяя работать с опциями плагина.
|
14 |
*
|
15 |
* Этот трейт является оберткой для Wordpress функций get_option, get_site_option, update_option, update_site_option,
|
16 |
* delete_option, delete_site_option. Основная задача была получать, обновлять, удалять опции без использования префиксов,
|
libs/factory/core/includes/class-factory-plugin-abstract.php
CHANGED
@@ -24,42 +24,42 @@ if( !defined('ABSPATH') ) {
|
|
24 |
* @package factory-core
|
25 |
*
|
26 |
*/
|
27 |
-
abstract class
|
28 |
|
29 |
/**
|
30 |
-
* Instance class
|
31 |
*
|
32 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
|
33 |
-
* @var
|
34 |
*/
|
35 |
public $request;
|
36 |
|
37 |
/**
|
38 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
|
39 |
-
* @var \WBCR\
|
40 |
*/
|
41 |
public $premium;
|
42 |
|
43 |
/**
|
44 |
* The Bootstrap Manager class
|
45 |
*
|
46 |
-
* @var
|
47 |
*/
|
48 |
public $bootstrap;
|
49 |
|
50 |
/**
|
51 |
* The Bootstrap Manager class
|
52 |
*
|
53 |
-
* @var
|
54 |
*/
|
55 |
public $forms;
|
56 |
|
57 |
/**
|
58 |
-
* Простой массив со списком зарегистрированных классов унаследованных от
|
59 |
* Классы активации используются для упаковки набора функций, которые нужно выполнить во время
|
60 |
* активации плагина.
|
61 |
*
|
62 |
-
* @var array[]
|
63 |
*/
|
64 |
protected $activator_class = [];
|
65 |
|
@@ -86,7 +86,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
86 |
*
|
87 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
88 |
* @since 4.1.9
|
89 |
-
* @var WBCR\
|
90 |
*/
|
91 |
private $adverts;
|
92 |
|
@@ -115,8 +115,8 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
115 |
|
116 |
parent::__construct($plugin_path, $data);
|
117 |
|
118 |
-
$this->request = new
|
119 |
-
//$this->route = new
|
120 |
|
121 |
// INIT PLUGIN FRAMEWORK MODULES
|
122 |
// Framework modules should always be loaded first,
|
@@ -144,15 +144,15 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
144 |
$this->init_plugin_components();
|
145 |
|
146 |
if( wp_doing_ajax() && isset($_REQUEST['action']) ) {
|
147 |
-
if( "wfactory-
|
148 |
-
add_action('wp_ajax_wfactory-
|
149 |
}
|
150 |
|
151 |
-
if( "wfactory-
|
152 |
-
add_action('wp_ajax_wfactory-
|
153 |
}
|
154 |
-
if( "wfactory-
|
155 |
-
add_action('wp_ajax_wfactory-
|
156 |
$this,
|
157 |
'ajax_handler_install_creativemotion_plugins'
|
158 |
]);
|
@@ -165,20 +165,20 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
165 |
|
166 |
public function ajax_handler_install_components()
|
167 |
{
|
168 |
-
require_once
|
169 |
-
|
170 |
}
|
171 |
|
172 |
public function ajax_handler_prepare_component()
|
173 |
{
|
174 |
-
require_once
|
175 |
-
|
176 |
}
|
177 |
|
178 |
public function ajax_handler_install_creativemotion_plugins()
|
179 |
{
|
180 |
-
require_once
|
181 |
-
|
182 |
}
|
183 |
// --------------------------------------------------------
|
184 |
|
@@ -186,9 +186,9 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
186 |
* Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
|
187 |
* скриптов, стилей) фреймворка.
|
188 |
*
|
189 |
-
* @param
|
190 |
*/
|
191 |
-
public function setBootstap(
|
192 |
{
|
193 |
$this->bootstrap = $bootstrap;
|
194 |
}
|
@@ -196,9 +196,9 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
196 |
/**
|
197 |
* Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
|
198 |
*
|
199 |
-
* @param
|
200 |
*/
|
201 |
-
public function setForms(
|
202 |
{
|
203 |
$this->forms = $forms;
|
204 |
}
|
@@ -246,8 +246,8 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
246 |
*/
|
247 |
public function set_license_provider($name, $class_name)
|
248 |
{
|
249 |
-
if( !isset(WBCR\
|
250 |
-
WBCR\
|
251 |
}
|
252 |
}
|
253 |
|
@@ -265,8 +265,8 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
265 |
*/
|
266 |
public function set_update_repository($name, $class_name)
|
267 |
{
|
268 |
-
if( !isset(WBCR\
|
269 |
-
WBCR\
|
270 |
}
|
271 |
}
|
272 |
|
@@ -276,7 +276,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
276 |
* Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
|
277 |
* рекламных объявлений.
|
278 |
*
|
279 |
-
* @return \WBCR\
|
280 |
* @since 1.1
|
281 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
282 |
*/
|
@@ -312,18 +312,18 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
312 |
|
313 |
public function newScriptList()
|
314 |
{
|
315 |
-
return new
|
316 |
}
|
317 |
|
318 |
public function newStyleList()
|
319 |
{
|
320 |
-
return new
|
321 |
}
|
322 |
|
323 |
/**
|
324 |
* Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
|
325 |
* фреймворка pages. Разработчик создает собственный класс, унаследованный от
|
326 |
-
*
|
327 |
* Метод выполняет подключение класса страницы и регистрирует его в модуле фреймворка
|
328 |
* pages.
|
329 |
*
|
@@ -333,7 +333,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
333 |
* @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/222887949 - документация по созданию страниц
|
334 |
*
|
335 |
* @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Page_Name.
|
336 |
-
* Регистрируемый класс должен быть унаследован от класса
|
337 |
* @param string $file_path Абсолютный путь к файлу с классом страницы.
|
338 |
*
|
339 |
* @throws Exception
|
@@ -355,11 +355,11 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
355 |
throw new Exception('A class with this name {' . $class_name . '} does not exist.');
|
356 |
}
|
357 |
|
358 |
-
if( !class_exists('
|
359 |
-
throw new Exception('The
|
360 |
}
|
361 |
|
362 |
-
|
363 |
}
|
364 |
|
365 |
/**
|
@@ -409,16 +409,16 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
409 |
/**
|
410 |
* @since 4.1.1 - change hook name
|
411 |
*/
|
412 |
-
if( apply_filters("wbcr/
|
413 |
return;
|
414 |
}
|
415 |
|
416 |
/**
|
417 |
-
*
|
418 |
*
|
419 |
* @since 4.1.1 - deprecated
|
420 |
*/
|
421 |
-
|
422 |
$this
|
423 |
], '4.1.1', "wbcr/factory/plugin_activation");
|
424 |
|
@@ -427,7 +427,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
427 |
*
|
428 |
* @since 4.1.2 - deprecated
|
429 |
*/
|
430 |
-
|
431 |
$this
|
432 |
], '4.1.2', "wbcr/factory/before_plugin_activation");
|
433 |
|
@@ -443,16 +443,16 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
443 |
*
|
444 |
* @since 4.1.2 - deprecated
|
445 |
*/
|
446 |
-
|
447 |
$this
|
448 |
], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_activation");
|
449 |
|
450 |
/**
|
451 |
-
*
|
452 |
*
|
453 |
* @since 4.1.1 - deprecated
|
454 |
*/
|
455 |
-
|
456 |
$this
|
457 |
], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_activation");
|
458 |
|
@@ -493,16 +493,16 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
493 |
/**
|
494 |
* @since 4.1.1 - change hook name
|
495 |
*/
|
496 |
-
if( apply_filters("wbcr/
|
497 |
return;
|
498 |
}
|
499 |
|
500 |
/**
|
501 |
-
*
|
502 |
*
|
503 |
* @since 4.1.1 - deprecated
|
504 |
*/
|
505 |
-
|
506 |
$this
|
507 |
], '4.1.1', "wbcr/factory/plugin_deactivation");
|
508 |
|
@@ -511,7 +511,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
511 |
*
|
512 |
* @since 4.1.2 - deprecated
|
513 |
*/
|
514 |
-
|
515 |
$this
|
516 |
], '4.1.2', "wbcr/factory/before_plugin_deactivation");
|
517 |
|
@@ -523,11 +523,11 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
523 |
do_action('wbcr/factory/plugin_deactivation', $this);
|
524 |
|
525 |
/**
|
526 |
-
*
|
527 |
*
|
528 |
* @since 4.1.1 - deprecated
|
529 |
*/
|
530 |
-
|
531 |
$this
|
532 |
], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation");
|
533 |
|
@@ -536,7 +536,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
536 |
*
|
537 |
* @since 4.1.2 - deprecated
|
538 |
*/
|
539 |
-
|
540 |
$this
|
541 |
], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation");
|
542 |
|
@@ -574,8 +574,8 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
574 |
*/
|
575 |
public function getPluginPageUrl($page_id, $args = [])
|
576 |
{
|
577 |
-
if( !class_exists('
|
578 |
-
throw new Exception('The
|
579 |
}
|
580 |
|
581 |
if( !is_admin() ) {
|
@@ -584,7 +584,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
584 |
return null;
|
585 |
}
|
586 |
|
587 |
-
return
|
588 |
}
|
589 |
|
590 |
/**
|
@@ -594,13 +594,13 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
594 |
* @param $slug
|
595 |
* param $premium
|
596 |
*
|
597 |
-
* @return \WBCR\
|
598 |
*/
|
599 |
public function get_install_component_button($component_type, $slug)
|
600 |
{
|
601 |
-
require_once
|
602 |
|
603 |
-
return new \WBCR\
|
604 |
}
|
605 |
|
606 |
/**
|
@@ -609,13 +609,13 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
609 |
* @param $component_type
|
610 |
* @param $slug
|
611 |
*
|
612 |
-
* @return \WBCR\
|
613 |
*/
|
614 |
public function get_delete_component_button($component_type, $slug)
|
615 |
{
|
616 |
-
require_once
|
617 |
|
618 |
-
return new WBCR\
|
619 |
}
|
620 |
|
621 |
/**
|
@@ -798,12 +798,12 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
798 |
/**
|
799 |
* @since 4.1.1 - deprecated
|
800 |
*/
|
801 |
-
|
802 |
|
803 |
/**
|
804 |
* @since 4.1.1 - add
|
805 |
*/
|
806 |
-
do_action('wbcr/
|
807 |
}
|
808 |
|
809 |
|
@@ -830,7 +830,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
830 |
});
|
831 |
|
832 |
if( is_admin() ) {
|
833 |
-
add_filter('
|
834 |
|
835 |
register_activation_hook($this->get_paths()->main_file, [$this, 'activation_hook']);
|
836 |
register_deactivation_hook($this->get_paths()->main_file, [$this, 'deactivation_hook']);
|
@@ -846,7 +846,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
846 |
*/
|
847 |
protected function init_plugin_migrations()
|
848 |
{
|
849 |
-
new WBCR\
|
850 |
}
|
851 |
|
852 |
/**
|
@@ -857,7 +857,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
857 |
*/
|
858 |
protected function init_plugin_notices()
|
859 |
{
|
860 |
-
new Wbcr\
|
861 |
}
|
862 |
|
863 |
/**
|
@@ -873,7 +873,7 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
873 |
protected function init_plugin_updates()
|
874 |
{
|
875 |
if( $this->has_updates ) {
|
876 |
-
new WBCR\
|
877 |
}
|
878 |
}
|
879 |
|
@@ -896,11 +896,11 @@ abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
|
896 |
}
|
897 |
|
898 |
// Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
|
899 |
-
$this->premium = WBCR\
|
900 |
|
901 |
// Подключаем премиум апгрейдер
|
902 |
if( isset($this->license_settings['has_updates']) && $this->license_settings['has_updates'] ) {
|
903 |
-
new WBCR\
|
904 |
}
|
905 |
}
|
906 |
}
|
24 |
* @package factory-core
|
25 |
*
|
26 |
*/
|
27 |
+
abstract class Wbcr_Factory446_Plugin extends Wbcr_Factory446_Base {
|
28 |
|
29 |
/**
|
30 |
+
* Instance class Wbcr_Factory446_Request, required manages http requests
|
31 |
*
|
32 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
|
33 |
+
* @var Wbcr_Factory446_Request
|
34 |
*/
|
35 |
public $request;
|
36 |
|
37 |
/**
|
38 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
|
39 |
+
* @var \WBCR\Factory_446\Premium\Provider
|
40 |
*/
|
41 |
public $premium;
|
42 |
|
43 |
/**
|
44 |
* The Bootstrap Manager class
|
45 |
*
|
46 |
+
* @var Wbcr_FactoryBootstrap446_Manager
|
47 |
*/
|
48 |
public $bootstrap;
|
49 |
|
50 |
/**
|
51 |
* The Bootstrap Manager class
|
52 |
*
|
53 |
+
* @var Wbcr_FactoryForms443_Manager
|
54 |
*/
|
55 |
public $forms;
|
56 |
|
57 |
/**
|
58 |
+
* Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory446_Activator.
|
59 |
* Классы активации используются для упаковки набора функций, которые нужно выполнить во время
|
60 |
* активации плагина.
|
61 |
*
|
62 |
+
* @var array[] Wbcr_Factory446_Activator
|
63 |
*/
|
64 |
protected $activator_class = [];
|
65 |
|
86 |
*
|
87 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
88 |
* @since 4.1.9
|
89 |
+
* @var WBCR\Factory_Adverts_124\Base
|
90 |
*/
|
91 |
private $adverts;
|
92 |
|
115 |
|
116 |
parent::__construct($plugin_path, $data);
|
117 |
|
118 |
+
$this->request = new Wbcr_Factory446_Request();
|
119 |
+
//$this->route = new Wbcr_Factory446_Route();
|
120 |
|
121 |
// INIT PLUGIN FRAMEWORK MODULES
|
122 |
// Framework modules should always be loaded first,
|
144 |
$this->init_plugin_components();
|
145 |
|
146 |
if( wp_doing_ajax() && isset($_REQUEST['action']) ) {
|
147 |
+
if( "wfactory-446-intall-component" == $_REQUEST['action'] ) {
|
148 |
+
add_action('wp_ajax_wfactory-446-intall-component', [$this, 'ajax_handler_install_components']);
|
149 |
}
|
150 |
|
151 |
+
if( "wfactory-446-prepare-component" == $_REQUEST['action'] ) {
|
152 |
+
add_action('wp_ajax_wfactory-446-prepare-component', [$this, 'ajax_handler_prepare_component']);
|
153 |
}
|
154 |
+
if( "wfactory-446-creativemotion-install-plugin" == $_REQUEST['action'] ) {
|
155 |
+
add_action('wp_ajax_wfactory-446-creativemotion-install-plugin', [
|
156 |
$this,
|
157 |
'ajax_handler_install_creativemotion_plugins'
|
158 |
]);
|
165 |
|
166 |
public function ajax_handler_install_components()
|
167 |
{
|
168 |
+
require_once FACTORY_446_DIR . '/ajax/install-addons.php';
|
169 |
+
wfactory_446_install_components($this);
|
170 |
}
|
171 |
|
172 |
public function ajax_handler_prepare_component()
|
173 |
{
|
174 |
+
require_once FACTORY_446_DIR . '/ajax/install-addons.php';
|
175 |
+
wfactory_446_prepare_component($this);
|
176 |
}
|
177 |
|
178 |
public function ajax_handler_install_creativemotion_plugins()
|
179 |
{
|
180 |
+
require_once FACTORY_446_DIR . '/ajax/install-addons.php';
|
181 |
+
wfactory_446_creativemotion_install_plugin($this);
|
182 |
}
|
183 |
// --------------------------------------------------------
|
184 |
|
186 |
* Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
|
187 |
* скриптов, стилей) фреймворка.
|
188 |
*
|
189 |
+
* @param Wbcr_FactoryBootstrap446_Manager $bootstrap
|
190 |
*/
|
191 |
+
public function setBootstap(Wbcr_FactoryBootstrap446_Manager $bootstrap)
|
192 |
{
|
193 |
$this->bootstrap = $bootstrap;
|
194 |
}
|
196 |
/**
|
197 |
* Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
|
198 |
*
|
199 |
+
* @param Wbcr_FactoryForms443_Manager $forms
|
200 |
*/
|
201 |
+
public function setForms(Wbcr_FactoryForms443_Manager $forms)
|
202 |
{
|
203 |
$this->forms = $forms;
|
204 |
}
|
246 |
*/
|
247 |
public function set_license_provider($name, $class_name)
|
248 |
{
|
249 |
+
if( !isset(WBCR\Factory_446\Premium\Manager::$providers[$name]) ) {
|
250 |
+
WBCR\Factory_446\Premium\Manager::$providers[$name] = $class_name;
|
251 |
}
|
252 |
}
|
253 |
|
265 |
*/
|
266 |
public function set_update_repository($name, $class_name)
|
267 |
{
|
268 |
+
if( !isset(WBCR\Factory_446\Updates\Upgrader::$repositories[$name]) ) {
|
269 |
+
WBCR\Factory_446\Updates\Upgrader::$repositories[$name] = $class_name;
|
270 |
}
|
271 |
}
|
272 |
|
276 |
* Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
|
277 |
* рекламных объявлений.
|
278 |
*
|
279 |
+
* @return \WBCR\Factory_Adverts_124\Base
|
280 |
* @since 1.1
|
281 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
282 |
*/
|
312 |
|
313 |
public function newScriptList()
|
314 |
{
|
315 |
+
return new Wbcr_Factory446_ScriptList($this);
|
316 |
}
|
317 |
|
318 |
public function newStyleList()
|
319 |
{
|
320 |
+
return new Wbcr_Factory446_StyleList($this);
|
321 |
}
|
322 |
|
323 |
/**
|
324 |
* Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
|
325 |
* фреймворка pages. Разработчик создает собственный класс, унаследованный от
|
326 |
+
* Wbcr_FactoryPages445_AdminPage, а затем регистрирует его через этот метод.
|
327 |
* Метод выполняет подключение класса страницы и регистрирует его в модуле фреймворка
|
328 |
* pages.
|
329 |
*
|
333 |
* @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/222887949 - документация по созданию страниц
|
334 |
*
|
335 |
* @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Page_Name.
|
336 |
+
* Регистрируемый класс должен быть унаследован от класса Wbcr_FactoryPages445_AdminPage.
|
337 |
* @param string $file_path Абсолютный путь к файлу с классом страницы.
|
338 |
*
|
339 |
* @throws Exception
|
355 |
throw new Exception('A class with this name {' . $class_name . '} does not exist.');
|
356 |
}
|
357 |
|
358 |
+
if( !class_exists('Wbcr_FactoryPages445') ) {
|
359 |
+
throw new Exception('The factory_pages_445 module is not included.');
|
360 |
}
|
361 |
|
362 |
+
Wbcr_FactoryPages445::register($this, $class_name);
|
363 |
}
|
364 |
|
365 |
/**
|
409 |
/**
|
410 |
* @since 4.1.1 - change hook name
|
411 |
*/
|
412 |
+
if( apply_filters("wbcr/factory_446/cancel_plugin_activation_{$this->plugin_name}", false) ) {
|
413 |
return;
|
414 |
}
|
415 |
|
416 |
/**
|
417 |
+
* wbcr_factory_446_plugin_activation
|
418 |
*
|
419 |
* @since 4.1.1 - deprecated
|
420 |
*/
|
421 |
+
wbcr_factory_446_do_action_deprecated('wbcr_factory_446_plugin_activation', [
|
422 |
$this
|
423 |
], '4.1.1', "wbcr/factory/plugin_activation");
|
424 |
|
427 |
*
|
428 |
* @since 4.1.2 - deprecated
|
429 |
*/
|
430 |
+
wbcr_factory_446_do_action_deprecated('wbcr/factory/plugin_activation', [
|
431 |
$this
|
432 |
], '4.1.2', "wbcr/factory/before_plugin_activation");
|
433 |
|
443 |
*
|
444 |
* @since 4.1.2 - deprecated
|
445 |
*/
|
446 |
+
wbcr_factory_446_do_action_deprecated("wbcr/factory/plugin_{$this->plugin_name}_activation", [
|
447 |
$this
|
448 |
], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_activation");
|
449 |
|
450 |
/**
|
451 |
+
* wbcr_factory_446_plugin_activation_' . $this->plugin_name
|
452 |
*
|
453 |
* @since 4.1.1 - deprecated
|
454 |
*/
|
455 |
+
wbcr_factory_446_do_action_deprecated('wbcr_factory_446_plugin_activation_' . $this->plugin_name, [
|
456 |
$this
|
457 |
], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_activation");
|
458 |
|
493 |
/**
|
494 |
* @since 4.1.1 - change hook name
|
495 |
*/
|
496 |
+
if( apply_filters("wbcr/factory_446/cancel_plugin_deactivation_{$this->plugin_name}", false) ) {
|
497 |
return;
|
498 |
}
|
499 |
|
500 |
/**
|
501 |
+
* wbcr_factory_446_plugin_deactivation
|
502 |
*
|
503 |
* @since 4.1.1 - deprecated
|
504 |
*/
|
505 |
+
wbcr_factory_446_do_action_deprecated('wbcr_factory_446_plugin_deactivation', [
|
506 |
$this
|
507 |
], '4.1.1', "wbcr/factory/plugin_deactivation");
|
508 |
|
511 |
*
|
512 |
* @since 4.1.2 - deprecated
|
513 |
*/
|
514 |
+
wbcr_factory_446_do_action_deprecated('wbcr/factory/plugin_deactivation', [
|
515 |
$this
|
516 |
], '4.1.2', "wbcr/factory/before_plugin_deactivation");
|
517 |
|
523 |
do_action('wbcr/factory/plugin_deactivation', $this);
|
524 |
|
525 |
/**
|
526 |
+
* wbcr_factory_446_plugin_deactivation_ . $this->plugin_name
|
527 |
*
|
528 |
* @since 4.1.1 - deprecated
|
529 |
*/
|
530 |
+
wbcr_factory_446_do_action_deprecated('wbcr_factory_446_plugin_deactivation_' . $this->plugin_name, [
|
531 |
$this
|
532 |
], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation");
|
533 |
|
536 |
*
|
537 |
* @since 4.1.2 - deprecated
|
538 |
*/
|
539 |
+
wbcr_factory_446_do_action_deprecated("wbcr/factory/plugin_{$this->plugin_name}_deactivation", [
|
540 |
$this
|
541 |
], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation");
|
542 |
|
574 |
*/
|
575 |
public function getPluginPageUrl($page_id, $args = [])
|
576 |
{
|
577 |
+
if( !class_exists('Wbcr_FactoryPages445') ) {
|
578 |
+
throw new Exception('The factory_pages_445 module is not included.');
|
579 |
}
|
580 |
|
581 |
if( !is_admin() ) {
|
584 |
return null;
|
585 |
}
|
586 |
|
587 |
+
return Wbcr_FactoryPages445::getPageUrl($this, $page_id, $args);
|
588 |
}
|
589 |
|
590 |
/**
|
594 |
* @param $slug
|
595 |
* param $premium
|
596 |
*
|
597 |
+
* @return \WBCR\Factory_446\Components\Install_Button
|
598 |
*/
|
599 |
public function get_install_component_button($component_type, $slug)
|
600 |
{
|
601 |
+
require_once FACTORY_446_DIR . '/includes/components/class-install-component-button.php';
|
602 |
|
603 |
+
return new \WBCR\Factory_446\Components\Install_Button($this, $component_type, $slug);
|
604 |
}
|
605 |
|
606 |
/**
|
609 |
* @param $component_type
|
610 |
* @param $slug
|
611 |
*
|
612 |
+
* @return \WBCR\Factory_446\Components\Delete_Button
|
613 |
*/
|
614 |
public function get_delete_component_button($component_type, $slug)
|
615 |
{
|
616 |
+
require_once FACTORY_446_DIR . '/includes/components/class-delete-component-button.php';
|
617 |
|
618 |
+
return new WBCR\Factory_446\Components\Delete_Button($this, $component_type, $slug);
|
619 |
}
|
620 |
|
621 |
/**
|
798 |
/**
|
799 |
* @since 4.1.1 - deprecated
|
800 |
*/
|
801 |
+
wbcr_factory_446_do_action_deprecated('wbcr_factory_446_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_446/modules_loaded-" . $this->plugin_name);
|
802 |
|
803 |
/**
|
804 |
* @since 4.1.1 - add
|
805 |
*/
|
806 |
+
do_action('wbcr/factory_446/modules_loaded-' . $this->plugin_name);
|
807 |
}
|
808 |
|
809 |
|
830 |
});
|
831 |
|
832 |
if( is_admin() ) {
|
833 |
+
add_filter('wbcr_factory_446_core_admin_allow_multisite', '__return_true');
|
834 |
|
835 |
register_activation_hook($this->get_paths()->main_file, [$this, 'activation_hook']);
|
836 |
register_deactivation_hook($this->get_paths()->main_file, [$this, 'deactivation_hook']);
|
846 |
*/
|
847 |
protected function init_plugin_migrations()
|
848 |
{
|
849 |
+
new WBCR\Factory_446\Migrations($this);
|
850 |
}
|
851 |
|
852 |
/**
|
857 |
*/
|
858 |
protected function init_plugin_notices()
|
859 |
{
|
860 |
+
new Wbcr\Factory_446\Notices($this);
|
861 |
}
|
862 |
|
863 |
/**
|
873 |
protected function init_plugin_updates()
|
874 |
{
|
875 |
if( $this->has_updates ) {
|
876 |
+
new WBCR\Factory_446\Updates\Upgrader($this);
|
877 |
}
|
878 |
}
|
879 |
|
896 |
}
|
897 |
|
898 |
// Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
|
899 |
+
$this->premium = WBCR\Factory_446\Premium\Manager::instance($this, $this->license_settings);
|
900 |
|
901 |
// Подключаем премиум апгрейдер
|
902 |
if( isset($this->license_settings['has_updates']) && $this->license_settings['has_updates'] ) {
|
903 |
+
new WBCR\Factory_446\Updates\Premium_Upgrader($this);
|
904 |
}
|
905 |
}
|
906 |
}
|
libs/factory/core/includes/class-factory-plugin-base.php
CHANGED
@@ -5,7 +5,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
5 |
}
|
6 |
|
7 |
/**
|
8 |
-
* Базовый класс для создания нового плагина. Полную реализацию класса смотрите в
|
9 |
*
|
10 |
* Документация по классу: https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/392724484
|
11 |
* Документация по созданию плагина: https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/327828
|
@@ -17,9 +17,9 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
17 |
* @since 1.0.0
|
18 |
* @package factory-core
|
19 |
*/
|
20 |
-
class
|
21 |
|
22 |
-
use WBCR\
|
23 |
|
24 |
/**
|
25 |
* Обязательное свойство. Префикс, используется для создания пространство имен.
|
@@ -81,7 +81,7 @@ class Wbcr_Factory445_Base {
|
|
81 |
* https://robin-image-optimizer.webcraftic.com/premium-features.
|
82 |
*
|
83 |
* Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
|
84 |
-
* экземпляр класса \WBCR\
|
85 |
* Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
|
86 |
* можете изменить все ссылки в одном месте.
|
87 |
*
|
@@ -127,7 +127,7 @@ class Wbcr_Factory445_Base {
|
|
127 |
* к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
|
128 |
* взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
|
129 |
* индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
|
130 |
-
* WBCR\
|
131 |
*
|
132 |
* На текущий момент существует только реализация для freemius провайдера.
|
133 |
*
|
@@ -177,9 +177,9 @@ class Wbcr_Factory445_Base {
|
|
177 |
* }
|
178 |
*/
|
179 |
protected $load_factory_modules = [
|
180 |
-
[ 'libs/factory/bootstrap', '
|
181 |
-
[ 'libs/factory/forms', '
|
182 |
-
[ 'libs/factory/pages', '
|
183 |
];
|
184 |
|
185 |
/**
|
@@ -209,20 +209,20 @@ class Wbcr_Factory445_Base {
|
|
209 |
|
210 |
|
211 |
/**
|
212 |
-
* Экземпляр класса \WBCR\
|
213 |
* о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
|
214 |
* ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
|
215 |
*
|
216 |
-
* @var \WBCR\
|
217 |
*/
|
218 |
protected $support;
|
219 |
|
220 |
/**
|
221 |
-
* Экземпляр класса \WBCR\
|
222 |
* путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
|
223 |
* или его входного файла.
|
224 |
*
|
225 |
-
* @var \WBCR\
|
226 |
*/
|
227 |
protected $paths;
|
228 |
|
@@ -270,8 +270,8 @@ class Wbcr_Factory445_Base {
|
|
270 |
throw new Exception( 'One of the required attributes has not been passed (prefix, plugin_title, plugin_name, plugin_version, plugin_text_domain).' );
|
271 |
}
|
272 |
|
273 |
-
$this->support = new \WBCR\
|
274 |
-
$this->paths = new \WBCR\
|
275 |
|
276 |
// used only in the module 'updates'
|
277 |
$this->plugin_slug = ! empty( $this->plugin_name ) ? $this->plugin_name : basename( $plugin_file );
|
@@ -391,7 +391,7 @@ class Wbcr_Factory445_Base {
|
|
391 |
* Проверяет, включен ли премиум для этого плагина или нет.
|
392 |
*
|
393 |
* @return bool Возвращает true, если премиум пакет включен для этого плагина.
|
394 |
-
* См.
|
395 |
*/
|
396 |
public function has_premium() {
|
397 |
return $this->has_premium;
|
@@ -400,7 +400,7 @@ class Wbcr_Factory445_Base {
|
|
400 |
/**
|
401 |
* Позволяет получить заголовок плагина.
|
402 |
*
|
403 |
-
* @return string Возвращает заголовок плагина. См.
|
404 |
*/
|
405 |
public function getPluginTitle() {
|
406 |
return $this->plugin_title;
|
@@ -409,7 +409,7 @@ class Wbcr_Factory445_Base {
|
|
409 |
/**
|
410 |
* Позволяет получить префикс плагина.
|
411 |
*
|
412 |
-
* @return string Возвращает префикс плагина.См.
|
413 |
*/
|
414 |
public function getPrefix() {
|
415 |
return $this->prefix;
|
@@ -418,7 +418,7 @@ class Wbcr_Factory445_Base {
|
|
418 |
/**
|
419 |
* Позволяет получить имя плагина.
|
420 |
*
|
421 |
-
* @return string Возвращает имя плагина. См.
|
422 |
*/
|
423 |
public function getPluginName() {
|
424 |
return $this->plugin_name;
|
@@ -427,7 +427,7 @@ class Wbcr_Factory445_Base {
|
|
427 |
/**
|
428 |
* Позволяет получить версию плагина.
|
429 |
*
|
430 |
-
* @return string Возвращает версию плагина. См.
|
431 |
*/
|
432 |
public function getPluginVersion() {
|
433 |
return $this->plugin_version;
|
@@ -449,7 +449,7 @@ class Wbcr_Factory445_Base {
|
|
449 |
* какие-то данные не описанные в интерфейсе этого плагина.
|
450 |
*
|
451 |
* @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
|
452 |
-
*
|
453 |
*
|
454 |
* @return null
|
455 |
*/
|
@@ -462,18 +462,18 @@ class Wbcr_Factory445_Base {
|
|
462 |
}
|
463 |
|
464 |
/**
|
465 |
-
* Предоставляет доступ к экземпляру класса \WBCR\
|
466 |
*
|
467 |
-
* @return \WBCR\
|
468 |
*/
|
469 |
public function get_support() {
|
470 |
return $this->support;
|
471 |
}
|
472 |
|
473 |
/**
|
474 |
-
* Предоставляет доступ к экземпляру класса \WBCR\
|
475 |
*
|
476 |
-
* @return \WBCR\
|
477 |
*/
|
478 |
public function get_paths() {
|
479 |
return $this->paths;
|
@@ -482,7 +482,7 @@ class Wbcr_Factory445_Base {
|
|
482 |
/**
|
483 |
* Позволяет получить сырые данные плагина в виде объекта StdClass.
|
484 |
*
|
485 |
-
* @return object Возвращает объект с сырыми данными плагина. См.
|
486 |
*/
|
487 |
public function getPluginInfo() {
|
488 |
return (object) $this->plugin_data;
|
5 |
}
|
6 |
|
7 |
/**
|
8 |
+
* Базовый класс для создания нового плагина. Полную реализацию класса смотрите в Wbcr_Factory446_Plugin
|
9 |
*
|
10 |
* Документация по классу: https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/392724484
|
11 |
* Документация по созданию плагина: https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/327828
|
17 |
* @since 1.0.0
|
18 |
* @package factory-core
|
19 |
*/
|
20 |
+
class Wbcr_Factory446_Base {
|
21 |
|
22 |
+
use WBCR\Factory_446\Options;
|
23 |
|
24 |
/**
|
25 |
* Обязательное свойство. Префикс, используется для создания пространство имен.
|
81 |
* https://robin-image-optimizer.webcraftic.com/premium-features.
|
82 |
*
|
83 |
* Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
|
84 |
+
* экземпляр класса \WBCR\Factory_446\Entities\Support, для получения информации о сайте плагина.
|
85 |
* Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
|
86 |
* можете изменить все ссылки в одном месте.
|
87 |
*
|
127 |
* к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
|
128 |
* взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
|
129 |
* индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
|
130 |
+
* WBCR\Factory_446\Premium\Provider > WBCR\Factory_Freemius_134\Premium\Provider
|
131 |
*
|
132 |
* На текущий момент существует только реализация для freemius провайдера.
|
133 |
*
|
177 |
* }
|
178 |
*/
|
179 |
protected $load_factory_modules = [
|
180 |
+
[ 'libs/factory/bootstrap', 'factory_bootstrap_446', 'admin' ],
|
181 |
+
[ 'libs/factory/forms', 'factory_forms_443', 'admin' ],
|
182 |
+
[ 'libs/factory/pages', 'factory_pages_445', 'admin' ],
|
183 |
];
|
184 |
|
185 |
/**
|
209 |
|
210 |
|
211 |
/**
|
212 |
+
* Экземпляр класса \WBCR\Factory_446\Entities\Support используется для получения информации
|
213 |
* о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
|
214 |
* ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
|
215 |
*
|
216 |
+
* @var \WBCR\Factory_446\Entities\Support
|
217 |
*/
|
218 |
protected $support;
|
219 |
|
220 |
/**
|
221 |
+
* Экземпляр класса \WBCR\Factory_446\Entities\Paths используется для получения информации о
|
222 |
* путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
|
223 |
* или его входного файла.
|
224 |
*
|
225 |
+
* @var \WBCR\Factory_446\Entities\Paths
|
226 |
*/
|
227 |
protected $paths;
|
228 |
|
270 |
throw new Exception( 'One of the required attributes has not been passed (prefix, plugin_title, plugin_name, plugin_version, plugin_text_domain).' );
|
271 |
}
|
272 |
|
273 |
+
$this->support = new \WBCR\Factory_446\Entities\Support( $this->support_details );
|
274 |
+
$this->paths = new \WBCR\Factory_446\Entities\Paths( $plugin_file );
|
275 |
|
276 |
// used only in the module 'updates'
|
277 |
$this->plugin_slug = ! empty( $this->plugin_name ) ? $this->plugin_name : basename( $plugin_file );
|
391 |
* Проверяет, включен ли премиум для этого плагина или нет.
|
392 |
*
|
393 |
* @return bool Возвращает true, если премиум пакет включен для этого плагина.
|
394 |
+
* См. Wbcr_Factory446_Base::has_premium
|
395 |
*/
|
396 |
public function has_premium() {
|
397 |
return $this->has_premium;
|
400 |
/**
|
401 |
* Позволяет получить заголовок плагина.
|
402 |
*
|
403 |
+
* @return string Возвращает заголовок плагина. См. Wbcr_Factory446_Base::plugin_title
|
404 |
*/
|
405 |
public function getPluginTitle() {
|
406 |
return $this->plugin_title;
|
409 |
/**
|
410 |
* Позволяет получить префикс плагина.
|
411 |
*
|
412 |
+
* @return string Возвращает префикс плагина.См. Wbcr_Factory446_Base::prefix
|
413 |
*/
|
414 |
public function getPrefix() {
|
415 |
return $this->prefix;
|
418 |
/**
|
419 |
* Позволяет получить имя плагина.
|
420 |
*
|
421 |
+
* @return string Возвращает имя плагина. См. Wbcr_Factory446_Base::plugin_name
|
422 |
*/
|
423 |
public function getPluginName() {
|
424 |
return $this->plugin_name;
|
427 |
/**
|
428 |
* Позволяет получить версию плагина.
|
429 |
*
|
430 |
+
* @return string Возвращает версию плагина. См. Wbcr_Factory446_Base::plugin_version
|
431 |
*/
|
432 |
public function getPluginVersion() {
|
433 |
return $this->plugin_version;
|
449 |
* какие-то данные не описанные в интерфейсе этого плагина.
|
450 |
*
|
451 |
* @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
|
452 |
+
* Wbcr_Factory446_Base::plugin_data
|
453 |
*
|
454 |
* @return null
|
455 |
*/
|
462 |
}
|
463 |
|
464 |
/**
|
465 |
+
* Предоставляет доступ к экземпляру класса \WBCR\Factory_446\Entities\Support.
|
466 |
*
|
467 |
+
* @return \WBCR\Factory_446\Entities\Support
|
468 |
*/
|
469 |
public function get_support() {
|
470 |
return $this->support;
|
471 |
}
|
472 |
|
473 |
/**
|
474 |
+
* Предоставляет доступ к экземпляру класса \WBCR\Factory_446\Entities\Paths.
|
475 |
*
|
476 |
+
* @return \WBCR\Factory_446\Entities\Paths
|
477 |
*/
|
478 |
public function get_paths() {
|
479 |
return $this->paths;
|
482 |
/**
|
483 |
* Позволяет получить сырые данные плагина в виде объекта StdClass.
|
484 |
*
|
485 |
+
* @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory446_Base::plugin_data
|
486 |
*/
|
487 |
public function getPluginInfo() {
|
488 |
return (object) $this->plugin_data;
|
libs/factory/core/includes/class-factory-requests.php
CHANGED
@@ -11,7 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
11 |
* @package factory-core
|
12 |
*/
|
13 |
|
14 |
-
class
|
15 |
|
16 |
/**
|
17 |
* @param null $param
|
11 |
* @package factory-core
|
12 |
*/
|
13 |
|
14 |
+
class Wbcr_Factory446_Request {
|
15 |
|
16 |
/**
|
17 |
* @param null $param
|
libs/factory/core/includes/class-factory-requirements.php
CHANGED
@@ -12,8 +12,8 @@
|
|
12 |
* @since 4.0.9
|
13 |
*/
|
14 |
// @formatter:off
|
15 |
-
if ( ! class_exists( '
|
16 |
-
class
|
17 |
|
18 |
/**
|
19 |
* Factory framework version
|
@@ -242,7 +242,7 @@ if ( ! class_exists( 'Wbcr_Factory445_Requirements' ) ) {
|
|
242 |
$notice_text = $notice_default_text = '';
|
243 |
$notice_default_text .= '<b>' . $this->plugin_title . ' ' . __( 'warning', '' ) . ':</b>' . '<br>';
|
244 |
|
245 |
-
$notice_default_text .= sprintf( __( 'The %s plugin has stopped.', '
|
246 |
$notice_default_text .= __( 'Possible reasons:', '' ) . ' <br>';
|
247 |
|
248 |
$has_one = false;
|
@@ -273,21 +273,21 @@ if ( ! class_exists( 'Wbcr_Factory445_Requirements' ) ) {
|
|
273 |
* @return string
|
274 |
*/
|
275 |
protected function get_php_incompat_text() {
|
276 |
-
return sprintf( __( 'You need to update the PHP version to %s or higher!', '
|
277 |
}
|
278 |
|
279 |
/**
|
280 |
* @return string
|
281 |
*/
|
282 |
protected function get_wp_incompat_text() {
|
283 |
-
return sprintf( __( 'You need to update WordPress to %s or higher!', '
|
284 |
}
|
285 |
|
286 |
/**
|
287 |
* @return string
|
288 |
*/
|
289 |
protected function get_plugin_already_activate_text() {
|
290 |
-
return sprintf( __( 'Plugin %s is already activated, you are trying to activate it again.', '
|
291 |
}
|
292 |
}
|
293 |
}
|
12 |
* @since 4.0.9
|
13 |
*/
|
14 |
// @formatter:off
|
15 |
+
if ( ! class_exists( 'Wbcr_Factory446_Requirements' ) ) {
|
16 |
+
class Wbcr_Factory446_Requirements {
|
17 |
|
18 |
/**
|
19 |
* Factory framework version
|
242 |
$notice_text = $notice_default_text = '';
|
243 |
$notice_default_text .= '<b>' . $this->plugin_title . ' ' . __( 'warning', '' ) . ':</b>' . '<br>';
|
244 |
|
245 |
+
$notice_default_text .= sprintf( __( 'The %s plugin has stopped.', 'wbcr_factory_clearfy_237' ), $this->plugin_title ) . ' ';
|
246 |
$notice_default_text .= __( 'Possible reasons:', '' ) . ' <br>';
|
247 |
|
248 |
$has_one = false;
|
273 |
* @return string
|
274 |
*/
|
275 |
protected function get_php_incompat_text() {
|
276 |
+
return sprintf( __( 'You need to update the PHP version to %s or higher!', 'wbcr_factory_446' ), $this->required_php_version );
|
277 |
}
|
278 |
|
279 |
/**
|
280 |
* @return string
|
281 |
*/
|
282 |
protected function get_wp_incompat_text() {
|
283 |
+
return sprintf( __( 'You need to update WordPress to %s or higher!', 'wbcr_factory_446' ), $this->required_wp_version );
|
284 |
}
|
285 |
|
286 |
/**
|
287 |
* @return string
|
288 |
*/
|
289 |
protected function get_plugin_already_activate_text() {
|
290 |
+
return sprintf( __( 'Plugin %s is already activated, you are trying to activate it again.', 'wbcr_factory_446' ), $this->plugin_title );
|
291 |
}
|
292 |
}
|
293 |
}
|
libs/factory/core/includes/components/class-delete-component-button.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* This file groups the settings for quick setup
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446\Components;
|
4 |
|
5 |
/**
|
6 |
* This file groups the settings for quick setup
|
libs/factory/core/includes/components/class-install-component-button.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* This file groups the settings for quick setup
|
@@ -22,7 +22,7 @@ class Install_Button {
|
|
22 |
|
23 |
protected $classes = [
|
24 |
'button',
|
25 |
-
'wfactory-
|
26 |
];
|
27 |
protected $data = [];
|
28 |
protected $base_path;
|
@@ -37,7 +37,7 @@ class Install_Button {
|
|
37 |
* @throws \Exception
|
38 |
* @since 4.3.3
|
39 |
*/
|
40 |
-
public function __construct(\
|
41 |
{
|
42 |
if( empty($type) || !is_string($plugin_slug) ) {
|
43 |
throw new \Exception('Empty type or plugin_slug attribute.');
|
@@ -67,7 +67,7 @@ class Install_Button {
|
|
67 |
|
68 |
// Set default data
|
69 |
$this->add_data('storage', $this->type);
|
70 |
-
$this->add_data('i18n', \
|
71 |
$this->add_data('wpnonce', wp_create_nonce('updates'));
|
72 |
}
|
73 |
|
@@ -420,13 +420,13 @@ class Install_Button {
|
|
420 |
protected function get_i18n()
|
421 |
{
|
422 |
return [
|
423 |
-
'activate' => __('Activate', '
|
424 |
-
'install' => __('Install', '
|
425 |
-
'deactivate' => __('Deactivate', '
|
426 |
-
'delete' => __('Delete', '
|
427 |
-
'loading' => __('Please wait...', '
|
428 |
-
'preparation' => __('Preparation...', '
|
429 |
-
'read' => __('Read more', '
|
430 |
];
|
431 |
}
|
432 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446\Components;
|
4 |
|
5 |
/**
|
6 |
* This file groups the settings for quick setup
|
22 |
|
23 |
protected $classes = [
|
24 |
'button',
|
25 |
+
'wfactory-446-process-button'
|
26 |
];
|
27 |
protected $data = [];
|
28 |
protected $base_path;
|
37 |
* @throws \Exception
|
38 |
* @since 4.3.3
|
39 |
*/
|
40 |
+
public function __construct(\Wbcr_Factory446_Plugin $plugin, $type, $plugin_slug)
|
41 |
{
|
42 |
if( empty($type) || !is_string($plugin_slug) ) {
|
43 |
throw new \Exception('Empty type or plugin_slug attribute.');
|
67 |
|
68 |
// Set default data
|
69 |
$this->add_data('storage', $this->type);
|
70 |
+
$this->add_data('i18n', \WbcrFactoryClearfy237_Helpers::getEscapeJson($this->get_i18n()));
|
71 |
$this->add_data('wpnonce', wp_create_nonce('updates'));
|
72 |
}
|
73 |
|
420 |
protected function get_i18n()
|
421 |
{
|
422 |
return [
|
423 |
+
'activate' => __('Activate', 'wbcr_factory_446'),
|
424 |
+
'install' => __('Install', 'wbcr_factory_446'),
|
425 |
+
'deactivate' => __('Deactivate', 'wbcr_factory_446'),
|
426 |
+
'delete' => __('Delete', 'wbcr_factory_446'),
|
427 |
+
'loading' => __('Please wait...', 'wbcr_factory_446'),
|
428 |
+
'preparation' => __('Preparation...', 'wbcr_factory_446'),
|
429 |
+
'read' => __('Read more', 'wbcr_factory_446')
|
430 |
];
|
431 |
}
|
432 |
|
libs/factory/core/includes/entities/class-factory-paths.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
if ( ! defined( 'ABSPATH' ) ) {
|
6 |
exit;
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446\Entities;
|
4 |
|
5 |
if ( ! defined( 'ABSPATH' ) ) {
|
6 |
exit;
|
libs/factory/core/includes/entities/class-factory-support.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
if ( ! defined( 'ABSPATH' ) ) {
|
6 |
exit;
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446\Entities;
|
4 |
|
5 |
if ( ! defined( 'ABSPATH' ) ) {
|
6 |
exit;
|
libs/factory/core/includes/functions.php
CHANGED
@@ -53,17 +53,17 @@ if ( ! function_exists( 'get_user_locale' ) ) {
|
|
53 |
* @param string $message Optional. A message regarding the change.
|
54 |
*
|
55 |
* @return mixed
|
56 |
-
* @see
|
57 |
*
|
58 |
*/
|
59 |
-
function
|
60 |
if ( function_exists( 'apply_filters_deprecated' ) ) {
|
61 |
return apply_filters_deprecated( $tag, $args, $version, $replacement, $message );
|
62 |
}
|
63 |
if ( ! has_filter( $tag ) ) {
|
64 |
return $args[0];
|
65 |
}
|
66 |
-
|
67 |
|
68 |
return apply_filters_ref_array( $tag, $args );
|
69 |
}
|
@@ -89,7 +89,7 @@ function wbcr_factory_445_apply_filters_deprecated( $tag, $args, $version, $repl
|
|
89 |
* @see _deprecated_hook()
|
90 |
*
|
91 |
*/
|
92 |
-
function
|
93 |
if ( function_exists( 'do_action_deprecated' ) ) {
|
94 |
do_action_deprecated( $tag, $args, $version, $replacement, $message );
|
95 |
|
@@ -98,14 +98,14 @@ function wbcr_factory_445_do_action_deprecated( $tag, $args, $version, $replacem
|
|
98 |
if ( ! has_action( $tag ) ) {
|
99 |
return;
|
100 |
}
|
101 |
-
|
102 |
do_action_ref_array( $tag, $args );
|
103 |
}
|
104 |
|
105 |
/**
|
106 |
* Marks a deprecated action or filter hook as deprecated and throws a notice.
|
107 |
*
|
108 |
-
* Use the '
|
109 |
* deprecated hook was called.
|
110 |
*
|
111 |
* Default behavior is to trigger a user error if WP_DEBUG is true.
|
@@ -123,7 +123,7 @@ function wbcr_factory_445_do_action_deprecated( $tag, $args, $version, $replacem
|
|
123 |
* @param string $replacement Optional. The hook that should have been used.
|
124 |
* @param string $message Optional. A message regarding the change.
|
125 |
*/
|
126 |
-
function
|
127 |
/**
|
128 |
* Fires when a deprecated hook is called.
|
129 |
*
|
53 |
* @param string $message Optional. A message regarding the change.
|
54 |
*
|
55 |
* @return mixed
|
56 |
+
* @see wbcr_factory_446_deprecated_hook()
|
57 |
*
|
58 |
*/
|
59 |
+
function wbcr_factory_446_apply_filters_deprecated( $tag, $args, $version, $replacement = false, $message = null ) {
|
60 |
if ( function_exists( 'apply_filters_deprecated' ) ) {
|
61 |
return apply_filters_deprecated( $tag, $args, $version, $replacement, $message );
|
62 |
}
|
63 |
if ( ! has_filter( $tag ) ) {
|
64 |
return $args[0];
|
65 |
}
|
66 |
+
wbcr_factory_446_deprecated_hook( $tag, $version, $replacement, $message );
|
67 |
|
68 |
return apply_filters_ref_array( $tag, $args );
|
69 |
}
|
89 |
* @see _deprecated_hook()
|
90 |
*
|
91 |
*/
|
92 |
+
function wbcr_factory_446_do_action_deprecated( $tag, $args, $version, $replacement = false, $message = null ) {
|
93 |
if ( function_exists( 'do_action_deprecated' ) ) {
|
94 |
do_action_deprecated( $tag, $args, $version, $replacement, $message );
|
95 |
|
98 |
if ( ! has_action( $tag ) ) {
|
99 |
return;
|
100 |
}
|
101 |
+
wbcr_factory_446_deprecated_hook( $tag, $version, $replacement, $message );
|
102 |
do_action_ref_array( $tag, $args );
|
103 |
}
|
104 |
|
105 |
/**
|
106 |
* Marks a deprecated action or filter hook as deprecated and throws a notice.
|
107 |
*
|
108 |
+
* Use the 'wbcr_factory_446_deprecated_hook_run' action to get the backtrace describing where the
|
109 |
* deprecated hook was called.
|
110 |
*
|
111 |
* Default behavior is to trigger a user error if WP_DEBUG is true.
|
123 |
* @param string $replacement Optional. The hook that should have been used.
|
124 |
* @param string $message Optional. A message regarding the change.
|
125 |
*/
|
126 |
+
function wbcr_factory_446_deprecated_hook( $hook, $version, $replacement = null, $message = null ) {
|
127 |
/**
|
128 |
* Fires when a deprecated hook is called.
|
129 |
*
|
libs/factory/core/includes/premium/class-factory-license-interface.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446\Premium\Interfaces;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
libs/factory/core/includes/premium/class-factory-manager.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use Exception;
|
6 |
-
use
|
7 |
|
8 |
// Exit if accessed directly
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -24,7 +24,7 @@ class Manager {
|
|
24 |
public static $providers;
|
25 |
|
26 |
/**
|
27 |
-
* @var
|
28 |
*/
|
29 |
protected $plugin;
|
30 |
|
@@ -36,24 +36,24 @@ class Manager {
|
|
36 |
/**
|
37 |
* Manager constructor.
|
38 |
*
|
39 |
-
* @param
|
40 |
* @param array $settings
|
41 |
*
|
42 |
* @throws Exception
|
43 |
*/
|
44 |
-
public function __construct(
|
45 |
$this->plugin = $plugin;
|
46 |
$this->settings = $settings;
|
47 |
}
|
48 |
|
49 |
/**
|
50 |
-
* @param
|
51 |
* @param array $settings
|
52 |
*
|
53 |
-
* @return \WBCR\
|
54 |
* @throws Exception
|
55 |
*/
|
56 |
-
public static function instance(
|
57 |
$premium_manager = new Manager( $plugin, $settings );
|
58 |
|
59 |
return $premium_manager->instance_provider();
|
@@ -62,7 +62,7 @@ class Manager {
|
|
62 |
/**
|
63 |
* @param $provider_name
|
64 |
*
|
65 |
-
* @return \WBCR\
|
66 |
* @throws Exception
|
67 |
*/
|
68 |
public function instance_provider() {
|
@@ -70,7 +70,7 @@ class Manager {
|
|
70 |
|
71 |
if ( isset( self::$providers[ $provider_name ] ) && class_exists( self::$providers[ $provider_name ] ) ) {
|
72 |
if ( self::$providers[ $provider_name ] instanceof Provider ) {
|
73 |
-
throw new Exception( "Provider {$provider_name} must extend the class WBCR\
|
74 |
}
|
75 |
|
76 |
return new self::$providers[ $provider_name ]( $this->plugin, $this->settings );
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446\Premium;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory446_Plugin;
|
7 |
|
8 |
// Exit if accessed directly
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
24 |
public static $providers;
|
25 |
|
26 |
/**
|
27 |
+
* @var Wbcr_Factory446_Plugin
|
28 |
*/
|
29 |
protected $plugin;
|
30 |
|
36 |
/**
|
37 |
* Manager constructor.
|
38 |
*
|
39 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
40 |
* @param array $settings
|
41 |
*
|
42 |
* @throws Exception
|
43 |
*/
|
44 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin, array $settings ) {
|
45 |
$this->plugin = $plugin;
|
46 |
$this->settings = $settings;
|
47 |
}
|
48 |
|
49 |
/**
|
50 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
51 |
* @param array $settings
|
52 |
*
|
53 |
+
* @return \WBCR\Factory_Freemius_134\Premium\Provider
|
54 |
* @throws Exception
|
55 |
*/
|
56 |
+
public static function instance( Wbcr_Factory446_Plugin $plugin, array $settings ) {
|
57 |
$premium_manager = new Manager( $plugin, $settings );
|
58 |
|
59 |
return $premium_manager->instance_provider();
|
62 |
/**
|
63 |
* @param $provider_name
|
64 |
*
|
65 |
+
* @return \WBCR\Factory_Freemius_134\Premium\Provider
|
66 |
* @throws Exception
|
67 |
*/
|
68 |
public function instance_provider() {
|
70 |
|
71 |
if ( isset( self::$providers[ $provider_name ] ) && class_exists( self::$providers[ $provider_name ] ) ) {
|
72 |
if ( self::$providers[ $provider_name ] instanceof Provider ) {
|
73 |
+
throw new Exception( "Provider {$provider_name} must extend the class WBCR\Factory_446\Premium\Provider interface!" );
|
74 |
}
|
75 |
|
76 |
return new self::$providers[ $provider_name ]( $this->plugin, $this->settings );
|
libs/factory/core/includes/premium/class-factory-provider-abstract.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use Exception;
|
6 |
-
use
|
7 |
|
8 |
// Exit if accessed directly
|
9 |
if( !defined('ABSPATH') ) {
|
@@ -21,7 +21,7 @@ if( !defined('ABSPATH') ) {
|
|
21 |
abstract class Provider {
|
22 |
|
23 |
/**
|
24 |
-
* @var
|
25 |
*/
|
26 |
protected $plugin;
|
27 |
|
@@ -38,10 +38,10 @@ abstract class Provider {
|
|
38 |
/**
|
39 |
* Provider constructor.
|
40 |
*
|
41 |
-
* @param
|
42 |
* @param array $settings
|
43 |
*/
|
44 |
-
public function __construct(
|
45 |
{
|
46 |
$this->plugin = $plugin;
|
47 |
$this->settings = $settings;
|
@@ -244,7 +244,7 @@ abstract class Provider {
|
|
244 |
abstract public function get_billing_cycle();
|
245 |
|
246 |
/**
|
247 |
-
* @return \WBCR\
|
248 |
*/
|
249 |
abstract public function get_license();
|
250 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446\Premium;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory446_Plugin;
|
7 |
|
8 |
// Exit if accessed directly
|
9 |
if( !defined('ABSPATH') ) {
|
21 |
abstract class Provider {
|
22 |
|
23 |
/**
|
24 |
+
* @var Wbcr_Factory446_Plugin
|
25 |
*/
|
26 |
protected $plugin;
|
27 |
|
38 |
/**
|
39 |
* Provider constructor.
|
40 |
*
|
41 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
42 |
* @param array $settings
|
43 |
*/
|
44 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin, array $settings)
|
45 |
{
|
46 |
$this->plugin = $plugin;
|
47 |
$this->settings = $settings;
|
244 |
abstract public function get_billing_cycle();
|
245 |
|
246 |
/**
|
247 |
+
* @return \WBCR\Factory_446\Premium\Interfaces\License
|
248 |
*/
|
249 |
abstract public function get_license();
|
250 |
|
libs/factory/core/includes/updates/class-factory-premium-upgrader.php
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use Exception;
|
6 |
use Plugin_Installer_Skin;
|
7 |
use Plugin_Upgrader;
|
8 |
-
use
|
9 |
-
use
|
10 |
use WP_Filesystem_Base;
|
11 |
use WP_Upgrader;
|
12 |
use WP_Upgrader_Skin;
|
@@ -45,13 +45,13 @@ class Premium_Upgrader extends Upgrader {
|
|
45 |
* @param $args
|
46 |
* @param bool $is_premium
|
47 |
*
|
48 |
-
* @param
|
49 |
*
|
50 |
* @throws Exception
|
51 |
* @since 4.1.1
|
52 |
*
|
53 |
*/
|
54 |
-
public function __construct(
|
55 |
{
|
56 |
parent::__construct($plugin);
|
57 |
|
@@ -242,9 +242,9 @@ class Premium_Upgrader extends Upgrader {
|
|
242 |
/**
|
243 |
* Выводит уведомление внутри интерфейса плагина, на всех страницах плагина.
|
244 |
*
|
245 |
-
* @param
|
246 |
*
|
247 |
-
* @param
|
248 |
*
|
249 |
* @return void
|
250 |
* @since 4.1.1
|
@@ -809,12 +809,12 @@ class Premium_Upgrader extends Upgrader {
|
|
809 |
$cancel_license_url = $this->get_action_url('cancel_license');
|
810 |
|
811 |
$texts = [
|
812 |
-
'need_activate_license' => __('License activation required. A license is required to get premium plugin updates, as well as to get additional services.', '
|
813 |
-
'need_renew_license' => __('Your license has expired. You can no longer get premium plugin updates, premium support and your access to Webcraftic services has been suspended.', '
|
814 |
'please_install_premium' => sprintf(__('Congratulations, you have activated a premium license! Please install premium add-on to use pro features now.
|
815 |
-
<a href="%s">Install</a> premium add-on or <a href="%s">cancel</a> license.', '
|
816 |
'please_activate_premium' => sprintf(__('Congratulations, you have activated a premium license! Please activate premium add-on to use pro features now.
|
817 |
-
<a href="%s">Activate</a> premium add-on or <a href="%s">cancel</a> license.', '
|
818 |
];
|
819 |
|
820 |
if( isset($texts[$type]) ) {
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446\Updates;
|
4 |
|
5 |
use Exception;
|
6 |
use Plugin_Installer_Skin;
|
7 |
use Plugin_Upgrader;
|
8 |
+
use Wbcr_Factory446_Plugin;
|
9 |
+
use Wbcr_FactoryPages445_ImpressiveThemplate;
|
10 |
use WP_Filesystem_Base;
|
11 |
use WP_Upgrader;
|
12 |
use WP_Upgrader_Skin;
|
45 |
* @param $args
|
46 |
* @param bool $is_premium
|
47 |
*
|
48 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
49 |
*
|
50 |
* @throws Exception
|
51 |
* @since 4.1.1
|
52 |
*
|
53 |
*/
|
54 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin)
|
55 |
{
|
56 |
parent::__construct($plugin);
|
57 |
|
242 |
/**
|
243 |
* Выводит уведомление внутри интерфейса плагина, на всех страницах плагина.
|
244 |
*
|
245 |
+
* @param Wbcr_FactoryPages445_ImpressiveThemplate $obj
|
246 |
*
|
247 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
248 |
*
|
249 |
* @return void
|
250 |
* @since 4.1.1
|
809 |
$cancel_license_url = $this->get_action_url('cancel_license');
|
810 |
|
811 |
$texts = [
|
812 |
+
'need_activate_license' => __('License activation required. A license is required to get premium plugin updates, as well as to get additional services.', 'wbcr_factory_446'),
|
813 |
+
'need_renew_license' => __('Your license has expired. You can no longer get premium plugin updates, premium support and your access to Webcraftic services has been suspended.', 'wbcr_factory_446'),
|
814 |
'please_install_premium' => sprintf(__('Congratulations, you have activated a premium license! Please install premium add-on to use pro features now.
|
815 |
+
<a href="%s">Install</a> premium add-on or <a href="%s">cancel</a> license.', 'wbcr_factory_446'), $upgrade_url, $cancel_license_url),
|
816 |
'please_activate_premium' => sprintf(__('Congratulations, you have activated a premium license! Please activate premium add-on to use pro features now.
|
817 |
+
<a href="%s">Activate</a> premium add-on or <a href="%s">cancel</a> license.', 'wbcr_factory_446'), $activate_plugin_url, $cancel_license_url)
|
818 |
];
|
819 |
|
820 |
if( isset($texts[$type]) ) {
|
libs/factory/core/includes/updates/class-factory-upgrader.php
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use Exception;
|
6 |
use stdClass;
|
7 |
-
use
|
8 |
|
9 |
// Exit if accessed directly
|
10 |
if( !defined('ABSPATH') ) {
|
@@ -28,8 +28,8 @@ class Upgrader {
|
|
28 |
* @since 4.1.7
|
29 |
* @var array хранит имя репозитория и его имя класса
|
30 |
* [
|
31 |
-
* 'wordpress' => 'WBCR\
|
32 |
-
* 'freemius' => '\WBCR\
|
33 |
* ]
|
34 |
*/
|
35 |
public static $repositories = [];
|
@@ -42,7 +42,7 @@ class Upgrader {
|
|
42 |
protected $type = 'default';
|
43 |
|
44 |
/**
|
45 |
-
* @var
|
46 |
*/
|
47 |
protected $plugin;
|
48 |
|
@@ -88,7 +88,7 @@ class Upgrader {
|
|
88 |
/**
|
89 |
* Manager constructor.
|
90 |
*
|
91 |
-
* @param
|
92 |
* @param $args
|
93 |
* @param bool $is_premium
|
94 |
*
|
@@ -96,7 +96,7 @@ class Upgrader {
|
|
96 |
* @since 4.1.1
|
97 |
*
|
98 |
*/
|
99 |
-
public function __construct(
|
100 |
{
|
101 |
|
102 |
$this->plugin = $plugin;
|
@@ -107,8 +107,8 @@ class Upgrader {
|
|
107 |
$this->is_debug = defined('FACTORY_UPDATES_DEBUG') && FACTORY_UPDATES_DEBUG;
|
108 |
|
109 |
# Добавляем Wordpress репозиторий в список доступных репозиториев по умолчанию
|
110 |
-
self::$repositories['wordpress'] = '\WBCR\
|
111 |
-
self::$repositories['github'] = '\WBCR\
|
112 |
|
113 |
$settings = $this->get_settings();
|
114 |
|
@@ -298,7 +298,7 @@ class Upgrader {
|
|
298 |
|
299 |
if( isset(self::$repositories[$repository_name]) && class_exists(self::$repositories[$repository_name]) ) {
|
300 |
if( self::$repositories[$repository_name] instanceof Repository ) {
|
301 |
-
throw new Exception("Repository {$repository_name} must extend the class WBCR\
|
302 |
}
|
303 |
|
304 |
return new self::$repositories[$repository_name]($this->plugin, $this->get_settings());
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446\Updates;
|
4 |
|
5 |
use Exception;
|
6 |
use stdClass;
|
7 |
+
use Wbcr_Factory446_Plugin;
|
8 |
|
9 |
// Exit if accessed directly
|
10 |
if( !defined('ABSPATH') ) {
|
28 |
* @since 4.1.7
|
29 |
* @var array хранит имя репозитория и его имя класса
|
30 |
* [
|
31 |
+
* 'wordpress' => 'WBCR\Factory_Freemius_134\Updates\Freemius_Repository',
|
32 |
+
* 'freemius' => '\WBCR\Factory_446\Updates\Wordpress_Repository'
|
33 |
* ]
|
34 |
*/
|
35 |
public static $repositories = [];
|
42 |
protected $type = 'default';
|
43 |
|
44 |
/**
|
45 |
+
* @var Wbcr_Factory446_Plugin
|
46 |
*/
|
47 |
protected $plugin;
|
48 |
|
88 |
/**
|
89 |
* Manager constructor.
|
90 |
*
|
91 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
92 |
* @param $args
|
93 |
* @param bool $is_premium
|
94 |
*
|
96 |
* @since 4.1.1
|
97 |
*
|
98 |
*/
|
99 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin)
|
100 |
{
|
101 |
|
102 |
$this->plugin = $plugin;
|
107 |
$this->is_debug = defined('FACTORY_UPDATES_DEBUG') && FACTORY_UPDATES_DEBUG;
|
108 |
|
109 |
# Добавляем Wordpress репозиторий в список доступных репозиториев по умолчанию
|
110 |
+
self::$repositories['wordpress'] = '\WBCR\Factory_446\Updates\Wordpress_Repository';
|
111 |
+
self::$repositories['github'] = '\WBCR\Factory_446\Updates\Github_Repository';
|
112 |
|
113 |
$settings = $this->get_settings();
|
114 |
|
298 |
|
299 |
if( isset(self::$repositories[$repository_name]) && class_exists(self::$repositories[$repository_name]) ) {
|
300 |
if( self::$repositories[$repository_name] instanceof Repository ) {
|
301 |
+
throw new Exception("Repository {$repository_name} must extend the class WBCR\Factory_446\Updates\Repository interface!");
|
302 |
}
|
303 |
|
304 |
return new self::$repositories[$repository_name]($this->plugin, $this->get_settings());
|
libs/factory/core/includes/updates/repositories/class-factory-github.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
-
use
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
@@ -57,11 +57,11 @@ class Github_Repository extends Repository {
|
|
57 |
/**
|
58 |
* Wordpress constructor.
|
59 |
*
|
60 |
-
* @param
|
61 |
* @param bool $is_premium
|
62 |
* @since 4.4.1
|
63 |
*/
|
64 |
-
public function __construct(
|
65 |
{
|
66 |
$settings = wp_parse_args($settings, [
|
67 |
'github_username' => '',
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory446_Plugin;
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
57 |
/**
|
58 |
* Wordpress constructor.
|
59 |
*
|
60 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
61 |
* @param bool $is_premium
|
62 |
* @since 4.4.1
|
63 |
*/
|
64 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin, array $settings = [])
|
65 |
{
|
66 |
$settings = wp_parse_args($settings, [
|
67 |
'github_username' => '',
|
libs/factory/core/includes/updates/repositories/class-factory-repository-abstract.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
-
use
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
@@ -23,17 +23,17 @@ abstract class Repository {
|
|
23 |
protected $initialized = false;
|
24 |
|
25 |
/**
|
26 |
-
* @var
|
27 |
*/
|
28 |
protected $plugin;
|
29 |
|
30 |
/**
|
31 |
* Repository constructor.
|
32 |
*
|
33 |
-
* @param
|
34 |
* @param array $settings
|
35 |
*/
|
36 |
-
abstract public function __construct(
|
37 |
|
38 |
/**
|
39 |
* @return void
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory446_Plugin;
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
23 |
protected $initialized = false;
|
24 |
|
25 |
/**
|
26 |
+
* @var Wbcr_Factory446_Plugin
|
27 |
*/
|
28 |
protected $plugin;
|
29 |
|
30 |
/**
|
31 |
* Repository constructor.
|
32 |
*
|
33 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
34 |
* @param array $settings
|
35 |
*/
|
36 |
+
abstract public function __construct(Wbcr_Factory446_Plugin $plugin, array $settings = []);
|
37 |
|
38 |
/**
|
39 |
* @return void
|
libs/factory/core/includes/updates/repositories/class-factory-wordpress.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
-
use
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
@@ -20,10 +20,10 @@ class Wordpress_Repository extends Repository {
|
|
20 |
/**
|
21 |
* Wordpress constructor.
|
22 |
*
|
23 |
-
* @param
|
24 |
* @param array $settings
|
25 |
*/
|
26 |
-
public function __construct(
|
27 |
{
|
28 |
$this->plugin = $plugin;
|
29 |
}
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_446\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory446_Plugin;
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
20 |
/**
|
21 |
* Wordpress constructor.
|
22 |
*
|
23 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
24 |
* @param array $settings
|
25 |
*/
|
26 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin, array $settings = [])
|
27 |
{
|
28 |
$this->plugin = $plugin;
|
29 |
}
|
libs/factory/core/langs/{wbcr_factory_445-ru_RU.mo → wbcr_factory_446-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/core/langs/{wbcr_factory_445-ru_RU.po → wbcr_factory_446-ru_RU.po}
RENAMED
File without changes
|
libs/factory/forms/boot.php
CHANGED
@@ -22,175 +22,175 @@ if( !is_admin() ) {
|
|
22 |
|
23 |
// checks if the module is already loaded in order to
|
24 |
// prevent loading the same version of the module twice.
|
25 |
-
if( defined('
|
26 |
return;
|
27 |
}
|
28 |
|
29 |
-
define('
|
30 |
|
31 |
-
define('
|
32 |
|
33 |
// absolute path and URL to the files and resources of the module.
|
34 |
-
define('
|
35 |
-
define('
|
36 |
|
37 |
#comp merge
|
38 |
-
require_once(
|
39 |
-
require_once(
|
40 |
-
require_once(
|
41 |
|
42 |
-
require_once(
|
43 |
#endcomp
|
44 |
|
45 |
-
load_plugin_textdomain('
|
46 |
|
47 |
/**
|
48 |
* We add this code into the hook because all these controls quite heavy. So in order to get better perfomance,
|
49 |
* we load the form controls only on pages where the forms are created.
|
50 |
*
|
51 |
* @since 3.0.7
|
52 |
-
* @see the '
|
53 |
*
|
54 |
*/
|
55 |
-
if( !function_exists('
|
56 |
|
57 |
/**
|
58 |
-
* @param
|
59 |
*
|
60 |
* @throws Exception
|
61 |
*/
|
62 |
-
function
|
63 |
{
|
64 |
|
65 |
if( $plugin && !isset($plugin->forms) ) {
|
66 |
throw new Exception("The module Factory Forms is not loaded for the plugin '{$plugin->getPluginName()}'.");
|
67 |
}
|
68 |
|
69 |
-
require_once(
|
70 |
-
require_once(
|
71 |
-
require_once(
|
72 |
-
require_once(
|
73 |
-
require_once(
|
74 |
-
require_once(
|
75 |
-
require_once(
|
76 |
-
require_once(
|
77 |
|
78 |
// registration of controls
|
79 |
$plugin->forms->registerControls([
|
80 |
[
|
81 |
'type' => 'checkbox',
|
82 |
-
'class' => '
|
83 |
-
'include' =>
|
84 |
],
|
85 |
[
|
86 |
'type' => 'list',
|
87 |
-
'class' => '
|
88 |
-
'include' =>
|
89 |
],
|
90 |
[
|
91 |
'type' => 'dropdown',
|
92 |
-
'class' => '
|
93 |
-
'include' =>
|
94 |
],
|
95 |
[
|
96 |
'type' => 'dropdown-and-colors',
|
97 |
-
'class' => '
|
98 |
-
'include' =>
|
99 |
],
|
100 |
[
|
101 |
'type' => 'hidden',
|
102 |
-
'class' => '
|
103 |
-
'include' =>
|
104 |
],
|
105 |
[
|
106 |
'type' => 'hidden',
|
107 |
-
'class' => '
|
108 |
-
'include' =>
|
109 |
],
|
110 |
[
|
111 |
'type' => 'radio',
|
112 |
-
'class' => '
|
113 |
-
'include' =>
|
114 |
],
|
115 |
[
|
116 |
'type' => 'radio-colors',
|
117 |
-
'class' => '
|
118 |
-
'include' =>
|
119 |
],
|
120 |
[
|
121 |
'type' => 'textarea',
|
122 |
-
'class' => '
|
123 |
-
'include' =>
|
124 |
],
|
125 |
[
|
126 |
'type' => 'textbox',
|
127 |
-
'class' => '
|
128 |
-
'include' =>
|
129 |
],
|
130 |
[
|
131 |
'type' => 'multiple-textbox',
|
132 |
-
'class' => '
|
133 |
-
'include' =>
|
134 |
],
|
135 |
[
|
136 |
'type' => 'datetimepicker-range',
|
137 |
-
'class' => '
|
138 |
-
'include' =>
|
139 |
],
|
140 |
[
|
141 |
'type' => 'url',
|
142 |
-
'class' => '
|
143 |
-
'include' =>
|
144 |
],
|
145 |
[
|
146 |
'type' => 'wp-editor',
|
147 |
-
'class' => '
|
148 |
-
'include' =>
|
149 |
],
|
150 |
[
|
151 |
'type' => 'color',
|
152 |
-
'class' => '
|
153 |
-
'include' =>
|
154 |
],
|
155 |
[
|
156 |
'type' => 'color-and-opacity',
|
157 |
-
'class' => '
|
158 |
-
'include' =>
|
159 |
],
|
160 |
[
|
161 |
'type' => 'gradient',
|
162 |
-
'class' => '
|
163 |
-
'include' =>
|
164 |
],
|
165 |
[
|
166 |
'type' => 'font',
|
167 |
-
'class' => '
|
168 |
-
'include' =>
|
169 |
],
|
170 |
[
|
171 |
'type' => 'google-font',
|
172 |
-
'class' => '
|
173 |
-
'include' =>
|
174 |
],
|
175 |
[
|
176 |
'type' => 'pattern',
|
177 |
-
'class' => '
|
178 |
-
'include' =>
|
179 |
],
|
180 |
[
|
181 |
'type' => 'integer',
|
182 |
-
'class' => '
|
183 |
-
'include' =>
|
184 |
],
|
185 |
[
|
186 |
'type' => 'control-group',
|
187 |
-
'class' => '
|
188 |
-
'include' =>
|
189 |
],
|
190 |
[
|
191 |
'type' => 'paddings-editor',
|
192 |
-
'class' => '
|
193 |
-
'include' =>
|
194 |
],
|
195 |
]);
|
196 |
|
@@ -198,53 +198,53 @@ if( !function_exists('wbcr_factory_forms_442_register_default_controls') ) {
|
|
198 |
$plugin->forms->registerHolders([
|
199 |
[
|
200 |
'type' => 'tab',
|
201 |
-
'class' => '
|
202 |
-
'include' =>
|
203 |
],
|
204 |
[
|
205 |
'type' => 'tab-item',
|
206 |
-
'class' => '
|
207 |
-
'include' =>
|
208 |
],
|
209 |
[
|
210 |
'type' => 'accordion',
|
211 |
-
'class' => '
|
212 |
-
'include' =>
|
213 |
],
|
214 |
[
|
215 |
'type' => 'accordion-item',
|
216 |
-
'class' => '
|
217 |
-
'include' =>
|
218 |
],
|
219 |
[
|
220 |
'type' => 'control-group',
|
221 |
-
'class' => '
|
222 |
-
'include' =>
|
223 |
],
|
224 |
[
|
225 |
'type' => 'control-group-item',
|
226 |
-
'class' => '
|
227 |
-
'include' =>
|
228 |
],
|
229 |
[
|
230 |
'type' => 'form-group',
|
231 |
-
'class' => '
|
232 |
-
'include' =>
|
233 |
],
|
234 |
[
|
235 |
'type' => 'more-link',
|
236 |
-
'class' => '
|
237 |
-
'include' =>
|
238 |
],
|
239 |
[
|
240 |
'type' => 'div',
|
241 |
-
'class' => '
|
242 |
-
'include' =>
|
243 |
],
|
244 |
[
|
245 |
'type' => 'columns',
|
246 |
-
'class' => '
|
247 |
-
'include' =>
|
248 |
]
|
249 |
]);
|
250 |
|
@@ -252,23 +252,23 @@ if( !function_exists('wbcr_factory_forms_442_register_default_controls') ) {
|
|
252 |
$plugin->forms->registerCustomElements([
|
253 |
[
|
254 |
'type' => 'html',
|
255 |
-
'class' => '
|
256 |
-
'include' =>
|
257 |
],
|
258 |
[
|
259 |
'type' => 'separator',
|
260 |
-
'class' => '
|
261 |
-
'include' =>
|
262 |
],
|
263 |
]);
|
264 |
|
265 |
// registration of form layouts
|
266 |
$plugin->forms->registerFormLayout([
|
267 |
'name' => 'bootstrap-3',
|
268 |
-
'class' => '
|
269 |
-
'include' =>
|
270 |
]);
|
271 |
}
|
272 |
|
273 |
-
add_action('
|
274 |
}
|
22 |
|
23 |
// checks if the module is already loaded in order to
|
24 |
// prevent loading the same version of the module twice.
|
25 |
+
if( defined('FACTORY_FORMS_443_LOADED') ) {
|
26 |
return;
|
27 |
}
|
28 |
|
29 |
+
define('FACTORY_FORMS_443_LOADED', true);
|
30 |
|
31 |
+
define( 'FACTORY_FORMS_443_VERSION', '4.4.3' );
|
32 |
|
33 |
// absolute path and URL to the files and resources of the module.
|
34 |
+
define('FACTORY_FORMS_443_DIR', dirname(__FILE__));
|
35 |
+
define('FACTORY_FORMS_443_URL', plugins_url(null, __FILE__));
|
36 |
|
37 |
#comp merge
|
38 |
+
require_once(FACTORY_FORMS_443_DIR . '/includes/providers/value-provider.interface.php');
|
39 |
+
require_once(FACTORY_FORMS_443_DIR . '/includes/providers/meta-value-provider.class.php');
|
40 |
+
require_once(FACTORY_FORMS_443_DIR . '/includes/providers/options-value-provider.class.php');
|
41 |
|
42 |
+
require_once(FACTORY_FORMS_443_DIR . '/includes/form.class.php');
|
43 |
#endcomp
|
44 |
|
45 |
+
load_plugin_textdomain('wbcr_factory_forms_443', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
46 |
|
47 |
/**
|
48 |
* We add this code into the hook because all these controls quite heavy. So in order to get better perfomance,
|
49 |
* we load the form controls only on pages where the forms are created.
|
50 |
*
|
51 |
* @since 3.0.7
|
52 |
+
* @see the 'wbcr_factory_forms_443_register_controls' hook
|
53 |
*
|
54 |
*/
|
55 |
+
if( !function_exists('wbcr_factory_forms_443_register_default_controls') ) {
|
56 |
|
57 |
/**
|
58 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
59 |
*
|
60 |
* @throws Exception
|
61 |
*/
|
62 |
+
function wbcr_factory_forms_443_register_default_controls(Wbcr_Factory446_Plugin $plugin)
|
63 |
{
|
64 |
|
65 |
if( $plugin && !isset($plugin->forms) ) {
|
66 |
throw new Exception("The module Factory Forms is not loaded for the plugin '{$plugin->getPluginName()}'.");
|
67 |
}
|
68 |
|
69 |
+
require_once(FACTORY_FORMS_443_DIR . '/includes/html-builder.class.php');
|
70 |
+
require_once(FACTORY_FORMS_443_DIR . '/includes/form-element.class.php');
|
71 |
+
require_once(FACTORY_FORMS_443_DIR . '/includes/control.class.php');
|
72 |
+
require_once(FACTORY_FORMS_443_DIR . '/includes/complex-control.class.php');
|
73 |
+
require_once(FACTORY_FORMS_443_DIR . '/includes/holder.class.php');
|
74 |
+
require_once(FACTORY_FORMS_443_DIR . '/includes/control-holder.class.php');
|
75 |
+
require_once(FACTORY_FORMS_443_DIR . '/includes/custom-element.class.php');
|
76 |
+
require_once(FACTORY_FORMS_443_DIR . '/includes/form-layout.class.php');
|
77 |
|
78 |
// registration of controls
|
79 |
$plugin->forms->registerControls([
|
80 |
[
|
81 |
'type' => 'checkbox',
|
82 |
+
'class' => 'Wbcr_FactoryForms443_CheckboxControl',
|
83 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/checkbox.php'
|
84 |
],
|
85 |
[
|
86 |
'type' => 'list',
|
87 |
+
'class' => 'Wbcr_FactoryForms443_ListControl',
|
88 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/list.php'
|
89 |
],
|
90 |
[
|
91 |
'type' => 'dropdown',
|
92 |
+
'class' => 'Wbcr_FactoryForms443_DropdownControl',
|
93 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/dropdown.php'
|
94 |
],
|
95 |
[
|
96 |
'type' => 'dropdown-and-colors',
|
97 |
+
'class' => 'Wbcr_FactoryForms443_DropdownAndColorsControl',
|
98 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/dropdown-and-colors.php'
|
99 |
],
|
100 |
[
|
101 |
'type' => 'hidden',
|
102 |
+
'class' => 'Wbcr_FactoryForms443_HiddenControl',
|
103 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/hidden.php'
|
104 |
],
|
105 |
[
|
106 |
'type' => 'hidden',
|
107 |
+
'class' => 'Wbcr_FactoryForms443_HiddenControl',
|
108 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/hidden.php'
|
109 |
],
|
110 |
[
|
111 |
'type' => 'radio',
|
112 |
+
'class' => 'Wbcr_FactoryForms443_RadioControl',
|
113 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/radio.php'
|
114 |
],
|
115 |
[
|
116 |
'type' => 'radio-colors',
|
117 |
+
'class' => 'Wbcr_FactoryForms443_RadioColorsControl',
|
118 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/radio-colors.php'
|
119 |
],
|
120 |
[
|
121 |
'type' => 'textarea',
|
122 |
+
'class' => 'Wbcr_FactoryForms443_TextareaControl',
|
123 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/textarea.php'
|
124 |
],
|
125 |
[
|
126 |
'type' => 'textbox',
|
127 |
+
'class' => 'Wbcr_FactoryForms443_TextboxControl',
|
128 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/textbox.php'
|
129 |
],
|
130 |
[
|
131 |
'type' => 'multiple-textbox',
|
132 |
+
'class' => 'Wbcr_FactoryForms443_MultipleTextboxControl',
|
133 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/multiple-textbox.php'
|
134 |
],
|
135 |
[
|
136 |
'type' => 'datetimepicker-range',
|
137 |
+
'class' => 'Wbcr_FactoryForms443_DatepickerRangeControl',
|
138 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/datepicker-range.php'
|
139 |
],
|
140 |
[
|
141 |
'type' => 'url',
|
142 |
+
'class' => 'Wbcr_FactoryForms443_UrlControl',
|
143 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/url.php'
|
144 |
],
|
145 |
[
|
146 |
'type' => 'wp-editor',
|
147 |
+
'class' => 'Wbcr_FactoryForms443_WpEditorControl',
|
148 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/wp-editor.php'
|
149 |
],
|
150 |
[
|
151 |
'type' => 'color',
|
152 |
+
'class' => 'Wbcr_FactoryForms443_ColorControl',
|
153 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/color.php'
|
154 |
],
|
155 |
[
|
156 |
'type' => 'color-and-opacity',
|
157 |
+
'class' => 'Wbcr_FactoryForms443_ColorAndOpacityControl',
|
158 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/color-and-opacity.php'
|
159 |
],
|
160 |
[
|
161 |
'type' => 'gradient',
|
162 |
+
'class' => 'Wbcr_FactoryForms443_GradientControl',
|
163 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/gradient.php'
|
164 |
],
|
165 |
[
|
166 |
'type' => 'font',
|
167 |
+
'class' => 'Wbcr_FactoryForms443_FontControl',
|
168 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/font.php'
|
169 |
],
|
170 |
[
|
171 |
'type' => 'google-font',
|
172 |
+
'class' => 'Wbcr_FactoryForms443_GoogleFontControl',
|
173 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/google-font.php'
|
174 |
],
|
175 |
[
|
176 |
'type' => 'pattern',
|
177 |
+
'class' => 'Wbcr_FactoryForms443_PatternControl',
|
178 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/pattern.php'
|
179 |
],
|
180 |
[
|
181 |
'type' => 'integer',
|
182 |
+
'class' => 'Wbcr_FactoryForms443_IntegerControl',
|
183 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/integer.php'
|
184 |
],
|
185 |
[
|
186 |
'type' => 'control-group',
|
187 |
+
'class' => 'Wbcr_FactoryForms443_ControlGroupHolder',
|
188 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/holders/control-group.php'
|
189 |
],
|
190 |
[
|
191 |
'type' => 'paddings-editor',
|
192 |
+
'class' => 'Wbcr_FactoryForms443_PaddingsEditorControl',
|
193 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/paddings-editor.php'
|
194 |
],
|
195 |
]);
|
196 |
|
198 |
$plugin->forms->registerHolders([
|
199 |
[
|
200 |
'type' => 'tab',
|
201 |
+
'class' => 'Wbcr_FactoryForms443_TabHolder',
|
202 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/holders/tab.php'
|
203 |
],
|
204 |
[
|
205 |
'type' => 'tab-item',
|
206 |
+
'class' => 'Wbcr_FactoryForms443_TabItemHolder',
|
207 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/holders/tab-item.php'
|
208 |
],
|
209 |
[
|
210 |
'type' => 'accordion',
|
211 |
+
'class' => 'Wbcr_FactoryForms443_AccordionHolder',
|
212 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/holders/accordion.php'
|
213 |
],
|
214 |
[
|
215 |
'type' => 'accordion-item',
|
216 |
+
'class' => 'Wbcr_FactoryForms443_AccordionItemHolder',
|
217 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/holders/accordion-item.php'
|
218 |
],
|
219 |
[
|
220 |
'type' => 'control-group',
|
221 |
+
'class' => 'Wbcr_FactoryForms443_ControlGroupHolder',
|
222 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/holders/control-group.php'
|
223 |
],
|
224 |
[
|
225 |
'type' => 'control-group-item',
|
226 |
+
'class' => 'Wbcr_FactoryForms443_ControlGroupItem',
|
227 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/holders/control-group-item.php'
|
228 |
],
|
229 |
[
|
230 |
'type' => 'form-group',
|
231 |
+
'class' => 'Wbcr_FactoryForms443_FormGroupHolder',
|
232 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/holders/form-group.php'
|
233 |
],
|
234 |
[
|
235 |
'type' => 'more-link',
|
236 |
+
'class' => 'Wbcr_FactoryForms443_MoreLinkHolder',
|
237 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/holders/more-link.php'
|
238 |
],
|
239 |
[
|
240 |
'type' => 'div',
|
241 |
+
'class' => 'Wbcr_FactoryForms443_DivHolder',
|
242 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/holders/div.php'
|
243 |
],
|
244 |
[
|
245 |
'type' => 'columns',
|
246 |
+
'class' => 'Wbcr_FactoryForms443_ColumnsHolder',
|
247 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/holders/columns.php'
|
248 |
]
|
249 |
]);
|
250 |
|
252 |
$plugin->forms->registerCustomElements([
|
253 |
[
|
254 |
'type' => 'html',
|
255 |
+
'class' => 'Wbcr_FactoryForms443_Html',
|
256 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/customs/html.php',
|
257 |
],
|
258 |
[
|
259 |
'type' => 'separator',
|
260 |
+
'class' => 'Wbcr_FactoryForms443_Separator',
|
261 |
+
'include' => FACTORY_FORMS_443_DIR . '/controls/customs/separator.php',
|
262 |
],
|
263 |
]);
|
264 |
|
265 |
// registration of form layouts
|
266 |
$plugin->forms->registerFormLayout([
|
267 |
'name' => 'bootstrap-3',
|
268 |
+
'class' => 'Wbcr_FactoryForms443_Bootstrap3FormLayout',
|
269 |
+
'include' => FACTORY_FORMS_443_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
|
270 |
]);
|
271 |
}
|
272 |
|
273 |
+
add_action('wbcr_factory_forms_443_register_controls', 'wbcr_factory_forms_443_register_default_controls');
|
274 |
}
|
libs/factory/forms/controls/checkbox.php
CHANGED
@@ -20,9 +20,9 @@
|
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
-
if( !class_exists('
|
24 |
|
25 |
-
class
|
26 |
|
27 |
public $type = 'checkbox';
|
28 |
|
@@ -130,10 +130,10 @@
|
|
130 |
<div <?php $this->attrs() ?>>
|
131 |
<button type="button" class="btn btn-default btn-small btn-sm factory-on <?php if( $value ) {
|
132 |
echo 'active';
|
133 |
-
} ?>"><?php _e('On', '
|
134 |
<button type="button" class="btn btn-default btn-small btn-sm factory-off <?php if( !$value ) {
|
135 |
echo 'active';
|
136 |
-
} ?>" data-value="0"><?php _e('Off', '
|
137 |
<input type="checkbox" style="display: none" id="<?php echo $name_on_form ?>" class="factory-result" name="<?php echo $name_on_form ?>" value="<?= $value ?>" <?php if( $value ) {
|
138 |
echo 'checked="checked"';
|
139 |
} ?>" />
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms443_CheckboxControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms443_CheckboxControl extends Wbcr_FactoryForms443_Control {
|
26 |
|
27 |
public $type = 'checkbox';
|
28 |
|
130 |
<div <?php $this->attrs() ?>>
|
131 |
<button type="button" class="btn btn-default btn-small btn-sm factory-on <?php if( $value ) {
|
132 |
echo 'active';
|
133 |
+
} ?>"><?php _e('On', 'wbcr_factory_forms_443') ?></button>
|
134 |
<button type="button" class="btn btn-default btn-small btn-sm factory-off <?php if( !$value ) {
|
135 |
echo 'active';
|
136 |
+
} ?>" data-value="0"><?php _e('Off', 'wbcr_factory_forms_443') ?></button>
|
137 |
<input type="checkbox" style="display: none" id="<?php echo $name_on_form ?>" class="factory-result" name="<?php echo $name_on_form ?>" value="<?= $value ?>" <?php if( $value ) {
|
138 |
echo 'checked="checked"';
|
139 |
} ?>" />
|
libs/factory/forms/controls/color-and-opacity.php
CHANGED
@@ -20,10 +20,10 @@
|
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
-
if( !class_exists('
|
24 |
}
|
25 |
|
26 |
-
class
|
27 |
|
28 |
public $type = 'color-and-opacity';
|
29 |
|
@@ -57,8 +57,8 @@
|
|
57 |
'way' => 'slider'
|
58 |
));
|
59 |
|
60 |
-
$this->color = new
|
61 |
-
$this->opacity = new
|
62 |
|
63 |
$this->innerControls = array($this->color, $this->opacity);
|
64 |
}
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms443_ColorAndOpacityControl') ) {
|
24 |
}
|
25 |
|
26 |
+
class Wbcr_FactoryForms443_ColorAndOpacityControl extends Wbcr_FactoryForms443_ComplexControl {
|
27 |
|
28 |
public $type = 'color-and-opacity';
|
29 |
|
57 |
'way' => 'slider'
|
58 |
));
|
59 |
|
60 |
+
$this->color = new Wbcr_FactoryForms443_ColorControl($options['color'], $form, $provider);
|
61 |
+
$this->opacity = new Wbcr_FactoryForms443_IntegerControl($options['opacity'], $form, $provider);
|
62 |
|
63 |
$this->innerControls = array($this->color, $this->opacity);
|
64 |
}
|
libs/factory/forms/controls/color.php
CHANGED
@@ -20,9 +20,9 @@
|
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
-
if( !class_exists('
|
24 |
|
25 |
-
class
|
26 |
|
27 |
public $type = 'color';
|
28 |
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms443_ColorControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms443_ColorControl extends Wbcr_FactoryForms443_Control {
|
26 |
|
27 |
public $type = 'color';
|
28 |
|
libs/factory/forms/controls/customs/html.php
CHANGED
@@ -14,9 +14,9 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
-
class
|
20 |
|
21 |
public $type = 'html';
|
22 |
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_Html') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryForms443_Html extends Wbcr_FactoryForms443_CustomElement {
|
20 |
|
21 |
public $type = 'html';
|
22 |
|
libs/factory/forms/controls/customs/separator.php
CHANGED
@@ -14,8 +14,8 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
-
class
|
19 |
|
20 |
public $type = 'separator';
|
21 |
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_Separator') ) {
|
18 |
+
class Wbcr_FactoryForms443_Separator extends Wbcr_FactoryForms443_CustomElement {
|
19 |
|
20 |
public $type = 'separator';
|
21 |
|
libs/factory/forms/controls/datepicker-range.php
CHANGED
@@ -29,9 +29,9 @@
|
|
29 |
exit;
|
30 |
}
|
31 |
|
32 |
-
if( !class_exists('
|
33 |
|
34 |
-
class
|
35 |
|
36 |
public $type = 'datetimepicker-range';
|
37 |
|
@@ -65,8 +65,8 @@
|
|
65 |
'default' => date('Y/m/d H:i', strtotime("+1 month"))
|
66 |
), $options['range_2']);
|
67 |
|
68 |
-
$this->range_1 = new
|
69 |
-
$this->range_2 = new
|
70 |
$this->inner_controls = array($this->range_1, $this->range_2);
|
71 |
|
72 |
foreach($this->inner_controls as $key => $control) {
|
29 |
exit;
|
30 |
}
|
31 |
|
32 |
+
if( !class_exists('Wbcr_FactoryForms443_DatepickerRangeControl') ) {
|
33 |
|
34 |
+
class Wbcr_FactoryForms443_DatepickerRangeControl extends Wbcr_FactoryForms443_ComplexControl {
|
35 |
|
36 |
public $type = 'datetimepicker-range';
|
37 |
|
65 |
'default' => date('Y/m/d H:i', strtotime("+1 month"))
|
66 |
), $options['range_2']);
|
67 |
|
68 |
+
$this->range_1 = new Wbcr_FactoryForms443_TextboxControl($options['range_1'], $form, $provider);
|
69 |
+
$this->range_2 = new Wbcr_FactoryForms443_TextboxControl($options['range_2'], $form, $provider);
|
70 |
$this->inner_controls = array($this->range_1, $this->range_2);
|
71 |
|
72 |
foreach($this->inner_controls as $key => $control) {
|
libs/factory/forms/controls/dropdown-and-colors.php
CHANGED
@@ -5,14 +5,14 @@
|
|
5 |
*
|
6 |
* Main options:
|
7 |
* name => a name of the control
|
8 |
-
* // see
|
9 |
* 'dropdown' => array(
|
10 |
* // a callback to return items or an array of items to select
|
11 |
* 'data' => OPanda_ThemeManager::getThemes(OPanda_Items::getCurrentItemName(), 'dropdown'),
|
12 |
* 'default' => 'default',
|
13 |
* 'value' => 'value' // a value to show in the control
|
14 |
* ),
|
15 |
-
* // see
|
16 |
* 'colors' => array(
|
17 |
* // a callback to return items or an array of items to select
|
18 |
* 'data' => array(
|
@@ -37,9 +37,9 @@
|
|
37 |
exit;
|
38 |
}
|
39 |
|
40 |
-
if( !class_exists('
|
41 |
|
42 |
-
class
|
43 |
|
44 |
public $type = 'dropdown-and-colors';
|
45 |
|
@@ -69,8 +69,8 @@
|
|
69 |
'name' => $this->options['name'] . '__colors',
|
70 |
));
|
71 |
|
72 |
-
$this->dropdown = new
|
73 |
-
$this->colors = new
|
74 |
$this->inner_controls = array($this->dropdown, $this->colors);
|
75 |
|
76 |
$colors = $this->colors->getOption('data');
|
5 |
*
|
6 |
* Main options:
|
7 |
* name => a name of the control
|
8 |
+
* // see FactoryForms443_DropdownControl
|
9 |
* 'dropdown' => array(
|
10 |
* // a callback to return items or an array of items to select
|
11 |
* 'data' => OPanda_ThemeManager::getThemes(OPanda_Items::getCurrentItemName(), 'dropdown'),
|
12 |
* 'default' => 'default',
|
13 |
* 'value' => 'value' // a value to show in the control
|
14 |
* ),
|
15 |
+
* // see FactoryForms443_RadioColorsControl
|
16 |
* 'colors' => array(
|
17 |
* // a callback to return items or an array of items to select
|
18 |
* 'data' => array(
|
37 |
exit;
|
38 |
}
|
39 |
|
40 |
+
if( !class_exists('Wbcr_FactoryForms443_DropdownAndColorsControl') ) {
|
41 |
|
42 |
+
class Wbcr_FactoryForms443_DropdownAndColorsControl extends Wbcr_FactoryForms443_ComplexControl {
|
43 |
|
44 |
public $type = 'dropdown-and-colors';
|
45 |
|
69 |
'name' => $this->options['name'] . '__colors',
|
70 |
));
|
71 |
|
72 |
+
$this->dropdown = new Wbcr_FactoryForms443_DropdownControl($options['dropdown'], $form, $provider);
|
73 |
+
$this->colors = new Wbcr_FactoryForms443_RadioColorsControl($options['colors'], $form, $provider);
|
74 |
$this->inner_controls = array($this->dropdown, $this->colors);
|
75 |
|
76 |
$colors = $this->colors->getOption('data');
|
libs/factory/forms/controls/dropdown.php
CHANGED
@@ -21,9 +21,9 @@
|
|
21 |
exit;
|
22 |
}
|
23 |
|
24 |
-
if ( ! class_exists( '
|
25 |
|
26 |
-
class
|
27 |
|
28 |
public $type = 'dropdown';
|
29 |
|
@@ -123,7 +123,7 @@
|
|
123 |
'url': '<?php echo $data['url'] ?>',
|
124 |
'data': <?php echo json_encode( $data['data'] ) ?>,
|
125 |
'selected': '<?php echo $value ?>',
|
126 |
-
'empty_list': '<?php echo $this->getOption( 'empty', __( 'The list is empty.', '
|
127 |
};
|
128 |
</script>
|
129 |
<?php
|
@@ -268,7 +268,7 @@
|
|
268 |
}
|
269 |
|
270 |
$is_empty = $this->isAjax() || empty( $items );
|
271 |
-
$empty_list = $this->getOption( 'empty', __( '- empty -', '
|
272 |
|
273 |
?>
|
274 |
<select <?php $this->attrs() ?>>
|
@@ -349,7 +349,7 @@
|
|
349 |
}
|
350 |
|
351 |
$value = isset( $item['value'] ) ? $item['value'] : '';
|
352 |
-
$title = isset( $item['title'] ) ? $item['title'] : __( '- empty -', '
|
353 |
|
354 |
$data = isset( $item['data'] ) ? $item['data'] : null;
|
355 |
} else {
|
21 |
exit;
|
22 |
}
|
23 |
|
24 |
+
if ( ! class_exists( 'Wbcr_FactoryForms443_DropdownControl' ) ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms443_DropdownControl extends Wbcr_FactoryForms443_Control {
|
27 |
|
28 |
public $type = 'dropdown';
|
29 |
|
123 |
'url': '<?php echo $data['url'] ?>',
|
124 |
'data': <?php echo json_encode( $data['data'] ) ?>,
|
125 |
'selected': '<?php echo $value ?>',
|
126 |
+
'empty_list': '<?php echo $this->getOption( 'empty', __( 'The list is empty.', 'wbcr_factory_forms_443' ) ) ?>'
|
127 |
};
|
128 |
</script>
|
129 |
<?php
|
268 |
}
|
269 |
|
270 |
$is_empty = $this->isAjax() || empty( $items );
|
271 |
+
$empty_list = $this->getOption( 'empty', __( '- empty -', 'wbcr_factory_forms_443' ) );
|
272 |
|
273 |
?>
|
274 |
<select <?php $this->attrs() ?>>
|
349 |
}
|
350 |
|
351 |
$value = isset( $item['value'] ) ? $item['value'] : '';
|
352 |
+
$title = isset( $item['title'] ) ? $item['title'] : __( '- empty -', 'wbcr_factory_forms_443' );
|
353 |
|
354 |
$data = isset( $item['data'] ) ? $item['data'] : null;
|
355 |
} else {
|
libs/factory/forms/controls/font.php
CHANGED
@@ -20,9 +20,9 @@
|
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
-
if( !class_exists('
|
24 |
|
25 |
-
class
|
26 |
|
27 |
public $type = 'font';
|
28 |
|
@@ -54,9 +54,9 @@
|
|
54 |
'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
|
55 |
);
|
56 |
|
57 |
-
$this->size = new
|
58 |
-
$this->family = new
|
59 |
-
$this->color = new
|
60 |
|
61 |
$this->innerControls = array($this->family, $this->size, $this->color);
|
62 |
}
|
@@ -66,8 +66,8 @@
|
|
66 |
|
67 |
$fonts = $this->getDefaultFonts();
|
68 |
|
69 |
-
$fonts = apply_filters('
|
70 |
-
$fonts = apply_filters('
|
71 |
|
72 |
return $fonts;
|
73 |
}
|
@@ -77,10 +77,10 @@
|
|
77 |
|
78 |
$fonts = array(
|
79 |
|
80 |
-
array('inherit', __('(use default website font)', '
|
81 |
array(
|
82 |
'group',
|
83 |
-
__('Sans Serif:', '
|
84 |
array(
|
85 |
array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
|
86 |
array('"Arial Black", "Arial Bold", Gadget, sans-serif', 'Arial Black'),
|
@@ -131,7 +131,7 @@
|
|
131 |
),
|
132 |
array(
|
133 |
'group',
|
134 |
-
__('Serif:', '
|
135 |
array(
|
136 |
array(
|
137 |
'Baskerville, "Baskerville Old Face", "Hoefler Text", Garamond, "Times New Roman", serif',
|
@@ -187,7 +187,7 @@
|
|
187 |
),
|
188 |
array(
|
189 |
'group',
|
190 |
-
__('Monospaced:', '
|
191 |
array(
|
192 |
array('"Andale Mono", AndaleMono, monospace', 'Andale Mono'),
|
193 |
array('Consolas, monaco, monospace', 'Consolas'),
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms443_FontControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms443_FontControl extends Wbcr_FactoryForms443_ComplexControl {
|
26 |
|
27 |
public $type = 'font';
|
28 |
|
54 |
'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
|
55 |
);
|
56 |
|
57 |
+
$this->size = new Wbcr_FactoryForms443_IntegerControl($option_font_size, $form, $provider);
|
58 |
+
$this->family = new Wbcr_FactoryForms443_DropdownControl($option_font_family, $form, $provider);
|
59 |
+
$this->color = new Wbcr_FactoryForms443_ColorControl($optionFontColor, $form, $provider);
|
60 |
|
61 |
$this->innerControls = array($this->family, $this->size, $this->color);
|
62 |
}
|
66 |
|
67 |
$fonts = $this->getDefaultFonts();
|
68 |
|
69 |
+
$fonts = apply_filters('wbcr_factory_forms_443_fonts', $fonts);
|
70 |
+
$fonts = apply_filters('wbcr_factory_forms_443_fonts-' . $this->options['name'], $fonts);
|
71 |
|
72 |
return $fonts;
|
73 |
}
|
77 |
|
78 |
$fonts = array(
|
79 |
|
80 |
+
array('inherit', __('(use default website font)', 'wbcr_factory_forms_443')),
|
81 |
array(
|
82 |
'group',
|
83 |
+
__('Sans Serif:', 'wbcr_factory_forms_443'),
|
84 |
array(
|
85 |
array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
|
86 |
array('"Arial Black", "Arial Bold", Gadget, sans-serif', 'Arial Black'),
|
131 |
),
|
132 |
array(
|
133 |
'group',
|
134 |
+
__('Serif:', 'wbcr_factory_forms_443'),
|
135 |
array(
|
136 |
array(
|
137 |
'Baskerville, "Baskerville Old Face", "Hoefler Text", Garamond, "Times New Roman", serif',
|
187 |
),
|
188 |
array(
|
189 |
'group',
|
190 |
+
__('Monospaced:', 'wbcr_factory_forms_443'),
|
191 |
array(
|
192 |
array('"Andale Mono", AndaleMono, monospace', 'Andale Mono'),
|
193 |
array('Consolas, monaco, monospace', 'Consolas'),
|
libs/factory/forms/controls/google-font.php
CHANGED
@@ -15,7 +15,7 @@
|
|
15 |
* @package core
|
16 |
* @since 1.0.0
|
17 |
*/
|
18 |
-
class
|
19 |
|
20 |
public $type = 'google-font';
|
21 |
const APIKEY = 'AIzaSyB-3vazYv7Q-5QZA04bmSKFrWcw_VhC40w';
|
@@ -30,7 +30,7 @@
|
|
30 |
'cssClass' => 'factory-google-font-data'
|
31 |
);
|
32 |
|
33 |
-
$this->google_font_data = new
|
34 |
$this->inner_controls[] = $this->google_font_data;
|
35 |
}
|
36 |
|
@@ -49,12 +49,12 @@
|
|
49 |
$google_fonts = $this->getGoogleFonts();
|
50 |
|
51 |
$fonts = array(
|
52 |
-
array('inherit', __('(use default website font)', '
|
53 |
);
|
54 |
|
55 |
$fontsCommon = array(
|
56 |
'group',
|
57 |
-
__('Standard:', '
|
58 |
array(
|
59 |
|
60 |
array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
|
@@ -65,7 +65,7 @@
|
|
65 |
)
|
66 |
);
|
67 |
|
68 |
-
$fontsGoogleFonts = array('group', __('Google Fonts:', '
|
69 |
|
70 |
foreach($google_fonts->items as $item) {
|
71 |
|
@@ -115,7 +115,7 @@
|
|
115 |
|
116 |
if( is_wp_error($response) ) {
|
117 |
|
118 |
-
$this->error = __('Unable to retrieve the list of Google Fonts.', '
|
119 |
$this->defailed_error = $response->get_error_message();
|
120 |
|
121 |
return $body;
|
@@ -123,7 +123,7 @@
|
|
123 |
|
124 |
if( !isset($response['body']) ) {
|
125 |
|
126 |
-
$this->error = __('Invalide response from the Google Fonts API.', '
|
127 |
$this->defailed_error = $response['body'];
|
128 |
|
129 |
return $body;
|
@@ -133,7 +133,7 @@
|
|
133 |
|
134 |
if( empty($body->items) ) {
|
135 |
|
136 |
-
$this->error = __('Unexpected error. The list of Google Fonts are empty.', '
|
137 |
|
138 |
return $body;
|
139 |
}
|
15 |
* @package core
|
16 |
* @since 1.0.0
|
17 |
*/
|
18 |
+
class Wbcr_FactoryForms443_GoogleFontControl extends Wbcr_FactoryForms443_FontControl {
|
19 |
|
20 |
public $type = 'google-font';
|
21 |
const APIKEY = 'AIzaSyB-3vazYv7Q-5QZA04bmSKFrWcw_VhC40w';
|
30 |
'cssClass' => 'factory-google-font-data'
|
31 |
);
|
32 |
|
33 |
+
$this->google_font_data = new Wbcr_FactoryForms443_HiddenControl($option_google_font_data, $form, $provider);
|
34 |
$this->inner_controls[] = $this->google_font_data;
|
35 |
}
|
36 |
|
49 |
$google_fonts = $this->getGoogleFonts();
|
50 |
|
51 |
$fonts = array(
|
52 |
+
array('inherit', __('(use default website font)', 'wbcr_factory_forms_443'))
|
53 |
);
|
54 |
|
55 |
$fontsCommon = array(
|
56 |
'group',
|
57 |
+
__('Standard:', 'wbcr_factory_forms_443'),
|
58 |
array(
|
59 |
|
60 |
array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
|
65 |
)
|
66 |
);
|
67 |
|
68 |
+
$fontsGoogleFonts = array('group', __('Google Fonts:', 'wbcr_factory_forms_443'), array());
|
69 |
|
70 |
foreach($google_fonts->items as $item) {
|
71 |
|
115 |
|
116 |
if( is_wp_error($response) ) {
|
117 |
|
118 |
+
$this->error = __('Unable to retrieve the list of Google Fonts.', 'wbcr_factory_forms_443');
|
119 |
$this->defailed_error = $response->get_error_message();
|
120 |
|
121 |
return $body;
|
123 |
|
124 |
if( !isset($response['body']) ) {
|
125 |
|
126 |
+
$this->error = __('Invalide response from the Google Fonts API.', 'wbcr_factory_forms_443');
|
127 |
$this->defailed_error = $response['body'];
|
128 |
|
129 |
return $body;
|
133 |
|
134 |
if( empty($body->items) ) {
|
135 |
|
136 |
+
$this->error = __('Unexpected error. The list of Google Fonts are empty.', 'wbcr_factory_forms_443');
|
137 |
|
138 |
return $body;
|
139 |
}
|
libs/factory/forms/controls/gradient.php
CHANGED
@@ -25,8 +25,8 @@
|
|
25 |
exit;
|
26 |
}
|
27 |
|
28 |
-
if( !class_exists('
|
29 |
-
class
|
30 |
|
31 |
public $type = 'gradient';
|
32 |
|
@@ -66,8 +66,8 @@
|
|
66 |
if( !window.factory.res ) {
|
67 |
window.factory.res = {};
|
68 |
}
|
69 |
-
factory.res.resVertical = '<?php _e( 'vertical', '
|
70 |
-
factory.res.resHorizontal = '<?php _e( 'horizontal', '
|
71 |
</script>
|
72 |
<div <?php $this->attrs() ?>>
|
73 |
<div class="factory-gradient-picker">
|
25 |
exit;
|
26 |
}
|
27 |
|
28 |
+
if( !class_exists('Wbcr_FactoryForms443_GradientControl') ) {
|
29 |
+
class Wbcr_FactoryForms443_GradientControl extends Wbcr_FactoryForms443_Control {
|
30 |
|
31 |
public $type = 'gradient';
|
32 |
|
66 |
if( !window.factory.res ) {
|
67 |
window.factory.res = {};
|
68 |
}
|
69 |
+
factory.res.resVertical = '<?php _e( 'vertical', 'wbcr_factory_forms_443' ) ?>';
|
70 |
+
factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_443' ) ?>';
|
71 |
</script>
|
72 |
<div <?php $this->attrs() ?>>
|
73 |
<div class="factory-gradient-picker">
|
libs/factory/forms/controls/hidden.php
CHANGED
@@ -20,9 +20,9 @@
|
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
-
if( !class_exists('
|
24 |
|
25 |
-
class
|
26 |
|
27 |
public $type = 'hidden';
|
28 |
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms443_HiddenControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms443_HiddenControl extends Wbcr_FactoryForms443_Control {
|
26 |
|
27 |
public $type = 'hidden';
|
28 |
|
libs/factory/forms/controls/holders/accordion-item.php
CHANGED
@@ -14,14 +14,14 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
-
class
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_AccordionItemHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms443_AccordionItemHolder extends Wbcr_FactoryForms443_Holder {
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
libs/factory/forms/controls/holders/accordion.php
CHANGED
@@ -13,13 +13,13 @@
|
|
13 |
if( !defined('ABSPATH') ) {
|
14 |
exit;
|
15 |
}
|
16 |
-
if( !class_exists('
|
17 |
/**
|
18 |
* Tab Control Holder
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
-
class
|
23 |
|
24 |
/**
|
25 |
* A holder type.
|
13 |
if( !defined('ABSPATH') ) {
|
14 |
exit;
|
15 |
}
|
16 |
+
if( !class_exists('Wbcr_FactoryForms443_AccordionHolder') ) {
|
17 |
/**
|
18 |
* Tab Control Holder
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
class Wbcr_FactoryForms443_AccordionHolder extends Wbcr_FactoryForms443_Holder {
|
23 |
|
24 |
/**
|
25 |
* A holder type.
|
libs/factory/forms/controls/holders/columns.php
CHANGED
@@ -14,13 +14,13 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
/**
|
19 |
* Columns Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
-
class
|
24 |
|
25 |
/**
|
26 |
* A holder type.
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_ColumnsHolder') ) {
|
18 |
/**
|
19 |
* Columns Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms443_ColumnsHolder extends Wbcr_FactoryForms443_Holder {
|
24 |
|
25 |
/**
|
26 |
* A holder type.
|
libs/factory/forms/controls/holders/control-group-item.php
CHANGED
@@ -14,14 +14,14 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
-
class
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_ControlGroupItem') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms443_ControlGroupItem extends Wbcr_FactoryForms443_Holder {
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
libs/factory/forms/controls/holders/control-group.php
CHANGED
@@ -14,14 +14,14 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
-
class
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
@@ -61,7 +61,7 @@
|
|
61 |
continue;
|
62 |
}
|
63 |
|
64 |
-
$builder = new
|
65 |
|
66 |
$builder->addCssClass('factory-control-group-nav-label');
|
67 |
$builder->addCssClass('factory-control-group-nav-label-' . $element->getOption('name'));
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_ControlGroupHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms443_ControlGroupHolder extends Wbcr_FactoryForms443_ControlHolder {
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
61 |
continue;
|
62 |
}
|
63 |
|
64 |
+
$builder = new Wbcr_FactoryForms443_HtmlAttributeBuilder();
|
65 |
|
66 |
$builder->addCssClass('factory-control-group-nav-label');
|
67 |
$builder->addCssClass('factory-control-group-nav-label-' . $element->getOption('name'));
|
libs/factory/forms/controls/holders/div.php
CHANGED
@@ -14,13 +14,13 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
/**
|
19 |
* Div Control Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
-
class
|
24 |
|
25 |
/**
|
26 |
* A holder type.
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_DivHolder') ) {
|
18 |
/**
|
19 |
* Div Control Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms443_DivHolder extends Wbcr_FactoryForms443_Holder {
|
24 |
|
25 |
/**
|
26 |
* A holder type.
|
libs/factory/forms/controls/holders/form-group.php
CHANGED
@@ -14,13 +14,13 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
/**
|
19 |
* Group Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
-
class
|
24 |
|
25 |
/**
|
26 |
* A holder type.
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_FormGroupHolder') ) {
|
18 |
/**
|
19 |
* Group Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms443_FormGroupHolder extends Wbcr_FactoryForms443_Holder {
|
24 |
|
25 |
/**
|
26 |
* A holder type.
|
libs/factory/forms/controls/holders/more-link.php
CHANGED
@@ -14,14 +14,14 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
/**
|
20 |
* Collapsed Group Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
-
class
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_MoreLinkHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Collapsed Group Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms443_MoreLinkHolder extends Wbcr_FactoryForms443_Holder {
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
libs/factory/forms/controls/holders/tab-item.php
CHANGED
@@ -13,13 +13,13 @@
|
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
-
if( !class_exists('
|
17 |
/**
|
18 |
* Tab Item Control Holder
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
-
class
|
23 |
|
24 |
/**
|
25 |
* A holder type.
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
+
if( !class_exists('Wbcr_FactoryForms443_TabItemHolder') ) {
|
17 |
/**
|
18 |
* Tab Item Control Holder
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
class Wbcr_FactoryForms443_TabItemHolder extends Wbcr_FactoryForms443_Holder {
|
23 |
|
24 |
/**
|
25 |
* A holder type.
|
libs/factory/forms/controls/holders/tab.php
CHANGED
@@ -14,14 +14,14 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
-
class
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
@@ -44,7 +44,7 @@
|
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
* @param mixed[] $options A holder options.
|
47 |
-
* @param
|
48 |
*/
|
49 |
public function __construct($options, $form)
|
50 |
{
|
@@ -88,7 +88,7 @@
|
|
88 |
$tab_icon = $element->options['icon'];
|
89 |
}
|
90 |
|
91 |
-
$builder = new
|
92 |
|
93 |
$builder->addCssClass('factory-tab-item-header');
|
94 |
$builder->addCssClass('factory-tab-item-header-' . $element->getName());
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_TabHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms443_TabHolder extends Wbcr_FactoryForms443_Holder {
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
* @param mixed[] $options A holder options.
|
47 |
+
* @param FactoryForms443_Form $form A parent form.
|
48 |
*/
|
49 |
public function __construct($options, $form)
|
50 |
{
|
88 |
$tab_icon = $element->options['icon'];
|
89 |
}
|
90 |
|
91 |
+
$builder = new Wbcr_FactoryForms443_HtmlAttributeBuilder();
|
92 |
|
93 |
$builder->addCssClass('factory-tab-item-header');
|
94 |
$builder->addCssClass('factory-tab-item-header-' . $element->getName());
|
libs/factory/forms/controls/integer.php
CHANGED
@@ -32,9 +32,9 @@
|
|
32 |
exit;
|
33 |
}
|
34 |
|
35 |
-
if( !class_exists('
|
36 |
|
37 |
-
class
|
38 |
|
39 |
public $type = 'integer';
|
40 |
|
32 |
exit;
|
33 |
}
|
34 |
|
35 |
+
if( !class_exists('Wbcr_FactoryForms443_IntegerControl') ) {
|
36 |
|
37 |
+
class Wbcr_FactoryForms443_IntegerControl extends Wbcr_FactoryForms443_Control {
|
38 |
|
39 |
public $type = 'integer';
|
40 |
|
libs/factory/forms/controls/list.php
CHANGED
@@ -21,9 +21,9 @@
|
|
21 |
exit;
|
22 |
}
|
23 |
|
24 |
-
if( !class_exists('
|
25 |
|
26 |
-
class
|
27 |
|
28 |
public $type = 'list';
|
29 |
|
@@ -93,7 +93,7 @@
|
|
93 |
'url': '<?php echo $data['url'] ?>',
|
94 |
'data': <?php echo json_encode( $data['data'] ) ?>,
|
95 |
'selected': <?php echo json_encode( $value ) ?>,
|
96 |
-
'emptyList': '<?php echo $this->getOption('empty', __('The list is empty.', '
|
97 |
};
|
98 |
</script>
|
99 |
<?php
|
@@ -136,7 +136,7 @@
|
|
136 |
: array();
|
137 |
|
138 |
$is_empty = $this->isAjax() || empty($items);
|
139 |
-
$emptyList = $this->getOption('empty', __('The list is empty.', '
|
140 |
|
141 |
if( $is_empty ) {
|
142 |
$this->addCssClass('factory-empty');
|
21 |
exit;
|
22 |
}
|
23 |
|
24 |
+
if( !class_exists('Wbcr_FactoryForms443_ListControl') ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms443_ListControl extends Wbcr_FactoryForms443_Control {
|
27 |
|
28 |
public $type = 'list';
|
29 |
|
93 |
'url': '<?php echo $data['url'] ?>',
|
94 |
'data': <?php echo json_encode( $data['data'] ) ?>,
|
95 |
'selected': <?php echo json_encode( $value ) ?>,
|
96 |
+
'emptyList': '<?php echo $this->getOption('empty', __('The list is empty.', 'wbcr_factory_forms_443') ) ?>'
|
97 |
};
|
98 |
</script>
|
99 |
<?php
|
136 |
: array();
|
137 |
|
138 |
$is_empty = $this->isAjax() || empty($items);
|
139 |
+
$emptyList = $this->getOption('empty', __('The list is empty.', 'wbcr_factory_forms_443'));
|
140 |
|
141 |
if( $is_empty ) {
|
142 |
$this->addCssClass('factory-empty');
|
libs/factory/forms/controls/multiple-textbox.php
CHANGED
@@ -15,9 +15,9 @@
|
|
15 |
exit;
|
16 |
}
|
17 |
|
18 |
-
if( !class_exists('
|
19 |
|
20 |
-
class
|
21 |
|
22 |
public $type = 'multiple-textbox';
|
23 |
|
@@ -86,7 +86,7 @@
|
|
86 |
<?php endif; ?>
|
87 |
</div>
|
88 |
<button class="btn btn-default btn-small factory-mtextbox-add-item">
|
89 |
-
<i class="fa fa-plus" aria-hidden="true"></i> <?php _e('Add new', '
|
90 |
</button>
|
91 |
</div>
|
92 |
|
15 |
exit;
|
16 |
}
|
17 |
|
18 |
+
if( !class_exists('Wbcr_FactoryForms443_MultipleTextboxControl') ) {
|
19 |
|
20 |
+
class Wbcr_FactoryForms443_MultipleTextboxControl extends Wbcr_FactoryForms443_Control {
|
21 |
|
22 |
public $type = 'multiple-textbox';
|
23 |
|
86 |
<?php endif; ?>
|
87 |
</div>
|
88 |
<button class="btn btn-default btn-small factory-mtextbox-add-item">
|
89 |
+
<i class="fa fa-plus" aria-hidden="true"></i> <?php _e('Add new', 'wbcr_factory_forms_443') ?>
|
90 |
</button>
|
91 |
</div>
|
92 |
|
libs/factory/forms/controls/paddings-editor.php
CHANGED
@@ -14,9 +14,9 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
-
class
|
20 |
|
21 |
public $type = 'paddings-editor';
|
22 |
|
@@ -67,7 +67,7 @@
|
|
67 |
</div>
|
68 |
<div class="factory-slider-container">
|
69 |
<label class="factory-title">
|
70 |
-
<?php _e('Select a side and move the slider to set up:', '
|
71 |
</label>
|
72 |
|
73 |
<div class="factory-slider">
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_PaddingsEditorControl') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryForms443_PaddingsEditorControl extends Wbcr_FactoryForms443_Control {
|
20 |
|
21 |
public $type = 'paddings-editor';
|
22 |
|
67 |
</div>
|
68 |
<div class="factory-slider-container">
|
69 |
<label class="factory-title">
|
70 |
+
<?php _e('Select a side and move the slider to set up:', 'wbcr_factory_forms_443') ?>
|
71 |
</label>
|
72 |
|
73 |
<div class="factory-slider">
|
libs/factory/forms/controls/pattern.php
CHANGED
@@ -15,9 +15,9 @@
|
|
15 |
exit;
|
16 |
}
|
17 |
|
18 |
-
if( !class_exists('
|
19 |
|
20 |
-
class
|
21 |
|
22 |
public $type = 'pattern';
|
23 |
|
@@ -52,12 +52,12 @@
|
|
52 |
$name = $this->getOption('name');
|
53 |
|
54 |
// filters to get available patterns for the given background contols
|
55 |
-
$this->patterns = apply_filters('
|
56 |
-
$this->patterns = apply_filters('
|
57 |
|
58 |
$this->custom_patterns = $this->getOption('patterns', array());
|
59 |
|
60 |
-
$this->color = new
|
61 |
}
|
62 |
|
63 |
/**
|
@@ -102,19 +102,19 @@
|
|
102 |
</div>
|
103 |
<a href="#" class="button button-default factory-button factory-change-color-btn <?php if( $hasColor ) {
|
104 |
echo 'button-active';
|
105 |
-
} ?>" title="<?php _e('Change color', '
|
106 |
<i class="fa fa-flask"></i>
|
107 |
-
<span><?php _e('re-color', '
|
108 |
</a>
|
109 |
<input type="hidden" id="<?php echo $name[0]; ?>" name="<?php echo $name[0]; ?>" value="<?php echo esc_url($values['url']); ?>" class="factory-pattern-result">
|
110 |
<input type="hidden" id="<?php echo $name[1]; ?>" name="<?php echo $name[1]; ?>" value="<?php echo esc_attr($values['color']); ?>" class="factory-color-result">
|
111 |
</div>
|
112 |
<div class="factory-color-panel">
|
113 |
<div class="factory-color-wrap">
|
114 |
-
<span class="factory-color-label"><?php _e('Select color:', '
|
115 |
<?php $this->color->html() ?>
|
116 |
<div class="factory-hint">
|
117 |
-
<i><?php _e('Changing the color may takes a minute or more. Please be patient.', '
|
118 |
</div>
|
119 |
</div>
|
120 |
<div class="factory-picker-target"></div>
|
15 |
exit;
|
16 |
}
|
17 |
|
18 |
+
if( !class_exists('Wbcr_FactoryForms443_PatternControl') ) {
|
19 |
|
20 |
+
class Wbcr_FactoryForms443_PatternControl extends Wbcr_FactoryForms443_Control {
|
21 |
|
22 |
public $type = 'pattern';
|
23 |
|
52 |
$name = $this->getOption('name');
|
53 |
|
54 |
// filters to get available patterns for the given background contols
|
55 |
+
$this->patterns = apply_filters('wbcr_factory_forms_443_patterns', array());
|
56 |
+
$this->patterns = apply_filters('wbcr_factory_forms_443_patterns-' . $name, $this->patterns);
|
57 |
|
58 |
$this->custom_patterns = $this->getOption('patterns', array());
|
59 |
|
60 |
+
$this->color = new Wbcr_FactoryForms443_ColorControl($options['color'], $form, $provider);
|
61 |
}
|
62 |
|
63 |
/**
|
102 |
</div>
|
103 |
<a href="#" class="button button-default factory-button factory-change-color-btn <?php if( $hasColor ) {
|
104 |
echo 'button-active';
|
105 |
+
} ?>" title="<?php _e('Change color', 'wbcr_factory_forms_443') ?>">
|
106 |
<i class="fa fa-flask"></i>
|
107 |
+
<span><?php _e('re-color', 'wbcr_factory_forms_443') ?></span>
|
108 |
</a>
|
109 |
<input type="hidden" id="<?php echo $name[0]; ?>" name="<?php echo $name[0]; ?>" value="<?php echo esc_url($values['url']); ?>" class="factory-pattern-result">
|
110 |
<input type="hidden" id="<?php echo $name[1]; ?>" name="<?php echo $name[1]; ?>" value="<?php echo esc_attr($values['color']); ?>" class="factory-color-result">
|
111 |
</div>
|
112 |
<div class="factory-color-panel">
|
113 |
<div class="factory-color-wrap">
|
114 |
+
<span class="factory-color-label"><?php _e('Select color:', 'wbcr_factory_forms_443') ?></span>
|
115 |
<?php $this->color->html() ?>
|
116 |
<div class="factory-hint">
|
117 |
+
<i><?php _e('Changing the color may takes a minute or more. Please be patient.', 'wbcr_factory_forms_443') ?></i>
|
118 |
</div>
|
119 |
</div>
|
120 |
<div class="factory-picker-target"></div>
|
libs/factory/forms/controls/radio-colors.php
CHANGED
@@ -27,9 +27,9 @@
|
|
27 |
exit;
|
28 |
}
|
29 |
|
30 |
-
if( !class_exists('
|
31 |
|
32 |
-
class
|
33 |
|
34 |
public $type = 'radio-color';
|
35 |
|
27 |
exit;
|
28 |
}
|
29 |
|
30 |
+
if( !class_exists('Wbcr_FactoryForms443_RadioColorsControl') ) {
|
31 |
|
32 |
+
class Wbcr_FactoryForms443_RadioColorsControl extends Wbcr_FactoryForms443_Control {
|
33 |
|
34 |
public $type = 'radio-color';
|
35 |
|
libs/factory/forms/controls/radio.php
CHANGED
@@ -21,9 +21,9 @@
|
|
21 |
exit;
|
22 |
}
|
23 |
|
24 |
-
if( !class_exists('
|
25 |
|
26 |
-
class
|
27 |
|
28 |
public $type = 'radio';
|
29 |
|
21 |
exit;
|
22 |
}
|
23 |
|
24 |
+
if( !class_exists('Wbcr_FactoryForms443_RadioControl') ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms443_RadioControl extends Wbcr_FactoryForms443_Control {
|
27 |
|
28 |
public $type = 'radio';
|
29 |
|
libs/factory/forms/controls/textarea.php
CHANGED
@@ -20,9 +20,9 @@
|
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
-
if( !class_exists('
|
24 |
|
25 |
-
class
|
26 |
|
27 |
public $type = 'textarea';
|
28 |
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms443_TextareaControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms443_TextareaControl extends Wbcr_FactoryForms443_Control {
|
26 |
|
27 |
public $type = 'textarea';
|
28 |
|
libs/factory/forms/controls/textbox.php
CHANGED
@@ -29,9 +29,9 @@
|
|
29 |
exit;
|
30 |
}
|
31 |
|
32 |
-
if( !class_exists('
|
33 |
|
34 |
-
class
|
35 |
|
36 |
public $type = 'textbox';
|
37 |
|
29 |
exit;
|
30 |
}
|
31 |
|
32 |
+
if( !class_exists('Wbcr_FactoryForms443_TextboxControl') ) {
|
33 |
|
34 |
+
class Wbcr_FactoryForms443_TextboxControl extends Wbcr_FactoryForms443_Control {
|
35 |
|
36 |
public $type = 'textbox';
|
37 |
|
libs/factory/forms/controls/url.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Url Control
|
5 |
*
|
6 |
* Main options:
|
7 |
-
* @see
|
8 |
*
|
9 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
10 |
* @copyright (c) 2018, Webcraftic Ltd
|
@@ -18,9 +18,9 @@
|
|
18 |
exit;
|
19 |
}
|
20 |
|
21 |
-
if( !class_exists('
|
22 |
|
23 |
-
class
|
24 |
|
25 |
public $type = 'url';
|
26 |
|
4 |
* Url Control
|
5 |
*
|
6 |
* Main options:
|
7 |
+
* @see FactoryForms443_TextboxControl
|
8 |
*
|
9 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
10 |
* @copyright (c) 2018, Webcraftic Ltd
|
18 |
exit;
|
19 |
}
|
20 |
|
21 |
+
if( !class_exists('Wbcr_FactoryForms443_UrlControl') ) {
|
22 |
|
23 |
+
class Wbcr_FactoryForms443_UrlControl extends Wbcr_FactoryForms443_TextboxControl {
|
24 |
|
25 |
public $type = 'url';
|
26 |
|
libs/factory/forms/controls/wp-editor.php
CHANGED
@@ -22,9 +22,9 @@
|
|
22 |
exit;
|
23 |
}
|
24 |
|
25 |
-
if( !class_exists('
|
26 |
|
27 |
-
class
|
28 |
|
29 |
public $type = 'wp-editor';
|
30 |
|
@@ -42,7 +42,7 @@
|
|
42 |
}
|
43 |
|
44 |
if( !isset($this->options['tinymce']['content_css']) ) {
|
45 |
-
$this->options['tinymce']['content_css'] =
|
46 |
}
|
47 |
}
|
48 |
|
22 |
exit;
|
23 |
}
|
24 |
|
25 |
+
if( !class_exists('Wbcr_FactoryForms443_WpEditorControl') ) {
|
26 |
|
27 |
+
class Wbcr_FactoryForms443_WpEditorControl extends Wbcr_FactoryForms443_Control {
|
28 |
|
29 |
public $type = 'wp-editor';
|
30 |
|
42 |
}
|
43 |
|
44 |
if( !isset($this->options['tinymce']['content_css']) ) {
|
45 |
+
$this->options['tinymce']['content_css'] = FACTORY_FORMS_443_URL . '/assets/css/editor.css';
|
46 |
}
|
47 |
}
|
48 |
|
libs/factory/forms/includes/complex-control.class.php
CHANGED
@@ -13,13 +13,13 @@
|
|
13 |
if( !defined('ABSPATH') ) {
|
14 |
exit;
|
15 |
}
|
16 |
-
if( !class_exists('
|
17 |
/**
|
18 |
* The base class for all controls.
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
-
abstract class
|
23 |
|
24 |
/**
|
25 |
* Is this element a complex control?
|
@@ -33,7 +33,7 @@
|
|
33 |
* Contains a set of internal controls.
|
34 |
*
|
35 |
* @since 1.0.0
|
36 |
-
* @var
|
37 |
*/
|
38 |
public $inner_controls = array();
|
39 |
|
@@ -41,7 +41,7 @@
|
|
41 |
* Sets a provider for the control.
|
42 |
*
|
43 |
* @since 1.0.0
|
44 |
-
* @param
|
45 |
* @return void
|
46 |
*/
|
47 |
public function setProvider($provider)
|
13 |
if( !defined('ABSPATH') ) {
|
14 |
exit;
|
15 |
}
|
16 |
+
if( !class_exists('Wbcr_FactoryForms443_ComplexControl') ) {
|
17 |
/**
|
18 |
* The base class for all controls.
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
abstract class Wbcr_FactoryForms443_ComplexControl extends Wbcr_FactoryForms443_Control {
|
23 |
|
24 |
/**
|
25 |
* Is this element a complex control?
|
33 |
* Contains a set of internal controls.
|
34 |
*
|
35 |
* @since 1.0.0
|
36 |
+
* @var Wbcr_FactoryForms443_Control[]
|
37 |
*/
|
38 |
public $inner_controls = array();
|
39 |
|
41 |
* Sets a provider for the control.
|
42 |
*
|
43 |
* @since 1.0.0
|
44 |
+
* @param Wbcr_IFactoryForms443_ValueProvider $provider
|
45 |
* @return void
|
46 |
*/
|
47 |
public function setProvider($provider)
|
libs/factory/forms/includes/control-holder.class.php
CHANGED
@@ -14,19 +14,19 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
/**
|
19 |
* The base class for control holders.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
-
abstract class
|
24 |
|
25 |
/**
|
26 |
* Holder Elements.
|
27 |
*
|
28 |
* @since 1.0.0
|
29 |
-
* @var
|
30 |
*/
|
31 |
protected $elements = array();
|
32 |
|
@@ -43,7 +43,7 @@
|
|
43 |
*
|
44 |
* @since 1.0.0
|
45 |
* @param mixed[] $options A holder options.
|
46 |
-
* @param
|
47 |
*/
|
48 |
public function __construct($options, $form)
|
49 |
{
|
@@ -60,7 +60,7 @@
|
|
60 |
* Returns holder elements.
|
61 |
*
|
62 |
* @since 1.0.0
|
63 |
-
* @return
|
64 |
*/
|
65 |
public function getElements()
|
66 |
{
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_ControlHolder') ) {
|
18 |
/**
|
19 |
* The base class for control holders.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
abstract class Wbcr_FactoryForms443_ControlHolder extends Wbcr_FactoryForms443_Control {
|
24 |
|
25 |
/**
|
26 |
* Holder Elements.
|
27 |
*
|
28 |
* @since 1.0.0
|
29 |
+
* @var Wbcr_FactoryForms443_Control[]
|
30 |
*/
|
31 |
protected $elements = array();
|
32 |
|
43 |
*
|
44 |
* @since 1.0.0
|
45 |
* @param mixed[] $options A holder options.
|
46 |
+
* @param Wbcr_FactoryForms443_Form $form A parent form.
|
47 |
*/
|
48 |
public function __construct($options, $form)
|
49 |
{
|
60 |
* Returns holder elements.
|
61 |
*
|
62 |
* @since 1.0.0
|
63 |
+
* @return Wbcr_FactoryForms443_FormElement[].
|
64 |
*/
|
65 |
public function getElements()
|
66 |
{
|
libs/factory/forms/includes/control.class.php
CHANGED
@@ -14,14 +14,14 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
/**
|
20 |
* The base class for all controls.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
-
abstract class
|
25 |
|
26 |
/**
|
27 |
* Is this element a control?
|
@@ -43,7 +43,7 @@
|
|
43 |
* A provider that is used to get values.
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
-
* @var
|
47 |
*/
|
48 |
protected $provider = null;
|
49 |
|
@@ -51,7 +51,7 @@
|
|
51 |
* Create a new instance of the control.
|
52 |
*
|
53 |
* @param mixed[] $options
|
54 |
-
* @param
|
55 |
* @param null $provider
|
56 |
* @since 1.0.0
|
57 |
* @return void
|
@@ -66,7 +66,7 @@
|
|
66 |
* Sets a provider for the control.
|
67 |
*
|
68 |
* @since 1.0.0
|
69 |
-
* @param
|
70 |
* @return void
|
71 |
*/
|
72 |
public function setProvider($provider)
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_Control') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all controls.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
abstract class Wbcr_FactoryForms443_Control extends Wbcr_FactoryForms443_FormElement {
|
25 |
|
26 |
/**
|
27 |
* Is this element a control?
|
43 |
* A provider that is used to get values.
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
+
* @var Wbcr_IFactoryForms443_ValueProvider
|
47 |
*/
|
48 |
protected $provider = null;
|
49 |
|
51 |
* Create a new instance of the control.
|
52 |
*
|
53 |
* @param mixed[] $options
|
54 |
+
* @param FactoryForms443_Form $form
|
55 |
* @param null $provider
|
56 |
* @since 1.0.0
|
57 |
* @return void
|
66 |
* Sets a provider for the control.
|
67 |
*
|
68 |
* @since 1.0.0
|
69 |
+
* @param IFactoryForms443_ValueProvider $provider
|
70 |
* @return void
|
71 |
*/
|
72 |
public function setProvider($provider)
|
libs/factory/forms/includes/custom-element.class.php
CHANGED
@@ -14,13 +14,13 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
/**
|
19 |
* The base class for all controls.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
-
abstract class
|
24 |
|
25 |
/**
|
26 |
* Is this element a custom form element?
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_CustomElement') ) {
|
18 |
/**
|
19 |
* The base class for all controls.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
abstract class Wbcr_FactoryForms443_CustomElement extends Wbcr_FactoryForms443_FormElement {
|
24 |
|
25 |
/**
|
26 |
* Is this element a custom form element?
|
libs/factory/forms/includes/form-element.class.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
/**
|
20 |
* The base class for all form element (controls, holders).
|
@@ -23,7 +23,7 @@
|
|
23 |
*
|
24 |
* @since 1.0.0
|
25 |
*/
|
26 |
-
abstract class
|
27 |
|
28 |
/**
|
29 |
* A type of an elemnt.
|
@@ -37,7 +37,7 @@
|
|
37 |
* An html attribute builder.
|
38 |
*
|
39 |
* @since 1.0.0
|
40 |
-
* @var
|
41 |
*/
|
42 |
private $html_builder;
|
43 |
|
@@ -53,7 +53,7 @@
|
|
53 |
* A parent form.
|
54 |
*
|
55 |
* @since 1.0.0
|
56 |
-
* @var
|
57 |
*/
|
58 |
protected $form;
|
59 |
|
@@ -61,7 +61,7 @@
|
|
61 |
* A form layout.
|
62 |
*
|
63 |
* @since 1.0.0
|
64 |
-
* @var
|
65 |
*/
|
66 |
protected $layout;
|
67 |
|
@@ -94,7 +94,7 @@
|
|
94 |
*
|
95 |
* @since 1.0.0
|
96 |
* @param mixed[] $options A holder options.
|
97 |
-
* @param
|
98 |
*/
|
99 |
public function __construct($options, $form)
|
100 |
{
|
@@ -102,7 +102,7 @@
|
|
102 |
$this->form = $form;
|
103 |
$this->layout = $form->layout;
|
104 |
|
105 |
-
$this->html_builder = new
|
106 |
|
107 |
if( isset($this->options['cssClass']) ) {
|
108 |
$this->html_builder->addCssClass($this->options['cssClass']);
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_FormElement') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all form element (controls, holders).
|
23 |
*
|
24 |
* @since 1.0.0
|
25 |
*/
|
26 |
+
abstract class Wbcr_FactoryForms443_FormElement {
|
27 |
|
28 |
/**
|
29 |
* A type of an elemnt.
|
37 |
* An html attribute builder.
|
38 |
*
|
39 |
* @since 1.0.0
|
40 |
+
* @var Wbcr_FactoryForms443_HtmlAttributeBuilder
|
41 |
*/
|
42 |
private $html_builder;
|
43 |
|
53 |
* A parent form.
|
54 |
*
|
55 |
* @since 1.0.0
|
56 |
+
* @var Wbcr_FactoryForms443_Form
|
57 |
*/
|
58 |
protected $form;
|
59 |
|
61 |
* A form layout.
|
62 |
*
|
63 |
* @since 1.0.0
|
64 |
+
* @var Wbcr_FactoryForms443_FormLayout
|
65 |
*/
|
66 |
protected $layout;
|
67 |
|
94 |
*
|
95 |
* @since 1.0.0
|
96 |
* @param mixed[] $options A holder options.
|
97 |
+
* @param Wbcr_FactoryForms443_Form $form A parent form.
|
98 |
*/
|
99 |
public function __construct($options, $form)
|
100 |
{
|
102 |
$this->form = $form;
|
103 |
$this->layout = $form->layout;
|
104 |
|
105 |
+
$this->html_builder = new Wbcr_FactoryForms443_HtmlAttributeBuilder();
|
106 |
|
107 |
if( isset($this->options['cssClass']) ) {
|
108 |
$this->html_builder->addCssClass($this->options['cssClass']);
|
libs/factory/forms/includes/form-layout.class.php
CHANGED
@@ -14,12 +14,12 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
/**
|
20 |
* The base class for all form layouts.
|
21 |
*/
|
22 |
-
abstract class
|
23 |
|
24 |
/**
|
25 |
* A form layout name.
|
@@ -42,7 +42,7 @@
|
|
42 |
*
|
43 |
* @since 1.0.0
|
44 |
* @param mixed[] $options A holder options.
|
45 |
-
* @param
|
46 |
*/
|
47 |
public function __construct($options, $form)
|
48 |
{
|
@@ -52,8 +52,8 @@
|
|
52 |
|
53 |
parent::__construct($options, $form);
|
54 |
|
55 |
-
$this->addCssClass('factory-forms-
|
56 |
-
$this->addCssClass('factory-forms-
|
57 |
}
|
58 |
|
59 |
/**
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_FormLayout') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all form layouts.
|
21 |
*/
|
22 |
+
abstract class Wbcr_FactoryForms443_FormLayout extends Wbcr_FactoryForms443_Holder {
|
23 |
|
24 |
/**
|
25 |
* A form layout name.
|
42 |
*
|
43 |
* @since 1.0.0
|
44 |
* @param mixed[] $options A holder options.
|
45 |
+
* @param Wbcr_FactoryForms443_Form $form A parent form.
|
46 |
*/
|
47 |
public function __construct($options, $form)
|
48 |
{
|
52 |
|
53 |
parent::__construct($options, $form);
|
54 |
|
55 |
+
$this->addCssClass('factory-forms-443-' . $this->type);
|
56 |
+
$this->addCssClass('factory-forms-443-' . $this->name);
|
57 |
}
|
58 |
|
59 |
/**
|
libs/factory/forms/includes/form.class.php
CHANGED
@@ -15,16 +15,16 @@
|
|
15 |
}
|
16 |
|
17 |
// creating a license manager for each plugin created via the factory
|
18 |
-
add_action('
|
19 |
|
20 |
-
function
|
21 |
{
|
22 |
-
$plugin->forms = new
|
23 |
}
|
24 |
|
25 |
-
if( !class_exists('
|
26 |
|
27 |
-
class
|
28 |
|
29 |
// ----------------------------------------------------
|
30 |
// Static fields and methods
|
@@ -57,7 +57,7 @@
|
|
57 |
/**
|
58 |
* Registers a set of new controls.
|
59 |
*
|
60 |
-
* @see
|
61 |
*
|
62 |
* @since 1.0.0
|
63 |
* @return void
|
@@ -95,7 +95,7 @@
|
|
95 |
/**
|
96 |
* Registers a set of new holder controls.
|
97 |
*
|
98 |
-
* @see
|
99 |
*
|
100 |
* @since 1.0.0
|
101 |
* @return void
|
@@ -129,7 +129,7 @@
|
|
129 |
/**
|
130 |
* Registers a set of new custom form elements.
|
131 |
*
|
132 |
-
* @see
|
133 |
*
|
134 |
* @since 1.0.0
|
135 |
* @return void
|
@@ -180,11 +180,11 @@
|
|
180 |
public static $controls_registered = false;
|
181 |
}
|
182 |
}
|
183 |
-
if( !class_exists('
|
184 |
/**
|
185 |
* An abstraction for forms.
|
186 |
*/
|
187 |
-
class
|
188 |
|
189 |
// ----------------------------------------------------
|
190 |
// Object fields and methods
|
@@ -194,7 +194,7 @@
|
|
194 |
* A value provider of the form that is used to save and load values.
|
195 |
*
|
196 |
* @since 1.0.0
|
197 |
-
* @var
|
198 |
*/
|
199 |
private $provider;
|
200 |
|
@@ -245,7 +245,7 @@
|
|
245 |
* A current form layout used to render a form.
|
246 |
*
|
247 |
* @since 1.0.0
|
248 |
-
* @var
|
249 |
*/
|
250 |
public $layout;
|
251 |
|
@@ -261,20 +261,20 @@
|
|
261 |
*
|
262 |
* @since 1.0.0
|
263 |
* @param array $options
|
264 |
-
* @param
|
265 |
*/
|
266 |
-
public function __construct(array $options,
|
267 |
{
|
268 |
// register controls once, when the first form is created
|
269 |
-
if( !
|
270 |
|
271 |
-
do_action('
|
272 |
|
273 |
//if( !empty($plugin) ) {
|
274 |
-
do_action('
|
275 |
//}
|
276 |
|
277 |
-
|
278 |
}
|
279 |
|
280 |
$this->scope = isset($options['scope']) ? $options['scope'] : null;
|
@@ -289,14 +289,14 @@
|
|
289 |
$this->form_layout = 'bootstrap-3';
|
290 |
}
|
291 |
|
292 |
-
|
293 |
}
|
294 |
|
295 |
/**
|
296 |
* Sets a provider for the control.
|
297 |
*
|
298 |
* @since 1.0.0
|
299 |
-
* @param
|
300 |
* @return void
|
301 |
*/
|
302 |
public function setProvider($provider)
|
@@ -332,14 +332,14 @@
|
|
332 |
*/
|
333 |
public function getItems()
|
334 |
{
|
335 |
-
return apply_filters('
|
336 |
}
|
337 |
|
338 |
/**
|
339 |
* Returns form controls (control objects).
|
340 |
*
|
341 |
* @since 1.0.0
|
342 |
-
* @return
|
343 |
*/
|
344 |
public function getControls()
|
345 |
{
|
@@ -355,7 +355,7 @@
|
|
355 |
* Builds a form items to the control objects ready to use.
|
356 |
*
|
357 |
* @param null $holder
|
358 |
-
* @return
|
359 |
*/
|
360 |
|
361 |
public function createControls($holder = null)
|
@@ -395,7 +395,7 @@
|
|
395 |
*
|
396 |
* @since 1.0.0
|
397 |
* @param array $item Item data.
|
398 |
-
* @return
|
399 |
*/
|
400 |
public function createElement($item)
|
401 |
{
|
@@ -417,7 +417,7 @@
|
|
417 |
*
|
418 |
* @since 1.0.0
|
419 |
* @param mixed[] $item Data of items.
|
420 |
-
* @return
|
421 |
*/
|
422 |
public function createElements($items = array())
|
423 |
{
|
@@ -433,7 +433,7 @@
|
|
433 |
*
|
434 |
* @since 1.0.0
|
435 |
* @param array $item Item data.
|
436 |
-
* @return
|
437 |
*/
|
438 |
public function createControl($item)
|
439 |
{
|
@@ -441,7 +441,7 @@
|
|
441 |
|
442 |
if( is_array($item) ) {
|
443 |
|
444 |
-
$control_data =
|
445 |
|
446 |
require_once($control_data['include']);
|
447 |
|
@@ -465,7 +465,7 @@
|
|
465 |
*
|
466 |
* @since 1.0.0
|
467 |
* @param array $item Item data.
|
468 |
-
* @return
|
469 |
*/
|
470 |
public function createHolder($item)
|
471 |
{
|
@@ -473,7 +473,7 @@
|
|
473 |
|
474 |
if( is_array($item) ) {
|
475 |
|
476 |
-
$holderData =
|
477 |
require_once($holderData['include']);
|
478 |
|
479 |
$object = new $holderData['class']($item, $this);
|
@@ -491,7 +491,7 @@
|
|
491 |
*
|
492 |
* @since 1.0.0
|
493 |
* @param mixed $item Item data.
|
494 |
-
* @return
|
495 |
*/
|
496 |
public function createCustomElement($item)
|
497 |
{
|
@@ -499,7 +499,7 @@
|
|
499 |
|
500 |
if( is_array($item) ) {
|
501 |
|
502 |
-
$data =
|
503 |
require_once($data['include']);
|
504 |
|
505 |
$options = $item;
|
@@ -523,12 +523,12 @@
|
|
523 |
public function html($options = array())
|
524 |
{
|
525 |
|
526 |
-
if( !isset(
|
527 |
die(sprintf('[ERROR] The form layout %s was not found.', $this->form_layout));
|
528 |
}
|
529 |
|
530 |
// include a render code
|
531 |
-
$layout_data =
|
532 |
require_once($layout_data['include']);
|
533 |
|
534 |
$this->connectAssets();
|
@@ -552,7 +552,7 @@
|
|
552 |
{
|
553 |
|
554 |
$this->connectAssetsForItems();
|
555 |
-
$layout_data =
|
556 |
|
557 |
if( $layout_data['name'] == 'default' ) {
|
558 |
if( isset($layout_data['style']) ) {
|
@@ -602,9 +602,9 @@
|
|
602 |
|
603 |
$haystack = array();
|
604 |
if( self::isControl($type) ) {
|
605 |
-
$haystack =
|
606 |
} elseif( self::isControlHolder($type) ) {
|
607 |
-
$haystack =
|
608 |
}
|
609 |
|
610 |
if( isset($haystack[$type]) ) {
|
@@ -660,7 +660,7 @@
|
|
660 |
*/
|
661 |
public static function isControl($item)
|
662 |
{
|
663 |
-
return isset(
|
664 |
}
|
665 |
|
666 |
/**
|
@@ -672,7 +672,7 @@
|
|
672 |
*/
|
673 |
public static function isControlHolder($item)
|
674 |
{
|
675 |
-
return isset(
|
676 |
}
|
677 |
|
678 |
/**
|
@@ -684,7 +684,7 @@
|
|
684 |
*/
|
685 |
public static function isCustomElement($item)
|
686 |
{
|
687 |
-
return isset(
|
688 |
}
|
689 |
}
|
690 |
}
|
15 |
}
|
16 |
|
17 |
// creating a license manager for each plugin created via the factory
|
18 |
+
add_action('wbcr_factory_forms_443_plugin_created', 'wbcr_factory_forms_443_plugin_created');
|
19 |
|
20 |
+
function wbcr_factory_forms_443_plugin_created($plugin)
|
21 |
{
|
22 |
+
$plugin->forms = new Wbcr_FactoryForms443_Manager($plugin);
|
23 |
}
|
24 |
|
25 |
+
if( !class_exists('Wbcr_FactoryForms443_Manager') ) {
|
26 |
|
27 |
+
class Wbcr_FactoryForms443_Manager {
|
28 |
|
29 |
// ----------------------------------------------------
|
30 |
// Static fields and methods
|
57 |
/**
|
58 |
* Registers a set of new controls.
|
59 |
*
|
60 |
+
* @see FactoryForms443_Form::registerControl()
|
61 |
*
|
62 |
* @since 1.0.0
|
63 |
* @return void
|
95 |
/**
|
96 |
* Registers a set of new holder controls.
|
97 |
*
|
98 |
+
* @see FactoryForms443_Form::registerHolder()
|
99 |
*
|
100 |
* @since 1.0.0
|
101 |
* @return void
|
129 |
/**
|
130 |
* Registers a set of new custom form elements.
|
131 |
*
|
132 |
+
* @see FactoryForms443_Form::registerCustomElement()
|
133 |
*
|
134 |
* @since 1.0.0
|
135 |
* @return void
|
180 |
public static $controls_registered = false;
|
181 |
}
|
182 |
}
|
183 |
+
if( !class_exists('Wbcr_FactoryForms443_Form') ) {
|
184 |
/**
|
185 |
* An abstraction for forms.
|
186 |
*/
|
187 |
+
class Wbcr_FactoryForms443_Form {
|
188 |
|
189 |
// ----------------------------------------------------
|
190 |
// Object fields and methods
|
194 |
* A value provider of the form that is used to save and load values.
|
195 |
*
|
196 |
* @since 1.0.0
|
197 |
+
* @var Wbcr_IFactoryForms443_ValueProvider
|
198 |
*/
|
199 |
private $provider;
|
200 |
|
245 |
* A current form layout used to render a form.
|
246 |
*
|
247 |
* @since 1.0.0
|
248 |
+
* @var Wbcr_FactoryForms443_FormLayout
|
249 |
*/
|
250 |
public $layout;
|
251 |
|
261 |
*
|
262 |
* @since 1.0.0
|
263 |
* @param array $options
|
264 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
265 |
*/
|
266 |
+
public function __construct(array $options, Wbcr_Factory446_Plugin $plugin)
|
267 |
{
|
268 |
// register controls once, when the first form is created
|
269 |
+
if( !Wbcr_FactoryForms443_Manager::$controls_registered ) {
|
270 |
|
271 |
+
do_action('wbcr_factory_forms_443_register_controls', $plugin);
|
272 |
|
273 |
//if( !empty($plugin) ) {
|
274 |
+
do_action('wbcr_factory_forms_443_register_controls_' . $plugin->getPluginName(), $plugin);
|
275 |
//}
|
276 |
|
277 |
+
Wbcr_FactoryForms443_Manager::$controls_registered = true;
|
278 |
}
|
279 |
|
280 |
$this->scope = isset($options['scope']) ? $options['scope'] : null;
|
289 |
$this->form_layout = 'bootstrap-3';
|
290 |
}
|
291 |
|
292 |
+
Wbcr_FactoryForms443_Manager::$temper = 'flat';
|
293 |
}
|
294 |
|
295 |
/**
|
296 |
* Sets a provider for the control.
|
297 |
*
|
298 |
* @since 1.0.0
|
299 |
+
* @param Wbcr_IFactoryForms443_ValueProvider $provider
|
300 |
* @return void
|
301 |
*/
|
302 |
public function setProvider($provider)
|
332 |
*/
|
333 |
public function getItems()
|
334 |
{
|
335 |
+
return apply_filters('wbcr_factory_446_form_items', $this->items, $this->name);
|
336 |
}
|
337 |
|
338 |
/**
|
339 |
* Returns form controls (control objects).
|
340 |
*
|
341 |
* @since 1.0.0
|
342 |
+
* @return Wbcr_FactoryForms443_Control[]
|
343 |
*/
|
344 |
public function getControls()
|
345 |
{
|
355 |
* Builds a form items to the control objects ready to use.
|
356 |
*
|
357 |
* @param null $holder
|
358 |
+
* @return Wbcr_FactoryForms443_Control[]
|
359 |
*/
|
360 |
|
361 |
public function createControls($holder = null)
|
395 |
*
|
396 |
* @since 1.0.0
|
397 |
* @param array $item Item data.
|
398 |
+
* @return Wbcr_FactoryForms443_FormElement|null A form element.
|
399 |
*/
|
400 |
public function createElement($item)
|
401 |
{
|
417 |
*
|
418 |
* @since 1.0.0
|
419 |
* @param mixed[] $item Data of items.
|
420 |
+
* @return Wbcr_FactoryForms443_FormElement[] Created elements.
|
421 |
*/
|
422 |
public function createElements($items = array())
|
423 |
{
|
433 |
*
|
434 |
* @since 1.0.0
|
435 |
* @param array $item Item data.
|
436 |
+
* @return Wbcr_FactoryForms443_Control A control object.
|
437 |
*/
|
438 |
public function createControl($item)
|
439 |
{
|
441 |
|
442 |
if( is_array($item) ) {
|
443 |
|
444 |
+
$control_data = Wbcr_FactoryForms443_Manager::$registered_controls[$item['type']];
|
445 |
|
446 |
require_once($control_data['include']);
|
447 |
|
465 |
*
|
466 |
* @since 1.0.0
|
467 |
* @param array $item Item data.
|
468 |
+
* @return Wbcr_FactoryForms443_Holder A control holder object.
|
469 |
*/
|
470 |
public function createHolder($item)
|
471 |
{
|
473 |
|
474 |
if( is_array($item) ) {
|
475 |
|
476 |
+
$holderData = Wbcr_FactoryForms443_Manager::$registered_holders[$item['type']];
|
477 |
require_once($holderData['include']);
|
478 |
|
479 |
$object = new $holderData['class']($item, $this);
|
491 |
*
|
492 |
* @since 1.0.0
|
493 |
* @param mixed $item Item data.
|
494 |
+
* @return Wbcr_FactoryForms443_FormElement A custom form element object.
|
495 |
*/
|
496 |
public function createCustomElement($item)
|
497 |
{
|
499 |
|
500 |
if( is_array($item) ) {
|
501 |
|
502 |
+
$data = Wbcr_FactoryForms443_Manager::$registered_custom_elements[$item['type']];
|
503 |
require_once($data['include']);
|
504 |
|
505 |
$options = $item;
|
523 |
public function html($options = array())
|
524 |
{
|
525 |
|
526 |
+
if( !isset(Wbcr_FactoryForms443_Manager::$form_layouts[$this->form_layout]) ) {
|
527 |
die(sprintf('[ERROR] The form layout %s was not found.', $this->form_layout));
|
528 |
}
|
529 |
|
530 |
// include a render code
|
531 |
+
$layout_data = Wbcr_FactoryForms443_Manager::$form_layouts[$this->form_layout];
|
532 |
require_once($layout_data['include']);
|
533 |
|
534 |
$this->connectAssets();
|
552 |
{
|
553 |
|
554 |
$this->connectAssetsForItems();
|
555 |
+
$layout_data = Wbcr_FactoryForms443_Manager::$form_layouts[$this->form_layout];
|
556 |
|
557 |
if( $layout_data['name'] == 'default' ) {
|
558 |
if( isset($layout_data['style']) ) {
|
602 |
|
603 |
$haystack = array();
|
604 |
if( self::isControl($type) ) {
|
605 |
+
$haystack = Wbcr_FactoryForms443_Manager::$registered_controls;
|
606 |
} elseif( self::isControlHolder($type) ) {
|
607 |
+
$haystack = Wbcr_FactoryForms443_Manager::$registered_holders;
|
608 |
}
|
609 |
|
610 |
if( isset($haystack[$type]) ) {
|
660 |
*/
|
661 |
public static function isControl($item)
|
662 |
{
|
663 |
+
return isset(Wbcr_FactoryForms443_Manager::$registered_controls[$item['type']]);
|
664 |
}
|
665 |
|
666 |
/**
|
672 |
*/
|
673 |
public static function isControlHolder($item)
|
674 |
{
|
675 |
+
return isset(Wbcr_FactoryForms443_Manager::$registered_holders[$item['type']]);
|
676 |
}
|
677 |
|
678 |
/**
|
684 |
*/
|
685 |
public static function isCustomElement($item)
|
686 |
{
|
687 |
+
return isset(Wbcr_FactoryForms443_Manager::$registered_custom_elements[$item['type']]);
|
688 |
}
|
689 |
}
|
690 |
}
|
libs/factory/forms/includes/holder.class.php
CHANGED
@@ -14,20 +14,20 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
/**
|
20 |
* The base class for control holders.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
-
abstract class
|
25 |
|
26 |
/**
|
27 |
* Holder Elements.
|
28 |
*
|
29 |
* @since 1.0.0
|
30 |
-
* @var
|
31 |
*/
|
32 |
protected $elements = array();
|
33 |
|
@@ -44,7 +44,7 @@
|
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
* @param mixed[] $options A holder options.
|
47 |
-
* @param
|
48 |
*/
|
49 |
public function __construct($options, $form)
|
50 |
{
|
@@ -56,7 +56,7 @@
|
|
56 |
* Returns holder elements.
|
57 |
*
|
58 |
* @since 1.0.0
|
59 |
-
* @return
|
60 |
*/
|
61 |
public function getElements()
|
62 |
{
|
@@ -84,7 +84,7 @@
|
|
84 |
$is_first_item = false;
|
85 |
}
|
86 |
|
87 |
-
do_action('
|
88 |
|
89 |
// if a current item is a control holder
|
90 |
if( $element->is_holder ) {
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_Holder') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for control holders.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
abstract class Wbcr_FactoryForms443_Holder extends Wbcr_FactoryForms443_FormElement {
|
25 |
|
26 |
/**
|
27 |
* Holder Elements.
|
28 |
*
|
29 |
* @since 1.0.0
|
30 |
+
* @var Wbcr_FactoryForms443_Control[]
|
31 |
*/
|
32 |
protected $elements = array();
|
33 |
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
* @param mixed[] $options A holder options.
|
47 |
+
* @param Wbcr_FactoryForms443_Form $form A parent form.
|
48 |
*/
|
49 |
public function __construct($options, $form)
|
50 |
{
|
56 |
* Returns holder elements.
|
57 |
*
|
58 |
* @since 1.0.0
|
59 |
+
* @return Wbcr_FactoryForms443_Control[].
|
60 |
*/
|
61 |
public function getElements()
|
62 |
{
|
84 |
$is_first_item = false;
|
85 |
}
|
86 |
|
87 |
+
do_action('wbcr_factory_446_form_before_element_' . $element->getOption('name'));
|
88 |
|
89 |
// if a current item is a control holder
|
90 |
if( $element->is_holder ) {
|
libs/factory/forms/includes/html-builder.class.php
CHANGED
@@ -14,13 +14,13 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
/**
|
19 |
* Html Attribute Builder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
-
class
|
24 |
|
25 |
/**
|
26 |
* An array to store css classes.
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_HtmlAttributeBuilder') ) {
|
18 |
/**
|
19 |
* Html Attribute Builder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms443_HtmlAttributeBuilder {
|
24 |
|
25 |
/**
|
26 |
* An array to store css classes.
|
libs/factory/forms/includes/providers/meta-value-provider.class.php
CHANGED
@@ -14,7 +14,7 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
/**
|
20 |
* Factory Meta Value Provider
|
@@ -24,7 +24,7 @@
|
|
24 |
*
|
25 |
* @since 1.0.0
|
26 |
*/
|
27 |
-
class
|
28 |
|
29 |
|
30 |
public $scope;
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_OptionsValueProvider') ) {
|
18 |
|
19 |
/**
|
20 |
* Factory Meta Value Provider
|
24 |
*
|
25 |
* @since 1.0.0
|
26 |
*/
|
27 |
+
class Wbcr_FactoryForms443_MetaValueProvider implements Wbcr_IFactoryForms443_ValueProvider {
|
28 |
|
29 |
|
30 |
public $scope;
|
libs/factory/forms/includes/providers/options-value-provider.class.php
CHANGED
@@ -13,7 +13,7 @@
|
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
-
if( !class_exists('
|
17 |
|
18 |
/**
|
19 |
* Factory Options Value Provider
|
@@ -22,7 +22,7 @@
|
|
22 |
*
|
23 |
* @since 1.0.0
|
24 |
*/
|
25 |
-
class
|
26 |
|
27 |
/**
|
28 |
* A prefix that will be added to all option names.
|
@@ -43,7 +43,7 @@
|
|
43 |
/**
|
44 |
* Creates a new instance of an options value provider.
|
45 |
*/
|
46 |
-
public function __construct(
|
47 |
{
|
48 |
$this->plugin = $plugin;
|
49 |
}
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
+
if( !class_exists('Wbcr_FactoryForms443_OptionsValueProvider') ) {
|
17 |
|
18 |
/**
|
19 |
* Factory Options Value Provider
|
22 |
*
|
23 |
* @since 1.0.0
|
24 |
*/
|
25 |
+
class Wbcr_FactoryForms443_OptionsValueProvider implements Wbcr_IFactoryForms443_ValueProvider {
|
26 |
|
27 |
/**
|
28 |
* A prefix that will be added to all option names.
|
43 |
/**
|
44 |
* Creates a new instance of an options value provider.
|
45 |
*/
|
46 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin)
|
47 |
{
|
48 |
$this->plugin = $plugin;
|
49 |
}
|
libs/factory/forms/includes/providers/value-provider.interface.php
CHANGED
@@ -14,13 +14,13 @@
|
|
14 |
if( !defined('ABSPATH') ) {
|
15 |
exit;
|
16 |
}
|
17 |
-
if( !class_exists('
|
18 |
/**
|
19 |
* The interface for all value provides.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
-
interface
|
24 |
|
25 |
/**
|
26 |
* Inits a form a provider to get data from a storage.
|
14 |
if( !defined('ABSPATH') ) {
|
15 |
exit;
|
16 |
}
|
17 |
+
if( !class_exists('Wbcr_IFactoryForms443_ValueProvider') ) {
|
18 |
/**
|
19 |
* The interface for all value provides.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
interface Wbcr_IFactoryForms443_ValueProvider {
|
24 |
|
25 |
/**
|
26 |
* Inits a form a provider to get data from a storage.
|
libs/factory/forms/langs/{wbcr_factory_forms_442-ru_RU.mo → wbcr_factory_forms_443-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/forms/langs/{wbcr_factory_forms_442-ru_RU.po → wbcr_factory_forms_443-ru_RU.po}
RENAMED
File without changes
|
libs/factory/forms/layouts/bootstrap-3/bootstrap-3.php
CHANGED
@@ -14,11 +14,11 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
/**
|
19 |
* A form layout based on Twitter Bootstrap 3
|
20 |
*/
|
21 |
-
class
|
22 |
|
23 |
public $name = 'default';
|
24 |
|
@@ -27,7 +27,7 @@
|
|
27 |
*
|
28 |
* @since 1.0.0
|
29 |
* @param array $options A holder options.
|
30 |
-
* @param
|
31 |
*/
|
32 |
public function __construct($options, $form)
|
33 |
{
|
@@ -68,7 +68,7 @@
|
|
68 |
}
|
69 |
|
70 |
/**
|
71 |
-
* @param
|
72 |
*/
|
73 |
public function beforeControl($control)
|
74 |
{
|
@@ -116,7 +116,7 @@
|
|
116 |
}
|
117 |
|
118 |
/**
|
119 |
-
* @param
|
120 |
*/
|
121 |
public function afterControl($control)
|
122 |
{
|
@@ -168,7 +168,7 @@
|
|
168 |
}
|
169 |
|
170 |
/**
|
171 |
-
* @param
|
172 |
* @param int $index
|
173 |
* @param int $total
|
174 |
*/
|
@@ -193,7 +193,7 @@
|
|
193 |
}
|
194 |
|
195 |
/**
|
196 |
-
* @param
|
197 |
* @param int $index
|
198 |
* @param int $total
|
199 |
*/
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms443_Bootstrap3FormLayout') ) {
|
18 |
/**
|
19 |
* A form layout based on Twitter Bootstrap 3
|
20 |
*/
|
21 |
+
class Wbcr_FactoryForms443_Bootstrap3FormLayout extends Wbcr_FactoryForms443_FormLayout {
|
22 |
|
23 |
public $name = 'default';
|
24 |
|
27 |
*
|
28 |
* @since 1.0.0
|
29 |
* @param array $options A holder options.
|
30 |
+
* @param Wbcr_FactoryForms443_Form $form A parent form.
|
31 |
*/
|
32 |
public function __construct($options, $form)
|
33 |
{
|
68 |
}
|
69 |
|
70 |
/**
|
71 |
+
* @param Wbcr_FactoryForms443_Control $control
|
72 |
*/
|
73 |
public function beforeControl($control)
|
74 |
{
|
116 |
}
|
117 |
|
118 |
/**
|
119 |
+
* @param Wbcr_FactoryForms443_Control $control
|
120 |
*/
|
121 |
public function afterControl($control)
|
122 |
{
|
168 |
}
|
169 |
|
170 |
/**
|
171 |
+
* @param Wbcr_FactoryForms443_Control $control
|
172 |
* @param int $index
|
173 |
* @param int $total
|
174 |
*/
|
193 |
}
|
194 |
|
195 |
/**
|
196 |
+
* @param Wbcr_FactoryForms443_Control $control
|
197 |
* @param int $index
|
198 |
* @param int $total
|
199 |
*/
|
libs/factory/freemius/boot.php
CHANGED
@@ -14,39 +14,39 @@ if( !defined('ABSPATH') ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( defined('
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
-
define('
|
22 |
|
23 |
-
define('
|
24 |
-
define('
|
25 |
-
define('
|
26 |
|
27 |
#comp merge
|
28 |
// Freemius
|
29 |
-
require_once(
|
30 |
-
require_once(
|
31 |
-
require_once(
|
32 |
-
require_once(
|
33 |
-
require_once(
|
34 |
-
require_once(
|
35 |
-
require_once(
|
36 |
|
37 |
if( !class_exists('Freemius_Api_WordPress') ) {
|
38 |
-
require_once
|
39 |
}
|
40 |
|
41 |
-
require_once(
|
42 |
|
43 |
/**
|
44 |
-
* @param
|
45 |
*/
|
46 |
-
add_action('
|
47 |
# Устанавливаем класс провайдера лицензий для премиум менеджера
|
48 |
-
$plugin->set_license_provider('freemius', 'WBCR\
|
49 |
# Устанавливаем класс репозитория обновлений для менеджера обновлений
|
50 |
-
$plugin->set_update_repository('freemius', 'WBCR\
|
51 |
});
|
52 |
#endcomp
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( defined('FACTORY_FREEMIUS_134_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
define( 'FACTORY_FREEMIUS_134_VERSION', '1.3.4' );
|
22 |
|
23 |
+
define('FACTORY_FREEMIUS_134_LOADED', true);
|
24 |
+
define('FACTORY_FREEMIUS_134_DIR', dirname(__FILE__));
|
25 |
+
define('FACTORY_FREEMIUS_134_URL', plugins_url(null, __FILE__));
|
26 |
|
27 |
#comp merge
|
28 |
// Freemius
|
29 |
+
require_once(FACTORY_FREEMIUS_134_DIR . '/includes/entities/class-freemius-entity.php');
|
30 |
+
require_once(FACTORY_FREEMIUS_134_DIR . '/includes/entities/class-freemius-scope.php');
|
31 |
+
require_once(FACTORY_FREEMIUS_134_DIR . '/includes/entities/class-freemius-user.php');
|
32 |
+
require_once(FACTORY_FREEMIUS_134_DIR . '/includes/entities/class-freemius-site.php');
|
33 |
+
require_once(FACTORY_FREEMIUS_134_DIR . '/includes/entities/class-freemius-license.php');
|
34 |
+
require_once(FACTORY_FREEMIUS_134_DIR . '/includes/licensing/class-freemius-provider.php');
|
35 |
+
require_once(FACTORY_FREEMIUS_134_DIR . '/includes/updates/class-freemius-repository.php');
|
36 |
|
37 |
if( !class_exists('Freemius_Api_WordPress') ) {
|
38 |
+
require_once FACTORY_FREEMIUS_134_DIR . '/includes/sdk/FreemiusWordPress.php';
|
39 |
}
|
40 |
|
41 |
+
require_once(FACTORY_FREEMIUS_134_DIR . '/includes/class-freemius-api.php');
|
42 |
|
43 |
/**
|
44 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
45 |
*/
|
46 |
+
add_action('wbcr_factory_freemius_134_plugin_created', function ($plugin) {
|
47 |
# Устанавливаем класс провайдера лицензий для премиум менеджера
|
48 |
+
$plugin->set_license_provider('freemius', 'WBCR\Factory_Freemius_134\Premium\Provider');
|
49 |
# Устанавливаем класс репозитория обновлений для менеджера обновлений
|
50 |
+
$plugin->set_update_repository('freemius', 'WBCR\Factory_Freemius_134\Updates\Freemius_Repository');
|
51 |
});
|
52 |
#endcomp
|
libs/factory/freemius/includes/class-freemius-api.php
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use Freemius_Api_WordPress;
|
6 |
use Freemius_Exception;
|
7 |
-
use
|
8 |
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
exit;
|
@@ -33,7 +33,7 @@ final class Api {
|
|
33 |
private $api;
|
34 |
|
35 |
/**
|
36 |
-
* @var
|
37 |
*/
|
38 |
private $plugin;
|
39 |
|
@@ -48,14 +48,14 @@ final class Api {
|
|
48 |
private static $clock_diff;
|
49 |
|
50 |
/**
|
51 |
-
* @param
|
52 |
* @param string $scope 'app', 'developer', 'user' or 'install'.
|
53 |
* @param number $id Element's id.
|
54 |
* @param string $public_key Public key.
|
55 |
* @param bool|string $secret_key Element's secret key.
|
56 |
* @param bool $is_sandbox
|
57 |
*/
|
58 |
-
private function __construct(
|
59 |
if ( ! class_exists( 'Freemius_Api_WordPress' ) ) {
|
60 |
require_once WP_FS__DIR_SDK . '/FreemiusWordPress.php';
|
61 |
}
|
@@ -73,7 +73,7 @@ final class Api {
|
|
73 |
}
|
74 |
|
75 |
/**
|
76 |
-
* @param
|
77 |
* @param string $scope 'app', 'developer', 'user' or 'install'.
|
78 |
* @param number $id Element's id.
|
79 |
* @param string $public_key Public key.
|
@@ -82,7 +82,7 @@ final class Api {
|
|
82 |
*
|
83 |
* @return Api
|
84 |
*/
|
85 |
-
public static function instance(
|
86 |
$identifier = md5( $plugin->getPluginName() . $scope . $id . $public_key . ( is_string( $secret_key ) ? $secret_key : '' ) . json_encode( $is_sandbox ) );
|
87 |
|
88 |
if ( ! isset( self::$instances[ $identifier ] ) ) {
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_134;
|
4 |
|
5 |
use Freemius_Api_WordPress;
|
6 |
use Freemius_Exception;
|
7 |
+
use Wbcr_Factory446_Plugin;
|
8 |
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
exit;
|
33 |
private $api;
|
34 |
|
35 |
/**
|
36 |
+
* @var Wbcr_Factory446_Plugin
|
37 |
*/
|
38 |
private $plugin;
|
39 |
|
48 |
private static $clock_diff;
|
49 |
|
50 |
/**
|
51 |
+
* @param Wbcr_Factory446_Plugin $slug
|
52 |
* @param string $scope 'app', 'developer', 'user' or 'install'.
|
53 |
* @param number $id Element's id.
|
54 |
* @param string $public_key Public key.
|
55 |
* @param bool|string $secret_key Element's secret key.
|
56 |
* @param bool $is_sandbox
|
57 |
*/
|
58 |
+
private function __construct( Wbcr_Factory446_Plugin $plugin, $scope, $id, $public_key, $secret_key, $is_sandbox ) {
|
59 |
if ( ! class_exists( 'Freemius_Api_WordPress' ) ) {
|
60 |
require_once WP_FS__DIR_SDK . '/FreemiusWordPress.php';
|
61 |
}
|
73 |
}
|
74 |
|
75 |
/**
|
76 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
77 |
* @param string $scope 'app', 'developer', 'user' or 'install'.
|
78 |
* @param number $id Element's id.
|
79 |
* @param string $public_key Public key.
|
82 |
*
|
83 |
* @return Api
|
84 |
*/
|
85 |
+
public static function instance( Wbcr_Factory446_Plugin $plugin, $scope, $id, $public_key, $is_sandbox, $secret_key = false ) {
|
86 |
$identifier = md5( $plugin->getPluginName() . $scope . $id . $public_key . ( is_string( $secret_key ) ? $secret_key : '' ) . json_encode( $is_sandbox ) );
|
87 |
|
88 |
if ( ! isset( self::$instances[ $identifier ] ) ) {
|
libs/factory/freemius/includes/entities/class-freemius-entity.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use stdClass;
|
6 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_134\Entities;
|
4 |
|
5 |
use stdClass;
|
6 |
|
libs/factory/freemius/includes/entities/class-freemius-license.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use stdClass;
|
6 |
|
@@ -14,7 +14,7 @@
|
|
14 |
* @copyright (c) 2018 Webraftic Ltd, Freemius, Inc.
|
15 |
* @version 1.0
|
16 |
*/
|
17 |
-
class License extends Entity implements \WBCR\
|
18 |
|
19 |
/**
|
20 |
* @var number
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_134\Entities;
|
4 |
|
5 |
use stdClass;
|
6 |
|
14 |
* @copyright (c) 2018 Webraftic Ltd, Freemius, Inc.
|
15 |
* @version 1.0
|
16 |
*/
|
17 |
+
class License extends Entity implements \WBCR\Factory_446\Premium\Interfaces\License {
|
18 |
|
19 |
/**
|
20 |
* @var number
|
libs/factory/freemius/includes/entities/class-freemius-plugin.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use stdClass;
|
6 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_134\Entities;
|
4 |
|
5 |
use stdClass;
|
6 |
|
libs/factory/freemius/includes/entities/class-freemius-scope.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use stdClass;
|
6 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_134\Entities;
|
4 |
|
5 |
use stdClass;
|
6 |
|
libs/factory/freemius/includes/entities/class-freemius-site.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use stdClass;
|
6 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_134\Entities;
|
4 |
|
5 |
use stdClass;
|
6 |
|
libs/factory/freemius/includes/entities/class-freemius-user.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
if ( ! defined( 'ABSPATH' ) ) {
|
6 |
exit;
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_134\Entities;
|
4 |
|
5 |
if ( ! defined( 'ABSPATH' ) ) {
|
6 |
exit;
|
libs/factory/freemius/includes/licensing/class-freemius-provider.php
CHANGED
@@ -1,14 +1,14 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
-
|
5 |
-
use WBCR\
|
6 |
-
use WBCR\
|
7 |
-
use WBCR\
|
8 |
-
use WBCR\
|
9 |
-
use WBCR\
|
10 |
-
use
|
11 |
-
use WBCR\
|
12 |
use WP_Error;
|
13 |
use Exception;
|
14 |
|
@@ -40,17 +40,17 @@ final class Provider extends License_Provider {
|
|
40 |
private $slug;
|
41 |
|
42 |
/**
|
43 |
-
* @var \WBCR\
|
44 |
*/
|
45 |
private $site_api;
|
46 |
|
47 |
/**
|
48 |
-
* @var \WBCR\
|
49 |
*/
|
50 |
private $plugin_api;
|
51 |
|
52 |
/**
|
53 |
-
* @var \WBCR\
|
54 |
*/
|
55 |
private $user_api;
|
56 |
|
@@ -82,11 +82,11 @@ final class Provider extends License_Provider {
|
|
82 |
/**
|
83 |
* Manager constructor.
|
84 |
*
|
85 |
-
* @param
|
86 |
*
|
87 |
* @throws Exception
|
88 |
*/
|
89 |
-
public function __construct(
|
90 |
{
|
91 |
parent::__construct($plugin, $settings);
|
92 |
|
@@ -150,7 +150,7 @@ final class Provider extends License_Provider {
|
|
150 |
}
|
151 |
|
152 |
/**
|
153 |
-
* @return \WBCR\
|
154 |
* @throws Exception
|
155 |
*/
|
156 |
public function get_license()
|
@@ -613,7 +613,7 @@ final class Provider extends License_Provider {
|
|
613 |
/**
|
614 |
* @param bool $flush
|
615 |
*
|
616 |
-
* @return \WBCR\
|
617 |
* @throws Exception
|
618 |
*/
|
619 |
private function get_api_user_scope(User $user, $flush = false)
|
@@ -628,7 +628,7 @@ final class Provider extends License_Provider {
|
|
628 |
/**
|
629 |
* @param bool $flush
|
630 |
*
|
631 |
-
* @return \WBCR\
|
632 |
* @throws Exception
|
633 |
*/
|
634 |
private function get_api_site_scope(Site $site, $flush = false)
|
@@ -643,7 +643,7 @@ final class Provider extends License_Provider {
|
|
643 |
/**
|
644 |
* Get plugin public API scope.
|
645 |
*
|
646 |
-
* @return \WBCR\
|
647 |
* @throws Exception
|
648 |
*/
|
649 |
private function get_api_plugin_scope()
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_134\Premium;
|
4 |
+
|
5 |
+
use WBCR\Factory_Freemius_134\Entities\License;
|
6 |
+
use WBCR\Factory_Freemius_134\Entities\Plugin;
|
7 |
+
use WBCR\Factory_Freemius_134\Entities\Site;
|
8 |
+
use WBCR\Factory_Freemius_134\Entities\User;
|
9 |
+
use WBCR\Factory_446\Premium\Provider as License_Provider;
|
10 |
+
use Wbcr_Factory446_Plugin;
|
11 |
+
use WBCR\Factory_Freemius_134\Api;
|
12 |
use WP_Error;
|
13 |
use Exception;
|
14 |
|
40 |
private $slug;
|
41 |
|
42 |
/**
|
43 |
+
* @var \WBCR\Factory_Freemius_134\Api
|
44 |
*/
|
45 |
private $site_api;
|
46 |
|
47 |
/**
|
48 |
+
* @var \WBCR\Factory_Freemius_134\Api
|
49 |
*/
|
50 |
private $plugin_api;
|
51 |
|
52 |
/**
|
53 |
+
* @var \WBCR\Factory_Freemius_134\Api
|
54 |
*/
|
55 |
private $user_api;
|
56 |
|
82 |
/**
|
83 |
* Manager constructor.
|
84 |
*
|
85 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
86 |
*
|
87 |
* @throws Exception
|
88 |
*/
|
89 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin, array $settings)
|
90 |
{
|
91 |
parent::__construct($plugin, $settings);
|
92 |
|
150 |
}
|
151 |
|
152 |
/**
|
153 |
+
* @return \WBCR\Factory_Freemius_134\Entities\License|null
|
154 |
* @throws Exception
|
155 |
*/
|
156 |
public function get_license()
|
613 |
/**
|
614 |
* @param bool $flush
|
615 |
*
|
616 |
+
* @return \WBCR\Factory_Freemius_134\Api
|
617 |
* @throws Exception
|
618 |
*/
|
619 |
private function get_api_user_scope(User $user, $flush = false)
|
628 |
/**
|
629 |
* @param bool $flush
|
630 |
*
|
631 |
+
* @return \WBCR\Factory_Freemius_134\Api
|
632 |
* @throws Exception
|
633 |
*/
|
634 |
private function get_api_site_scope(Site $site, $flush = false)
|
643 |
/**
|
644 |
* Get plugin public API scope.
|
645 |
*
|
646 |
+
* @return \WBCR\Factory_Freemius_134\Api
|
647 |
* @throws Exception
|
648 |
*/
|
649 |
private function get_api_plugin_scope()
|
libs/factory/freemius/includes/updates/class-freemius-repository.php
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
7 |
-
use
|
8 |
-
use WBCR\
|
9 |
|
10 |
if( !defined('ABSPATH') ) {
|
11 |
exit;
|
@@ -20,19 +20,19 @@ if( !defined('ABSPATH') ) {
|
|
20 |
class Freemius_Repository extends Repository {
|
21 |
|
22 |
/**
|
23 |
-
* @var \WBCR\
|
24 |
*/
|
25 |
private $premium;
|
26 |
|
27 |
/**
|
28 |
* Freemius constructor.
|
29 |
-
* @param
|
30 |
*
|
31 |
* @throws Exception
|
32 |
* @since 4.0.0
|
33 |
*
|
34 |
*/
|
35 |
-
public function __construct(
|
36 |
{
|
37 |
$this->plugin = $plugin;
|
38 |
$this->premium = $this->plugin->premium;
|
@@ -43,7 +43,7 @@ class Freemius_Repository extends Repository {
|
|
43 |
*/
|
44 |
public function init()
|
45 |
{
|
46 |
-
if( !$this->premium instanceof \WBCR\
|
47 |
throw new Exception("This repository type requires Freemius premium provider.");
|
48 |
}
|
49 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_134\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
7 |
+
use Wbcr_Factory446_Plugin;
|
8 |
+
use WBCR\Factory_446\Updates\Repository;
|
9 |
|
10 |
if( !defined('ABSPATH') ) {
|
11 |
exit;
|
20 |
class Freemius_Repository extends Repository {
|
21 |
|
22 |
/**
|
23 |
+
* @var \WBCR\Factory_Freemius_134\Premium\Provider
|
24 |
*/
|
25 |
private $premium;
|
26 |
|
27 |
/**
|
28 |
* Freemius constructor.
|
29 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
30 |
*
|
31 |
* @throws Exception
|
32 |
* @since 4.0.0
|
33 |
*
|
34 |
*/
|
35 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin, array $settings = [])
|
36 |
{
|
37 |
$this->plugin = $plugin;
|
38 |
$this->premium = $this->plugin->premium;
|
43 |
*/
|
44 |
public function init()
|
45 |
{
|
46 |
+
if( !$this->premium instanceof \WBCR\Factory_Freemius_134\Premium\Provider ) {
|
47 |
throw new Exception("This repository type requires Freemius premium provider.");
|
48 |
}
|
49 |
|
libs/factory/pages/boot.php
CHANGED
@@ -19,25 +19,26 @@ if( !is_admin() ) {
|
|
19 |
return;
|
20 |
}
|
21 |
|
22 |
-
if( defined('
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
-
define('
|
27 |
|
28 |
-
define('
|
29 |
|
30 |
-
define('
|
31 |
-
define('
|
32 |
|
33 |
-
if( !defined('FACTORY_FLAT_ADMIN') ) {
|
34 |
-
define('FACTORY_FLAT_ADMIN', true);
|
35 |
}
|
36 |
|
37 |
-
load_plugin_textdomain('
|
38 |
|
39 |
-
require(
|
40 |
-
require(
|
41 |
-
require(
|
42 |
-
require(
|
|
|
43 |
|
19 |
return;
|
20 |
}
|
21 |
|
22 |
+
if( defined('FACTORY_PAGES_445_LOADED') ) {
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
+
define('FACTORY_PAGES_445_LOADED', true);
|
27 |
|
28 |
+
define( 'FACTORY_PAGES_445_VERSION', '4.4.5' );
|
29 |
|
30 |
+
define('FACTORY_PAGES_445_DIR', dirname(__FILE__));
|
31 |
+
define('FACTORY_PAGES_445_URL', plugins_url(null, __FILE__));
|
32 |
|
33 |
+
if ( ! defined( 'FACTORY_FLAT_ADMIN' ) ) {
|
34 |
+
define( 'FACTORY_FLAT_ADMIN', true );
|
35 |
}
|
36 |
|
37 |
+
load_plugin_textdomain( 'wbcr_factory_pages_445', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
|
38 |
|
39 |
+
require( FACTORY_PAGES_445_DIR . '/pages.php' );
|
40 |
+
require( FACTORY_PAGES_445_DIR . '/includes/page.class.php' );
|
41 |
+
require( FACTORY_PAGES_445_DIR . '/includes/admin-page.class.php' );
|
42 |
+
require( FACTORY_PAGES_445_DIR . '/templates/impressive/impressive-page.class.php' );
|
43 |
+
require( FACTORY_PAGES_445_DIR . '/templates/impressive-lite/impressive-lite-page.class.php' );
|
44 |
|
libs/factory/pages/includes/admin-page.class.php
CHANGED
@@ -14,9 +14,9 @@ if( !defined('ABSPATH') ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
-
class
|
20 |
|
21 |
/**
|
22 |
* Visible page title.
|
@@ -209,7 +209,7 @@ if( !class_exists('Wbcr_FactoryPages444_AdminPage') ) {
|
|
209 |
*/
|
210 |
public $add_link_to_plugin_actions = false;
|
211 |
|
212 |
-
public function __construct(
|
213 |
{
|
214 |
parent::__construct($plugin);
|
215 |
$this->configure();
|
@@ -325,13 +325,13 @@ if( !class_exists('Wbcr_FactoryPages444_AdminPage') ) {
|
|
325 |
{
|
326 |
$result_id = $this->getResultId();
|
327 |
|
328 |
-
$this->hidden = apply_filters('
|
329 |
|
330 |
if( $this->hidden ) {
|
331 |
return;
|
332 |
}
|
333 |
|
334 |
-
$this->internal = apply_filters('
|
335 |
|
336 |
if( $this->internal ) {
|
337 |
$this->menu_target = null;
|
@@ -370,7 +370,7 @@ if( !class_exists('Wbcr_FactoryPages444_AdminPage') ) {
|
|
370 |
$this->assets($this->scripts, $this->styles);
|
371 |
|
372 |
if( !$this->scripts->isEmpty('bootstrap') || !$this->styles->isEmpty('bootstrap') ) {
|
373 |
-
add_action('
|
374 |
$this,
|
375 |
'actionAdminBootstrapScripts'
|
376 |
]);
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryPages445_AdminPage') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryPages445_AdminPage extends Wbcr_FactoryPages445_Page {
|
20 |
|
21 |
/**
|
22 |
* Visible page title.
|
209 |
*/
|
210 |
public $add_link_to_plugin_actions = false;
|
211 |
|
212 |
+
public function __construct(Wbcr_Factory446_Plugin $plugin)
|
213 |
{
|
214 |
parent::__construct($plugin);
|
215 |
$this->configure();
|
325 |
{
|
326 |
$result_id = $this->getResultId();
|
327 |
|
328 |
+
$this->hidden = apply_filters('wbcr_factory_446_page_is_hidden_' . $result_id, $this->hidden);
|
329 |
|
330 |
if( $this->hidden ) {
|
331 |
return;
|
332 |
}
|
333 |
|
334 |
+
$this->internal = apply_filters('wbcr_factory_446_page_is_internal_' . $result_id, $this->internal);
|
335 |
|
336 |
if( $this->internal ) {
|
337 |
$this->menu_target = null;
|
370 |
$this->assets($this->scripts, $this->styles);
|
371 |
|
372 |
if( !$this->scripts->isEmpty('bootstrap') || !$this->styles->isEmpty('bootstrap') ) {
|
373 |
+
add_action('wbcr_factory_446_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), [
|
374 |
$this,
|
375 |
'actionAdminBootstrapScripts'
|
376 |
]);
|
libs/factory/pages/includes/page.class.php
CHANGED
@@ -14,9 +14,9 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if ( ! class_exists( '
|
18 |
|
19 |
-
class
|
20 |
|
21 |
|
22 |
/**
|
@@ -30,7 +30,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages444_Page' ) ) {
|
|
30 |
* Чтобы не было конфликтов с другими плагинами, используйте префиксы.
|
31 |
*
|
32 |
* @since 1.0.0
|
33 |
-
* @see
|
34 |
*
|
35 |
* @var string
|
36 |
*/
|
@@ -39,7 +39,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages444_Page' ) ) {
|
|
39 |
/**
|
40 |
* Current Factory Plugin.
|
41 |
*
|
42 |
-
* @var
|
43 |
*/
|
44 |
public $plugin;
|
45 |
|
@@ -51,11 +51,11 @@ if ( ! class_exists( 'Wbcr_FactoryPages444_Page' ) ) {
|
|
51 |
//private $default_actions = array();
|
52 |
|
53 |
/**
|
54 |
-
* @param
|
55 |
*
|
56 |
* @throws Exception
|
57 |
*/
|
58 |
-
public function __construct(
|
59 |
$this->plugin = $plugin;
|
60 |
|
61 |
if ( $plugin ) {
|
@@ -111,7 +111,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages444_Page' ) ) {
|
|
111 |
|
112 |
if ( ! method_exists( $this, $actionFunction ) ) {
|
113 |
// todo: продумать и доработать выполнение произвольных и глобальных дейтсвия для всех страниц
|
114 |
-
/*$custom_actions = apply_filters('wbcr/
|
115 |
|
116 |
if(isset($custom_actions[$raw_action_name])) {
|
117 |
$custom_actions[$raw_action_name]();
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if ( ! class_exists( 'Wbcr_FactoryPages445_Page' ) ) {
|
18 |
|
19 |
+
class Wbcr_FactoryPages445_Page {
|
20 |
|
21 |
|
22 |
/**
|
30 |
* Чтобы не было конфликтов с другими плагинами, используйте префиксы.
|
31 |
*
|
32 |
* @since 1.0.0
|
33 |
+
* @see FactoryPages445_AdminPage
|
34 |
*
|
35 |
* @var string
|
36 |
*/
|
39 |
/**
|
40 |
* Current Factory Plugin.
|
41 |
*
|
42 |
+
* @var Wbcr_Factory446_Plugin
|
43 |
*/
|
44 |
public $plugin;
|
45 |
|
51 |
//private $default_actions = array();
|
52 |
|
53 |
/**
|
54 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
55 |
*
|
56 |
* @throws Exception
|
57 |
*/
|
58 |
+
public function __construct( Wbcr_Factory446_Plugin $plugin ) {
|
59 |
$this->plugin = $plugin;
|
60 |
|
61 |
if ( $plugin ) {
|
111 |
|
112 |
if ( ! method_exists( $this, $actionFunction ) ) {
|
113 |
// todo: продумать и доработать выполнение произвольных и глобальных дейтсвия для всех страниц
|
114 |
+
/*$custom_actions = apply_filters('wbcr/factory_pages_445/custom_actions', array(), $raw_action_name);
|
115 |
|
116 |
if(isset($custom_actions[$raw_action_name])) {
|
117 |
$custom_actions[$raw_action_name]();
|
libs/factory/pages/langs/{wbcr_factory_pages_444-fr_FR.mo → wbcr_factory_pages_445-fr_FR.mo}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_444-fr_FR.po → wbcr_factory_pages_445-fr_FR.po}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_444-ru_RU.mo → wbcr_factory_pages_445-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_444-ru_RU.po → wbcr_factory_pages_445-ru_RU.po}
RENAMED
File without changes
|
libs/factory/pages/pages.php
CHANGED
@@ -14,24 +14,24 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
add_action('admin_menu', '
|
18 |
-
add_action('network_admin_menu', '
|
19 |
|
20 |
-
if( !class_exists('
|
21 |
/**
|
22 |
* A base class to manage pages.
|
23 |
*
|
24 |
* @since 1.0.0
|
25 |
*/
|
26 |
-
class
|
27 |
|
28 |
/**
|
29 |
-
* @var
|
30 |
*/
|
31 |
private static $pages = array();
|
32 |
|
33 |
/**
|
34 |
-
* @param
|
35 |
* @param $class_name
|
36 |
*/
|
37 |
public static function register($plugin, $class_name)
|
@@ -59,7 +59,7 @@
|
|
59 |
}
|
60 |
}
|
61 |
|
62 |
-
public static function getPageUrl(
|
63 |
{
|
64 |
if( isset(self::$pages[$plugin->getPluginName()]) ) {
|
65 |
$pages = self::$pages[$plugin->getPluginName()];
|
@@ -75,7 +75,7 @@
|
|
75 |
}
|
76 |
|
77 |
/**
|
78 |
-
* @param
|
79 |
* @return array
|
80 |
*/
|
81 |
public static function getIds($plugin)
|
@@ -93,14 +93,14 @@
|
|
93 |
}
|
94 |
}
|
95 |
|
96 |
-
if( !function_exists('
|
97 |
/**
|
98 |
*
|
99 |
-
* @param
|
100 |
* @param string $page_id
|
101 |
* @return string
|
102 |
*/
|
103 |
-
function
|
104 |
{
|
105 |
return $page_id . '-' . $plugin->getPluginName();
|
106 |
}
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
add_action('admin_menu', 'Wbcr_FactoryPages445::actionAdminMenu');
|
18 |
+
add_action('network_admin_menu', 'Wbcr_FactoryPages445::actionAdminMenu');
|
19 |
|
20 |
+
if( !class_exists('Wbcr_FactoryPages445') ) {
|
21 |
/**
|
22 |
* A base class to manage pages.
|
23 |
*
|
24 |
* @since 1.0.0
|
25 |
*/
|
26 |
+
class Wbcr_FactoryPages445 {
|
27 |
|
28 |
/**
|
29 |
+
* @var Wbcr_FactoryPages445_Page[]
|
30 |
*/
|
31 |
private static $pages = array();
|
32 |
|
33 |
/**
|
34 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
35 |
* @param $class_name
|
36 |
*/
|
37 |
public static function register($plugin, $class_name)
|
59 |
}
|
60 |
}
|
61 |
|
62 |
+
public static function getPageUrl(Wbcr_Factory446_Plugin $plugin, $page_id, $args = array())
|
63 |
{
|
64 |
if( isset(self::$pages[$plugin->getPluginName()]) ) {
|
65 |
$pages = self::$pages[$plugin->getPluginName()];
|
75 |
}
|
76 |
|
77 |
/**
|
78 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
79 |
* @return array
|
80 |
*/
|
81 |
public static function getIds($plugin)
|
93 |
}
|
94 |
}
|
95 |
|
96 |
+
if( !function_exists('wbcr_factory_pages_445_get_page_id') ) {
|
97 |
/**
|
98 |
*
|
99 |
+
* @param Wbcr_Factory446_Plugin $plugin
|
100 |
* @param string $page_id
|
101 |
* @return string
|
102 |
*/
|
103 |
+
function wbcr_factory_pages_445_get_page_id($plugin, $page_id)
|
104 |
{
|
105 |
return $page_id . '-' . $plugin->getPluginName();
|
106 |
}
|
libs/factory/pages/templates/impressive-lite/assets/css/impressive-lite.page.template.css
ADDED
@@ -0,0 +1,552 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* General styles
|
3 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
4 |
+
* @copyright Alex Kovalev 23.08.2017
|
5 |
+
*/
|
6 |
+
#WBCR .updated,
|
7 |
+
#WBCR .notice,
|
8 |
+
#WBCR .error,
|
9 |
+
#WBCR .wdan-notices-compact-panel {
|
10 |
+
display: none !important;
|
11 |
+
}
|
12 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template {
|
13 |
+
position: relative;
|
14 |
+
/**
|
15 |
+
Content sections
|
16 |
+
*/
|
17 |
+
/**
|
18 |
+
Widget in the sidebar of the plugin
|
19 |
+
*/
|
20 |
+
}
|
21 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-color-grey {
|
22 |
+
color: #9a9a9a;
|
23 |
+
}
|
24 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-orange-color {
|
25 |
+
color: #ffc107;
|
26 |
+
}
|
27 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-light-orange-color {
|
28 |
+
color: #ffeb3b;
|
29 |
+
}
|
30 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .form-group {
|
31 |
+
padding: 0 20px;
|
32 |
+
}
|
33 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .form-group label {
|
34 |
+
font-weight: normal;
|
35 |
+
}
|
36 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .form-horizontal .control-label {
|
37 |
+
max-width: 300px;
|
38 |
+
}
|
39 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .factory-control-buttons {
|
40 |
+
text-align: right;
|
41 |
+
padding-right: 20px;
|
42 |
+
}
|
43 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .factory-from-control-list label span {
|
44 |
+
display: inline-block;
|
45 |
+
vertical-align: bottom;
|
46 |
+
}
|
47 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .factory-from-control-list label span input[type="checkbox"],
|
48 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .factory-from-control-list label span input[type="checkbox"]:focus {
|
49 |
+
outline: none;
|
50 |
+
}
|
51 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert {
|
52 |
+
font-weight: bold;
|
53 |
+
margin: 0 !important;
|
54 |
+
border: 0;
|
55 |
+
border-radius: 0;
|
56 |
+
padding: 15px;
|
57 |
+
}
|
58 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert + .wbcr-factory-page-group-header {
|
59 |
+
margin-top: 0 !important;
|
60 |
+
}
|
61 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert.alert-warning {
|
62 |
+
background: #fff3d0;
|
63 |
+
}
|
64 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert.alert-warning:nth-child(2n+1) {
|
65 |
+
background: #fffde9;
|
66 |
+
}
|
67 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert.alert-danger {
|
68 |
+
background: #de716d;
|
69 |
+
}
|
70 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert.alert-danger:nth-child(2n+1) {
|
71 |
+
background: #ec8c89;
|
72 |
+
}
|
73 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert.alert-success {
|
74 |
+
background: #d0ecc4;
|
75 |
+
}
|
76 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .alert.alert-success:nth-child(2n+1) {
|
77 |
+
background: #e0eadb;
|
78 |
+
}
|
79 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-header {
|
80 |
+
padding: 20px 20px 40px;
|
81 |
+
}
|
82 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-recomended-text {
|
83 |
+
display: block;
|
84 |
+
font-size: 11px;
|
85 |
+
font-weight: lighter;
|
86 |
+
color: #179347;
|
87 |
+
}
|
88 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-options,
|
89 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page {
|
90 |
+
position: relative;
|
91 |
+
background: #e6e6e6;
|
92 |
+
overflow: hidden;
|
93 |
+
}
|
94 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-options:after,
|
95 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page:after {
|
96 |
+
display: block;
|
97 |
+
content: '';
|
98 |
+
clear: both;
|
99 |
+
}
|
100 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-group-header {
|
101 |
+
background: #efefef;
|
102 |
+
padding: 20px 0 10px 20px;
|
103 |
+
margin: 30px 0;
|
104 |
+
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
105 |
+
}
|
106 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-group-header:first-child {
|
107 |
+
margin-top: 0;
|
108 |
+
}
|
109 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-group-header strong {
|
110 |
+
font-size: 15px;
|
111 |
+
}
|
112 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-group-header p {
|
113 |
+
color: #8c8888;
|
114 |
+
font-size: 12px;
|
115 |
+
}
|
116 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap {
|
117 |
+
margin-left: 230px;
|
118 |
+
padding: 80px 0 0 0;
|
119 |
+
vertical-align: top;
|
120 |
+
background: #fff;
|
121 |
+
}
|
122 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap .nav-tab-wrapper,
|
123 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap h2.nav-tab-wrapper,
|
124 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap h1.nav-tab-wrapper {
|
125 |
+
border: 0;
|
126 |
+
}
|
127 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap .nav-tab-active {
|
128 |
+
background: #efefef !important;
|
129 |
+
margin-bottom: -2px !important;
|
130 |
+
border-bottom: 1px solid #efefef !important;
|
131 |
+
}
|
132 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap .nav-tab:first-child {
|
133 |
+
margin: 0;
|
134 |
+
}
|
135 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap .nav-tab:hover {
|
136 |
+
background: #f7f7f7;
|
137 |
+
}
|
138 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap .nav-tab {
|
139 |
+
border: 2px solid #dedede;
|
140 |
+
border-bottom: 0;
|
141 |
+
box-shadow: -1px 0 0 rgba(0, 0, 0, 0.1);
|
142 |
+
}
|
143 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap .nav-tab:active,
|
144 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap .nav-tab:focus {
|
145 |
+
box-shadow: none;
|
146 |
+
outline: none;
|
147 |
+
}
|
148 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header {
|
149 |
+
position: absolute;
|
150 |
+
z-index: 13;
|
151 |
+
top: 0;
|
152 |
+
left: 0;
|
153 |
+
right: 0;
|
154 |
+
overflow: hidden;
|
155 |
+
background-color: #32373c;
|
156 |
+
color: #fff;
|
157 |
+
border-radius: 5px 5px 0 0;
|
158 |
+
}
|
159 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-header-logo {
|
160 |
+
float: left;
|
161 |
+
padding: 25px 0;
|
162 |
+
font-size: 20px;
|
163 |
+
line-height: 30px;
|
164 |
+
font-weight: 400;
|
165 |
+
text-align: center;
|
166 |
+
background-color: #464b50;
|
167 |
+
color: #ccc;
|
168 |
+
padding-left: 25px;
|
169 |
+
margin-right: 10px;
|
170 |
+
background: none;
|
171 |
+
}
|
172 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-header-title {
|
173 |
+
display: inline-block;
|
174 |
+
vertical-align: middle;
|
175 |
+
}
|
176 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-header-title h2 {
|
177 |
+
font-size: 18px;
|
178 |
+
line-height: 30px;
|
179 |
+
font-weight: 300;
|
180 |
+
margin-top: 26px;
|
181 |
+
padding: 0 !important;
|
182 |
+
overflow: hidden;
|
183 |
+
white-space: nowrap;
|
184 |
+
text-overflow: ellipsis;
|
185 |
+
color: #fff;
|
186 |
+
}
|
187 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-control {
|
188 |
+
position: relative;
|
189 |
+
float: right;
|
190 |
+
margin: 12px;
|
191 |
+
}
|
192 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-button {
|
193 |
+
display: inline-block;
|
194 |
+
vertical-align: top;
|
195 |
+
font-size: 13px;
|
196 |
+
font-weight: 600;
|
197 |
+
line-height: 20px;
|
198 |
+
text-transform: uppercase;
|
199 |
+
margin: 10px 0 0;
|
200 |
+
padding: 8px 30px;
|
201 |
+
cursor: pointer;
|
202 |
+
position: relative;
|
203 |
+
overflow: hidden;
|
204 |
+
border: none;
|
205 |
+
border-radius: 50px;
|
206 |
+
box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.08) inset;
|
207 |
+
background-color: #f1f1f1;
|
208 |
+
color: inherit;
|
209 |
+
transition: background-color 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
|
210 |
+
text-align: center;
|
211 |
+
outline: none;
|
212 |
+
text-decoration: none;
|
213 |
+
z-index: 3;
|
214 |
+
}
|
215 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save {
|
216 |
+
box-shadow: none;
|
217 |
+
min-width: 100px;
|
218 |
+
background-color: #8bc34a;
|
219 |
+
color: #fff;
|
220 |
+
}
|
221 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save:hover {
|
222 |
+
background: #9dbb7b;
|
223 |
+
color: #fff;
|
224 |
+
}
|
225 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save:active {
|
226 |
+
box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
|
227 |
+
}
|
228 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings {
|
229 |
+
box-shadow: none;
|
230 |
+
min-width: 200px;
|
231 |
+
background-color: #9e9e9e;
|
232 |
+
color: #fff;
|
233 |
+
}
|
234 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings:hover {
|
235 |
+
background: #797979;
|
236 |
+
color: #fff;
|
237 |
+
}
|
238 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings:active {
|
239 |
+
box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
|
240 |
+
}
|
241 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar {
|
242 |
+
float: left;
|
243 |
+
vertical-align: top;
|
244 |
+
width: 230px;
|
245 |
+
background: #e6e6e6;
|
246 |
+
}
|
247 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul {
|
248 |
+
padding: 0;
|
249 |
+
margin-bottom: 0;
|
250 |
+
margin-top: 80px;
|
251 |
+
}
|
252 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab {
|
253 |
+
display: block;
|
254 |
+
background: #efefef;
|
255 |
+
margin: 1px 0;
|
256 |
+
}
|
257 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link {
|
258 |
+
display: block;
|
259 |
+
width: 100%;
|
260 |
+
padding: 20px 20px;
|
261 |
+
font-size: 12px;
|
262 |
+
color: #585858;
|
263 |
+
text-decoration: none;
|
264 |
+
text-transform: uppercase;
|
265 |
+
text-align: left;
|
266 |
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
|
267 |
+
}
|
268 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .wbcr-factory-tab__title {
|
269 |
+
display: block;
|
270 |
+
font-weight: bold;
|
271 |
+
}
|
272 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .wbcr-factory-tab__short-description {
|
273 |
+
display: block;
|
274 |
+
font-size: 13px;
|
275 |
+
font-weight: normal;
|
276 |
+
text-transform: none;
|
277 |
+
color: #9a9a9a;
|
278 |
+
}
|
279 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .dashicons {
|
280 |
+
float: right;
|
281 |
+
color: #ccc;
|
282 |
+
}
|
283 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link::after {
|
284 |
+
clear: both;
|
285 |
+
}
|
286 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover {
|
287 |
+
background: #f7f6f6;
|
288 |
+
}
|
289 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover .dashicons {
|
290 |
+
color: #9a9a9a;
|
291 |
+
}
|
292 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link,
|
293 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
|
294 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover,
|
295 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
|
296 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:focus {
|
297 |
+
outline: 0 !important;
|
298 |
+
box-shadow: none !important;
|
299 |
+
}
|
300 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab {
|
301 |
+
background: #fff;
|
302 |
+
border-left: 5px solid #ff5722;
|
303 |
+
}
|
304 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab a {
|
305 |
+
color: #ff5722;
|
306 |
+
font-weight: bold;
|
307 |
+
}
|
308 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab a .dashicons {
|
309 |
+
color: #9a9a9a;
|
310 |
+
}
|
311 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu {
|
312 |
+
padding: 0;
|
313 |
+
margin: 0;
|
314 |
+
}
|
315 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li {
|
316 |
+
margin: 1px 0 0;
|
317 |
+
padding: 0;
|
318 |
+
}
|
319 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a {
|
320 |
+
display: block;
|
321 |
+
font-weight: normal;
|
322 |
+
color: #222;
|
323 |
+
border: 0;
|
324 |
+
margin: 0;
|
325 |
+
padding: 5px 5px 5px 30px;
|
326 |
+
background: #f5f5f5;
|
327 |
+
text-decoration: none;
|
328 |
+
outline: none;
|
329 |
+
}
|
330 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a:focus,
|
331 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a:link {
|
332 |
+
outline: 0 !important;
|
333 |
+
text-shadow: none !important;
|
334 |
+
}
|
335 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a .dashicons {
|
336 |
+
color: #9a9a9a;
|
337 |
+
font-size: 13px;
|
338 |
+
border: 0;
|
339 |
+
-moz-transform: scaleX(-1);
|
340 |
+
-webkit-transform: scaleX(-1);
|
341 |
+
-o-transform: scaleX(-1);
|
342 |
+
transform: scaleX(-1);
|
343 |
+
-ms-filter: fliph;
|
344 |
+
filter: fliph;
|
345 |
+
}
|
346 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a.wbcr-factory-tab-active {
|
347 |
+
background: #fff;
|
348 |
+
color: #ff5722;
|
349 |
+
font-weight: 600;
|
350 |
+
}
|
351 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a.wbcr-factory-tab-active .dashicons {
|
352 |
+
color: #ff5722;
|
353 |
+
}
|
354 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-content-section,
|
355 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-right-sidebar-section {
|
356 |
+
display: inline-block;
|
357 |
+
vertical-align: top;
|
358 |
+
}
|
359 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-content-section {
|
360 |
+
width: 74.6%;
|
361 |
+
}
|
362 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-content-section.wbcr-fullwidth {
|
363 |
+
width: 100%;
|
364 |
+
}
|
365 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-content-section .nav-tab-wrapper {
|
366 |
+
margin-top: 15px;
|
367 |
+
}
|
368 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-content-section .wbcr-factory-content {
|
369 |
+
background: #f7f7f7;
|
370 |
+
padding: 0 0 20px 0;
|
371 |
+
border: 1px solid #dad8d8;
|
372 |
+
box-shadow: -1px 0px 1px rgba(0, 0, 0, 0.1);
|
373 |
+
}
|
374 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-content-section .wbcr-factory-content > form {
|
375 |
+
padding-top: 0 !important;
|
376 |
+
}
|
377 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-right-sidebar-section {
|
378 |
+
width: 25%;
|
379 |
+
padding: 10px;
|
380 |
+
margin: 0 0 -20px;
|
381 |
+
background-color: #f9f9f9;
|
382 |
+
box-shadow: -1px 1px 5px rgba(0, 0, 0, 0.1);
|
383 |
+
}
|
384 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-sidebar-widget {
|
385 |
+
margin: 0 0 20px;
|
386 |
+
}
|
387 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget {
|
388 |
+
display: inline-block;
|
389 |
+
min-height: 230px;
|
390 |
+
width: 100%;
|
391 |
+
margin-top: 20px;
|
392 |
+
background-color: #fff;
|
393 |
+
padding: 20px 15px;
|
394 |
+
vertical-align: top;
|
395 |
+
}
|
396 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget.wbcr-factory-hide {
|
397 |
+
display: none;
|
398 |
+
}
|
399 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget.wbcr-factory-warning {
|
400 |
+
background: #fff4d0;
|
401 |
+
}
|
402 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget.wbcr-factory-danger {
|
403 |
+
background: #e2ffc0;
|
404 |
+
}
|
405 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget.wbcr-factory-success {
|
406 |
+
background: #ffebe9;
|
407 |
+
}
|
408 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget .wbcr-factory-hint-icon-simple {
|
409 |
+
display: inline-block;
|
410 |
+
width: 16px;
|
411 |
+
height: 16px;
|
412 |
+
line-height: 13px;
|
413 |
+
padding: 0;
|
414 |
+
font-size: 11px;
|
415 |
+
text-align: center;
|
416 |
+
color: #fff;
|
417 |
+
background: #E91E63;
|
418 |
+
border-radius: 3px;
|
419 |
+
}
|
420 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-grey {
|
421 |
+
background: #E91E63;
|
422 |
+
}
|
423 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-red {
|
424 |
+
background: #9e9e9e;
|
425 |
+
}
|
426 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-green {
|
427 |
+
background: #8bc34a;
|
428 |
+
}
|
429 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget .wbcr-factory-icon-5stars {
|
430 |
+
display: block;
|
431 |
+
width: 80px;
|
432 |
+
height: 17px;
|
433 |
+
background: url('../img/5-stars22.png') no-repeat;
|
434 |
+
vertical-align: middle;
|
435 |
+
margin-bottom: 5px;
|
436 |
+
}
|
437 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] {
|
438 |
+
display: block;
|
439 |
+
margin: 30px auto 0;
|
440 |
+
outline: none;
|
441 |
+
}
|
442 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] :focus,
|
443 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] :active {
|
444 |
+
box-shadow: none;
|
445 |
+
}
|
446 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form .wbcr-factory-donation-price {
|
447 |
+
font-size: 50px;
|
448 |
+
margin-top: 30px;
|
449 |
+
text-align: center;
|
450 |
+
font-weight: 600;
|
451 |
+
color: #8BC34A;
|
452 |
+
}
|
453 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box {
|
454 |
+
min-height: 240px;
|
455 |
+
margin-bottom: 20px;
|
456 |
+
text-align: center;
|
457 |
+
background: #fdfcf7;
|
458 |
+
padding: 30px;
|
459 |
+
border: 1px solid #f3f1e7;
|
460 |
+
}
|
461 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box .dashicons {
|
462 |
+
width: 50px;
|
463 |
+
height: 50px;
|
464 |
+
font-size: 50px;
|
465 |
+
color: #FFC107;
|
466 |
+
line-height: normal;
|
467 |
+
}
|
468 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box h3 {
|
469 |
+
color: #7b6111;
|
470 |
+
}
|
471 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box p {
|
472 |
+
color: #9e9e9e;
|
473 |
+
}
|
474 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-more_features .wbcr-factory-buttons-wrap {
|
475 |
+
margin-top: 20px;
|
476 |
+
text-align: center;
|
477 |
+
}
|
478 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-more_features .wbcr-factory-premium-button {
|
479 |
+
display: inline-block;
|
480 |
+
padding: 20px 60px;
|
481 |
+
background-color: #FFC107;
|
482 |
+
color: #866605;
|
483 |
+
text-decoration: none;
|
484 |
+
text-transform: uppercase;
|
485 |
+
font-weight: bold;
|
486 |
+
transition: background-color 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
|
487 |
+
}
|
488 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-more_features .wbcr-factory-premium-button:hover {
|
489 |
+
background-color: #ffce3a;
|
490 |
+
}
|
491 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template #wbcr-factory-confirm-dialog {
|
492 |
+
padding: 20px;
|
493 |
+
background: #ffffff;
|
494 |
+
}
|
495 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template #wbcr-factory-confirm-dialog .updated,
|
496 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template #wbcr-factory-confirm-dialog .alert {
|
497 |
+
display: none;
|
498 |
+
}
|
499 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template #wbcr-factory-confirm-dialog h2 {
|
500 |
+
font-size: 18px;
|
501 |
+
margin-top: 10px;
|
502 |
+
}
|
503 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template #wbcr-factory-confirm-dialog .wbcr-factory-confirm-description {
|
504 |
+
padding: 10px;
|
505 |
+
background: #ffedeb;
|
506 |
+
border: 1px solid #ffdfdc;
|
507 |
+
margin: 15px 0;
|
508 |
+
}
|
509 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template #wbcr-factory-confirm-dialog .wbcr-factory-confirm-hint {
|
510 |
+
margin-bottom: 15px;
|
511 |
+
color: #7b7b7b;
|
512 |
+
}
|
513 |
+
@media screen and (max-width: 1367px) {
|
514 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-content-section {
|
515 |
+
width: 69.6%;
|
516 |
+
}
|
517 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-right-sidebar-section {
|
518 |
+
width: 30%;
|
519 |
+
}
|
520 |
+
}
|
521 |
+
@media screen and (max-width: 1320px) {
|
522 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-content-section {
|
523 |
+
width: 100%;
|
524 |
+
}
|
525 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-right-sidebar-section {
|
526 |
+
display: none !important;
|
527 |
+
}
|
528 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-header-logo .dash {
|
529 |
+
display: none !important;
|
530 |
+
}
|
531 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-header-title {
|
532 |
+
display: none !important;
|
533 |
+
}
|
534 |
+
}
|
535 |
+
@media screen and (max-width: 950px) {
|
536 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar {
|
537 |
+
width: 70px;
|
538 |
+
}
|
539 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab a {
|
540 |
+
font-size: 0;
|
541 |
+
}
|
542 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__title {
|
543 |
+
font-size: 0;
|
544 |
+
}
|
545 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__short-description {
|
546 |
+
display: none !important;
|
547 |
+
}
|
548 |
+
#WBCR .wbcr-factory-pages-445-impressive-lite-page-template .wbcr-factory-page-inner-wrap {
|
549 |
+
margin-left: 70px;
|
550 |
+
}
|
551 |
+
}
|
552 |
+
/*# sourceMappingURL=impressive-lite.page.template.css.map */
|
libs/factory/pages/templates/impressive-lite/assets/css/impressive-lite.page.template.css.map
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
{"version":3,"sources":["impressive-lite.page.template.less"],"names":[],"mappings":";;;;;AAMA,KACE;AADF,KACY;AADZ,KACqB;AADrB,KAC6B;EACzB,wBAAA;;AAFJ,KAKE;EACE,kBAAA;;;;;;;;AANJ,KAKE,sDAGE;EACE,cAAA;;AATN,KAKE,sDAOE;EACE,cAAA;;AAbN,KAKE,sDAWE;EACE,cAAA;;AAjBN,KAKE,sDAeE;EACE,eAAA;;AArBN,KAKE,sDAeE,YAGE;EACE,mBAAA;;AAxBR,KAKE,sDAuBE,iBAAiB;EACf,gBAAA;;AA7BN,KAKE,sDA2BE;EACE,iBAAA;EACA,mBAAA;;AAlCN,KAKE,sDAgCE,2BACE,MACE;EACE,qBAAA;EACA,s
|