Version Description
(24.11.2021) = * Added: Page caching. It creates static HTML files of frontend pages and stores them on the servers disk. This allows the static HTML files to be delivered instead of generating pages on the fly, avoiding resource intensive backend processes from the WordPress core, plugins, and database. * Improved: Compatibility with premium plugin
Download this release
Release Info
Developer | alexkovalevv |
Plugin | Clearfy – WordPress optimization plugin and disable ultimate tweaker |
Version | 2.0.0 |
Comparing to | |
See all releases |
Code changes from version 1.9.6 to 2.0.0
- admin/activation.php +2 -2
- admin/ajax/configurate.php +1 -1
- admin/ajax/import-settings.php +2 -2
- admin/assets/css/general.css +3 -3
- admin/assets/js/general.js +17 -17
- admin/assets/js/license-manager.js +4 -4
- admin/boot.php +7 -7
- admin/includes/compatibility.php +70 -39
- admin/pages/class-page.php +9 -9
- admin/pages/class-pages-advanced.php +1 -1
- admin/pages/class-pages-clearfy-settings.php +1 -1
- admin/pages/class-pages-components-license.php +5 -5
- admin/pages/class-pages-components.php +2 -2
- 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-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 +54 -50
- components/assets-manager/admin/activation.php +2 -2
- components/assets-manager/admin/ajax/save-settings.php +1 -1
- components/assets-manager/admin/boot.php +2 -2
- components/assets-manager/admin/pages/class-pages-settings.php +4 -4
- 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 +2 -2
- 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 +1 -1
- components/cache/admin/activation.php +43 -0
- components/cache/admin/boot.php +81 -0
- components/cache/admin/index.php +2 -0
- {admin → components/cache/admin}/pages/class-pages-performance-cache.php +92 -21
- components/cache/cache.php +137 -0
- components/cache/clearfy.php +52 -0
- components/cache/includes/3rd-party/class-clearfy-plugin.php +113 -0
- components/cache/includes/3rd-party/index.php +2 -0
- components/cache/includes/cache.php +98 -0
- components/cache/includes/class-plugin.php +121 -0
- components/cache/includes/includes/cache.php +921 -0
- components/cache/includes/includes/helpers.php +1245 -0
- components/cache/includes/includes/index.html +1 -0
- components/cache/includes/includes/todo_cdn.php +462 -0
- components/cache/includes/index.php +2 -0
- 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/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/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 +9 -9
- 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/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 +7 -7
- 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/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-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 +15 -11
- 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 +1 -1
- includes/classes/class.configurate-security.php +1 -1
- includes/classes/class.configurate-seo.php +1 -1
- includes/helpers.php +1 -1
- libs/factory/adverts/boot.php +12 -12
- 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_127-ru_RU.mo → wbcr_factory_adverts_129-ru_RU.mo} +0 -0
- libs/factory/adverts/langs/{wbcr_factory_adverts_127-ru_RU.po → wbcr_factory_adverts_129-ru_RU.po} +0 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +2 -16
- libs/factory/bootstrap/assets/css-min/bootstrap.datepicker.min.css +2 -8
- libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/control.color.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +2 -2
- libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +2 -2
- libs/factory/bootstrap/assets/js-min/bootstrap.tooltip.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +2 -2
- libs/factory/bootstrap/assets/js-min/control.color.min.js +2 -2
- libs/factory/bootstrap/assets/js-min/control.dropdown.min.js +2 -2
- libs/factory/bootstrap/assets/js-min/control.list.min.js +2 -2
- libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js +2 -2
- libs/factory/bootstrap/assets/js-min/holder.more-link.min.js +2 -2
- libs/factory/bootstrap/assets/js-min/plugin.color.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/plugin.iris.min.js +2 -5
- libs/factory/bootstrap/boot.php +9 -9
- libs/factory/bootstrap/includes/functions.php +10 -10
- 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 +7 -7
- libs/factory/core/includes/class-factory-options.php +2 -2
- libs/factory/core/includes/class-factory-plugin-abstract.php +71 -71
- 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_449-ru_RU.mo → wbcr_factory_452-ru_RU.mo} +0 -0
- libs/factory/core/langs/{wbcr_factory_449-ru_RU.po → wbcr_factory_452-ru_RU.po} +0 -0
- libs/factory/forms/boot.php +95 -95
- libs/factory/forms/controls/checkbox.php +7 -7
- 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 +7 -7
- 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 +4 -4
- libs/factory/forms/controls/paddings-editor.php +3 -3
- libs/factory/forms/controls/pattern.php +9 -9
- libs/factory/forms/controls/radio-colors.php +3 -3
- libs/factory/forms/controls/radio.php +3 -3
- 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_446-ru_RU.mo → wbcr_factory_forms_449-ru_RU.mo} +0 -0
- libs/factory/forms/langs/{wbcr_factory_forms_446-ru_RU.po → wbcr_factory_forms_449-ru_RU.po} +0 -0
- libs/factory/forms/layouts/bootstrap-3/bootstrap-3.php +10 -10
- 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/logger/assets/js/logger.js +5 -5
- libs/factory/logger/boot.php +17 -17
- libs/factory/logger/includes/class-log-export.php +1 -1
- libs/factory/logger/includes/class-logger.php +3 -3
- libs/factory/logger/langs/{wbcr_factory_logger_114-ru_RU.mo → wbcr_factory_logger_117-ru_RU.mo} +0 -0
- libs/factory/logger/langs/{wbcr_factory_logger_114-ru_RU.po → wbcr_factory_logger_117-ru_RU.po} +0 -0
- libs/factory/logger/pages/class-logger-admin-page.php +22 -22
- libs/factory/logger/pages/class-logger-impressive-lite.php +20 -20
- libs/factory/logger/pages/class-logger-impressive-page.php +21 -21
- libs/factory/pages/boot.php +9 -9
- 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_448-fr_FR.mo → wbcr_factory_pages_451-fr_FR.mo} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_448-fr_FR.po → wbcr_factory_pages_451-fr_FR.po} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_448-ru_RU.mo → wbcr_factory_pages_451-ru_RU.mo} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_448-ru_RU.po → wbcr_factory_pages_451-ru_RU.po} +0 -0
- libs/factory/pages/pages.php +11 -11
- libs/factory/templates/assets/css/clearfy-base.css +25 -25
- libs/factory/templates/assets/css/components.css +24 -24
- libs/factory/templates/assets/css/libs/autocomplete.css +12 -12
- libs/factory/templates/assets/css/page-setup.css +102 -102
- libs/factory/templates/assets/js/clearfy-globals.js +26 -26
- libs/factory/templates/assets/js/clearfy-license-manager.js +4 -4
- libs/factory/templates/assets/js/clearfy-search-options.js +2 -2
- libs/factory/templates/assets/js/clearfy-widgets.js +4 -4
- libs/factory/templates/assets/js/libs/jquery.autocomplete.min.js +1 -1
- libs/factory/templates/boot.php +27 -27
- libs/factory/templates/includes/ajax-handlers.php +13 -13
- libs/factory/templates/includes/class-configurate.php +3 -3
- libs/factory/templates/includes/class-helpers.php +1 -1
- libs/factory/templates/includes/class-search-options.php +1 -1
- libs/factory/templates/pages/class-page-license.php +28 -29
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 Factory452_Activator
|
8 |
* @version 1.0
|
9 |
*/
|
10 |
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
+
class WCL_Activation extends Wbcr_Factory452_Activator {
|
17 |
|
18 |
/**
|
19 |
* Runs activation actions.
|
admin/ajax/configurate.php
CHANGED
@@ -57,7 +57,7 @@ function wbcr_clearfy_configurate_plugin()
|
|
57 |
}
|
58 |
|
59 |
if( !$flush_redirect ) {
|
60 |
-
WBCR\
|
61 |
}
|
62 |
|
63 |
do_action('wbcr_clearfy_configurated_quick_mode', $mode_name);
|
57 |
}
|
58 |
|
59 |
if( !$flush_redirect ) {
|
60 |
+
WBCR\Factory_Templates_105\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 = WBCR\
|
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 |
-
WBCR\
|
144 |
|
145 |
do_action('wbcr_clearfy_imported_settings');
|
146 |
|
62 |
}
|
63 |
|
64 |
if( is_array($option_value) || is_object($option_value) ) {
|
65 |
+
$option_value = WBCR\Factory_Templates_105\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 |
+
WBCR\Factory_Templates_105\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 {
|
@@ -675,7 +675,7 @@
|
|
675 |
#WBCR .wclearfy-quick-start-docs__column-inner-wrap ul li a:hover {
|
676 |
color: #979696;
|
677 |
}
|
678 |
-
#WBCR .wbcr-factory-page-quick_start #wbcr-factory-templates-
|
679 |
width: 100%;
|
680 |
padding: 15px;
|
681 |
border-radius: 4px;
|
33 |
//float: right;
|
34 |
}*/
|
35 |
}
|
36 |
+
#WBCR .wbcr-factory-pages-451-impressive-page-template .wbcr-factory-page-header {
|
37 |
height: 80px !important;
|
38 |
}
|
39 |
+
#WBCR .wbcr-factory-pages-451-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-logo span {
|
40 |
display: inline-block !important;
|
41 |
}
|
42 |
#WBCR .row {
|
675 |
#WBCR .wclearfy-quick-start-docs__column-inner-wrap ul li a:hover {
|
676 |
color: #979696;
|
677 |
}
|
678 |
+
#WBCR .wbcr-factory-page-quick_start #wbcr-factory-templates-105__autocomplete {
|
679 |
width: 100%;
|
680 |
padding: 15px;
|
681 |
border-radius: 4px;
|
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;
|
@@ -27,13 +27,13 @@
|
|
27 |
}
|
28 |
});*/
|
29 |
|
30 |
-
/*$.
|
31 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
32 |
-
if( !($('#WBCR').length && $.
|
33 |
return false;
|
34 |
}
|
35 |
if( response.data.need_rewrite_rules && !$('.wbcr-clr-need-rewrite-rules-message').length ) {
|
36 |
-
$.
|
37 |
}
|
38 |
});*/
|
39 |
},
|
@@ -107,13 +107,13 @@
|
|
107 |
* Хук выполняет проивольную функцию, после того как получен ajax ответ о том, что в
|
108 |
* результате конфигурации произошла ошибка Реализация системы фильтров и хуков в файле
|
109 |
* libs/clearfy/admin/assests/js/global.js Пример регистрации хука
|
110 |
-
* $.
|
111 |
* function(noticeId) {});
|
112 |
* @param {string} modeName - имя режима конфигурации
|
113 |
* @param {object} data
|
114 |
*/
|
115 |
|
116 |
-
$.
|
117 |
modeName,
|
118 |
data
|
119 |
]);
|
@@ -130,12 +130,12 @@
|
|
130 |
* Хук выполняет проивольную функцию, после того как получен ajax ответ об успешном выполнении
|
131 |
* конфигурации Реализация системы фильтров и хуков в файле
|
132 |
* libs/clearfy/admin/assests/js/global.js Пример регистрации хука
|
133 |
-
* $.
|
134 |
* {});
|
135 |
* @param {string} modeName - имя режима конфигурации
|
136 |
* @param {object} data
|
137 |
*/
|
138 |
-
$.
|
139 |
|
140 |
if( modeName !== 'reset' ) {
|
141 |
switcher.addClass('wbcr-clearfy-active');
|
@@ -203,12 +203,12 @@
|
|
203 |
$this = $(this);
|
204 |
|
205 |
if( !settings ) {
|
206 |
-
$.
|
207 |
return false;
|
208 |
}
|
209 |
|
210 |
if( void 0 === wbcr_clearfy_ajax || !wbcr_clearfy_ajax.import_options_nonce ) {
|
211 |
-
$.
|
212 |
return false;
|
213 |
}
|
214 |
|
@@ -223,7 +223,7 @@
|
|
223 |
|
224 |
if( response.data.update_notice ) {
|
225 |
if( !$('.wbcr-clr-update-package').length ) {
|
226 |
-
$.
|
227 |
}
|
228 |
} else {
|
229 |
if( $('.wbcr-clr-update-package').length ) {
|
@@ -260,15 +260,15 @@
|
|
260 |
console.log(data);
|
261 |
|
262 |
if( data ) {
|
263 |
-
noticeId = $.
|
264 |
} else {
|
265 |
if( void 0 !== wbcr_clearfy_ajax ) {
|
266 |
-
noticeId = $.
|
267 |
}
|
268 |
}
|
269 |
|
270 |
setTimeout(function() {
|
271 |
-
$.
|
272 |
}, 5000);
|
273 |
return;
|
274 |
}
|
@@ -277,10 +277,10 @@
|
|
277 |
|
278 |
if( !request_data.flush_redirect ) {
|
279 |
if( void 0 !== wbcr_clearfy_ajax ) {
|
280 |
-
noticeId = $.
|
281 |
|
282 |
setTimeout(function() {
|
283 |
-
$.
|
284 |
}, 5000);
|
285 |
}
|
286 |
return;
|
@@ -295,7 +295,7 @@
|
|
295 |
console.log(xhr.responseText);
|
296 |
console.log(thrownError);
|
297 |
|
298 |
-
var noticeId = $.
|
299 |
}
|
300 |
});
|
301 |
}
|
13 |
this.qickStartAssistent();
|
14 |
this.importOptions();
|
15 |
|
16 |
+
/*$.wfactory_452.hooks.add('core/components/pre_activate', function(button) {
|
17 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
18 |
if( !$('#WBCR').length ) {
|
19 |
return false;
|
27 |
}
|
28 |
});*/
|
29 |
|
30 |
+
/*$.wfactory_452.hooks.add('core/components/updated', function(button, data, response) {
|
31 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
32 |
+
if( !($('#WBCR').length && $.wbcr_factory_templates_105) ) {
|
33 |
return false;
|
34 |
}
|
35 |
if( response.data.need_rewrite_rules && !$('.wbcr-clr-need-rewrite-rules-message').length ) {
|
36 |
+
$.wbcr_factory_templates_105.app.showNotice(response.data.need_rewrite_rules, 'warning');
|
37 |
}
|
38 |
});*/
|
39 |
},
|
107 |
* Хук выполняет проивольную функцию, после того как получен ajax ответ о том, что в
|
108 |
* результате конфигурации произошла ошибка Реализация системы фильтров и хуков в файле
|
109 |
* libs/clearfy/admin/assests/js/global.js Пример регистрации хука
|
110 |
+
* $.wbcr_factory_templates_105.hooks.add('wbcr/factory_templates_105/updated',
|
111 |
* function(noticeId) {});
|
112 |
* @param {string} modeName - имя режима конфигурации
|
113 |
* @param {object} data
|
114 |
*/
|
115 |
|
116 |
+
$.wbcr_factory_templates_105.hooks.run('clearfy/quick_start/configurated_error', [
|
117 |
modeName,
|
118 |
data
|
119 |
]);
|
130 |
* Хук выполняет проивольную функцию, после того как получен ajax ответ об успешном выполнении
|
131 |
* конфигурации Реализация системы фильтров и хуков в файле
|
132 |
* libs/clearfy/admin/assests/js/global.js Пример регистрации хука
|
133 |
+
* $.wbcr_factory_templates_105.hooks.add('wbcr/factory_templates_105/updated', function(noticeId)
|
134 |
* {});
|
135 |
* @param {string} modeName - имя режима конфигурации
|
136 |
* @param {object} data
|
137 |
*/
|
138 |
+
$.wbcr_factory_templates_105.hooks.run('clearfy/quick_start/configurated', [modeName, data]);
|
139 |
|
140 |
if( modeName !== 'reset' ) {
|
141 |
switcher.addClass('wbcr-clearfy-active');
|
203 |
$this = $(this);
|
204 |
|
205 |
if( !settings ) {
|
206 |
+
$.wbcr_factory_templates_105.app.showNotice('Import options is empty!', 'danger');
|
207 |
return false;
|
208 |
}
|
209 |
|
210 |
if( void 0 === wbcr_clearfy_ajax || !wbcr_clearfy_ajax.import_options_nonce ) {
|
211 |
+
$.wbcr_factory_templates_105.app.showNotice('Unknown Javascript error, most likely the wbcr_clearfy_ajax variable does not exist!', 'danger');
|
212 |
return false;
|
213 |
}
|
214 |
|
223 |
|
224 |
if( response.data.update_notice ) {
|
225 |
if( !$('.wbcr-clr-update-package').length ) {
|
226 |
+
$.wbcr_factory_templates_105.app.showNotice(response.data.update_notice);
|
227 |
}
|
228 |
} else {
|
229 |
if( $('.wbcr-clr-update-package').length ) {
|
260 |
console.log(data);
|
261 |
|
262 |
if( data ) {
|
263 |
+
noticeId = $.wbcr_factory_templates_105.app.showNotice(data.error_message, 'danger');
|
264 |
} else {
|
265 |
if( void 0 !== wbcr_clearfy_ajax ) {
|
266 |
+
noticeId = $.wbcr_factory_templates_105.app.showNotice(wbcr_clearfy_ajax.i18n.unknown_error, 'danger');
|
267 |
}
|
268 |
}
|
269 |
|
270 |
setTimeout(function() {
|
271 |
+
$.wbcr_factory_templates_105.app.hideNotice(noticeId);
|
272 |
}, 5000);
|
273 |
return;
|
274 |
}
|
277 |
|
278 |
if( !request_data.flush_redirect ) {
|
279 |
if( void 0 !== wbcr_clearfy_ajax ) {
|
280 |
+
noticeId = $.wbcr_factory_templates_105.app.showNotice(wbcr_clearfy_ajax.i18n.success_update_settings, 'success');
|
281 |
|
282 |
setTimeout(function() {
|
283 |
+
$.wbcr_factory_templates_105.app.hideNotice(noticeId);
|
284 |
}, 5000);
|
285 |
}
|
286 |
return;
|
295 |
console.log(xhr.responseText);
|
296 |
console.log(thrownError);
|
297 |
|
298 |
+
var noticeId = $.wbcr_factory_templates_105.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
|
299 |
}
|
300 |
});
|
301 |
}
|
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_templates_105.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_templates_105.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_templates_105.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_templates_105.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,7 +127,7 @@ 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-templates-
|
131 |
], WCL_Plugin::app()->getPluginVersion());
|
132 |
});*/
|
133 |
|
@@ -147,7 +147,7 @@ add_filter('flush_rewrite_rules_hard', 'wbcr_clearfy_flush_rewrite_rules');
|
|
147 |
* Обновить постоынные ссылки, после выполнения быстрых настроек
|
148 |
*
|
149 |
* @param WHM_Plugin $plugin
|
150 |
-
* @param
|
151 |
*/
|
152 |
function wbcr_clearfy_after_form_save($plugin, $obj)
|
153 |
{
|
@@ -170,7 +170,7 @@ add_action('wbcr/factory/pages/impressive/after_form_save', 'wbcr_clearfy_after_
|
|
170 |
*
|
171 |
* @param array $widgets
|
172 |
* @param string $position
|
173 |
-
* @param
|
174 |
*/
|
175 |
|
176 |
add_filter('wbcr/factory/pages/impressive/widgets', function ($widgets, $position, $plugin) {
|
21 |
* Уведомление будет показано на всех страницах Clearfy и его компонентах.
|
22 |
*
|
23 |
* @param WCL_Plugin $plugin
|
24 |
+
* @param Wbcr_FactoryPages451_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_FactoryPages451') ) {
|
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_Factory452_Plugin $plugin
|
88 |
+
* @param Wbcr_FactoryPages451_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-templates-105-global'
|
131 |
], WCL_Plugin::app()->getPluginVersion());
|
132 |
});*/
|
133 |
|
147 |
* Обновить постоынные ссылки, после выполнения быстрых настроек
|
148 |
*
|
149 |
* @param WHM_Plugin $plugin
|
150 |
+
* @param Wbcr_FactoryPages451_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_Factory452_Plugin $plugin
|
174 |
*/
|
175 |
|
176 |
add_filter('wbcr/factory/pages/impressive/widgets', function ($widgets, $position, $plugin) {
|
admin/includes/compatibility.php
CHANGED
@@ -7,90 +7,121 @@
|
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
|
10 |
-
add_action(
|
11 |
-
if
|
12 |
-
if
|
13 |
return;
|
14 |
}
|
15 |
|
16 |
-
$plugin = get_plugin_data(
|
17 |
|
18 |
-
if
|
19 |
-
$notice = __(
|
20 |
/**
|
21 |
* Выводит уведомление внутри интерфейса Clearfy, на всех страницах плагина.
|
22 |
* Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
|
23 |
* иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
|
24 |
*
|
25 |
-
* @param
|
26 |
-
* @param
|
27 |
*
|
28 |
* @return bool
|
29 |
*/
|
30 |
-
add_action(
|
31 |
-
$obj->printErrorNotice(
|
32 |
-
}, 10, 2
|
33 |
|
34 |
// Специально для преидущей версии фреймворка (407)
|
35 |
-
add_action(
|
36 |
-
$obj->printErrorNotice(
|
37 |
-
}, 10, 2
|
38 |
}
|
39 |
}
|
40 |
|
41 |
-
if
|
42 |
-
if
|
43 |
return;
|
44 |
}
|
45 |
|
46 |
-
$plugin = get_plugin_data(
|
47 |
|
48 |
-
if
|
49 |
-
$notice = __(
|
50 |
/**
|
51 |
* Выводит уведомление внутри интерфейса Clearfy, на всех страницах плагина.
|
52 |
* Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
|
53 |
* иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
|
54 |
*
|
55 |
-
* @param
|
56 |
-
* @param
|
57 |
*
|
58 |
* @return bool
|
59 |
*/
|
60 |
-
add_action(
|
61 |
-
$obj->printErrorNotice(
|
62 |
-
}, 10, 2
|
63 |
|
64 |
// Специально для преидущей версии фреймворка (407)
|
65 |
-
add_action(
|
66 |
-
$obj->printErrorNotice(
|
67 |
-
}, 10, 2
|
68 |
}
|
69 |
}
|
70 |
|
71 |
-
if
|
72 |
-
add_action(
|
73 |
-
if
|
74 |
return $notices;
|
75 |
}
|
76 |
|
77 |
-
if
|
78 |
return $notices;
|
79 |
}
|
80 |
|
81 |
$nonce_action = 'upgrade-plugin_' . WCLRP_PLUGIN_BASE;
|
82 |
-
$upgrade_url
|
83 |
-
$notice_text
|
84 |
|
85 |
$notices[] = [
|
86 |
-
'id'
|
87 |
-
'type'
|
88 |
-
'dismissible'
|
89 |
'dismiss_expires' => 0,
|
90 |
-
'text'
|
91 |
];
|
92 |
|
93 |
return $notices;
|
94 |
-
}, 10, 2
|
95 |
}
|
96 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
|
10 |
+
add_action('plugins_loaded', function () {
|
11 |
+
if( defined('WIO_PLUGIN_ACTIVE') ) {
|
12 |
+
if( !file_exists(WP_PLUGIN_DIR . '/robin-image-optimizer/robin-image-optimizer.php') ) {
|
13 |
return;
|
14 |
}
|
15 |
|
16 |
+
$plugin = get_plugin_data(WP_PLUGIN_DIR . '/robin-image-optimizer/robin-image-optimizer.php');
|
17 |
|
18 |
+
if( isset($plugin['Version']) && version_compare($plugin['Version'], '1.0.8', '<=') ) {
|
19 |
+
$notice = __('Please update the plugin Robin image Optimizer to the latest version, as it may not work correctly with the new version of Clearfy!', 'clearfy');
|
20 |
/**
|
21 |
* Выводит уведомление внутри интерфейса Clearfy, на всех страницах плагина.
|
22 |
* Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
|
23 |
* иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
|
24 |
*
|
25 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
26 |
+
* @param Wbcr_FactoryPages451_ImpressiveThemplate $obj
|
27 |
*
|
28 |
* @return bool
|
29 |
*/
|
30 |
+
add_action('wbcr/factory/pages/impressive/print_all_notices', function ($plugin, $obj) use ($notice) {
|
31 |
+
$obj->printErrorNotice($notice);
|
32 |
+
}, 10, 2);
|
33 |
|
34 |
// Специально для преидущей версии фреймворка (407)
|
35 |
+
add_action('wbcr_factory_pages_407_imppage_print_all_notices', function ($plugin, $obj) use ($notice) {
|
36 |
+
$obj->printErrorNotice($notice);
|
37 |
+
}, 10, 2);
|
38 |
}
|
39 |
}
|
40 |
|
41 |
+
if( defined('WHLP_PLUGIN_ACTIVE') ) {
|
42 |
+
if( !file_exists(WP_PLUGIN_DIR . '/hide-login-page/hide-login-page.php') ) {
|
43 |
return;
|
44 |
}
|
45 |
|
46 |
+
$plugin = get_plugin_data(WP_PLUGIN_DIR . '/hide-login-page/hide-login-page.php');
|
47 |
|
48 |
+
if( isset($plugin['Version']) && version_compare($plugin['Version'], '1.0.5', '<=') ) {
|
49 |
+
$notice = __('Please update the plugin Hide login page to the latest version, as it may not work correctly with the new version of Clearfy!', 'clearfy');
|
50 |
/**
|
51 |
* Выводит уведомление внутри интерфейса Clearfy, на всех страницах плагина.
|
52 |
* Это необходимо, чтоб напомнить пользователю обновить конфигурацию компонентов плагина,
|
53 |
* иначе вновь активированные компоненты не будет зайдествованы в работе плагина.
|
54 |
*
|
55 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
56 |
+
* @param Wbcr_FactoryPages451_ImpressiveThemplate $obj
|
57 |
*
|
58 |
* @return bool
|
59 |
*/
|
60 |
+
add_action('wbcr/factory/pages/impressive/print_all_notices', function ($plugin, $obj) use ($notice) {
|
61 |
+
$obj->printErrorNotice($notice);
|
62 |
+
}, 10, 2);
|
63 |
|
64 |
// Специально для преидущей версии фреймворка (407)
|
65 |
+
add_action('wbcr_factory_pages_407_imppage_print_all_notices', function ($plugin, $obj) use ($notice) {
|
66 |
+
$obj->printErrorNotice($notice);
|
67 |
+
}, 10, 2);
|
68 |
}
|
69 |
}
|
70 |
|
71 |
+
if( defined('WCLRP_PLUGIN_ACTIVE') ) {
|
72 |
+
add_action('wbcr/factory/admin_notices', function ($notices, $plugin_name) {
|
73 |
+
if( $plugin_name != WGZ_Plugin::app()->getPluginName() ) {
|
74 |
return $notices;
|
75 |
}
|
76 |
|
77 |
+
if( !current_user_can('update_plugins') ) {
|
78 |
return $notices;
|
79 |
}
|
80 |
|
81 |
$nonce_action = 'upgrade-plugin_' . WCLRP_PLUGIN_BASE;
|
82 |
+
$upgrade_url = wp_nonce_url(self_admin_url("update.php?action=upgrade-plugin&plugin=" . urlencode(WCLRP_PLUGIN_BASE)), $nonce_action);
|
83 |
+
$notice_text = sprintf(__('You must <a href="%s">upgrade the premium version</a> of the Clearfy plugin to version 1.1.2, since the new Clearfy release isn\'t compatible with the previous version of the premium plugin.', 'clearfy'), $upgrade_url);
|
84 |
|
85 |
$notices[] = [
|
86 |
+
'id' => 'clearfy-package_-compatibility-113',
|
87 |
+
'type' => 'error',
|
88 |
+
'dismissible' => false,
|
89 |
'dismiss_expires' => 0,
|
90 |
+
'text' => '<p><b>' . __('Clearfy', 'clearfy') . ': </b>' . $notice_text . '</p>'
|
91 |
];
|
92 |
|
93 |
return $notices;
|
94 |
+
}, 10, 2);
|
95 |
}
|
96 |
+
|
97 |
+
if( defined('WCLP_PLUGIN_ACTIVE') ) {
|
98 |
+
add_action('wbcr/factory/admin_notices', function ($notices, $plugin_name) {
|
99 |
+
if( $plugin_name != WCL_Plugin::app()->getPluginName() ) {
|
100 |
+
return $notices;
|
101 |
+
}
|
102 |
+
|
103 |
+
if( !current_user_can('update_plugins') ) {
|
104 |
+
return $notices;
|
105 |
+
}
|
106 |
+
|
107 |
+
if( WCL_Plugin::app()->premium->is_install_package() ) {
|
108 |
+
$package = $this->premium->get_package_data();
|
109 |
+
if( version_compare($package['version'], "1.4.3", "<") ) {
|
110 |
+
$nonce_action = 'upgrade-plugin_' . WCLP_PLUGIN_BASE;
|
111 |
+
$upgrade_url = wp_nonce_url(self_admin_url("update.php?action=upgrade-plugin&plugin=" . urlencode(WCLP_PLUGIN_BASE)), $nonce_action);
|
112 |
+
$notice_text = sprintf(__('You must <a href="%s">upgrade the premium version</a> of the Clearfy plugin to version 1.4.2, since the new Clearfy release isn\'t compatible with the previous version of the premium plugin.', 'clearfy'), $upgrade_url);
|
113 |
+
|
114 |
+
$notices[] = [
|
115 |
+
'id' => 'clearfy-package_-compatibility-143',
|
116 |
+
'type' => 'error',
|
117 |
+
'dismissible' => false,
|
118 |
+
'dismiss_expires' => 0,
|
119 |
+
'text' => '<p><b>' . __('Clearfy', 'clearfy') . ': </b>' . $notice_text . '</p>'
|
120 |
+
];
|
121 |
+
}
|
122 |
+
}
|
123 |
+
|
124 |
+
return $notices;
|
125 |
+
}, 10, 2);
|
126 |
+
}
|
127 |
+
}, 30);
|
admin/pages/class-page.php
CHANGED
@@ -7,14 +7,14 @@
|
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
|
10 |
-
class WCL_Page extends WBCR\
|
11 |
|
12 |
/**
|
13 |
* Requests assets (js and css) for the page.
|
14 |
*
|
15 |
* @return void
|
16 |
* @since 1.0.0
|
17 |
-
* @see
|
18 |
*
|
19 |
*/
|
20 |
public function assets($scripts, $styles)
|
@@ -58,15 +58,15 @@ class WCL_Page extends WBCR\Factory_Templates_101\Pages\PageBase {
|
|
58 |
$license_page_url = $this->getBaseUrl('clearfy_license');
|
59 |
$upgrade_url = $this->plugin->get_support()->get_pricing_url(true, 'multisite_save_settings');
|
60 |
|
61 |
-
$html = '<div class="wbcr-factory-templates-
|
62 |
$html .= '<div class="wbcr-factory-inner-contanier">';
|
63 |
-
$html .= '<h3>' . __('Upgrade to Clearfy Business', '
|
64 |
-
$html .= '<p>' . __('Oops... Sorry for the inconvenience caused!', '
|
65 |
-
$html .= '<p>' . __('Complete multisite support is available in Clearfy Business and Clearfy Business Revolution packages only!', '
|
66 |
-
$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!', '
|
67 |
$html .= '<p style="margin-top:20px">';
|
68 |
-
$html .= '<a href="' . $license_page_url . '" class="wbcr-factory-activate-premium" rel="noopener">' . __('Activate license ', '
|
69 |
-
$html .= '<a href="' . $upgrade_url . '" class="wbcr-factory-purchase-premium" target="_blank" rel="noopener">' . __('Upgrade to Clearfy Business', '
|
70 |
$html .= '</p>';
|
71 |
$html .= '</div>';
|
72 |
$html .= '</div>';
|
7 |
* @version 1.0
|
8 |
*/
|
9 |
|
10 |
+
class WCL_Page extends WBCR\Factory_Templates_105\Pages\PageBase {
|
11 |
|
12 |
/**
|
13 |
* Requests assets (js and css) for the page.
|
14 |
*
|
15 |
* @return void
|
16 |
* @since 1.0.0
|
17 |
+
* @see FactoryPages451_AdminPage
|
18 |
*
|
19 |
*/
|
20 |
public function assets($scripts, $styles)
|
58 |
$license_page_url = $this->getBaseUrl('clearfy_license');
|
59 |
$upgrade_url = $this->plugin->get_support()->get_pricing_url(true, 'multisite_save_settings');
|
60 |
|
61 |
+
$html = '<div class="wbcr-factory-templates-105-multisite-suggetion">';
|
62 |
$html .= '<div class="wbcr-factory-inner-contanier">';
|
63 |
+
$html .= '<h3>' . __('Upgrade to Clearfy Business', 'wbcr_factory_templates_105') . '</h3>';
|
64 |
+
$html .= '<p>' . __('Oops... Sorry for the inconvenience caused!', 'wbcr_factory_templates_105') . '</p>';
|
65 |
+
$html .= '<p>' . __('Complete multisite support is available in Clearfy Business and Clearfy Business Revolution packages only!', 'wbcr_factory_templates_105') . '</p>';
|
66 |
+
$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_templates_105') . '</p>';
|
67 |
$html .= '<p style="margin-top:20px">';
|
68 |
+
$html .= '<a href="' . $license_page_url . '" class="wbcr-factory-activate-premium" rel="noopener">' . __('Activate license ', 'wbcr_factory_templates_105') . '</a> ';
|
69 |
+
$html .= '<a href="' . $upgrade_url . '" class="wbcr-factory-purchase-premium" target="_blank" rel="noopener">' . __('Upgrade to Clearfy Business', 'wbcr_factory_templates_105') . '</a>';
|
70 |
$html .= '</p>';
|
71 |
$html .= '</div>';
|
72 |
$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 FactoryPages451_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 |
*/
|
19 |
* Mainly used to navigate between pages.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
+
* @see FactoryPages451_AdminPage
|
23 |
*
|
24 |
* @var string
|
25 |
*/
|
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_Factory452_Plugin $plugin
|
59 |
*
|
60 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
61 |
*
|
62 |
*/
|
63 |
+
public function __construct(Wbcr_Factory452_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 FactoryPages451_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_Factory452_StyleList $styles
|
88 |
+
* @param Wbcr_Factory452_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 |
{
|
@@ -25,7 +25,7 @@ class WCL_ComponentsPage extends \WBCR\Factory_Templates_101\Pages\Components {
|
|
25 |
'name' => 'cache',
|
26 |
'title' => __('Cache', 'clearfy'),
|
27 |
'type' => 'internal',
|
28 |
-
'build' => '
|
29 |
'disable_button' => is_plugin_active('wp-rocket/wp-rocket.php'),
|
30 |
'disable_button_reason' => __('You cannot activate the component while the wp rocket plugin is active!', 'clearfy'),
|
31 |
'url' => 'https://clearfy.pro/cache/',
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
+
class WCL_ComponentsPage extends \WBCR\Factory_Templates_105\Pages\Components {
|
17 |
|
18 |
public function get_components()
|
19 |
{
|
25 |
'name' => 'cache',
|
26 |
'title' => __('Cache', 'clearfy'),
|
27 |
'type' => 'internal',
|
28 |
+
'build' => 'freemium',
|
29 |
'disable_button' => is_plugin_active('wp-rocket/wp-rocket.php'),
|
30 |
'disable_button_reason' => __('You cannot activate the component while the wp rocket plugin is active!', 'clearfy'),
|
31 |
'url' => 'https://clearfy.pro/cache/',
|
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-templates-
|
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 FactoryPages451_AdminPage
|
23 |
*
|
24 |
* @var string
|
25 |
*/
|
83 |
?>
|
84 |
<script>
|
85 |
jQuery(document).ready(function($) {
|
86 |
+
$.wfactory_452.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-templates-105-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 FactoryPages451_AdminPage
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
* @var string
|
132 |
//'cssClass' => 'postbox'
|
133 |
);
|
134 |
|
135 |
+
return wbcr_factory_452_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-templates-
|
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 FactoryPages451_AdminPage
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
* @var string
|
78 |
?>
|
79 |
<script>
|
80 |
jQuery(document).ready(function($) {
|
81 |
+
$.wfactory_452.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-templates-105-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-templates-
|
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 FactoryPages451_AdminPage
|
23 |
*
|
24 |
* @var string
|
25 |
*/
|
79 |
?>
|
80 |
<script>
|
81 |
jQuery(document).ready(function($) {
|
82 |
+
$.wfactory_452.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-templates-105-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 WBCR\
|
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\Factory_Templates_105\Pages\License {
|
17 |
|
18 |
/**
|
19 |
* {@inheritdoc}
|
36 |
/**
|
37 |
* WCL_LicensePage constructor.
|
38 |
*
|
39 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
40 |
*
|
41 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
42 |
*
|
43 |
*/
|
44 |
+
public function __construct( Wbcr_Factory452_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-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 FactoryPages451_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
|
@@ -89,7 +89,7 @@ class WCL_QuickStartPage extends WCL_Page {
|
|
89 |
*
|
90 |
* @return void
|
91 |
* @since 1.0.0
|
92 |
-
* @see
|
93 |
*
|
94 |
*/
|
95 |
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 FactoryPages451_AdminPage
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
* @var string
|
89 |
*
|
90 |
* @return void
|
91 |
* @since 1.0.0
|
92 |
+
* @see FactoryPages451_AdminPage
|
93 |
*
|
94 |
*/
|
95 |
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 FactoryPages451_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 FactoryPages451_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 FactoryPages451_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\Factory_Templates_101\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\Factory_Templates_105\Pages\Setup {
|
15 |
|
16 |
/**
|
17 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
18 |
*/
|
19 |
+
public function __construct(\Wbcr_Factory452_Plugin $plugin)
|
20 |
{
|
21 |
parent::__construct($plugin);
|
22 |
|
53 |
*
|
54 |
* @return void
|
55 |
* @since 1.0.0
|
56 |
+
* @see FactoryPages451_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\Factory_Templates_101\Pages\Step_Custom
|
|
24 |
{
|
25 |
$pricing_page_url = $this->plugin->get_support()->get_pricing_url(true, 'setup_wizard');
|
26 |
?>
|
27 |
-
<div class="w-factory-templates-
|
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\Factory_Templates_105\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-templates-105-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\Factory_Templates_101\Pages\Step_Custom {
|
|
21 |
public function html()
|
22 |
{
|
23 |
?>
|
24 |
-
<div class="w-factory-templates-
|
25 |
-
<div class="w-factory-templates-
|
26 |
-
<p class="w-factory-templates-
|
27 |
-
<h1 class="w-factory-templates-
|
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\Factory_Templates_105\Pages\Step_Custom {
|
12 |
|
13 |
protected $id = 'step0';
|
14 |
protected $next_id = 'step1';
|
21 |
public function html()
|
22 |
{
|
23 |
?>
|
24 |
+
<div class="w-factory-templates-105-setup__inner-wrap">
|
25 |
+
<div class="w-factory-templates-105-setup-step__new_onboarding-wrapper">
|
26 |
+
<p class="w-factory-templates-105-setup-step__new_onboarding-welcome">Welcome to</p>
|
27 |
+
<h1 class="w-factory-templates-105-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\Factory_Templates_101\Pages\Ste
|
|
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-templates-
|
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\Factory_Templates_105\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-templates-105-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\Factory_Templates_101\Pages\St
|
|
27 |
wclearfy_fetch_google_pagespeed_audit("<?php echo wp_create_nonce('fetch_google_page_speed_audit') ?>");
|
28 |
});
|
29 |
</script>
|
30 |
-
<div class="w-factory-templates-
|
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\Factory_Templates_105\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-templates-105-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\Factory_Templates_101\Pages\Step_Custom
|
|
58 |
];
|
59 |
?>
|
60 |
|
61 |
-
<div class="w-factory-templates-
|
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\Factory_Templates_101\Pages\Step_Custom
|
|
165 |
$install_robin_plugin_btn->add_class('wclearfy-setup__install-component-button');
|
166 |
|
167 |
?>
|
168 |
-
<div class="w-factory-templates-
|
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\Factory_Templates_105\Pages\Step_Custom {
|
12 |
|
13 |
protected $prev_id = 'step4';
|
14 |
protected $id = 'step5';
|
15 |
protected $next_id = 'step6';
|
16 |
|
17 |
+
public function __construct(\WBCR\Factory_Templates_105\Pages\Setup $page)
|
18 |
{
|
19 |
parent::__construct($page);
|
20 |
}
|
58 |
];
|
59 |
?>
|
60 |
|
61 |
+
<div class="w-factory-templates-105-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-templates-105-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\Factory_Templates_101\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-templates-
|
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\Factory_Templates_105\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-templates-105-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\Factory_Templates_105\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\Factory_Templates_105\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:
|
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
|
@@ -26,21 +26,21 @@ if( !defined('ABSPATH') ) {
|
|
26 |
|
27 |
require_once(dirname(__FILE__) . '/libs/factory/core/includes/class-factory-requirements.php');
|
28 |
|
29 |
-
$plugin_info =
|
30 |
'prefix' => 'wbcr_clearfy_',
|
31 |
'plugin_name' => 'wbcr_clearfy',
|
32 |
'plugin_title' => __('Clearfy', 'clearfy'),
|
33 |
|
34 |
// PLUGIN SUPPORT
|
35 |
-
'support_details' =>
|
36 |
'url' => 'http://clearfy.pro',
|
37 |
-
'pages_map' =>
|
38 |
'features' => 'premium-features', // {site}/premium-features
|
39 |
'pricing' => 'pricing', // {site}/prices
|
40 |
'support' => 'support', // {site}/support
|
41 |
'docs' => 'docs' // {site}/docs
|
42 |
-
|
43 |
-
|
44 |
//todo: for compatibility with Robin image optimizer
|
45 |
'freemius_plugin_id' => '2315',
|
46 |
'freemius_public_key' => 'pk_70e226af07d37d2b9a69720e0952c',
|
@@ -61,20 +61,20 @@ $plugin_info = array(
|
|
61 |
|
62 |
// PLUGIN PREMIUM SETTINGS
|
63 |
'has_premium' => true,
|
64 |
-
'license_settings' =>
|
65 |
'provider' => 'freemius',
|
66 |
'slug' => 'clearfy_package',
|
67 |
'plugin_id' => '2315',
|
68 |
'public_key' => 'pk_70e226af07d37d2b9a69720e0952c',
|
69 |
'price' => 29,
|
70 |
'has_updates' => true,
|
71 |
-
'updates_settings' =>
|
72 |
'maybe_rollback' => true,
|
73 |
-
'rollback_settings' =>
|
74 |
'prev_stable_version' => '0.0.0'
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
|
79 |
// PLUGIN SUBSCRIBE FORM
|
80 |
'subscribe_widget' => true,
|
@@ -82,66 +82,70 @@ $plugin_info = array(
|
|
82 |
|
83 |
// PLUGIN ADVERTS
|
84 |
'render_adverts' => true,
|
85 |
-
'adverts_settings' =>
|
86 |
'dashboard_widget' => true, // show dashboard widget (default: false)
|
87 |
'right_sidebar' => true, // show adverts sidebar (default: false)
|
88 |
'notice' => true, // show notice message (default: false)
|
89 |
-
|
90 |
// FRAMEWORK MODULES
|
91 |
-
'load_factory_modules' =>
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
'load_plugin_components' =>
|
102 |
-
'disable_notices' =>
|
103 |
'autoload' => 'components/disable-admin-notices/clearfy.php',
|
104 |
'plugin_prefix' => 'WDN_'
|
105 |
-
|
106 |
-
'cyrlitera' =>
|
107 |
'autoload' => 'components/cyrlitera/clearfy.php',
|
108 |
'plugin_prefix' => 'WCTR_'
|
109 |
-
|
110 |
-
'updates_manager' =>
|
111 |
'autoload' => 'components/updates-manager/clearfy.php',
|
112 |
'plugin_prefix' => 'WUPM_'
|
113 |
-
|
114 |
-
'comments_tools' =>
|
115 |
'autoload' => 'components/comments-plus/clearfy.php',
|
116 |
'plugin_prefix' => 'WCM_'
|
117 |
-
|
118 |
-
'ga_cache' =>
|
119 |
'autoload' => 'components/ga-cache/clearfy.php',
|
120 |
'plugin_prefix' => 'WGA_'
|
121 |
-
|
122 |
-
'assets_manager' =>
|
123 |
'autoload' => 'components/assets-manager/clearfy.php',
|
124 |
'plugin_prefix' => 'WGZ_'
|
125 |
-
|
126 |
-
'minify_and_combine' =>
|
127 |
'autoload' => 'components/minify-and-combine/clearfy.php',
|
128 |
'plugin_prefix' => 'WMAC_'
|
129 |
-
|
130 |
-
'html_minify' =>
|
131 |
'autoload' => 'components/html-minify/clearfy.php',
|
132 |
'plugin_prefix' => 'WHTM_'
|
133 |
-
|
134 |
-
|
135 |
-
|
|
|
|
|
|
|
|
|
136 |
|
137 |
|
138 |
|
139 |
-
$clearfy_compatibility = new
|
140 |
'plugin_already_activate' => defined('WCL_PLUGIN_ACTIVE'),
|
141 |
'required_php_version' => '7.0',
|
142 |
'required_wp_version' => '5.2.0',
|
143 |
'required_clearfy_check_component' => false
|
144 |
-
))
|
145 |
|
146 |
/**
|
147 |
* If the plugin is compatible, then it will continue its work, otherwise it will be stopped,
|
@@ -167,7 +171,7 @@ define('WBCR_CLEARFY_PLUGIN_ACTIVE', true);
|
|
167 |
|
168 |
// Plugin version
|
169 |
define('WCL_PLUGIN_VERSION', $clearfy_compatibility->get_plugin_version());
|
170 |
-
define('WCL_FRAMEWORK_VER', '
|
171 |
|
172 |
define('WCL_PLUGIN_DIR', dirname(__FILE__));
|
173 |
define('WCL_PLUGIN_BASE', plugin_basename(__FILE__));
|
@@ -185,13 +189,13 @@ try {
|
|
185 |
require_once(WCL_PLUGIN_DIR . '/libs/factory/core/boot.php');
|
186 |
require_once(WCL_PLUGIN_DIR . '/includes/class.plugin.php');
|
187 |
|
188 |
-
new WCL_Plugin(__FILE__, array_merge($plugin_info,
|
189 |
'plugin_version' => WCL_PLUGIN_VERSION,
|
190 |
'plugin_text_domain' => $clearfy_compatibility->get_text_domain(),
|
191 |
-
))
|
192 |
} catch( Exception $e ) {
|
193 |
// Plugin wasn't initialized due to an error
|
194 |
-
define('
|
195 |
|
196 |
$clearfy_plugin_error_func = function () use ($e) {
|
197 |
$error = sprintf("The %s plugin has stopped. <b>Error:</b> %s Code: %s", 'Clearfy', $e->getMessage(), $e->getCode());
|
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: 2.0.0
|
8 |
* Text Domain: clearfy
|
9 |
* Domain Path: /languages/
|
10 |
* Author URI: https://cm-wp.com
|
11 |
+
* Framework Version: FACTORY_452_VERSION
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
26 |
|
27 |
require_once(dirname(__FILE__) . '/libs/factory/core/includes/class-factory-requirements.php');
|
28 |
|
29 |
+
$plugin_info = [
|
30 |
'prefix' => 'wbcr_clearfy_',
|
31 |
'plugin_name' => 'wbcr_clearfy',
|
32 |
'plugin_title' => __('Clearfy', 'clearfy'),
|
33 |
|
34 |
// PLUGIN SUPPORT
|
35 |
+
'support_details' => [
|
36 |
'url' => 'http://clearfy.pro',
|
37 |
+
'pages_map' => [
|
38 |
'features' => 'premium-features', // {site}/premium-features
|
39 |
'pricing' => 'pricing', // {site}/prices
|
40 |
'support' => 'support', // {site}/support
|
41 |
'docs' => 'docs' // {site}/docs
|
42 |
+
]
|
43 |
+
],
|
44 |
//todo: for compatibility with Robin image optimizer
|
45 |
'freemius_plugin_id' => '2315',
|
46 |
'freemius_public_key' => 'pk_70e226af07d37d2b9a69720e0952c',
|
61 |
|
62 |
// PLUGIN PREMIUM SETTINGS
|
63 |
'has_premium' => true,
|
64 |
+
'license_settings' => [
|
65 |
'provider' => 'freemius',
|
66 |
'slug' => 'clearfy_package',
|
67 |
'plugin_id' => '2315',
|
68 |
'public_key' => 'pk_70e226af07d37d2b9a69720e0952c',
|
69 |
'price' => 29,
|
70 |
'has_updates' => true,
|
71 |
+
'updates_settings' => [
|
72 |
'maybe_rollback' => true,
|
73 |
+
'rollback_settings' => [
|
74 |
'prev_stable_version' => '0.0.0'
|
75 |
+
]
|
76 |
+
]
|
77 |
+
],
|
78 |
|
79 |
// PLUGIN SUBSCRIBE FORM
|
80 |
'subscribe_widget' => true,
|
82 |
|
83 |
// PLUGIN ADVERTS
|
84 |
'render_adverts' => true,
|
85 |
+
'adverts_settings' => [
|
86 |
'dashboard_widget' => true, // show dashboard widget (default: false)
|
87 |
'right_sidebar' => true, // show adverts sidebar (default: false)
|
88 |
'notice' => true, // show notice message (default: false)
|
89 |
+
],
|
90 |
// FRAMEWORK MODULES
|
91 |
+
'load_factory_modules' => [
|
92 |
+
['libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'],
|
93 |
+
['libs/factory/forms', 'factory_forms_449', 'admin'],
|
94 |
+
['libs/factory/pages', 'factory_pages_451', 'admin'],
|
95 |
+
['libs/factory/templates', 'factory_templates_105', 'all'],
|
96 |
+
['libs/factory/freemius', 'factory_freemius_139', 'all'],
|
97 |
+
['libs/factory/adverts', 'factory_adverts_129', 'admin'],
|
98 |
+
['libs/factory/logger', 'factory_logger_117', 'all'],
|
99 |
+
|
100 |
+
],
|
101 |
+
'load_plugin_components' => [
|
102 |
+
'disable_notices' => [
|
103 |
'autoload' => 'components/disable-admin-notices/clearfy.php',
|
104 |
'plugin_prefix' => 'WDN_'
|
105 |
+
],
|
106 |
+
'cyrlitera' => [
|
107 |
'autoload' => 'components/cyrlitera/clearfy.php',
|
108 |
'plugin_prefix' => 'WCTR_'
|
109 |
+
],
|
110 |
+
'updates_manager' => [
|
111 |
'autoload' => 'components/updates-manager/clearfy.php',
|
112 |
'plugin_prefix' => 'WUPM_'
|
113 |
+
],
|
114 |
+
'comments_tools' => [
|
115 |
'autoload' => 'components/comments-plus/clearfy.php',
|
116 |
'plugin_prefix' => 'WCM_'
|
117 |
+
],
|
118 |
+
'ga_cache' => [
|
119 |
'autoload' => 'components/ga-cache/clearfy.php',
|
120 |
'plugin_prefix' => 'WGA_'
|
121 |
+
],
|
122 |
+
'assets_manager' => [
|
123 |
'autoload' => 'components/assets-manager/clearfy.php',
|
124 |
'plugin_prefix' => 'WGZ_'
|
125 |
+
],
|
126 |
+
'minify_and_combine' => [
|
127 |
'autoload' => 'components/minify-and-combine/clearfy.php',
|
128 |
'plugin_prefix' => 'WMAC_'
|
129 |
+
],
|
130 |
+
'html_minify' => [
|
131 |
'autoload' => 'components/html-minify/clearfy.php',
|
132 |
'plugin_prefix' => 'WHTM_'
|
133 |
+
],
|
134 |
+
'cache' => [
|
135 |
+
'autoload' => 'components/cache/clearfy.php',
|
136 |
+
'plugin_prefix' => 'WCACHE_'
|
137 |
+
],
|
138 |
+
]
|
139 |
+
];
|
140 |
|
141 |
|
142 |
|
143 |
+
$clearfy_compatibility = new Wbcr_Factory452_Requirements(__FILE__, array_merge($plugin_info, [
|
144 |
'plugin_already_activate' => defined('WCL_PLUGIN_ACTIVE'),
|
145 |
'required_php_version' => '7.0',
|
146 |
'required_wp_version' => '5.2.0',
|
147 |
'required_clearfy_check_component' => false
|
148 |
+
]));
|
149 |
|
150 |
/**
|
151 |
* If the plugin is compatible, then it will continue its work, otherwise it will be stopped,
|
171 |
|
172 |
// Plugin version
|
173 |
define('WCL_PLUGIN_VERSION', $clearfy_compatibility->get_plugin_version());
|
174 |
+
define('WCL_FRAMEWORK_VER', 'FACTORY_452_VERSION');
|
175 |
|
176 |
define('WCL_PLUGIN_DIR', dirname(__FILE__));
|
177 |
define('WCL_PLUGIN_BASE', plugin_basename(__FILE__));
|
189 |
require_once(WCL_PLUGIN_DIR . '/libs/factory/core/boot.php');
|
190 |
require_once(WCL_PLUGIN_DIR . '/includes/class.plugin.php');
|
191 |
|
192 |
+
new WCL_Plugin(__FILE__, array_merge($plugin_info, [
|
193 |
'plugin_version' => WCL_PLUGIN_VERSION,
|
194 |
'plugin_text_domain' => $clearfy_compatibility->get_text_domain(),
|
195 |
+
]));
|
196 |
} catch( Exception $e ) {
|
197 |
// Plugin wasn't initialized due to an error
|
198 |
+
define('WCL_PLUGIN_THROW_ERROR', true);
|
199 |
|
200 |
$clearfy_plugin_error_func = function () use ($e) {
|
201 |
$error = sprintf("The %s plugin has stopped. <b>Error:</b> %s Code: %s", 'Clearfy', $e->getMessage(), $e->getCode());
|
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_Factory452_Activator
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
class WGNZ_Activation extends Wbcr_Factory452_Activator {
|
18 |
|
19 |
/**
|
20 |
* Runs activation actions.
|
components/assets-manager/admin/ajax/save-settings.php
CHANGED
@@ -96,7 +96,7 @@ function wam_save_settings_action()
|
|
96 |
wbcr_gnz_deploy_mu_plugin();
|
97 |
|
98 |
// Flush cache for all cache plugins
|
99 |
-
WBCR\
|
100 |
}
|
101 |
|
102 |
wp_send_json_success([
|
96 |
wbcr_gnz_deploy_mu_plugin();
|
97 |
|
98 |
// Flush cache for all cache plugins
|
99 |
+
WBCR\Factory_Templates_105\Helpers::flushPageCache();
|
100 |
}
|
101 |
|
102 |
wp_send_json_success([
|
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_Factory452_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_451_imppage_rating_widget_url', 'wbcr_gnz_rating_widget_url', 10, 2);
|
211 |
}
|
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 WBCR\
|
20 |
|
21 |
/**
|
22 |
* The id of the page in the admin menu.
|
@@ -24,7 +24,7 @@ class WGZ_AssetsManagerPage extends WBCR\Factory_Templates_101\Pages\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\Factory_Templates_101\Pages\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\Factory_Templates_105\Pages\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 FactoryPages451_AdminPage
|
28 |
*
|
29 |
* @var string
|
30 |
*/
|
48 |
public $available_for_multisite = true;
|
49 |
|
50 |
/**
|
51 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
52 |
*/
|
53 |
+
public function __construct(Wbcr_Factory452_Plugin $plugin)
|
54 |
{
|
55 |
$this->menu_title = __('Assets manager', 'gonzales');
|
56 |
|
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_452_VERSION
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
68 |
|
69 |
// FRAMEWORK MODULES
|
70 |
'load_factory_modules' => array(
|
71 |
+
array('libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'),
|
72 |
+
array('libs/factory/forms', 'factory_forms_449', 'admin'),
|
73 |
+
array('libs/factory/pages', 'factory_pages_451', 'admin'),
|
74 |
+
array('libs/factory/clearfy', 'factory_templates_105', 'all'),
|
75 |
+
array('libs/factory/adverts', 'factory_adverts_129', 'admin')
|
76 |
)
|
77 |
);
|
78 |
|
79 |
+
$wgnz_compatibility = new Wbcr_Factory452_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_Factory449_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_Factory452_Plugin {
|
15 |
|
16 |
/**
|
17 |
* @see self::app()
|
18 |
+
* @var Wbcr_Factory452_Plugin
|
19 |
*/
|
20 |
private static $app;
|
21 |
|
53 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
54 |
* классам.
|
55 |
*
|
56 |
+
* @return \Wbcr_Factory452_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 |
|
25 |
private $deregistered = [];
|
26 |
|
27 |
/**
|
28 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
29 |
*/
|
30 |
+
public function __construct(Wbcr_Factory452_Plugin $plugin)
|
31 |
{
|
32 |
$this->plugin = $plugin;
|
33 |
|
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 WBCR\
|
67 |
*
|
68 |
* @return bool|string The page contents. False if the template doesn't exist.
|
69 |
*/
|
70 |
-
public function get_template( $template, $data = [], WBCR\
|
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 WBCR\
|
96 |
*/
|
97 |
-
public function print_template( $template, $data = [], WBCR\
|
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\Factory_Templates_105\Pages\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\Factory_Templates_105\Pages\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\Factory_Templates_105\Pages\PageBase $page
|
96 |
*/
|
97 |
+
public function print_template( $template, $data = [], WBCR\Factory_Templates_105\Pages\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_Factory452_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_Factory452_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_Factory452_Update {
|
8 |
|
9 |
public function install() {
|
10 |
$settings = get_option( $this->plugin->getPrefix() . 'assets_states', [] );
|
components/assets-manager/mu-plugins/assets-manager.php
CHANGED
@@ -3,7 +3,7 @@
|
|
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:
|
7 |
*/
|
8 |
|
9 |
// todo: проверить, как работает кеширование
|
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_452_VERSION
|
7 |
*/
|
8 |
|
9 |
// todo: проверить, как работает кеширование
|
components/cache/admin/activation.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Activator for the cyrlitera
|
5 |
+
*
|
6 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
7 |
+
* @copyright (c) 09.03.2018, Webcraftic
|
8 |
+
* @see Wbcr_Factory452_Activator
|
9 |
+
* @version 1.0
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
class WCACHE_Activation extends Wbcr_Factory452_Activator {
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Runs activation actions.
|
21 |
+
*
|
22 |
+
* @since 1.0.0
|
23 |
+
*/
|
24 |
+
public function activate()
|
25 |
+
{
|
26 |
+
require_once WCACHE_PLUGIN_DIR . '/includes/cache.php';
|
27 |
+
try {
|
28 |
+
WCL_Cache::activate();
|
29 |
+
} catch( Exception $e ) {
|
30 |
+
//nothing
|
31 |
+
}
|
32 |
+
}
|
33 |
+
|
34 |
+
public function deactivate()
|
35 |
+
{
|
36 |
+
require_once WCACHE_PLUGIN_DIR . '/includes/cache.php';
|
37 |
+
try {
|
38 |
+
WCL_Cache::deactivate();
|
39 |
+
} catch( Exception $e ) {
|
40 |
+
//nothing
|
41 |
+
}
|
42 |
+
}
|
43 |
+
}
|
components/cache/admin/boot.php
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Clearfy quick start options
|
4 |
+
*
|
5 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>
|
6 |
+
* @copyright (c) 03.06.2020, Webcraftic
|
7 |
+
* @version 1.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
add_filter("wbcr_clearfy_group_options", function ($options) {
|
11 |
+
$options[] = [
|
12 |
+
'name' => 'enable_cache',
|
13 |
+
'title' => __('Enable cache', 'clearfy'),
|
14 |
+
'tags' => ['optimize_performance']
|
15 |
+
];
|
16 |
+
|
17 |
+
$options[] = [
|
18 |
+
'name' => 'dont_cache_for_logged_in_users',
|
19 |
+
'title' => __('Don\'t cache for logged-in users', 'clearfy'),
|
20 |
+
'tags' => ['optimize_performance']
|
21 |
+
];
|
22 |
+
|
23 |
+
$options[] = [
|
24 |
+
'name' => 'cache_reject_uri',
|
25 |
+
'title' => __('Never Cache URL(s)', 'clearfy'),
|
26 |
+
'tags' => []
|
27 |
+
];
|
28 |
+
|
29 |
+
$options[] = [
|
30 |
+
'name' => 'preload_cache',
|
31 |
+
'title' => __('Preload cache', 'clearfy'),
|
32 |
+
'tags' => []
|
33 |
+
];
|
34 |
+
|
35 |
+
$options[] = [
|
36 |
+
'name' => 'clear_cache_for_newpost',
|
37 |
+
'title' => __('Clear cache for new post', 'clearfy'),
|
38 |
+
'tags' => ['optimize_performance']
|
39 |
+
];
|
40 |
+
|
41 |
+
$options[] = [
|
42 |
+
'name' => 'exclude_files',
|
43 |
+
'title' => __('Filenames that can be cached', 'clearfy'),
|
44 |
+
'tags' => []
|
45 |
+
];
|
46 |
+
|
47 |
+
$options[] = [
|
48 |
+
'name' => 'exclude_pages',
|
49 |
+
'title' => __('Rejected User Agents', 'clearfy'),
|
50 |
+
'tags' => []
|
51 |
+
];
|
52 |
+
|
53 |
+
return $options;
|
54 |
+
});
|
55 |
+
|
56 |
+
add_filter('wclearfy/setup_wizard/speed_optimize_step/form_options', function ($options) {
|
57 |
+
array_unshift($options, [
|
58 |
+
'type' => 'checkbox',
|
59 |
+
'way' => 'buttons',
|
60 |
+
'name' => 'enable_cache',
|
61 |
+
'title' => __('Enable cache', 'clearfy'),
|
62 |
+
'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'green'],
|
63 |
+
'hint' => __('This option enable cache to generates static html files from your dynamic WordPress blog. After a html file is generated your webserver will serve that file instead of processing the comparatively heavier and more expensive WordPress PHP scripts.', 'clearfy'),
|
64 |
+
'default' => true
|
65 |
+
]);
|
66 |
+
|
67 |
+
return $options;
|
68 |
+
});
|
69 |
+
|
70 |
+
add_action('wclearfy/setup_wizard/speed_optimize_step/continue_step', function () {
|
71 |
+
require_once WCACHE_PLUGIN_DIR . '/includes/includes/helpers.php';
|
72 |
+
try {
|
73 |
+
\WCL_Cache_Helpers::modifyHtaccess();
|
74 |
+
} catch( \Exception $e ) {
|
75 |
+
|
76 |
+
}
|
77 |
+
});
|
78 |
+
|
79 |
+
add_action('wfactory/activated_' . WCL_Plugin::app()->getPluginName() . '_component', function ($component_name) {
|
80 |
+
//todo: Проверить совместимость с плагинами, включить или отключить компонент в зависимсти от результатов
|
81 |
+
});
|
components/cache/admin/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
{admin → components/cache/admin}/pages/class-pages-performance-cache.php
RENAMED
@@ -10,7 +10,7 @@ if( !defined('ABSPATH') ) {
|
|
10 |
exit;
|
11 |
}
|
12 |
|
13 |
-
class
|
14 |
|
15 |
/**
|
16 |
* @see {@inheritDoc}
|
@@ -43,7 +43,28 @@ class WCL_CachePage extends WCL_Page {
|
|
43 |
*
|
44 |
* @var bool
|
45 |
*/
|
46 |
-
public $available_for_multisite = true;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
|
48 |
/**
|
49 |
* @param WCL_Plugin $plugin
|
@@ -53,8 +74,8 @@ class WCL_CachePage extends WCL_Page {
|
|
53 |
$this->menu_title = __('Cache', 'clearfy');
|
54 |
$this->page_menu_short_description = __('Cache pages', 'clearfy');
|
55 |
|
56 |
-
if( $plugin->premium->is_activate() && $plugin->premium->is_install_package()
|
57 |
-
$this->
|
58 |
}
|
59 |
|
60 |
parent::__construct($plugin);
|
@@ -62,6 +83,39 @@ class WCL_CachePage extends WCL_Page {
|
|
62 |
$this->plugin = $plugin;
|
63 |
}
|
64 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
/**
|
66 |
* Permalinks options.
|
67 |
*
|
@@ -84,7 +138,7 @@ class WCL_CachePage extends WCL_Page {
|
|
84 |
'title' => __('Enable cache', 'clearfy'),
|
85 |
'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'green'],
|
86 |
'hint' => __('This option enable cache to generates static html files from your dynamic WordPress blog. After a html file is generated your webserver will serve that file instead of processing the comparatively heavier and more expensive WordPress PHP scripts.', 'clearfy'),
|
87 |
-
'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
|
88 |
'default' => false
|
89 |
];
|
90 |
|
@@ -95,7 +149,7 @@ class WCL_CachePage extends WCL_Page {
|
|
95 |
'title' => __('Don\'t cache for logged-in users', 'clearfy'),
|
96 |
'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'green'],
|
97 |
'hint' => __('Don\'t show the cached version for logged-in users', 'clearfy'),
|
98 |
-
'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
|
99 |
'default' => false
|
100 |
];
|
101 |
|
@@ -134,10 +188,10 @@ If the commonly used files are cached by browser, the visitors’ browsers do no
|
|
134 |
//'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
|
135 |
'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.
|
136 |
Use (.*) wildcards to address multiple URLs under a given path.', 'clearfy'),
|
137 |
-
'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? [
|
138 |
'disabled' => 'disabled',
|
139 |
'placeholder' => '/members/(.*)'
|
140 |
-
] : ['placeholder' => '/members/(.*)']
|
141 |
];
|
142 |
|
143 |
$options[] = [
|
@@ -204,7 +258,7 @@ The Preload runs every 5 minutes. If you want set a specific interval. Note: The
|
|
204 |
'title' => __('Clear cache for new post', 'clearfy'),
|
205 |
'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
|
206 |
'hint' => __('Clear cache files when a post or page is published', 'clearfy'),
|
207 |
-
'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
|
208 |
'default' => true
|
209 |
],
|
210 |
|
@@ -215,7 +269,7 @@ The Preload runs every 5 minutes. If you want set a specific interval. Note: The
|
|
215 |
'title' => __('Clear cache for updated Post', 'clearfy'),
|
216 |
'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
|
217 |
'hint' => __('Clear cache files when a post or page is updated', 'clearfy'),
|
218 |
-
'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
|
219 |
'default' => true
|
220 |
],
|
221 |
[
|
@@ -224,7 +278,7 @@ The Preload runs every 5 minutes. If you want set a specific interval. Note: The
|
|
224 |
'title' => __('Filenames that can be cached', 'clearfy'),
|
225 |
'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
|
226 |
'hint' => __('Add here those filenames that can be cached, even if they match one of the rejected substring specified above.', 'clearfy'),
|
227 |
-
'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['disabled' => 'disabled'] : [],
|
228 |
'default' => 'wp-comments-popup.php
|
229 |
wp-links-opml.php
|
230 |
wp-locations.php
|
@@ -236,7 +290,7 @@ wp-locations.php
|
|
236 |
'title' => __('Rejected User Agents', 'clearfy'),
|
237 |
'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
|
238 |
'hint' => __('Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists.', 'clearfy'),
|
239 |
-
'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['disabled' => 'disabled'] : [],
|
240 |
'default' => 'bot
|
241 |
ia_archive
|
242 |
slurp
|
@@ -250,13 +304,13 @@ Yandex
|
|
250 |
|
251 |
$form_options = [];
|
252 |
|
253 |
-
if( !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ) {
|
254 |
foreach($options as &$option) {
|
255 |
if( 'checkbox' === $option['type'] ) {
|
256 |
$option['value'] = false;
|
257 |
}
|
258 |
}
|
259 |
-
}
|
260 |
|
261 |
$form_options[] = [
|
262 |
'type' => 'form-group',
|
@@ -279,7 +333,7 @@ Yandex
|
|
279 |
?>
|
280 |
<script>
|
281 |
jQuery(document).ready(function($) {
|
282 |
-
$.
|
283 |
console.log(data);
|
284 |
|
285 |
if( data.plugin_action === 'install' ) {
|
@@ -289,23 +343,40 @@ Yandex
|
|
289 |
|
290 |
});
|
291 |
|
292 |
-
$.
|
293 |
button.remove();
|
294 |
window.location.href = '<?php echo $this->getBaseUrl('clearfy_cache'); ?>';
|
295 |
|
296 |
});
|
297 |
});
|
298 |
</script>
|
299 |
-
<div class="wbcr-factory-templates-
|
300 |
<div class="wbcr-factory-inner-contanier">
|
301 |
-
<h3><?php
|
302 |
-
|
303 |
-
<p><?php
|
|
|
|
|
|
|
304 |
<p style="margin-top:20px">
|
305 |
-
<?php
|
|
|
306 |
</p>
|
307 |
</div>
|
308 |
</div>
|
309 |
<?php
|
310 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
311 |
}
|
10 |
exit;
|
11 |
}
|
12 |
|
13 |
+
class WCACHE_CachePage extends WBCR\Factory_Templates_105\Pages\PageBase {
|
14 |
|
15 |
/**
|
16 |
* @see {@inheritDoc}
|
43 |
*
|
44 |
* @var bool
|
45 |
*/
|
46 |
+
//public $available_for_multisite = true;
|
47 |
+
|
48 |
+
protected $errors = [
|
49 |
+
98 => "<label>.htaccess was not found</label> <a target='_blank' href='http://www.wpfastestcache.com/warnings/htaccess-was-not-found/'>Read More</a>",
|
50 |
+
99 => "define('WP_CACHE', true); is needed to be added into wp-config.php",
|
51 |
+
100 => "You have to set <strong><u><a href=" . "'/wp-admin/options-permalink.php'>permalinks</a></u></strong>",
|
52 |
+
101 => "Fast Velocity Minify needs to be deactivated",
|
53 |
+
102 => 'Far Future Expiration Plugin needs to be deactivated',
|
54 |
+
103 => "SG Optimizer needs to be deactived",
|
55 |
+
104 => "AdRotate needs to be deactived",
|
56 |
+
105 => "MobilePress needs to be deactived",
|
57 |
+
106 => "Speed Booster Pack needs to be deactived",
|
58 |
+
107 => "WP Performance Score Booster needs to be deactivated<br>This plugin has aldready Gzip, Leverage Browser Caching features",
|
59 |
+
109 => "Check and Enable GZIP compression needs to be deactivated<br>This plugin has aldready Gzip feature",
|
60 |
+
110 => "GZippy needs to be deactivated<br>This plugin has aldready Gzip feature",
|
61 |
+
111 => "GZip Ninja Speed Compression needs to be deactivated<br>This plugin has aldready Gzip feature",
|
62 |
+
112 => "WordPress Gzip Compression needs to be deactivated<br>This plugin has aldready Gzip feature",
|
63 |
+
113 => "GZIP Output needs to be deactivated<br>This plugin has aldready Gzip feature",
|
64 |
+
114 => "Head Cleaner needs to be deactivated",
|
65 |
+
115 => "Far Future Expiration Plugin needs to be deactivated",
|
66 |
+
];
|
67 |
+
|
68 |
|
69 |
/**
|
70 |
* @param WCL_Plugin $plugin
|
74 |
$this->menu_title = __('Cache', 'clearfy');
|
75 |
$this->page_menu_short_description = __('Cache pages', 'clearfy');
|
76 |
|
77 |
+
if( $plugin->premium->is_activate() && $plugin->premium->is_install_package() ) {
|
78 |
+
$this->available_for_multisite = true;
|
79 |
}
|
80 |
|
81 |
parent::__construct($plugin);
|
83 |
$this->plugin = $plugin;
|
84 |
}
|
85 |
|
86 |
+
/**
|
87 |
+
* We register notifications for some actions
|
88 |
+
*
|
89 |
+
* @param $notices
|
90 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
91 |
+
*
|
92 |
+
* @return array
|
93 |
+
* @see libs\factory\pages\themplates\FactoryPages451_ImpressiveThemplate
|
94 |
+
*/
|
95 |
+
public function getActionNotices($notices)
|
96 |
+
{
|
97 |
+
|
98 |
+
$notices[] = [
|
99 |
+
'conditions' => [
|
100 |
+
'wclearfy-cache-cleared' => 1
|
101 |
+
],
|
102 |
+
'type' => 'success',
|
103 |
+
'message' => 'Cache has been cleared!'
|
104 |
+
];
|
105 |
+
|
106 |
+
foreach($this->errors as $key => $error_message) {
|
107 |
+
$notices[] = [
|
108 |
+
'conditions' => [
|
109 |
+
'wclearfy-cache-error' => $key
|
110 |
+
],
|
111 |
+
'type' => 'danger',
|
112 |
+
'message' => $error_message
|
113 |
+
];
|
114 |
+
}
|
115 |
+
|
116 |
+
return $notices;
|
117 |
+
}
|
118 |
+
|
119 |
/**
|
120 |
* Permalinks options.
|
121 |
*
|
138 |
'title' => __('Enable cache', 'clearfy'),
|
139 |
'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'green'],
|
140 |
'hint' => __('This option enable cache to generates static html files from your dynamic WordPress blog. After a html file is generated your webserver will serve that file instead of processing the comparatively heavier and more expensive WordPress PHP scripts.', 'clearfy'),
|
141 |
+
//'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
|
142 |
'default' => false
|
143 |
];
|
144 |
|
149 |
'title' => __('Don\'t cache for logged-in users', 'clearfy'),
|
150 |
'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'green'],
|
151 |
'hint' => __('Don\'t show the cached version for logged-in users', 'clearfy'),
|
152 |
+
//'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
|
153 |
'default' => false
|
154 |
];
|
155 |
|
188 |
//'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
|
189 |
'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.
|
190 |
Use (.*) wildcards to address multiple URLs under a given path.', 'clearfy'),
|
191 |
+
/*'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? [
|
192 |
'disabled' => 'disabled',
|
193 |
'placeholder' => '/members/(.*)'
|
194 |
+
] : ['placeholder' => '/members/(.*)'],*/
|
195 |
];
|
196 |
|
197 |
$options[] = [
|
258 |
'title' => __('Clear cache for new post', 'clearfy'),
|
259 |
'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
|
260 |
'hint' => __('Clear cache files when a post or page is published', 'clearfy'),
|
261 |
+
//'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
|
262 |
'default' => true
|
263 |
],
|
264 |
|
269 |
'title' => __('Clear cache for updated Post', 'clearfy'),
|
270 |
'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
|
271 |
'hint' => __('Clear cache files when a post or page is updated', 'clearfy'),
|
272 |
+
//'cssClass' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['factory-checkbox-disabled wbcr-factory-clearfy-icon-pro'] : [],
|
273 |
'default' => true
|
274 |
],
|
275 |
[
|
278 |
'title' => __('Filenames that can be cached', 'clearfy'),
|
279 |
'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
|
280 |
'hint' => __('Add here those filenames that can be cached, even if they match one of the rejected substring specified above.', 'clearfy'),
|
281 |
+
//'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['disabled' => 'disabled'] : [],
|
282 |
'default' => 'wp-comments-popup.php
|
283 |
wp-links-opml.php
|
284 |
wp-locations.php
|
290 |
'title' => __('Rejected User Agents', 'clearfy'),
|
291 |
'layout' => ['hint-type' => 'icon', 'hint-icon-color' => 'grey'],
|
292 |
'hint' => __('Strings in the HTTP ’User Agent’ header that prevent WP-Cache from caching bot, spiders, and crawlers’ requests. Note that super cached files are still sent to these agents if they already exists.', 'clearfy'),
|
293 |
+
//'htmlAttrs' => !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ? ['disabled' => 'disabled'] : [],
|
294 |
'default' => 'bot
|
295 |
ia_archive
|
296 |
slurp
|
304 |
|
305 |
$form_options = [];
|
306 |
|
307 |
+
/*if( !defined('WCLEARFY_CACHEPRO_PLUGIN_ACTIVE') ) {
|
308 |
foreach($options as &$option) {
|
309 |
if( 'checkbox' === $option['type'] ) {
|
310 |
$option['value'] = false;
|
311 |
}
|
312 |
}
|
313 |
+
}*/
|
314 |
|
315 |
$form_options[] = [
|
316 |
'type' => 'form-group',
|
333 |
?>
|
334 |
<script>
|
335 |
jQuery(document).ready(function($) {
|
336 |
+
$.wfactory_452.hooks.add('core/components/updated', function(button, data) {
|
337 |
console.log(data);
|
338 |
|
339 |
if( data.plugin_action === 'install' ) {
|
343 |
|
344 |
});
|
345 |
|
346 |
+
$.wfactory_452.hooks.add('core/components/activated', function(button, data) {
|
347 |
button.remove();
|
348 |
window.location.href = '<?php echo $this->getBaseUrl('clearfy_cache'); ?>';
|
349 |
|
350 |
});
|
351 |
});
|
352 |
</script>
|
353 |
+
<div class="wbcr-factory-templates-105-multisite-suggetion">
|
354 |
<div class="wbcr-factory-inner-contanier">
|
355 |
+
<h3><?php
|
356 |
+
_e('Install Page Cache component', 'clearfy') ?></h3>
|
357 |
+
<p><?php
|
358 |
+
_e('To start page caching, you need to install the additional component Cache!', 'clearfy') ?></p>
|
359 |
+
<p><?php
|
360 |
+
_e('Installing the component will not take you long, just click the install button, then activate.', 'clearfy') ?></p>
|
361 |
<p style="margin-top:20px">
|
362 |
+
<?php
|
363 |
+
$install_button->render_link(); ?>
|
364 |
</p>
|
365 |
</div>
|
366 |
</div>
|
367 |
<?php
|
368 |
}
|
369 |
+
|
370 |
+
public function afterFormSave()
|
371 |
+
{
|
372 |
+
try {
|
373 |
+
do_action("wclearfy/cache/settings_page/after_form_save");
|
374 |
+
|
375 |
+
WCL_Cache_Helpers::modifyHtaccess();
|
376 |
+
} catch( Exception $e ) {
|
377 |
+
if( !empty($e->getCode()) && isset($this->errors[$e->getCode()]) ) {
|
378 |
+
$this->redirectToAction('index', ['wclearfy-cache-error' => $e->getCode()]);
|
379 |
+
}
|
380 |
+
}
|
381 |
+
}
|
382 |
}
|
components/cache/cache.php
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Plugin Name: Webcraftic Clearfy Cache
|
4 |
+
* Plugin URI: https://webcraftic.com
|
5 |
+
* Description: Webcraftic Clearfy Cache
|
6 |
+
* Author: Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
+
* Version: 1.0.0
|
8 |
+
* Text Domain: clearfy_cache
|
9 |
+
* Domain Path: /languages/
|
10 |
+
* Author URI: https://webcraftic.com
|
11 |
+
* Framework Version: FACTORY_452_VERSION
|
12 |
+
*/
|
13 |
+
|
14 |
+
// Exit if accessed directly
|
15 |
+
if( !defined('ABSPATH') ) {
|
16 |
+
exit;
|
17 |
+
}
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Developers who contributions in the development plugin:
|
21 |
+
*
|
22 |
+
* Alexander Kovalev
|
23 |
+
* ---------------------------------------------------------------------------------
|
24 |
+
* Full plugin development.
|
25 |
+
*
|
26 |
+
* Email: alex.kovalevv@gmail.com
|
27 |
+
* Personal card: https://alexkovalevv.github.io
|
28 |
+
* Personal repo: https://github.com/alexkovalevv
|
29 |
+
* ---------------------------------------------------------------------------------
|
30 |
+
*/
|
31 |
+
|
32 |
+
/**
|
33 |
+
* -----------------------------------------------------------------------------
|
34 |
+
* CHECK REQUIREMENTS
|
35 |
+
* Check compatibility with php and wp version of the user's site. As well as checking
|
36 |
+
* compatibility with other plugins from Webcraftic.
|
37 |
+
* -----------------------------------------------------------------------------
|
38 |
+
*/
|
39 |
+
|
40 |
+
require_once(dirname(__FILE__) . '/libs/factory/core/includes/class-factory-requirements.php');
|
41 |
+
|
42 |
+
// @formatter:off
|
43 |
+
$wcache_plugin_info = [
|
44 |
+
'prefix' => 'wcache_',
|
45 |
+
'plugin_name' => 'wcache',
|
46 |
+
'plugin_title' => __('Webcraftic Clearfy Cache', 'clearfy_cache'),
|
47 |
+
|
48 |
+
// PLUGIN SUPPORT
|
49 |
+
'support_details' => [
|
50 |
+
'url' => 'https://webcraftic.com',
|
51 |
+
'pages_map' => [
|
52 |
+
'support' => 'support', // {site}/support
|
53 |
+
'docs' => 'docs' // {site}/docs
|
54 |
+
]
|
55 |
+
],
|
56 |
+
|
57 |
+
// PLUGIN SUBSCRIBE FORM
|
58 |
+
'subscribe_widget' => true,
|
59 |
+
'subscribe_settings' => ['group_id' => '105408892'],
|
60 |
+
|
61 |
+
// PLUGIN ADVERTS
|
62 |
+
'render_adverts' => true,
|
63 |
+
'adverts_settings' => [
|
64 |
+
'dashboard_widget' => true, // show dashboard widget (default: false)
|
65 |
+
'right_sidebar' => true, // show adverts sidebar (default: false)
|
66 |
+
'notice' => true, // show notice message (default: false)
|
67 |
+
],
|
68 |
+
|
69 |
+
// FRAMEWORK MODULES
|
70 |
+
'load_factory_modules' => [
|
71 |
+
['libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'],
|
72 |
+
['libs/factory/forms', 'factory_forms_449', 'admin'],
|
73 |
+
['libs/factory/pages', 'factory_pages_451', 'admin'],
|
74 |
+
['libs/factory/clearfy', 'factory_templates_105', 'all'],
|
75 |
+
['libs/factory/adverts', 'factory_adverts_129', 'admin']
|
76 |
+
]
|
77 |
+
];
|
78 |
+
|
79 |
+
$wcache_compatibility = new Wbcr_Factory452_Requirements(__FILE__, array_merge($wcache_plugin_info, [
|
80 |
+
'plugin_already_activate' => defined('WCACHE_ACTIVE'),
|
81 |
+
'required_php_version' => '5.4',
|
82 |
+
'required_wp_version' => '4.2.0',
|
83 |
+
'required_clearfy_check_component' => false
|
84 |
+
]));
|
85 |
+
|
86 |
+
/**
|
87 |
+
* If the plugin is compatible, then it will continue its work, otherwise it will be stopped,
|
88 |
+
* and the user will throw a warning.
|
89 |
+
*/
|
90 |
+
if( !$wcache_compatibility->check() ) {
|
91 |
+
return;
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* -----------------------------------------------------------------------------
|
96 |
+
* CONSTANTS
|
97 |
+
* Install frequently used constants and constants for debugging, which will be
|
98 |
+
* removed after compiling the plugin.
|
99 |
+
* -----------------------------------------------------------------------------
|
100 |
+
*/
|
101 |
+
|
102 |
+
// This plugin is activated
|
103 |
+
define('WCACHE_PLUGIN_ACTIVE', true);
|
104 |
+
define('WCACHE_PLUGIN_VERSION', $wcache_compatibility->get_plugin_version());
|
105 |
+
define('WCACHE_PLUGIN_DIR', dirname(__FILE__));
|
106 |
+
define('WCACHE_PLUGIN_BASE', plugin_basename(__FILE__));
|
107 |
+
define('WCACHE_PLUGIN_URL', plugins_url(null, __FILE__));
|
108 |
+
|
109 |
+
|
110 |
+
|
111 |
+
/**
|
112 |
+
* -----------------------------------------------------------------------------
|
113 |
+
* PLUGIN INIT
|
114 |
+
* -----------------------------------------------------------------------------
|
115 |
+
*/
|
116 |
+
|
117 |
+
require_once(WCACHE_PLUGIN_DIR . '/libs/factory/core/boot.php');
|
118 |
+
require_once(WCACHE_PLUGIN_DIR . '/includes/class-plugin.php');
|
119 |
+
|
120 |
+
try {
|
121 |
+
new WCTR_Plugin(__FILE__, array_merge($wcache_plugin_info, [
|
122 |
+
'plugin_version' => WCACHE_PLUGIN_VERSION,
|
123 |
+
'plugin_text_domain' => $wcache_compatibility->get_text_domain(),
|
124 |
+
]));
|
125 |
+
} catch( Exception $e ) {
|
126 |
+
// Plugin wasn't initialized due to an error
|
127 |
+
define('WCACHE_THROW_ERROR', true);
|
128 |
+
|
129 |
+
$wcache_plugin_error_func = function () use ($e) {
|
130 |
+
$error = sprintf("The %s plugin has stopped. <b>Error:</b> %s Code: %s", 'Webcraftic Clearfy Cache', $e->getMessage(), $e->getCode());
|
131 |
+
echo '<div class="notice notice-error"><p>' . $error . '</p></div>';
|
132 |
+
};
|
133 |
+
|
134 |
+
add_action('admin_notices', $wcache_plugin_error_func);
|
135 |
+
add_action('network_admin_notices', $wcache_plugin_error_func);
|
136 |
+
}
|
137 |
+
// @formatter:on
|
components/cache/clearfy.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Этот файл инициализирует этот плагин, как аддон для плагина Clearfy.
|
4 |
+
*
|
5 |
+
* Файл будет подключен только в плагине Clearfy, используя особый вариант загрузки. Это более простое решение
|
6 |
+
* пришло на смену встроенной системы подключения аддонов в фреймворке.
|
7 |
+
*
|
8 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
9 |
+
* @copyright (c) 2018 Webraftic Ltd
|
10 |
+
*/
|
11 |
+
|
12 |
+
// Exit if accessed directly
|
13 |
+
if( !defined('ABSPATH') ) {
|
14 |
+
exit;
|
15 |
+
}
|
16 |
+
|
17 |
+
if( !defined('WCACHE_PLUGIN_ACTIVE') ) {
|
18 |
+
define('WCACHE_PLUGIN_VERSION', '1.0.0');
|
19 |
+
define('WCACHE_TEXT_DOMAIN', 'clearfy_cache');
|
20 |
+
define('WCACHE_PLUGIN_ACTIVE', true);
|
21 |
+
|
22 |
+
// Этот плагин загружен, как аддон для плагина Clearfy
|
23 |
+
define('LOADING_CLEARFY_CACHE_AS_ADDON', true);
|
24 |
+
|
25 |
+
if( !defined('WCACHE_PLUGIN_DIR') ) {
|
26 |
+
define('WCACHE_PLUGIN_DIR', dirname(__FILE__));
|
27 |
+
}
|
28 |
+
|
29 |
+
if( !defined('WCACHE_PLUGIN_BASE') ) {
|
30 |
+
define('WCACHE_PLUGIN_BASE', plugin_basename(__FILE__));
|
31 |
+
}
|
32 |
+
|
33 |
+
if( !defined('WCACHE_PLUGIN_URL') ) {
|
34 |
+
define('WCACHE_PLUGIN_URL', plugins_url(null, __FILE__));
|
35 |
+
}
|
36 |
+
|
37 |
+
try {
|
38 |
+
// Global scripts
|
39 |
+
require_once(WCACHE_PLUGIN_DIR . '/includes/3rd-party/class-clearfy-plugin.php');
|
40 |
+
new WCACHE_Plugin();
|
41 |
+
} catch( Exception $e ) {
|
42 |
+
$wcache_plugin_error_func = function () use ($e) {
|
43 |
+
$error = sprintf("The %s plugin has stopped. <b>Error:</b> %s Code: %s", 'Webcraftic Clearfy Cache', $e->getMessage(), $e->getCode());
|
44 |
+
echo '<div class="notice notice-error"><p>' . $error . '</p></div>';
|
45 |
+
};
|
46 |
+
|
47 |
+
add_action('admin_notices', $wcache_plugin_error_func);
|
48 |
+
add_action('network_admin_notices', $wcache_plugin_error_func);
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
|
components/cache/includes/3rd-party/class-clearfy-plugin.php
ADDED
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Exit if accessed directly
|
3 |
+
if( !defined('ABSPATH') ) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Cyrlitera
|
9 |
+
*
|
10 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
11 |
+
* @copyright (c) 2018 Webraftic Ltd
|
12 |
+
* @version 1.0
|
13 |
+
*/
|
14 |
+
class WCACHE_Plugin {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* @see self::app()
|
18 |
+
* @var WCL_Plugin
|
19 |
+
*/
|
20 |
+
private static $app;
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Конструктор
|
24 |
+
*
|
25 |
+
* Применяет конструктор родительского класса и записывает экземпляр текущего класса в свойство $app.
|
26 |
+
* Подробнее о свойстве $app см. self::app()
|
27 |
+
*
|
28 |
+
* @param string $plugin_path
|
29 |
+
* @param array $data
|
30 |
+
*
|
31 |
+
* @throws Exception
|
32 |
+
*/
|
33 |
+
public function __construct()
|
34 |
+
{
|
35 |
+
if( !class_exists('WCL_Plugin') ) {
|
36 |
+
throw new Exception('Plugin Clearfy is not installed!');
|
37 |
+
}
|
38 |
+
|
39 |
+
self::$app = WCL_Plugin::app();
|
40 |
+
|
41 |
+
$this->global_scripts();
|
42 |
+
|
43 |
+
if( is_admin() ) {
|
44 |
+
$this->admin_scripts();
|
45 |
+
}
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Статический метод для быстрого доступа к интерфейсу плагина.
|
50 |
+
*
|
51 |
+
* Позволяет разработчику глобально получить доступ к экземпляру класса плагина в любом месте
|
52 |
+
* плагина, но при этом разработчик не может вносить изменения в основной класс плагина.
|
53 |
+
*
|
54 |
+
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
55 |
+
* классам.
|
56 |
+
*
|
57 |
+
* @return WCL_Plugin
|
58 |
+
*/
|
59 |
+
public static function app()
|
60 |
+
{
|
61 |
+
return self::$app;
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
66 |
+
* @since 1.0.0
|
67 |
+
*/
|
68 |
+
protected function init_activation()
|
69 |
+
{
|
70 |
+
include_once(WCACHE_PLUGIN_DIR . '/admin/activation.php');
|
71 |
+
self::app()->registerActivation('WCACHE_Activation');
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* @throws \Exception
|
76 |
+
* @since 1.0.0
|
77 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
78 |
+
*/
|
79 |
+
private function register_pages()
|
80 |
+
{
|
81 |
+
self::app()->registerPage('WCACHE_CachePage', WCACHE_PLUGIN_DIR . '/admin/pages/class-pages-performance-cache.php');
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* @throws \Exception
|
86 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
87 |
+
*/
|
88 |
+
private function admin_scripts()
|
89 |
+
{
|
90 |
+
$this->init_activation();
|
91 |
+
$this->register_pages();
|
92 |
+
}
|
93 |
+
|
94 |
+
private function global_scripts()
|
95 |
+
{
|
96 |
+
require_once WCACHE_PLUGIN_DIR . '/includes/includes/helpers.php';
|
97 |
+
require_once WCACHE_PLUGIN_DIR . '/includes/cache.php';
|
98 |
+
|
99 |
+
if( is_admin() ) {
|
100 |
+
require(WCACHE_PLUGIN_DIR . '/admin/boot.php');
|
101 |
+
}
|
102 |
+
|
103 |
+
add_filter('wbcr/clearfy/adminbar_menu_items', function ($menu_items) {
|
104 |
+
$menu_items['clearfy-clear-all-cache'] = [
|
105 |
+
'id' => 'clearfy-clear-all-cache',
|
106 |
+
'title' => '<span class="dashicons dashicons-update"></span> ' . __('Clear all cache', 'clearfy'),
|
107 |
+
'href' => add_query_arg('wclearfy_cache_delete', '1')
|
108 |
+
];
|
109 |
+
|
110 |
+
return $menu_items;
|
111 |
+
});
|
112 |
+
}
|
113 |
+
}
|
components/cache/includes/3rd-party/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
components/cache/includes/cache.php
ADDED
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
require_once 'includes/helpers.php';
|
3 |
+
include_once('includes/cache.php');
|
4 |
+
|
5 |
+
class WCL_Cache {
|
6 |
+
|
7 |
+
public function __construct()
|
8 |
+
{
|
9 |
+
|
10 |
+
add_action('transition_post_status', array($this, 'on_all_status_transitions'), 10, 3);
|
11 |
+
|
12 |
+
add_action('init', function () {
|
13 |
+
if( current_user_can('manage_options') && isset($_GET['wclearfy_cache_delete']) ) {
|
14 |
+
WCL_Cache_Helpers::deleteCache();
|
15 |
+
wp_redirect(remove_query_arg('wclearfy_cache_delete'));
|
16 |
+
die();
|
17 |
+
}
|
18 |
+
});
|
19 |
+
|
20 |
+
if( !is_admin() ) {
|
21 |
+
if( isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] ) {
|
22 |
+
$cache = new WCL_Create_Cache();
|
23 |
+
$cache->createCache();
|
24 |
+
}
|
25 |
+
}
|
26 |
+
}
|
27 |
+
|
28 |
+
public function on_all_status_transitions($new_status, $old_status, $post)
|
29 |
+
{
|
30 |
+
if( !WCL_Plugin::app()->getPopulateOption('enable_cache') ) {
|
31 |
+
return false;
|
32 |
+
}
|
33 |
+
|
34 |
+
if( !wp_is_post_revision($post->ID) ) {
|
35 |
+
if( isset($post->post_type) ) {
|
36 |
+
if( $post->post_type == "nf_sub" ) {
|
37 |
+
return false;
|
38 |
+
}
|
39 |
+
}
|
40 |
+
|
41 |
+
if( WCL_Plugin::app()->getPopulateOption('clear_cache_for_newpost') ) {
|
42 |
+
if( $new_status == "publish" && $old_status != "publish" ) {
|
43 |
+
|
44 |
+
WCL_Cache_Helpers::deleteHomePageCache();
|
45 |
+
|
46 |
+
//to clear category cache and tag cache
|
47 |
+
WCL_Cache_Helpers::singleDeleteCache(false, $post->ID);
|
48 |
+
|
49 |
+
//to clear widget cache
|
50 |
+
WCL_Cache_Helpers::deleteWidgetCache();
|
51 |
+
}
|
52 |
+
}
|
53 |
+
|
54 |
+
if( WCL_Plugin::app()->getPopulateOption('clear_cache_for_updated_post') ) {
|
55 |
+
if( $new_status == "publish" && $old_status == "publish" ) {
|
56 |
+
WCL_Cache_Helpers::singleDeleteCache(false, $post->ID);
|
57 |
+
|
58 |
+
//to clear widget cache
|
59 |
+
WCL_Cache_Helpers::deleteWidgetCache();
|
60 |
+
}
|
61 |
+
}
|
62 |
+
|
63 |
+
if( $new_status == "trash" && $old_status == "publish" ) {
|
64 |
+
WCL_Cache_Helpers::singleDeleteCache(false, $post->ID);
|
65 |
+
} else if( ($new_status == "draft" || $new_status == "pending" || $new_status == "private") && $old_status == "publish" ) {
|
66 |
+
WCL_Cache_Helpers::deleteCache();
|
67 |
+
}
|
68 |
+
}
|
69 |
+
}
|
70 |
+
|
71 |
+
public static function activate()
|
72 |
+
{
|
73 |
+
if( WCL_Plugin::app()->getPopulateOption('enable_cache') ) {
|
74 |
+
WCL_Cache_Helpers::modifyHtaccess();
|
75 |
+
}
|
76 |
+
}
|
77 |
+
|
78 |
+
public static function deactivate()
|
79 |
+
{
|
80 |
+
$path = ABSPATH;
|
81 |
+
|
82 |
+
if( WCL_Cache_Helpers::is_subdirectory_install() ) {
|
83 |
+
$path = WCL_Cache_Helpers::getABSPATH();
|
84 |
+
}
|
85 |
+
|
86 |
+
if( is_file($path . ".htaccess") && is_writable($path . ".htaccess") ) {
|
87 |
+
$htaccess = file_get_contents($path . ".htaccess");
|
88 |
+
$htaccess = preg_replace("/#\s?BEGIN\s?WClearfyCache.*?#\s?END\s?WClearfyCache/s", "", $htaccess);
|
89 |
+
$htaccess = preg_replace("/#\s?BEGIN\s?GzipWClearfyCache.*?#\s?END\s?GzipWClearfyCache/s", "", $htaccess);
|
90 |
+
$htaccess = preg_replace("/#\s?BEGIN\s?LBCWClearfyCache.*?#\s?END\s?LBCWClearfyCache/s", "", $htaccess);
|
91 |
+
$htaccess = preg_replace("/#\s?BEGIN\s?WEBPWClearfyCache.*?#\s?END\s?WEBPWClearfyCache/s", "", $htaccess);
|
92 |
+
@file_put_contents($path . ".htaccess", $htaccess);
|
93 |
+
}
|
94 |
+
//$wclearfy->deleteCache();
|
95 |
+
}
|
96 |
+
}
|
97 |
+
|
98 |
+
new WCL_Cache();
|
components/cache/includes/class-plugin.php
ADDED
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Exit if accessed directly
|
3 |
+
if( !defined('ABSPATH') ) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Transliteration core class
|
9 |
+
*
|
10 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
11 |
+
* @copyright (c) 19.02.2018, Webcraftic
|
12 |
+
*/
|
13 |
+
class WCACHE_Plugin extends Wbcr_Factory452_Plugin {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @see self::app()
|
17 |
+
* @var Wbcr_Factory452_Plugin
|
18 |
+
*/
|
19 |
+
private static $app;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* @since 1.1.0
|
23 |
+
* @var array
|
24 |
+
*/
|
25 |
+
private $plugin_data;
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Конструктор
|
29 |
+
*
|
30 |
+
* Применяет конструктор родительского класса и записывает экземпляр текущего класса в свойство $app.
|
31 |
+
* Подробнее о свойстве $app см. self::app()
|
32 |
+
*
|
33 |
+
* @param string $plugin_path
|
34 |
+
* @param array $data
|
35 |
+
*
|
36 |
+
* @throws Exception
|
37 |
+
*/
|
38 |
+
public function __construct($plugin_path, $data)
|
39 |
+
{
|
40 |
+
parent::__construct($plugin_path, $data);
|
41 |
+
|
42 |
+
self::$app = $this;
|
43 |
+
$this->plugin_data = $data;
|
44 |
+
|
45 |
+
$this->global_scripts();
|
46 |
+
|
47 |
+
if( is_admin() ) {
|
48 |
+
$this->admin_scripts();
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Статический метод для быстрого доступа к интерфейсу плагина.
|
54 |
+
*
|
55 |
+
* Позволяет разработчику глобально получить доступ к экземпляру класса плагина в любом месте
|
56 |
+
* плагина, но при этом разработчик не может вносить изменения в основной класс плагина.
|
57 |
+
*
|
58 |
+
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
59 |
+
* классам.
|
60 |
+
*
|
61 |
+
* @return \Wbcr_Factory452_Plugin|\WCTR_Plugin
|
62 |
+
*/
|
63 |
+
public static function app()
|
64 |
+
{
|
65 |
+
return self::$app;
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
70 |
+
* @since 1.0.0
|
71 |
+
*/
|
72 |
+
protected function init_activation()
|
73 |
+
{
|
74 |
+
include_once(WCACHE_PLUGIN_DIR . '/admin/activation.php');
|
75 |
+
self::app()->registerActivation('WCACHE_Activation');
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* @throws \Exception
|
80 |
+
* @since 1.0.0
|
81 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
82 |
+
*/
|
83 |
+
private function register_pages()
|
84 |
+
{
|
85 |
+
$this->registerPage('WCACHE_CachePage', WCACHE_PLUGIN_DIR . '/admin/pages/class-pages-performance-cache.php');
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* @throws \Exception
|
90 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
91 |
+
*/
|
92 |
+
private function admin_scripts()
|
93 |
+
{
|
94 |
+
$this->init_activation();
|
95 |
+
$this->register_pages();
|
96 |
+
}
|
97 |
+
|
98 |
+
private function global_scripts()
|
99 |
+
{
|
100 |
+
require_once WCACHE_PLUGIN_DIR . '/includes/includes/helpers.php';
|
101 |
+
require_once WCACHE_PLUGIN_DIR . '/includes/cache.php';
|
102 |
+
|
103 |
+
if( is_admin() ) {
|
104 |
+
require(WCACHE_PLUGIN_DIR . '/admin/boot.php');
|
105 |
+
if( class_exists('WCL_CachePage') ) {
|
106 |
+
WCL_Plugin::app()->registerPage('WCL_CacheProPage', WCACHE_PLUGIN_DIR . '/admin/pages/class-pages-cache.php');
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
add_filter('wbcr/clearfy/adminbar_menu_items', function ($menu_items) {
|
111 |
+
$menu_items['clearfy-clear-all-cache'] = [
|
112 |
+
'id' => 'clearfy-clear-all-cache',
|
113 |
+
'title' => '<span class="dashicons dashicons-update"></span> ' . __('Clear all cache', 'clearfy'),
|
114 |
+
'href' => add_query_arg('wclearfy_cache_delete', '1')
|
115 |
+
];
|
116 |
+
|
117 |
+
return $menu_items;
|
118 |
+
});
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
components/cache/includes/includes/cache.php
ADDED
@@ -0,0 +1,921 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class WCL_Create_Cache {
|
4 |
+
|
5 |
+
public $options = [];
|
6 |
+
public $cdn;
|
7 |
+
private $startTime;
|
8 |
+
private $blockCache = false;
|
9 |
+
private $err = "";
|
10 |
+
public $cacheFilePath = "";
|
11 |
+
public $exclude_rules = false;
|
12 |
+
public $preload_user_agent = false;
|
13 |
+
public $current_page_type = false;
|
14 |
+
public $current_page_content_type = false;
|
15 |
+
public $exclude_current_page_text = false;
|
16 |
+
|
17 |
+
public function __construct()
|
18 |
+
{
|
19 |
+
//to fix: PHP Notice: Undefined index: HTTP_USER_AGENT
|
20 |
+
$_SERVER['HTTP_USER_AGENT'] = isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT'] ? strip_tags($_SERVER['HTTP_USER_AGENT']) : "Empty User Agent";
|
21 |
+
|
22 |
+
if( preg_match("/(WP\sFastest\sCache\sPreload(\siPhone\sMobile)?\s*Bot)/", $_SERVER['HTTP_USER_AGENT']) ) {
|
23 |
+
$this->preload_user_agent = true;
|
24 |
+
} else {
|
25 |
+
$this->preload_user_agent = false;
|
26 |
+
}
|
27 |
+
|
28 |
+
//$this->set_cdn();
|
29 |
+
$this->set_cache_file_path();
|
30 |
+
}
|
31 |
+
|
32 |
+
public function detect_current_page_type()
|
33 |
+
{
|
34 |
+
if( preg_match("/\?/", $_SERVER["REQUEST_URI"]) ) {
|
35 |
+
return true;
|
36 |
+
}
|
37 |
+
|
38 |
+
if( preg_match("/^\/wp-json/", $_SERVER["REQUEST_URI"]) ) {
|
39 |
+
return true;
|
40 |
+
}
|
41 |
+
|
42 |
+
if( is_front_page() ) {
|
43 |
+
echo "<!--WCLEARFY_PAGE_TYPE_homepage-->";
|
44 |
+
} else if( is_category() ) {
|
45 |
+
echo "<!--WCLEARFY_PAGE_TYPE_category-->";
|
46 |
+
} else if( is_tag() ) {
|
47 |
+
echo "<!--WCLEARFY_PAGE_TYPE_tag-->";
|
48 |
+
} else if( is_singular('post') ) {
|
49 |
+
echo "<!--WCLEARFY_PAGE_TYPE_post-->";
|
50 |
+
} else if( is_page() ) {
|
51 |
+
echo "<!--WCLEARFY_PAGE_TYPE_page-->";
|
52 |
+
} else if( is_attachment() ) {
|
53 |
+
echo "<!--WCLEARFY_PAGE_TYPE_attachment-->";
|
54 |
+
} else if( is_archive() ) {
|
55 |
+
echo "<!--WCLEARFY_PAGE_TYPE_archive-->";
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
public function set_exclude_rules()
|
60 |
+
{
|
61 |
+
if( $json_data = get_option("WClearfyCacheExclude") ) {
|
62 |
+
$this->exclude_rules = json_decode($json_data);
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
public function set_cache_file_path()
|
67 |
+
{
|
68 |
+
$type = "all";
|
69 |
+
|
70 |
+
if( WCL_Cache_Helpers::isMobile() && WCL_Plugin::app()->getPopulateOption('cache_mobile') ) {
|
71 |
+
if( class_exists("WCL_MobileCache") && WCL_Plugin::app()->getPopulateOption('cache_mobile_theme') ) {
|
72 |
+
$type = "wclearfy-mobile-cache";
|
73 |
+
}
|
74 |
+
}
|
75 |
+
|
76 |
+
if( WCL_Cache_Helpers::isPluginActive('gtranslate/gtranslate.php') ) {
|
77 |
+
if( isset($_SERVER["HTTP_X_GT_LANG"]) ) {
|
78 |
+
$this->cacheFilePath = WCL_Cache_Helpers::getWpContentDir("/cache/" . $type . "/") . $_SERVER["HTTP_X_GT_LANG"] . $_SERVER["REQUEST_URI"];
|
79 |
+
} else if( isset($_SERVER["REDIRECT_URL"]) && $_SERVER["REDIRECT_URL"] != "/index.php" ) {
|
80 |
+
$this->cacheFilePath = WCL_Cache_Helpers::getWpContentDir("/cache/" . $type . "/") . $_SERVER["REDIRECT_URL"];
|
81 |
+
} else if( isset($_SERVER["REQUEST_URI"]) ) {
|
82 |
+
$this->cacheFilePath = WCL_Cache_Helpers::getWpContentDir("/cache/" . $type . "/") . $_SERVER["REQUEST_URI"];
|
83 |
+
}
|
84 |
+
} else {
|
85 |
+
$this->cacheFilePath = WCL_Cache_Helpers::getWpContentDir("/cache/" . $type . "/") . $_SERVER["REQUEST_URI"];
|
86 |
+
|
87 |
+
// for /?s=
|
88 |
+
$this->cacheFilePath = preg_replace("/(\/\?s\=)/", "$1/", $this->cacheFilePath);
|
89 |
+
}
|
90 |
+
|
91 |
+
$this->cacheFilePath = $this->cacheFilePath ? rtrim($this->cacheFilePath, "/") . "/" : "";
|
92 |
+
$this->cacheFilePath = preg_replace("/\/cache\/(all|wclearfy-mobile-cache)\/\//", "/cache/$1/", $this->cacheFilePath);
|
93 |
+
|
94 |
+
if( strlen($_SERVER["REQUEST_URI"]) > 1 ) { // for the sub-pages
|
95 |
+
if( !preg_match("/\.html/i", $_SERVER["REQUEST_URI"]) ) {
|
96 |
+
if( WCL_Cache_Helpers::is_trailing_slash() ) {
|
97 |
+
if( !preg_match("/\/$/", $_SERVER["REQUEST_URI"]) ) {
|
98 |
+
if( defined('WCACHE_QUERYSTRING') && WCACHE_QUERYSTRING ) {
|
99 |
+
|
100 |
+
} else if( preg_match("/gclid\=/i", $this->cacheFilePath) ) {
|
101 |
+
|
102 |
+
} else if( preg_match("/fbclid\=/i", $this->cacheFilePath) ) {
|
103 |
+
|
104 |
+
} else if( preg_match("/utm_(source|medium|campaign|content|term)/i", $this->cacheFilePath) ) {
|
105 |
+
|
106 |
+
} else {
|
107 |
+
$this->cacheFilePath = false;
|
108 |
+
}
|
109 |
+
}
|
110 |
+
} else {
|
111 |
+
//toDo
|
112 |
+
}
|
113 |
+
}
|
114 |
+
}
|
115 |
+
|
116 |
+
$this->remove_url_paramters();
|
117 |
+
|
118 |
+
// to decode path if it is not utf-8
|
119 |
+
if( $this->cacheFilePath ) {
|
120 |
+
$this->cacheFilePath = urldecode($this->cacheFilePath);
|
121 |
+
}
|
122 |
+
|
123 |
+
// for security
|
124 |
+
if( preg_match("/\.{2,}/", $this->cacheFilePath) ) {
|
125 |
+
$this->cacheFilePath = false;
|
126 |
+
}
|
127 |
+
if( WCL_Cache_Helpers::isMobile() ) {
|
128 |
+
if( WCL_Plugin::app()->getPopulateOption('cache_mobile') ) {
|
129 |
+
if( !class_exists("WCL_MobileCache") ) {
|
130 |
+
$this->cacheFilePath = false;
|
131 |
+
} else {
|
132 |
+
if( !WCL_Plugin::app()->getPopulateOption('cache_mobile_theme') ) {
|
133 |
+
$this->cacheFilePath = false;
|
134 |
+
}
|
135 |
+
}
|
136 |
+
}
|
137 |
+
}
|
138 |
+
}
|
139 |
+
|
140 |
+
public function remove_url_paramters()
|
141 |
+
{
|
142 |
+
$action = false;
|
143 |
+
|
144 |
+
//to remove query strings for cache if Google Click Identifier are set
|
145 |
+
if( preg_match("/gclid\=/i", $this->cacheFilePath) ) {
|
146 |
+
$action = true;
|
147 |
+
}
|
148 |
+
|
149 |
+
//to remove query strings for cache if facebook parameters are set
|
150 |
+
if( preg_match("/fbclid\=/i", $this->cacheFilePath) ) {
|
151 |
+
$action = true;
|
152 |
+
}
|
153 |
+
|
154 |
+
//to remove query strings for cache if google analytics parameters are set
|
155 |
+
if( preg_match("/utm_(source|medium|campaign|content|term)/i", $this->cacheFilePath) ) {
|
156 |
+
$action = true;
|
157 |
+
}
|
158 |
+
|
159 |
+
if( $action ) {
|
160 |
+
if( strlen($_SERVER["REQUEST_URI"]) > 1 ) { // for the sub-pages
|
161 |
+
|
162 |
+
$this->cacheFilePath = preg_replace("/\/*\?.+/", "", $this->cacheFilePath);
|
163 |
+
$this->cacheFilePath = $this->cacheFilePath . "/";
|
164 |
+
|
165 |
+
define('WCACHE_QUERYSTRING', true);
|
166 |
+
}
|
167 |
+
}
|
168 |
+
}
|
169 |
+
|
170 |
+
public function set_cdn()
|
171 |
+
{
|
172 |
+
$cdn_values = get_option("WClearfyCacheCDN");
|
173 |
+
if( $cdn_values ) {
|
174 |
+
$std_obj = json_decode($cdn_values);
|
175 |
+
$arr = [];
|
176 |
+
|
177 |
+
if( is_array($std_obj) ) {
|
178 |
+
$arr = $std_obj;
|
179 |
+
} else {
|
180 |
+
array_push($arr, $std_obj);
|
181 |
+
}
|
182 |
+
|
183 |
+
foreach($arr as $key => &$std) {
|
184 |
+
$std->originurl = trim($std->originurl);
|
185 |
+
$std->originurl = trim($std->originurl, "/");
|
186 |
+
$std->originurl = preg_replace("/http(s?)\:\/\/(www\.)?/i", "", $std->originurl);
|
187 |
+
|
188 |
+
$std->cdnurl = trim($std->cdnurl);
|
189 |
+
$std->cdnurl = trim($std->cdnurl, "/");
|
190 |
+
|
191 |
+
if( !preg_match("/https\:\/\//", $std->cdnurl) ) {
|
192 |
+
$std->cdnurl = "//" . preg_replace("/http(s?)\:\/\/(www\.)?/i", "", $std->cdnurl);
|
193 |
+
}
|
194 |
+
}
|
195 |
+
|
196 |
+
$this->cdn = $arr;
|
197 |
+
}
|
198 |
+
}
|
199 |
+
|
200 |
+
public function checkShortCode($content)
|
201 |
+
{
|
202 |
+
if( preg_match("/\[wclearfyNOT\]/", $content) ) {
|
203 |
+
if( !is_home() || !is_archive() ) {
|
204 |
+
$this->blockCache = true;
|
205 |
+
}
|
206 |
+
$content = str_replace("[wclearfyNOT]", "", $content);
|
207 |
+
}
|
208 |
+
|
209 |
+
return $content;
|
210 |
+
}
|
211 |
+
|
212 |
+
public function createCache()
|
213 |
+
{
|
214 |
+
if( !WCL_Plugin::app()->getPopulateOption('enable_cache') ) {
|
215 |
+
return 0;
|
216 |
+
}
|
217 |
+
|
218 |
+
// to exclude static pdf files
|
219 |
+
if( preg_match("/\.pdf$/i", $_SERVER["REQUEST_URI"]) ) {
|
220 |
+
return 0;
|
221 |
+
}
|
222 |
+
|
223 |
+
// to check logged-in user
|
224 |
+
if( WCL_Plugin::app()->getPopulateOption('dont_cache_for_logged_in_users') ) {
|
225 |
+
foreach((array)$_COOKIE as $cookie_key => $cookie_value) {
|
226 |
+
if( preg_match("/wordpress_logged_in/i", $cookie_key) ) {
|
227 |
+
ob_start([$this, "cdn_rewrite"]);
|
228 |
+
|
229 |
+
return 0;
|
230 |
+
}
|
231 |
+
}
|
232 |
+
}
|
233 |
+
|
234 |
+
// to exclude admin users
|
235 |
+
foreach((array)$_COOKIE as $cookie_key => $cookie_value) {
|
236 |
+
if( preg_match("/wordpress_logged_in/i", $cookie_key) ) {
|
237 |
+
$users_groups = get_users(["role" => "administrator", "fields" => ["user_login"]]);
|
238 |
+
|
239 |
+
foreach($users_groups as $user_key => $user_value) {
|
240 |
+
if( preg_match("/^" . preg_quote($user_value->user_login, "/") . "/", $cookie_value) ) {
|
241 |
+
ob_start([$this, "cdn_rewrite"]);
|
242 |
+
|
243 |
+
return 0;
|
244 |
+
}
|
245 |
+
}
|
246 |
+
}
|
247 |
+
}
|
248 |
+
|
249 |
+
// to check comment author
|
250 |
+
foreach((array)$_COOKIE as $cookie_key => $cookie_value) {
|
251 |
+
if( preg_match("/comment_author_/i", $cookie_key) ) {
|
252 |
+
ob_start([$this, "cdn_rewrite"]);
|
253 |
+
|
254 |
+
return 0;
|
255 |
+
}
|
256 |
+
}
|
257 |
+
|
258 |
+
if( isset($_COOKIE) && isset($_COOKIE['safirmobilswitcher']) ) {
|
259 |
+
ob_start([$this, "cdn_rewrite"]);
|
260 |
+
|
261 |
+
return 0;
|
262 |
+
}
|
263 |
+
|
264 |
+
if( isset($_COOKIE) && isset($_COOKIE["wptouch-pro-view"]) ) {
|
265 |
+
if( WCL_Cache_Helpers::is_wptouch_smartphone() ) {
|
266 |
+
if( $_COOKIE["wptouch-pro-view"] == "desktop" ) {
|
267 |
+
ob_start([$this, "cdn_rewrite"]);
|
268 |
+
|
269 |
+
return 0;
|
270 |
+
}
|
271 |
+
}
|
272 |
+
}
|
273 |
+
|
274 |
+
if( preg_match("/\?/", $_SERVER["REQUEST_URI"]) && !preg_match("/\/\?fdx\_switcher\=true/", $_SERVER["REQUEST_URI"]) ) { // for WP Mobile Edition
|
275 |
+
if( preg_match("/\?amp(\=1)?/i", $_SERVER["REQUEST_URI"]) ) {
|
276 |
+
//
|
277 |
+
} else if( defined('WCACHE_QUERYSTRING') && WCACHE_QUERYSTRING ) {
|
278 |
+
//
|
279 |
+
} else {
|
280 |
+
ob_start([$this, "cdn_rewrite"]);
|
281 |
+
|
282 |
+
return 0;
|
283 |
+
}
|
284 |
+
}
|
285 |
+
|
286 |
+
if( preg_match("/(" . WCL_Cache_Helpers::get_excluded_useragent() . ")/", $_SERVER['HTTP_USER_AGENT']) ) {
|
287 |
+
return 0;
|
288 |
+
}
|
289 |
+
|
290 |
+
if( isset($_SERVER['REQUEST_URI']) && preg_match("/(\/){2}$/", $_SERVER['REQUEST_URI']) ) {
|
291 |
+
return 0;
|
292 |
+
}
|
293 |
+
|
294 |
+
// to check permalink if it does not end with slash
|
295 |
+
if( isset($_SERVER['REQUEST_URI']) && preg_match("/[^\/]+\/$/", $_SERVER['REQUEST_URI']) ) {
|
296 |
+
if( !preg_match("/\/$/", get_option('permalink_structure')) ) {
|
297 |
+
return 0;
|
298 |
+
}
|
299 |
+
}
|
300 |
+
|
301 |
+
if( isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == "POST" ) {
|
302 |
+
return 0;
|
303 |
+
}
|
304 |
+
|
305 |
+
if( preg_match("/^https/i", get_option("home")) && !is_ssl() ) {
|
306 |
+
//Must be secure connection
|
307 |
+
return 0;
|
308 |
+
}
|
309 |
+
|
310 |
+
if( !preg_match("/^https/i", get_option("home")) && is_ssl() ) {
|
311 |
+
//must be normal connection
|
312 |
+
if( !WCL_Cache_Helpers::isPluginActive('really-simple-ssl/rlrsssl-really-simple-ssl.php') ) {
|
313 |
+
if( !WCL_Cache_Helpers::isPluginActive('really-simple-ssl-pro/really-simple-ssl-pro.php') ) {
|
314 |
+
if( !WCL_Cache_Helpers::isPluginActive('really-simple-ssl-on-specific-pages/really-simple-ssl-on-specific-pages.php') ) {
|
315 |
+
if( !WCL_Cache_Helpers::isPluginActive('ssl-insecure-content-fixer/ssl-insecure-content-fixer.php') ) {
|
316 |
+
if( !WCL_Cache_Helpers::isPluginActive('https-redirection/https-redirection.php') ) {
|
317 |
+
if( !WCL_Cache_Helpers::isPluginActive('better-wp-security/better-wp-security.php') ) {
|
318 |
+
return 0;
|
319 |
+
}
|
320 |
+
}
|
321 |
+
}
|
322 |
+
}
|
323 |
+
}
|
324 |
+
}
|
325 |
+
}
|
326 |
+
|
327 |
+
if( preg_match("/www\./i", get_option("home")) && !preg_match("/www\./i", $_SERVER['HTTP_HOST']) ) {
|
328 |
+
return 0;
|
329 |
+
}
|
330 |
+
|
331 |
+
if( !preg_match("/www\./i", get_option("home")) && preg_match("/www\./i", $_SERVER['HTTP_HOST']) ) {
|
332 |
+
return 0;
|
333 |
+
}
|
334 |
+
|
335 |
+
if( $this->exclude_page() ) {
|
336 |
+
//echo "<!-- Clearfy Cache: Exclude Page -->"."\n";
|
337 |
+
return 0;
|
338 |
+
}
|
339 |
+
|
340 |
+
// http://mobiledetect.net/ does not contain the following user-agents
|
341 |
+
if( preg_match("/Nokia309|Casper_VIA/i", $_SERVER['HTTP_USER_AGENT']) ) {
|
342 |
+
return 0;
|
343 |
+
}
|
344 |
+
|
345 |
+
if( preg_match("/Empty\sUser\sAgent/i", $_SERVER['HTTP_USER_AGENT']) ) { // not to show the cache for command line
|
346 |
+
return 0;
|
347 |
+
}
|
348 |
+
|
349 |
+
//to show cache version via php if htaccess rewrite rule does not work
|
350 |
+
if( !$this->preload_user_agent && $this->cacheFilePath && (@file_exists($this->cacheFilePath . "index.html") || @file_exists($this->cacheFilePath . "index.json") || @file_exists($this->cacheFilePath . "index.xml")) ) {
|
351 |
+
|
352 |
+
$via_php = "";
|
353 |
+
if( @file_exists($this->cacheFilePath . "index.json") ) {
|
354 |
+
$file_extension = "json";
|
355 |
+
|
356 |
+
header('Content-type: application/json');
|
357 |
+
} else if( @file_exists($this->cacheFilePath . "index.xml") ) {
|
358 |
+
$file_extension = "xml";
|
359 |
+
|
360 |
+
header('Content-type: text/xml');
|
361 |
+
} else {
|
362 |
+
$file_extension = "html";
|
363 |
+
$via_php = "<!-- via php -->";
|
364 |
+
}
|
365 |
+
|
366 |
+
if( $content = @file_get_contents($this->cacheFilePath . "index." . $file_extension) ) {
|
367 |
+
if( defined('WCLEARFY_REMOVE_VIA_FOOTER_COMMENT') && WCLEARFY_REMOVE_VIA_FOOTER_COMMENT ) {
|
368 |
+
$via_php = "";
|
369 |
+
}
|
370 |
+
|
371 |
+
$content = $content . $via_php;
|
372 |
+
|
373 |
+
die($content);
|
374 |
+
}
|
375 |
+
} else {
|
376 |
+
if( WCL_Cache_Helpers::isMobile() ) {
|
377 |
+
if( class_exists("WCL_MobileCache") && WCL_Plugin::app()->getPopulateOption('cache_mobile_theme') ) {
|
378 |
+
if( WCL_Plugin::app()->getPopulateOption('cache_mobile_theme_name') ) {
|
379 |
+
$create_cache = true;
|
380 |
+
} else if( WCL_Cache_Helpers::isPluginActive('wptouch/wptouch.php') || WCL_Cache_Helpers::isPluginActive('wptouch-pro/wptouch-pro.php') ) {
|
381 |
+
//to check that user-agent exists in wp-touch's list or not
|
382 |
+
if( WCL_Cache_Helpers::is_wptouch_smartphone() ) {
|
383 |
+
$create_cache = true;
|
384 |
+
} else {
|
385 |
+
$create_cache = false;
|
386 |
+
}
|
387 |
+
} else if( WCL_Cache_Helpers::isPluginActive('any-mobile-theme-switcher/any-mobile-theme-switcher.php') ) {
|
388 |
+
if( WCL_Cache_Helpers::is_anymobilethemeswitcher_mobile() ) {
|
389 |
+
$create_cache = true;
|
390 |
+
} else {
|
391 |
+
$create_cache = false;
|
392 |
+
}
|
393 |
+
} else {
|
394 |
+
if( (preg_match('/iPhone/', $_SERVER['HTTP_USER_AGENT']) && preg_match('/Mobile/', $_SERVER['HTTP_USER_AGENT'])) || (preg_match('/Android/', $_SERVER['HTTP_USER_AGENT']) && preg_match('/Mobile/', $_SERVER['HTTP_USER_AGENT'])) ) {
|
395 |
+
$create_cache = true;
|
396 |
+
} else {
|
397 |
+
$create_cache = false;
|
398 |
+
}
|
399 |
+
}
|
400 |
+
} else if( !WCL_Plugin::app()->getPopulateOption('cache_mobile') && !WCL_Plugin::app()->getPopulateOption('cache_mobile_theme') ) {
|
401 |
+
$create_cache = true;
|
402 |
+
} else {
|
403 |
+
$create_cache = false;
|
404 |
+
}
|
405 |
+
} else {
|
406 |
+
$create_cache = true;
|
407 |
+
}
|
408 |
+
|
409 |
+
if( $create_cache ) {
|
410 |
+
$this->startTime = microtime(true);
|
411 |
+
|
412 |
+
add_action('wp', [$this, "detect_current_page_type"]);
|
413 |
+
add_action('get_footer', [$this, "detect_current_page_type"]);
|
414 |
+
add_action('get_footer', [$this, "wp_print_scripts_action"]);
|
415 |
+
|
416 |
+
// to exclude current page hook
|
417 |
+
add_action("wclearfy_exclude_current_page", [$this, 'exclude_current_page'], 10, 0);
|
418 |
+
|
419 |
+
ob_start([$this, "callback"]);
|
420 |
+
}
|
421 |
+
}
|
422 |
+
}
|
423 |
+
|
424 |
+
public function exclude_current_page($some = true)
|
425 |
+
{
|
426 |
+
$via = debug_backtrace();
|
427 |
+
|
428 |
+
if( isset($via) && is_array($via) ) {
|
429 |
+
foreach($via as $key => $value) {
|
430 |
+
if( $value["function"] == "wclearfy_exclude_current_page" ) {
|
431 |
+
|
432 |
+
if( defined('WCLEARFY_DEBUG') && (WCLEARFY_DEBUG === true) ) {
|
433 |
+
if( preg_match("/wp-content\/themes/", $value["file"]) ) {
|
434 |
+
$this->exclude_current_page_text = "<!-- This page has been excluded by " . basename($value["file"]) . " of the Theme -->";
|
435 |
+
} else if( preg_match("/wp-content\/plugins/", $value["file"]) ) {
|
436 |
+
$this->exclude_current_page_text = "<!-- This page has been excluded by " . basename($value["file"]) . " of " . preg_replace("/([^\/]+)\/.+/", "$1", plugin_basename($value["file"])) . " -->";
|
437 |
+
}
|
438 |
+
} else {
|
439 |
+
$this->exclude_current_page_text = "<!-- This page has been excluded -->";
|
440 |
+
}
|
441 |
+
|
442 |
+
break;
|
443 |
+
}
|
444 |
+
}
|
445 |
+
}
|
446 |
+
}
|
447 |
+
|
448 |
+
public function wp_print_scripts_action()
|
449 |
+
{
|
450 |
+
echo "<!--WCLEARFY_FOOTER_START-->";
|
451 |
+
}
|
452 |
+
|
453 |
+
public function ignored($buffer)
|
454 |
+
{
|
455 |
+
$list = [
|
456 |
+
"\/wp\-comments\-post\.php",
|
457 |
+
"\/wp\-login\.php",
|
458 |
+
"\/robots\.txt",
|
459 |
+
"\/wp\-cron\.php",
|
460 |
+
"\/wp\-content",
|
461 |
+
"\/wp\-admin",
|
462 |
+
"\/wp\-includes",
|
463 |
+
"\/index\.php",
|
464 |
+
"\/xmlrpc\.php",
|
465 |
+
"\/wp\-api\/",
|
466 |
+
"leaflet\-geojson\.php",
|
467 |
+
"\/clientarea\.php"
|
468 |
+
];
|
469 |
+
if( WCL_Cache_Helpers::isPluginActive('woocommerce/woocommerce.php') ) {
|
470 |
+
if( $this->current_page_type != "homepage" ) {
|
471 |
+
global $post;
|
472 |
+
|
473 |
+
if( isset($post->ID) && $post->ID ) {
|
474 |
+
if( function_exists("wc_get_page_id") ) {
|
475 |
+
$woocommerce_ids = [];
|
476 |
+
array_push($woocommerce_ids, wc_get_page_id('cart'), wc_get_page_id('checkout'), wc_get_page_id('receipt'), wc_get_page_id('confirmation'), wc_get_page_id('myaccount'));
|
477 |
+
|
478 |
+
if( in_array($post->ID, $woocommerce_ids) ) {
|
479 |
+
return true;
|
480 |
+
}
|
481 |
+
}
|
482 |
+
}
|
483 |
+
|
484 |
+
array_push($list, "\/cart\/?$", "\/checkout", "\/receipt", "\/confirmation", "\/wc-api\/");
|
485 |
+
}
|
486 |
+
}
|
487 |
+
|
488 |
+
if( WCL_Cache_Helpers::isPluginActive('wp-easycart/wpeasycart.php') ) {
|
489 |
+
array_push($list, "\/cart");
|
490 |
+
}
|
491 |
+
|
492 |
+
if( WCL_Cache_Helpers::isPluginActive('easy-digital-downloads/easy-digital-downloads.php') ) {
|
493 |
+
array_push($list, "\/cart", "\/checkout");
|
494 |
+
}
|
495 |
+
|
496 |
+
if( preg_match("/" . implode("|", $list) . "/i", $_SERVER["REQUEST_URI"]) ) {
|
497 |
+
return true;
|
498 |
+
}
|
499 |
+
|
500 |
+
return false;
|
501 |
+
}
|
502 |
+
|
503 |
+
public function exclude_page($buffer = false)
|
504 |
+
{
|
505 |
+
$preg_match_rule = "";
|
506 |
+
$request_url = urldecode(trim($_SERVER["REQUEST_URI"], "/"));
|
507 |
+
|
508 |
+
$exclude_uris = WCL_Plugin::app()->getPopulateOption('cache_reject_uri');
|
509 |
+
|
510 |
+
if( !empty($exclude_uris) ) {
|
511 |
+
$exclude_uris = array_map(function ($value) {
|
512 |
+
$site_url = site_url();
|
513 |
+
|
514 |
+
$value = trim(rtrim($value));
|
515 |
+
// http://clearfy.pro/members/ -> /members/
|
516 |
+
$value = str_replace($site_url, "", $value);
|
517 |
+
// /members/(.*) -> members/(.*)
|
518 |
+
$value = preg_replace("/^\//", "", $value);
|
519 |
+
// members/ -> members
|
520 |
+
$value = untrailingslashit($value);
|
521 |
+
|
522 |
+
return $value;
|
523 |
+
}, preg_split('/\r\n|\n|\r/', $exclude_uris));
|
524 |
+
} else {
|
525 |
+
$exclude_uris = [];
|
526 |
+
}
|
527 |
+
|
528 |
+
foreach($exclude_uris as $uri) {
|
529 |
+
if( $uri === $request_url ) {
|
530 |
+
return true;
|
531 |
+
}
|
532 |
+
|
533 |
+
if( !empty($uri) && @preg_match('/' . $uri . '/i', $request_url) ) {
|
534 |
+
return true;
|
535 |
+
}
|
536 |
+
}
|
537 |
+
|
538 |
+
return false;
|
539 |
+
}
|
540 |
+
|
541 |
+
public function is_json()
|
542 |
+
{
|
543 |
+
return $this->current_page_content_type == "json" ? true : false;
|
544 |
+
}
|
545 |
+
|
546 |
+
public function is_xml()
|
547 |
+
{
|
548 |
+
return $this->current_page_content_type == "xml" ? true : false;
|
549 |
+
}
|
550 |
+
|
551 |
+
public function is_html()
|
552 |
+
{
|
553 |
+
return $this->current_page_content_type == "html" ? true : false;
|
554 |
+
}
|
555 |
+
|
556 |
+
public function set_current_page_type($buffer)
|
557 |
+
{
|
558 |
+
preg_match('/<\!--WCLEARFY_PAGE_TYPE_([a-z]+)-->/i', $buffer, $out);
|
559 |
+
|
560 |
+
$this->current_page_type = isset($out[1]) ? $out[1] : false;
|
561 |
+
}
|
562 |
+
|
563 |
+
public function set_current_page_content_type($buffer)
|
564 |
+
{
|
565 |
+
$content_type = false;
|
566 |
+
if( function_exists("headers_list") ) {
|
567 |
+
$headers = headers_list();
|
568 |
+
foreach($headers as $header) {
|
569 |
+
if( preg_match("/Content-Type\:/i", $header) ) {
|
570 |
+
$content_type = preg_replace("/Content-Type\:\s(.+)/i", "$1", $header);
|
571 |
+
}
|
572 |
+
}
|
573 |
+
}
|
574 |
+
|
575 |
+
if( preg_match("/xml/i", $content_type) ) {
|
576 |
+
$this->current_page_content_type = "xml";
|
577 |
+
} else if( preg_match("/json/i", $content_type) ) {
|
578 |
+
$this->current_page_content_type = "json";
|
579 |
+
} else {
|
580 |
+
$this->current_page_content_type = "html";
|
581 |
+
}
|
582 |
+
}
|
583 |
+
|
584 |
+
public function last_error($buffer = false)
|
585 |
+
{
|
586 |
+
if( function_exists("http_response_code") && (http_response_code() === 404) ) {
|
587 |
+
return true;
|
588 |
+
}
|
589 |
+
|
590 |
+
if( is_404() ) {
|
591 |
+
return true;
|
592 |
+
}
|
593 |
+
|
594 |
+
if( preg_match("/<body id\=\"error-page\">\s*<p>[^\>]+<\/p>\s*<\/body>/i", $buffer) ) {
|
595 |
+
return true;
|
596 |
+
}
|
597 |
+
}
|
598 |
+
|
599 |
+
public function callback($buffer)
|
600 |
+
{
|
601 |
+
$this->set_current_page_type($buffer);
|
602 |
+
$this->set_current_page_content_type($buffer);
|
603 |
+
|
604 |
+
$buffer = $this->checkShortCode($buffer);
|
605 |
+
|
606 |
+
// for Wordfence: not to cache 503 pages
|
607 |
+
if( defined('DONOTCACHEPAGE') && WCL_Cache_Helpers::isPluginActive('wordfence/wordfence.php') ) {
|
608 |
+
if( function_exists("http_response_code") && http_response_code() == 503 ) {
|
609 |
+
return $buffer . "<!-- DONOTCACHEPAGE is defined as TRUE -->";
|
610 |
+
}
|
611 |
+
}
|
612 |
+
|
613 |
+
// for iThemes Security: not to cache 403 pages
|
614 |
+
if( defined('DONOTCACHEPAGE') && WCL_Cache_Helpers::isPluginActive('better-wp-security/better-wp-security.php') ) {
|
615 |
+
if( function_exists("http_response_code") && http_response_code() == 403 ) {
|
616 |
+
return $buffer . "<!-- DONOTCACHEPAGE is defined as TRUE -->";
|
617 |
+
}
|
618 |
+
}
|
619 |
+
|
620 |
+
if( $this->exclude_page($buffer) ) {
|
621 |
+
$buffer = preg_replace('/<\!--WCLEARFY_PAGE_TYPE_[a-z]+-->/i', '', $buffer);
|
622 |
+
|
623 |
+
return $buffer;
|
624 |
+
}
|
625 |
+
|
626 |
+
$buffer = preg_replace('/<\!--WCLEARFY_PAGE_TYPE_[a-z]+-->/i', '', $buffer);
|
627 |
+
|
628 |
+
if( $this->exclude_current_page_text ) {
|
629 |
+
return $buffer . $this->exclude_current_page_text;
|
630 |
+
} else if( $this->is_json() && (!defined('WCACHE_JSON') || (defined('WCACHE_JSON') && WCACHE_JSON !== true)) ) {
|
631 |
+
return $buffer;
|
632 |
+
} else if( preg_match("/Mediapartners-Google|Google\sWireless\sTranscoder/i", $_SERVER['HTTP_USER_AGENT']) ) {
|
633 |
+
return $buffer;
|
634 |
+
} else if( is_user_logged_in() || $this->isCommenter() ) {
|
635 |
+
return $buffer;
|
636 |
+
} else if( $this->isPasswordProtected($buffer) ) {
|
637 |
+
return $buffer . "<!-- Password protected content has been detected -->";
|
638 |
+
} else if( WCL_Cache_Helpers::isWpLogin($buffer) ) {
|
639 |
+
return $buffer . "<!-- wp-login.php -->";
|
640 |
+
} else if( WCL_Cache_Helpers::hasContactForm7WithCaptcha($buffer) ) {
|
641 |
+
return $buffer . "<!-- This page was not cached because ContactForm7's captcha -->";
|
642 |
+
} else if( $this->last_error($buffer) ) {
|
643 |
+
return $buffer;
|
644 |
+
} else if( $this->ignored($buffer) ) {
|
645 |
+
return $buffer;
|
646 |
+
} else if( $this->blockCache === true ) {
|
647 |
+
return $buffer . "<!-- wclearfyNOT has been detected -->";
|
648 |
+
} else if( isset($_GET["preview"]) ) {
|
649 |
+
return $buffer . "<!-- not cached -->";
|
650 |
+
} else if( $this->checkHtml($buffer) ) {
|
651 |
+
return $buffer . "<!-- html is corrupted -->";
|
652 |
+
} else if( (function_exists("http_response_code")) && (http_response_code() == 301 || http_response_code() == 302) ) {
|
653 |
+
return $buffer;
|
654 |
+
} else if( !$this->cacheFilePath ) {
|
655 |
+
return $buffer . "<!-- permalink_structure ends with slash (/) but REQUEST_URI does not end with slash (/) -->";
|
656 |
+
} else {
|
657 |
+
$content = $buffer;
|
658 |
+
|
659 |
+
if( $this->err ) {
|
660 |
+
return $buffer . "<!-- " . $this->err . " -->";
|
661 |
+
} else {
|
662 |
+
$content = $this->cacheDate($content);
|
663 |
+
$content = str_replace("<!--WCLEARFY_FOOTER_START-->", "", $content);
|
664 |
+
|
665 |
+
$content = $this->cdn_rewrite($content);
|
666 |
+
$content = $this->fix_pre_tag($content, $buffer);
|
667 |
+
|
668 |
+
if( $this->cacheFilePath ) {
|
669 |
+
if( $this->is_html() ) {
|
670 |
+
$this->createFolder($this->cacheFilePath, $content);
|
671 |
+
do_action('wclearfy_is_cacheable_action');
|
672 |
+
} else if( $this->is_xml() ) {
|
673 |
+
if( preg_match("/<link><\/link>/", $buffer) ) {
|
674 |
+
if( preg_match("/\/feed$/", $_SERVER["REQUEST_URI"]) ) {
|
675 |
+
return $buffer . time();
|
676 |
+
}
|
677 |
+
}
|
678 |
+
|
679 |
+
$this->createFolder($this->cacheFilePath, $buffer, "xml");
|
680 |
+
do_action('wclearfy_is_cacheable_action');
|
681 |
+
|
682 |
+
return $buffer;
|
683 |
+
} else if( $this->is_json() ) {
|
684 |
+
$this->createFolder($this->cacheFilePath, $buffer, "json");
|
685 |
+
do_action('wclearfy_is_cacheable_action');
|
686 |
+
|
687 |
+
return $buffer;
|
688 |
+
}
|
689 |
+
}
|
690 |
+
|
691 |
+
return $content . "<!-- need to refresh to see cached version -->";
|
692 |
+
}
|
693 |
+
}
|
694 |
+
}
|
695 |
+
|
696 |
+
public function fix_pre_tag($content, $buffer)
|
697 |
+
{
|
698 |
+
if( preg_match("/<pre[^\>]*>/i", $buffer) ) {
|
699 |
+
preg_match_all("/<pre[^\>]*>((?!<\/pre>).)+<\/pre>/is", $buffer, $pre_buffer);
|
700 |
+
preg_match_all("/<pre[^\>]*>((?!<\/pre>).)+<\/pre>/is", $content, $pre_content);
|
701 |
+
|
702 |
+
if( isset($pre_content[0]) && isset($pre_content[0][0]) ) {
|
703 |
+
foreach($pre_content[0] as $key => $value) {
|
704 |
+
/*
|
705 |
+
location ~ / {
|
706 |
+
set $path /path/$1/index.html;
|
707 |
+
}
|
708 |
+
*/
|
709 |
+
if( isset($pre_buffer[0][$key]) ) {
|
710 |
+
$pre_buffer[0][$key] = preg_replace('/\$(\d)/', '\\\$$1', $pre_buffer[0][$key]);
|
711 |
+
|
712 |
+
$content = preg_replace("/" . preg_quote($value, "/") . "/", $pre_buffer[0][$key], $content);
|
713 |
+
}
|
714 |
+
}
|
715 |
+
}
|
716 |
+
}
|
717 |
+
|
718 |
+
return $content;
|
719 |
+
}
|
720 |
+
|
721 |
+
public function cdn_rewrite($content)
|
722 |
+
{
|
723 |
+
if( $this->cdn ) {
|
724 |
+
$content = preg_replace_callback("/(srcset|src|href|data-vc-parallax-image|data-bg|data-fullurl|data-mobileurl|data-img-url|data-cvpsrc|data-cvpset|data-thumb|data-bg-url|data-large_image|data-lazyload|data-lazy|data-source-url|data-srcsmall|data-srclarge|data-srcfull|data-slide-img|data-lazy-original)\s{0,2}\=\s{0,2}[\'\"]([^\'\"]+)[\'\"]/i", [
|
725 |
+
$this,
|
726 |
+
'cdn_replace_urls'
|
727 |
+
], $content);
|
728 |
+
|
729 |
+
//url()
|
730 |
+
$content = preg_replace_callback("/(url)\(([^\)\>]+)\)/i", [$this, 'cdn_replace_urls'], $content);
|
731 |
+
|
732 |
+
//{"concatemoji":"http:\/\/your_url.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=4.7"}
|
733 |
+
$content = preg_replace_callback("/\{\"concatemoji\"\:\"[^\"]+\"\}/i", [
|
734 |
+
$this,
|
735 |
+
'cdn_replace_urls'
|
736 |
+
], $content);
|
737 |
+
|
738 |
+
//<script>var loaderRandomImages=["https:\/\/www.site.com\/wp-content\/uploads\/2016\/12\/image.jpg"];</script>
|
739 |
+
$content = preg_replace_callback("/[\"\']([^\'\"]+)[\"\']\s*\:\s*[\"\']https?\:\\\\\/\\\\\/[^\"\']+[\"\']/i", [
|
740 |
+
$this,
|
741 |
+
'cdn_replace_urls'
|
742 |
+
], $content);
|
743 |
+
|
744 |
+
// <script>
|
745 |
+
// jsFileLocation:"//domain.com/wp-content/plugins/revslider/public/assets/js/"
|
746 |
+
// </script>
|
747 |
+
$content = preg_replace_callback("/(jsFileLocation)\s*\:[\"\']([^\"\']+)[\"\']/i", [
|
748 |
+
$this,
|
749 |
+
'cdn_replace_urls'
|
750 |
+
], $content);
|
751 |
+
|
752 |
+
// <form data-product_variations="[{"src":"//domain.com\/img.jpg"}]">
|
753 |
+
// <div data-siteorigin-parallax="{"backgroundUrl":"https:\/\/domain.com\/wp-content\/TOR.jpg","backgroundSize":[830,467],"}" data-stretch-type="full">
|
754 |
+
$content = preg_replace_callback("/(data-product_variations|data-siteorigin-parallax)\=[\"\'][^\"\']+[\"\']/i", [
|
755 |
+
$this,
|
756 |
+
'cdn_replace_urls'
|
757 |
+
], $content);
|
758 |
+
|
759 |
+
// <object data="https://site.com/source.swf" type="application/x-shockwave-flash"></object>
|
760 |
+
$content = preg_replace_callback("/<object[^\>]+(data)\s{0,2}\=[\'\"]([^\'\"]+)[\'\"][^\>]+>/i", [
|
761 |
+
$this,
|
762 |
+
'cdn_replace_urls'
|
763 |
+
], $content);
|
764 |
+
}
|
765 |
+
|
766 |
+
return $content;
|
767 |
+
}
|
768 |
+
|
769 |
+
public function get_header($content)
|
770 |
+
{
|
771 |
+
$head_first_index = strpos($content, "<head");
|
772 |
+
$head_last_index = strpos($content, "</head>");
|
773 |
+
|
774 |
+
return substr($content, $head_first_index, ($head_last_index - $head_first_index + 1));
|
775 |
+
}
|
776 |
+
|
777 |
+
public function checkHtml($buffer)
|
778 |
+
{
|
779 |
+
if( !$this->is_html() ) {
|
780 |
+
return false;
|
781 |
+
}
|
782 |
+
|
783 |
+
if( preg_match('/<html[^\>]*>/si', $buffer) && preg_match('/<body[^\>]*>/si', $buffer) ) {
|
784 |
+
return false;
|
785 |
+
}
|
786 |
+
// if(strlen($buffer) > 10){
|
787 |
+
// return false;
|
788 |
+
// }
|
789 |
+
|
790 |
+
return true;
|
791 |
+
}
|
792 |
+
|
793 |
+
public function cacheDate($buffer)
|
794 |
+
{
|
795 |
+
if( WCL_Cache_Helpers::isMobile() && class_exists("WCL_MobileCache") && WCL_Plugin::app()->getPopulateOption('cache_mobile') && WCL_Plugin::app()->getPopulateOption('cache_mobile_theme') ) {
|
796 |
+
$comment = "<!-- Mobile: Clearfy Cache file was created in " . $this->creationTime() . " seconds, on " . date("d-m-y G:i:s", current_time('timestamp')) . " -->";
|
797 |
+
} else {
|
798 |
+
$comment = "<!-- Clearfy Cache file was created in " . $this->creationTime() . " seconds, on " . date("d-m-y G:i:s", current_time('timestamp')) . " -->";
|
799 |
+
}
|
800 |
+
|
801 |
+
if( defined('WCLEARFY_REMOVE_FOOTER_COMMENT') && WCLEARFY_REMOVE_FOOTER_COMMENT ) {
|
802 |
+
return $buffer;
|
803 |
+
} else {
|
804 |
+
return $buffer . $comment;
|
805 |
+
}
|
806 |
+
}
|
807 |
+
|
808 |
+
public function creationTime()
|
809 |
+
{
|
810 |
+
return microtime(true) - $this->startTime;
|
811 |
+
}
|
812 |
+
|
813 |
+
public function isCommenter()
|
814 |
+
{
|
815 |
+
$commenter = wp_get_current_commenter();
|
816 |
+
|
817 |
+
return isset($commenter["comment_author_email"]) && $commenter["comment_author_email"] ? true : false;
|
818 |
+
}
|
819 |
+
|
820 |
+
public function isPasswordProtected($buffer)
|
821 |
+
{
|
822 |
+
if( preg_match("/action\=[\'\"].+postpass.*[\'\"]/", $buffer) ) {
|
823 |
+
return true;
|
824 |
+
}
|
825 |
+
|
826 |
+
foreach($_COOKIE as $key => $value) {
|
827 |
+
if( preg_match("/wp\-postpass\_/", $key) ) {
|
828 |
+
return true;
|
829 |
+
}
|
830 |
+
}
|
831 |
+
|
832 |
+
return false;
|
833 |
+
}
|
834 |
+
|
835 |
+
public function create_name($list)
|
836 |
+
{
|
837 |
+
$arr = is_array($list) ? $list : [["href" => $list]];
|
838 |
+
$name = "";
|
839 |
+
|
840 |
+
foreach($arr as $tag_key => $tag_value) {
|
841 |
+
$tmp = preg_replace("/(\.css|\.js)\?.*/", "$1", $tag_value["href"]); //to remove version number
|
842 |
+
$name = $name . $tmp;
|
843 |
+
}
|
844 |
+
|
845 |
+
return base_convert(crc32($name), 20, 36);
|
846 |
+
}
|
847 |
+
|
848 |
+
public function createFolder($cachFilePath, $buffer, $extension = "html", $prefix = false)
|
849 |
+
{
|
850 |
+
$create = false;
|
851 |
+
$file_name = "index.";
|
852 |
+
$update_db_statistic = true;
|
853 |
+
|
854 |
+
if( $buffer && strlen($buffer) > 100 && preg_match("/html|xml|json/i", $extension) ) {
|
855 |
+
if( !preg_match("/^\<\!\-\-\sMobile\:\sWP\sFastest\sCache/i", $buffer) ) {
|
856 |
+
if( !preg_match("/^\<\!\-\-\sWP\sFastest\sCache/i", $buffer) ) {
|
857 |
+
$create = true;
|
858 |
+
}
|
859 |
+
}
|
860 |
+
|
861 |
+
if( $this->preload_user_agent ) {
|
862 |
+
if( file_exists($cachFilePath . "/" . "index." . $extension) ) {
|
863 |
+
$update_db_statistic = false;
|
864 |
+
@unlink($cachFilePath . "/" . "index." . $extension);
|
865 |
+
}
|
866 |
+
}
|
867 |
+
}
|
868 |
+
|
869 |
+
if( ($extension == "svg" || $extension == "woff" || $extension == "css" || $extension == "js") && $buffer && strlen($buffer) > 5 ) {
|
870 |
+
$create = true;
|
871 |
+
$file_name = base_convert(substr(time(), -6), 20, 36) . ".";
|
872 |
+
$buffer = trim($buffer);
|
873 |
+
|
874 |
+
if( $extension == "js" ) {
|
875 |
+
if( substr($buffer, -1) != ";" ) {
|
876 |
+
$buffer .= ";";
|
877 |
+
}
|
878 |
+
}
|
879 |
+
}
|
880 |
+
|
881 |
+
if( $create ) {
|
882 |
+
if( !is_user_logged_in() && !$this->isCommenter() ) {
|
883 |
+
if( !is_dir($cachFilePath) ) {
|
884 |
+
if( is_writable(WCL_Cache_Helpers::getWpContentDir()) || ((is_dir(WCL_Cache_Helpers::getWpContentDir() . "/cache")) && (is_writable(WCL_Cache_Helpers::getWpContentDir() . "/cache"))) ) {
|
885 |
+
if( @mkdir($cachFilePath, 0755, true) ) {
|
886 |
+
|
887 |
+
$buffer = (string)apply_filters('wclearfy_buffer_callback_filter', $buffer, $extension);
|
888 |
+
|
889 |
+
file_put_contents($cachFilePath . "/" . $file_name . $extension, $buffer);
|
890 |
+
|
891 |
+
if( $extension == "html" ) {
|
892 |
+
if( !file_exists(WP_CONTENT_DIR . "/cache/index.html") ) {
|
893 |
+
@file_put_contents(WP_CONTENT_DIR . "/cache/index.html", "");
|
894 |
+
}
|
895 |
+
} else {
|
896 |
+
if( !file_exists(WP_CONTENT_DIR . "/cache/wclearfy-minified/index.html") ) {
|
897 |
+
@file_put_contents(WP_CONTENT_DIR . "/cache/wclearfy-minified/index.html", "");
|
898 |
+
}
|
899 |
+
}
|
900 |
+
} else {
|
901 |
+
}
|
902 |
+
} else {
|
903 |
+
|
904 |
+
}
|
905 |
+
} else {
|
906 |
+
if( file_exists($cachFilePath . "/" . $file_name . $extension) ) {
|
907 |
+
|
908 |
+
} else {
|
909 |
+
$buffer = (string)apply_filters('wclearfy_buffer_callback_filter', $buffer, $extension);
|
910 |
+
|
911 |
+
file_put_contents($cachFilePath . "/" . $file_name . $extension, $buffer);
|
912 |
+
}
|
913 |
+
}
|
914 |
+
}
|
915 |
+
} else if( $extension == "html" ) {
|
916 |
+
$this->err = "Buffer is empty so the cache cannot be created";
|
917 |
+
}
|
918 |
+
}
|
919 |
+
}
|
920 |
+
|
921 |
+
?>
|
components/cache/includes/includes/helpers.php
ADDED
@@ -0,0 +1,1245 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Helpers methods
|
4 |
+
*
|
5 |
+
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
+
* @copyright (c) 10.11.2020, Webcraftic
|
7 |
+
* @version 1.0
|
8 |
+
*/
|
9 |
+
|
10 |
+
class WCL_Cache_Helpers {
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Return if the server run on nginx
|
14 |
+
*
|
15 |
+
* @return bool
|
16 |
+
*/
|
17 |
+
public static function is_nginx()
|
18 |
+
{
|
19 |
+
$is_nginx = (strpos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false);
|
20 |
+
|
21 |
+
return $is_nginx;
|
22 |
+
}
|
23 |
+
|
24 |
+
public static function is_anymobilethemeswitcher_mobile()
|
25 |
+
{
|
26 |
+
// https://plugins.svn.wordpress.org/any-mobile-theme-switcher/tags/1.9/any-mobile-theme-switcher.php
|
27 |
+
$user_agent = $_SERVER['HTTP_USER_AGENT'];
|
28 |
+
|
29 |
+
switch( true ) {
|
30 |
+
case (preg_match('/ipad/i', $user_agent));
|
31 |
+
return true;
|
32 |
+
break;
|
33 |
+
|
34 |
+
case (preg_match('/ipod/i', $user_agent) || preg_match('/iphone/i', $user_agent));
|
35 |
+
return true;
|
36 |
+
break;
|
37 |
+
|
38 |
+
case (preg_match('/android/i', $user_agent) && preg_match('/mobile/i', $user_agent));
|
39 |
+
return true;
|
40 |
+
break;
|
41 |
+
|
42 |
+
case (preg_match('/opera mini/i', $user_agent));
|
43 |
+
return true;
|
44 |
+
break;
|
45 |
+
|
46 |
+
case (preg_match('/blackberry/i', $user_agent));
|
47 |
+
return true;
|
48 |
+
break;
|
49 |
+
|
50 |
+
case (preg_match('/(pre\/|palm os|palm|hiptop|avantgo|plucker|xiino|blazer|elaine)/i', $user_agent));
|
51 |
+
return true;
|
52 |
+
break;
|
53 |
+
|
54 |
+
case (preg_match('/(iris|3g_t|windows ce|opera mobi|windows ce; smartphone;|windows ce; iemobile)/i', $user_agent));
|
55 |
+
return true;
|
56 |
+
break;
|
57 |
+
|
58 |
+
case (preg_match('/(mini 9.5|vx1000|lge |m800|e860|u940|ux840|compal|wireless| mobi|ahong|lg380|lgku|lgu900|lg210|lg47|lg920|lg840|lg370|sam-r|mg50|s55|g83|t66|vx400|mk99|d615|d763|el370|sl900|mp500|samu3|samu4|vx10|xda_|samu5|samu6|samu7|samu9|a615|b832|m881|s920|n210|s700|c-810|_h797|mob-x|sk16d|848b|mowser|s580|r800|471x|v120|rim8|c500foma:|160x|x160|480x|x640|t503|w839|i250|sprint|w398samr810|m5252|c7100|mt126|x225|s5330|s820|htil-g1|fly v71|s302|-x113|novarra|k610i|-three|8325rc|8352rc|sanyo|vx54|c888|nx250|n120|mtk |c5588|s710|t880|c5005|i;458x|p404i|s210|c5100|teleca|s940|c500|s590|foma|samsu|vx8|vx9|a1000|_mms|myx|a700|gu1100|bc831|e300|ems100|me701|me702m-three|sd588|s800|8325rc|ac831|mw200|brew |d88|htc\/|htc_touch|355x|m50|km100|d736|p-9521|telco|sl74|ktouch|m4u\/|me702|8325rc|kddi|phone|lg |sonyericsson|samsung|240x|x320|vx10|nokia|sony cmd|motorola|up.browser|up.link|mmp|symbian|smartphone|midp|wap|vodafone|o2|pocket|kindle|mobile|psp|treo)/i', $user_agent));
|
59 |
+
return true;
|
60 |
+
break;
|
61 |
+
}
|
62 |
+
|
63 |
+
return false;
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* @param string $plugin
|
68 |
+
*
|
69 |
+
* @return bool
|
70 |
+
*/
|
71 |
+
public static function isPluginActive($plugin)
|
72 |
+
{
|
73 |
+
return in_array($plugin, (array)get_option('active_plugins', [])) || self::isPluginActiveForNetwork($plugin);
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* @param string $plugin
|
78 |
+
*
|
79 |
+
* @return bool
|
80 |
+
*/
|
81 |
+
public static function isPluginActiveForNetwork($plugin)
|
82 |
+
{
|
83 |
+
if( !is_multisite() ) {
|
84 |
+
return false;
|
85 |
+
}
|
86 |
+
|
87 |
+
$plugins = get_site_option('active_sitewide_plugins');
|
88 |
+
if( isset($plugins[$plugin]) ) {
|
89 |
+
return true;
|
90 |
+
}
|
91 |
+
|
92 |
+
return false;
|
93 |
+
}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* @param false $path
|
97 |
+
*
|
98 |
+
* @return string
|
99 |
+
*/
|
100 |
+
public static function getWpContentDir($path = false)
|
101 |
+
{
|
102 |
+
/*
|
103 |
+
Sample Paths;
|
104 |
+
|
105 |
+
/cache/
|
106 |
+
|
107 |
+
/cache/all/
|
108 |
+
/cache/all
|
109 |
+
/cache/all/page
|
110 |
+
/cache/all/index.html
|
111 |
+
|
112 |
+
/cache/wclearfy-minified
|
113 |
+
|
114 |
+
/cache/wclearfy-widget-cache
|
115 |
+
|
116 |
+
/cache/wclearfy-mobile-cache/
|
117 |
+
/cache/wclearfy-mobile-cache/page
|
118 |
+
/cache/wclearfy-mobile-cache/index.html
|
119 |
+
|
120 |
+
/cache/tmpWclearfy
|
121 |
+
/cache/tmpWclearfy/
|
122 |
+
/cache/tmpWclearfy/mobile_
|
123 |
+
/cache/tmpWclearfy/m
|
124 |
+
/cache/tmpWclearfy/w
|
125 |
+
|
126 |
+
|
127 |
+
/cache/testWpFc/
|
128 |
+
|
129 |
+
/cache/all/testWpFc/
|
130 |
+
|
131 |
+
/cache/wclearfy-widget-cache/
|
132 |
+
/cache/wclearfy-widget-cache
|
133 |
+
/cache/wclearfy-widget-cache/".$args["widget_id"].".html
|
134 |
+
*/
|
135 |
+
|
136 |
+
if( $path ) {
|
137 |
+
if( preg_match("/\/cache\/(all|wclearfy-minified|wclearfy-widget-cache|wclearfy-mobile-cache)/", $path) ) {
|
138 |
+
//WPML language switch
|
139 |
+
//https://wpml.org/forums/topic/wpml-language-switch-wp-fastest-cache-issue/
|
140 |
+
$language_negotiation_type = apply_filters('wpml_setting', false, 'language_negotiation_type');
|
141 |
+
if( ($language_negotiation_type == 2) && self::isPluginActive('sitepress-multilingual-cms/sitepress.php') ) {
|
142 |
+
$my_home_url = apply_filters('wpml_home_url', get_option('home'));
|
143 |
+
$my_home_url = preg_replace("/https?\:\/\//i", "", $my_home_url);
|
144 |
+
$my_home_url = trim($my_home_url, "/");
|
145 |
+
|
146 |
+
$path = preg_replace("/\/cache\/(all|wclearfy-minified|wclearfy-widget-cache|wclearfy-mobile-cache)/", "/cache/" . $my_home_url . "/$1", $path);
|
147 |
+
} else if( ($language_negotiation_type == 1) && self::isPluginActive('sitepress-multilingual-cms/sitepress.php') ) {
|
148 |
+
$my_current_lang = apply_filters('wpml_current_language', null);
|
149 |
+
|
150 |
+
if( $my_current_lang ) {
|
151 |
+
$path = preg_replace("/\/cache\/wclearfy-widget-cache\/(.+)/", "/cache/wclearfy-widget-cache/" . $my_current_lang . "-" . "$1", $path);
|
152 |
+
}
|
153 |
+
}
|
154 |
+
|
155 |
+
if( self::isPluginActive('multiple-domain-mapping-on-single-site/multidomainmapping.php') ) {
|
156 |
+
$path = preg_replace("/\/cache\/(all|wclearfy-minified|wclearfy-widget-cache|wclearfy-mobile-cache)/", "/cache/" . $_SERVER['HTTP_HOST'] . "/$1", $path);
|
157 |
+
}
|
158 |
+
|
159 |
+
if( self::isPluginActive('polylang/polylang.php') ) {
|
160 |
+
$path = preg_replace("/\/cache\/(all|wclearfy-minified|wclearfy-widget-cache|wclearfy-mobile-cache)/", "/cache/" . $_SERVER['HTTP_HOST'] . "/$1", $path);
|
161 |
+
}
|
162 |
+
|
163 |
+
if( self::isPluginActive('multiple-domain/multiple-domain.php') ) {
|
164 |
+
$path = preg_replace("/\/cache\/(all|wclearfy-minified|wclearfy-widget-cache|wclearfy-mobile-cache)/", "/cache/" . $_SERVER['HTTP_HOST'] . "/$1", $path);
|
165 |
+
}
|
166 |
+
|
167 |
+
if( is_multisite() ) {
|
168 |
+
$path = preg_replace("/\/cache\/(all|wclearfy-minified|wclearfy-widget-cache|wclearfy-mobile-cache)/", "/cache/" . $_SERVER['HTTP_HOST'] . "/$1", $path);
|
169 |
+
}
|
170 |
+
}
|
171 |
+
|
172 |
+
return WP_CONTENT_DIR . $path;
|
173 |
+
} else {
|
174 |
+
return WP_CONTENT_DIR;
|
175 |
+
}
|
176 |
+
}
|
177 |
+
|
178 |
+
public static function is_trailing_slash()
|
179 |
+
{
|
180 |
+
// no need to check if Custom Permalinks plugin is active (https://tr.wordpress.org/plugins/custom-permalinks/)
|
181 |
+
if( self::isPluginActive("custom-permalinks/custom-permalinks.php") ) {
|
182 |
+
return false;
|
183 |
+
}
|
184 |
+
|
185 |
+
if( $permalink_structure = get_option('permalink_structure') ) {
|
186 |
+
if( preg_match("/\/$/", $permalink_structure) ) {
|
187 |
+
return true;
|
188 |
+
}
|
189 |
+
}
|
190 |
+
|
191 |
+
return false;
|
192 |
+
}
|
193 |
+
|
194 |
+
public static function get_excluded_useragent()
|
195 |
+
{
|
196 |
+
return "facebookexternalhit|Twitterbot|LinkedInBot|WhatsApp|Mediatoolkitbot";
|
197 |
+
}
|
198 |
+
|
199 |
+
public static function get_mobile_browsers()
|
200 |
+
{
|
201 |
+
$mobile_browsers = [
|
202 |
+
'\bCrMo\b|CriOS|Android.*Chrome\/[.0-9]*\s(Mobile)?',
|
203 |
+
'\bDolfin\b',
|
204 |
+
'Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\/[0-9.]+|Coast\/[0-9.]+',
|
205 |
+
'Skyfire',
|
206 |
+
'Mobile\sSafari\/[.0-9]*\sEdge',
|
207 |
+
'IEMobile|MSIEMobile',
|
208 |
+
// |Trident/[.0-9]+
|
209 |
+
'fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS',
|
210 |
+
'bolt',
|
211 |
+
'teashark',
|
212 |
+
'Blazer',
|
213 |
+
'Version.*Mobile.*Safari|Safari.*Mobile|MobileSafari',
|
214 |
+
'Tizen',
|
215 |
+
'UC.*Browser|UCWEB',
|
216 |
+
'baiduboxapp',
|
217 |
+
'baidubrowser',
|
218 |
+
'DiigoBrowser',
|
219 |
+
'Puffin',
|
220 |
+
'\bMercury\b',
|
221 |
+
'Obigo',
|
222 |
+
'NF-Browser',
|
223 |
+
'NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger',
|
224 |
+
'Android.*PaleMoon|Mobile.*PaleMoon'
|
225 |
+
];
|
226 |
+
|
227 |
+
return $mobile_browsers;
|
228 |
+
}
|
229 |
+
|
230 |
+
public static function get_operating_systems()
|
231 |
+
{
|
232 |
+
$operating_systems = [
|
233 |
+
'Android',
|
234 |
+
'blackberry|\bBB10\b|rim\stablet\sos',
|
235 |
+
'PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino',
|
236 |
+
'Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\bS60\b',
|
237 |
+
'Windows\sCE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Window\sMobile|Windows\sPhone\s[0-9.]+|WCE;',
|
238 |
+
'Windows\sPhone\s10.0|Windows\sPhone\s8.1|Windows\sPhone\s8.0|Windows\sPhone\sOS|XBLWP7|ZuneWP7|Windows\sNT\s6\.[23]\;\sARM\;',
|
239 |
+
'\biPhone.*Mobile|\biPod|\biPad',
|
240 |
+
'Apple-iPhone7C2',
|
241 |
+
'MeeGo',
|
242 |
+
'Maemo',
|
243 |
+
'J2ME\/|\bMIDP\b|\bCLDC\b',
|
244 |
+
// '|Java/' produces bug #135
|
245 |
+
'webOS|hpwOS',
|
246 |
+
'\bBada\b',
|
247 |
+
'BREW'
|
248 |
+
];
|
249 |
+
|
250 |
+
return $operating_systems;
|
251 |
+
}
|
252 |
+
|
253 |
+
public function is_amp($content)
|
254 |
+
{
|
255 |
+
$request_uri = trim($_SERVER["REQUEST_URI"], "/");
|
256 |
+
|
257 |
+
if( preg_match("/^amp/", $request_uri) || preg_match("/\/amp\//", $request_uri) || preg_match("/amp$/", $request_uri) ) {
|
258 |
+
if( preg_match("/<html[^\>]+amp[^\>]*>/i", $content) ) {
|
259 |
+
return true;
|
260 |
+
}
|
261 |
+
|
262 |
+
if( preg_match("/<html[^\>]+\⚡[^\>]*>/i", $content) ) {
|
263 |
+
return true;
|
264 |
+
}
|
265 |
+
}
|
266 |
+
|
267 |
+
return false;
|
268 |
+
}
|
269 |
+
|
270 |
+
public static function isMobile()
|
271 |
+
{
|
272 |
+
foreach(self::get_mobile_browsers() as $value) {
|
273 |
+
if( preg_match("/" . $value . "/i", $_SERVER['HTTP_USER_AGENT']) ) {
|
274 |
+
return true;
|
275 |
+
}
|
276 |
+
}
|
277 |
+
|
278 |
+
foreach(self::get_operating_systems() as $key => $value) {
|
279 |
+
if( preg_match("/" . $value . "/i", $_SERVER['HTTP_USER_AGENT']) ) {
|
280 |
+
return true;
|
281 |
+
}
|
282 |
+
}
|
283 |
+
|
284 |
+
if( isset($_SERVER['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER']) && "true" === $_SERVER['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER'] ) {
|
285 |
+
return true;
|
286 |
+
}
|
287 |
+
|
288 |
+
if( isset($_SERVER['HTTP_CLOUDFRONT_IS_TABLET_VIEWER']) && "true" === $_SERVER['HTTP_CLOUDFRONT_IS_TABLET_VIEWER'] ) {
|
289 |
+
return true;
|
290 |
+
}
|
291 |
+
|
292 |
+
return false;
|
293 |
+
}
|
294 |
+
|
295 |
+
public static function isWpLogin($buffer)
|
296 |
+
{
|
297 |
+
// if(preg_match("/<form[^\>]+loginform[^\>]+>((?:(?!<\/form).)+)user_login((?:(?!<\/form).)+)user_pass((?:(?!<\/form).)+)<\/form>/si", $buffer)){
|
298 |
+
// return true;
|
299 |
+
// }
|
300 |
+
if( $GLOBALS["pagenow"] == "wp-login.php" ) {
|
301 |
+
return true;
|
302 |
+
}
|
303 |
+
|
304 |
+
return false;
|
305 |
+
}
|
306 |
+
|
307 |
+
public static function hasContactForm7WithCaptcha($buffer)
|
308 |
+
{
|
309 |
+
if( is_single() || is_page() ) {
|
310 |
+
if( preg_match("/<input[^\>]+_wpcf7_captcha[^\>]+>/i", $buffer) ) {
|
311 |
+
return true;
|
312 |
+
}
|
313 |
+
}
|
314 |
+
|
315 |
+
return false;
|
316 |
+
}
|
317 |
+
|
318 |
+
public static function is_wptouch_smartphone()
|
319 |
+
{
|
320 |
+
// https://plugins.svn.wordpress.org/wptouch/tags/4.0.4/core/mobile-user-agents.php
|
321 |
+
// wptouch: ipad is accepted as a desktop so no need to create cache if user agent is ipad
|
322 |
+
// https://wordpress.org/support/topic/plugin-wptouch-wptouch-wont-display-mobile-version-on-ipad?replies=12
|
323 |
+
if( preg_match("/ipad/i", $_SERVER['HTTP_USER_AGENT']) ) {
|
324 |
+
return false;
|
325 |
+
}
|
326 |
+
|
327 |
+
$wptouch_smartphone_list = [];
|
328 |
+
|
329 |
+
$wptouch_smartphone_list[] = ['iPhone']; // iPhone
|
330 |
+
$wptouch_smartphone_list[] = ['Android', 'Mobile']; // Android devices
|
331 |
+
$wptouch_smartphone_list[] = ['BB', 'Mobile Safari']; // BB10 devices
|
332 |
+
$wptouch_smartphone_list[] = ['BlackBerry', 'Mobile Safari']; // BB 6, 7 devices
|
333 |
+
$wptouch_smartphone_list[] = ['Firefox', 'Mobile']; // Firefox OS devices
|
334 |
+
$wptouch_smartphone_list[] = ['IEMobile/11', 'Touch']; // Windows IE 11 touch devices
|
335 |
+
$wptouch_smartphone_list[] = ['IEMobile/10', 'Touch']; // Windows IE 10 touch devices
|
336 |
+
$wptouch_smartphone_list[] = ['IEMobile/9.0']; // Windows Phone OS 9
|
337 |
+
$wptouch_smartphone_list[] = ['IEMobile/8.0']; // Windows Phone OS 8
|
338 |
+
$wptouch_smartphone_list[] = ['IEMobile/7.0']; // Windows Phone OS 7
|
339 |
+
$wptouch_smartphone_list[] = ['OPiOS', 'Mobile']; // Opera Mini iOS
|
340 |
+
$wptouch_smartphone_list[] = ['Coast', 'Mobile']; // Opera Coast iOS
|
341 |
+
|
342 |
+
foreach($wptouch_smartphone_list as $key => $value) {
|
343 |
+
if( isset($value[0]) && isset($value[1]) ) {
|
344 |
+
if( preg_match("/" . preg_quote($value[0], "/") . "/i", $_SERVER['HTTP_USER_AGENT']) ) {
|
345 |
+
if( preg_match("/" . preg_quote($value[1], "/") . "/i", $_SERVER['HTTP_USER_AGENT']) ) {
|
346 |
+
return true;
|
347 |
+
}
|
348 |
+
}
|
349 |
+
} else if( isset($value[0]) ) {
|
350 |
+
if( preg_match("/" . preg_quote($value[0], "/") . "/i", $_SERVER['HTTP_USER_AGENT']) ) {
|
351 |
+
return true;
|
352 |
+
}
|
353 |
+
}
|
354 |
+
}
|
355 |
+
|
356 |
+
return false;
|
357 |
+
}
|
358 |
+
|
359 |
+
public static function is_subdirectory_install()
|
360 |
+
{
|
361 |
+
if( strlen(site_url()) > strlen(home_url()) ) {
|
362 |
+
return true;
|
363 |
+
}
|
364 |
+
|
365 |
+
return false;
|
366 |
+
}
|
367 |
+
|
368 |
+
public static function getABSPATH()
|
369 |
+
{
|
370 |
+
$path = ABSPATH;
|
371 |
+
$siteUrl = site_url();
|
372 |
+
$homeUrl = home_url();
|
373 |
+
$diff = str_replace($homeUrl, "", $siteUrl);
|
374 |
+
$diff = trim($diff, "/");
|
375 |
+
|
376 |
+
$pos = strrpos($path, $diff);
|
377 |
+
|
378 |
+
if( $pos !== false ) {
|
379 |
+
$path = substr_replace($path, "", $pos, strlen($diff));
|
380 |
+
$path = trim($path, "/");
|
381 |
+
$path = "/" . $path . "/";
|
382 |
+
}
|
383 |
+
|
384 |
+
return $path;
|
385 |
+
}
|
386 |
+
|
387 |
+
public static function checkSuperCache($path, $htaccess)
|
388 |
+
{
|
389 |
+
if( self::isPluginActive('wp-super-cache/wp-cache.php') ) {
|
390 |
+
return ["WP Super Cache needs to be deactive", "error"];
|
391 |
+
} else {
|
392 |
+
@unlink($path . "wp-content/wp-cache-config.php");
|
393 |
+
|
394 |
+
$message = "";
|
395 |
+
|
396 |
+
if( is_file($path . "wp-content/wp-cache-config.php") ) {
|
397 |
+
$message .= "<br>- be sure that you removed /wp-content/wp-cache-config.php";
|
398 |
+
}
|
399 |
+
|
400 |
+
if( preg_match("/supercache/", $htaccess) ) {
|
401 |
+
$message .= "<br>- be sure that you removed the rules of super cache from the .htaccess";
|
402 |
+
}
|
403 |
+
|
404 |
+
return $message ? [
|
405 |
+
"WP Super Cache cannot remove its own remnants so please follow the steps below" . $message,
|
406 |
+
"error"
|
407 |
+
] : "";
|
408 |
+
}
|
409 |
+
|
410 |
+
return "";
|
411 |
+
}
|
412 |
+
|
413 |
+
public static function warningIncompatible($incompatible, $alternative = false)
|
414 |
+
{
|
415 |
+
if( $alternative ) {
|
416 |
+
throw new Exception($incompatible . " <label>needs to be deactive</label><br><label>We advise</label> <a id='alternative-plugin' target='_blank' href='" . $alternative["url"] . "'>" . $alternative["name"] . "</a>");
|
417 |
+
} else {
|
418 |
+
throw new Exception($incompatible . " <label>needs to be deactive</label>");
|
419 |
+
}
|
420 |
+
}
|
421 |
+
|
422 |
+
public static function insertRewriteRule($htaccess)
|
423 |
+
{
|
424 |
+
$enable_cache = WCL_Plugin::app()->getPopulateOption('enable_cache');
|
425 |
+
|
426 |
+
if( $enable_cache ) {
|
427 |
+
$htaccess = preg_replace("/#\s?BEGIN\s?WClearfyCache.*?#\s?END\s?WClearfyCache/s", "", $htaccess);
|
428 |
+
$htaccess = self::getHtaccess() . $htaccess;
|
429 |
+
} else {
|
430 |
+
$htaccess = preg_replace("/#\s?BEGIN\s?WClearfyCache.*?#\s?END\s?WClearfyCache/s", "", $htaccess);
|
431 |
+
self::deleteCache();
|
432 |
+
}
|
433 |
+
|
434 |
+
return $htaccess;
|
435 |
+
}
|
436 |
+
|
437 |
+
public static function prefixRedirect()
|
438 |
+
{
|
439 |
+
$forceTo = "";
|
440 |
+
|
441 |
+
if( defined("WCLEARFY_DISABLE_REDIRECTION") && WCLEARFY_DISABLE_REDIRECTION ) {
|
442 |
+
return $forceTo;
|
443 |
+
}
|
444 |
+
|
445 |
+
if( preg_match("/^https:\/\//", home_url()) ) {
|
446 |
+
if( preg_match("/^https:\/\/www\./", home_url()) ) {
|
447 |
+
$forceTo = "\nRewriteCond %{HTTPS} =on" . "\n" . "RewriteCond %{HTTP_HOST} ^www." . str_replace("www.", "", $_SERVER["HTTP_HOST"]) . "\n";
|
448 |
+
} else {
|
449 |
+
$forceTo = "\nRewriteCond %{HTTPS} =on" . "\n" . "RewriteCond %{HTTP_HOST} ^" . str_replace("www.", "", $_SERVER["HTTP_HOST"]) . "\n";
|
450 |
+
}
|
451 |
+
} else {
|
452 |
+
if( preg_match("/^http:\/\/www\./", home_url()) ) {
|
453 |
+
$forceTo = "\nRewriteCond %{HTTP_HOST} ^" . str_replace("www.", "", $_SERVER["HTTP_HOST"]) . "\n" . "RewriteRule ^(.*)$ " . preg_quote(home_url(), "/") . "\/$1 [R=301,L]" . "\n";
|
454 |
+
} else {
|
455 |
+
$forceTo = "\nRewriteCond %{HTTP_HOST} ^www." . str_replace("www.", "", $_SERVER["HTTP_HOST"]) . " [NC]" . "\n" . "RewriteRule ^(.*)$ " . preg_quote(home_url(), "/") . "\/$1 [R=301,L]" . "\n";
|
456 |
+
}
|
457 |
+
}
|
458 |
+
|
459 |
+
return $forceTo;
|
460 |
+
}
|
461 |
+
|
462 |
+
public static function getHtaccess()
|
463 |
+
{
|
464 |
+
$mobile = "";
|
465 |
+
$loggedInUser = "";
|
466 |
+
$ifIsNotSecure = "";
|
467 |
+
$trailing_slash_rule = "";
|
468 |
+
$consent_cookie = "";
|
469 |
+
|
470 |
+
$language_negotiation_type = apply_filters('wpml_setting', false, 'language_negotiation_type');
|
471 |
+
if( ($language_negotiation_type == 2) && self::isPluginActive('sitepress-multilingual-cms/sitepress.php') ) {
|
472 |
+
$cache_path = '/cache/all/%{HTTP_HOST}/';
|
473 |
+
$disable_condition = true;
|
474 |
+
} else {
|
475 |
+
$cache_path = '/cache/all/';
|
476 |
+
$disable_condition = false;
|
477 |
+
}
|
478 |
+
|
479 |
+
if( isset($_POST["wpFastestCacheMobile"]) && $_POST["wpFastestCacheMobile"] == "on" ) {
|
480 |
+
$mobile = "RewriteCond %{HTTP_USER_AGENT} !^.*(" . self::getMobileUserAgents() . ").*$ [NC]" . "\n";
|
481 |
+
|
482 |
+
if( isset($_SERVER['HTTP_CLOUDFRONT_IS_MOBILE_VIEWER']) ) {
|
483 |
+
$mobile = $mobile . "RewriteCond %{HTTP_CLOUDFRONT_IS_MOBILE_VIEWER} false [NC]" . "\n";
|
484 |
+
$mobile = $mobile . "RewriteCond %{HTTP_CLOUDFRONT_IS_TABLET_VIEWER} false [NC]" . "\n";
|
485 |
+
}
|
486 |
+
}
|
487 |
+
|
488 |
+
if( isset($_POST["wpFastestCacheLoggedInUser"]) && $_POST["wpFastestCacheLoggedInUser"] == "on" ) {
|
489 |
+
$loggedInUser = "RewriteCond %{HTTP:Cookie} !wordpress_logged_in" . "\n";
|
490 |
+
}
|
491 |
+
|
492 |
+
if( !preg_match("/^https/i", get_option("home")) ) {
|
493 |
+
$ifIsNotSecure = "RewriteCond %{HTTPS} !=on";
|
494 |
+
}
|
495 |
+
|
496 |
+
if( self::is_trailing_slash() ) {
|
497 |
+
$trailing_slash_rule = "RewriteCond %{REQUEST_URI} \/$" . "\n";
|
498 |
+
} else {
|
499 |
+
$trailing_slash_rule = "RewriteCond %{REQUEST_URI} ![^\/]+\/$" . "\n";
|
500 |
+
}
|
501 |
+
|
502 |
+
$data = "# BEGIN WClearfyCache" . "\n" . "# Modified Time: " . date("d-m-y G:i:s", current_time('timestamp')) . "\n" . "<IfModule mod_rewrite.c>" . "\n" . "RewriteEngine On" . "\n" . "RewriteBase /" . "\n" . self::ruleForWpContent() . "\n" . self::prefixRedirect() . self::excludeRules() . "\n" . self::excludeAdminCookie() . "\n" . self::http_condition_rule() . "\n" . "RewriteCond %{HTTP_USER_AGENT} !(" . self::get_excluded_useragent() . ")" . "\n" . "RewriteCond %{HTTP_USER_AGENT} !(WP\sFastest\sCache\sPreload(\siPhone\sMobile)?\s*Bot)" . "\n" . "RewriteCond %{REQUEST_METHOD} !POST" . "\n" . $ifIsNotSecure . "\n" . "RewriteCond %{REQUEST_URI} !(\/){2}$" . "\n" . $trailing_slash_rule . "RewriteCond %{QUERY_STRING} !.+" . "\n" . $loggedInUser . $consent_cookie . "RewriteCond %{HTTP:Cookie} !comment_author_" . "\n" . //"RewriteCond %{HTTP:Cookie} !woocommerce_items_in_cart"."\n".
|
503 |
+
"RewriteCond %{HTTP:Cookie} !safirmobilswitcher=mobil" . "\n" . 'RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]' . "\n" . $mobile;
|
504 |
+
|
505 |
+
if( ABSPATH == "//" ) {
|
506 |
+
$data = $data . "RewriteCond %{DOCUMENT_ROOT}/" . basename(WP_CONTENT_DIR) . $cache_path . "$1/index.html -f" . "\n";
|
507 |
+
} else {
|
508 |
+
//WARNING: If you change the following lines, you need to update webp as well
|
509 |
+
$data = $data . "RewriteCond %{DOCUMENT_ROOT}/" . basename(WP_CONTENT_DIR) . $cache_path . "$1/index.html -f [or]" . "\n";
|
510 |
+
// to escape spaces
|
511 |
+
$tmp_WCLEARFY_WP_CONTENT_DIR = str_replace(" ", "\ ", WP_CONTENT_DIR);
|
512 |
+
|
513 |
+
$data = $data . "RewriteCond " . $tmp_WCLEARFY_WP_CONTENT_DIR . $cache_path . self::getRewriteBase(true) . "$1/index.html -f" . "\n";
|
514 |
+
}
|
515 |
+
|
516 |
+
$data = $data . 'RewriteRule ^(.*) "/' . self::getRewriteBase() . basename(WP_CONTENT_DIR) . $cache_path . self::getRewriteBase(true) . '$1/index.html" [L]' . "\n";
|
517 |
+
|
518 |
+
//RewriteRule !/ "/wp-content/cache/all/index.html" [L]
|
519 |
+
|
520 |
+
/*if( class_exists("WCL_MobileCache") && isset($this->options->wpFastestCacheMobileTheme) && $this->options->wpFastestCacheMobileTheme ) {
|
521 |
+
$wclearfy_mobile = new WCL_MobileCache();
|
522 |
+
|
523 |
+
if( $this->isPluginActive('wptouch/wptouch.php') || $this->isPluginActive('wptouch-pro/wptouch-pro.php') ) {
|
524 |
+
$wclearfy_mobile->set_wptouch(true);
|
525 |
+
} else {
|
526 |
+
$wclearfy_mobile->set_wptouch(false);
|
527 |
+
}
|
528 |
+
|
529 |
+
$data = $data . "\n\n\n" . $wclearfy_mobile->update_htaccess($data);
|
530 |
+
}*/
|
531 |
+
|
532 |
+
$data = $data . "</IfModule>" . "\n" . "<FilesMatch \"index\.(html|htm)$\">" . "\n" . "AddDefaultCharset UTF-8" . "\n" . "<ifModule mod_headers.c>" . "\n" . "FileETag None" . "\n" . "Header unset ETag" . "\n" . "Header set Cache-Control \"max-age=0, no-cache, no-store, must-revalidate\"" . "\n" . "Header set Pragma \"no-cache\"" . "\n" . "Header set Expires \"Mon, 29 Oct 1923 20:30:00 GMT\"" . "\n" . "</ifModule>" . "\n" . "</FilesMatch>" . "\n" . "# END WClearfyCache" . "\n";
|
533 |
+
|
534 |
+
if( is_multisite() ) {
|
535 |
+
return "";
|
536 |
+
} else {
|
537 |
+
return preg_replace("/\n+/", "\n", $data);
|
538 |
+
}
|
539 |
+
}
|
540 |
+
|
541 |
+
public static function http_condition_rule()
|
542 |
+
{
|
543 |
+
$http_host = preg_replace("/(http(s?)\:)?\/\/(www\d*\.)?/i", "", trim(home_url(), "/"));
|
544 |
+
|
545 |
+
if( preg_match("/\//", $http_host) ) {
|
546 |
+
$http_host = strstr($http_host, '/', true);
|
547 |
+
}
|
548 |
+
|
549 |
+
if( preg_match("/www\./", home_url()) ) {
|
550 |
+
$http_host = "www." . $http_host;
|
551 |
+
}
|
552 |
+
|
553 |
+
return "RewriteCond %{HTTP_HOST} ^" . $http_host;
|
554 |
+
}
|
555 |
+
|
556 |
+
public static function ruleForWpContent()
|
557 |
+
{
|
558 |
+
$newContentPath = str_replace(home_url(), "", content_url());
|
559 |
+
if( !preg_match("/wp-content/", $newContentPath) ) {
|
560 |
+
$newContentPath = trim($newContentPath, "/");
|
561 |
+
|
562 |
+
return "RewriteRule ^" . $newContentPath . "/cache/(.*) " . WP_CONTENT_DIR . "/cache/$1 [L]" . "\n";
|
563 |
+
}
|
564 |
+
|
565 |
+
return "";
|
566 |
+
}
|
567 |
+
|
568 |
+
public static function getRewriteBase($sub = "")
|
569 |
+
{
|
570 |
+
if( $sub && self::is_subdirectory_install() ) {
|
571 |
+
$trimedProtocol = preg_replace("/http:\/\/|https:\/\//", "", trim(home_url(), "/"));
|
572 |
+
$path = strstr($trimedProtocol, '/');
|
573 |
+
|
574 |
+
if( $path ) {
|
575 |
+
return trim($path, "/") . "/";
|
576 |
+
} else {
|
577 |
+
return "";
|
578 |
+
}
|
579 |
+
}
|
580 |
+
|
581 |
+
$url = rtrim(site_url(), "/");
|
582 |
+
preg_match("/https?:\/\/[^\/]+(.*)/", $url, $out);
|
583 |
+
|
584 |
+
if( isset($out[1]) && $out[1] ) {
|
585 |
+
$out[1] = trim($out[1], "/");
|
586 |
+
|
587 |
+
if( preg_match("/\/" . preg_quote($out[1], "/") . "\//", WP_CONTENT_DIR) ) {
|
588 |
+
return $out[1] . "/";
|
589 |
+
} else {
|
590 |
+
return "";
|
591 |
+
}
|
592 |
+
} else {
|
593 |
+
return "";
|
594 |
+
}
|
595 |
+
}
|
596 |
+
|
597 |
+
public static function singleDeleteCache($comment_id = false, $post_id = false)
|
598 |
+
{
|
599 |
+
|
600 |
+
$to_clear_parents = true;
|
601 |
+
$to_clear_feed = true;
|
602 |
+
|
603 |
+
// not to clear cache of homepage/cats/tags after ajax request by other plugins
|
604 |
+
if( isset($_POST) && isset($_POST["action"]) ) {
|
605 |
+
// kk Star Rating
|
606 |
+
if( $_POST["action"] == "kksr_ajax" ) {
|
607 |
+
$to_clear_parents = false;
|
608 |
+
}
|
609 |
+
|
610 |
+
// All In One Schema.org Rich Snippets
|
611 |
+
if( preg_match("/bsf_(update|submit)_rating/i", $_POST["action"]) ) {
|
612 |
+
$to_clear_parents = false;
|
613 |
+
}
|
614 |
+
|
615 |
+
// Yet Another Stars Rating
|
616 |
+
if( $_POST["action"] == "yasr_send_visitor_rating" ) {
|
617 |
+
$to_clear_parents = false;
|
618 |
+
$post_id = $_POST["post_id"];
|
619 |
+
}
|
620 |
+
|
621 |
+
// All In One Schema.org Rich Snippets
|
622 |
+
if( preg_match("/bsf_(update|submit)_rating/i", $_POST["action"]) ) {
|
623 |
+
$to_clear_feed = false;
|
624 |
+
}
|
625 |
+
}
|
626 |
+
|
627 |
+
if( $comment_id ) {
|
628 |
+
$comment_id = intval($comment_id);
|
629 |
+
|
630 |
+
$comment = get_comment($comment_id);
|
631 |
+
|
632 |
+
if( $comment && $comment->comment_post_ID ) {
|
633 |
+
$post_id = $comment->comment_post_ID;
|
634 |
+
}
|
635 |
+
}
|
636 |
+
|
637 |
+
if( $post_id ) {
|
638 |
+
$post_id = intval($post_id);
|
639 |
+
|
640 |
+
$permalink = urldecode(get_permalink($post_id));
|
641 |
+
|
642 |
+
//for trash contents
|
643 |
+
$permalink = rtrim($permalink, "/");
|
644 |
+
$permalink = preg_replace("/__trashed$/", "", $permalink);
|
645 |
+
//for /%postname%/%post_id% : sample-url__trashed/57595
|
646 |
+
$permalink = preg_replace("/__trashed\/(\d+)$/", "/$1", $permalink);
|
647 |
+
|
648 |
+
if( preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out) ) {
|
649 |
+
$path = self::getWpContentDir("/cache/all/") . $out[1];
|
650 |
+
$mobile_path = self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $out[1];
|
651 |
+
|
652 |
+
$files = [];
|
653 |
+
|
654 |
+
if( is_dir($path) ) {
|
655 |
+
array_push($files, $path);
|
656 |
+
}
|
657 |
+
|
658 |
+
if( is_dir($mobile_path) ) {
|
659 |
+
array_push($files, $mobile_path);
|
660 |
+
}
|
661 |
+
|
662 |
+
if( defined('WCACHE_QUERYSTRING') && WCACHE_QUERYSTRING ) {
|
663 |
+
$files_with_query_string = glob($path . "\?*");
|
664 |
+
$mobile_files_with_query_string = glob($mobile_path . "\?*");
|
665 |
+
|
666 |
+
if( is_array($files_with_query_string) && (count($files_with_query_string) > 0) ) {
|
667 |
+
$files = array_merge($files, $files_with_query_string);
|
668 |
+
}
|
669 |
+
|
670 |
+
if( is_array($mobile_files_with_query_string) && (count($mobile_files_with_query_string) > 0) ) {
|
671 |
+
$files = array_merge($files, $mobile_files_with_query_string);
|
672 |
+
}
|
673 |
+
}
|
674 |
+
|
675 |
+
if( $to_clear_feed ) {
|
676 |
+
// to clear cache of /feed
|
677 |
+
if( preg_match("/https?:\/\/[^\/]+\/(.+)/", get_feed_link(), $feed_out) ) {
|
678 |
+
array_push($files, self::getWpContentDir("/cache/all/") . $feed_out[1]);
|
679 |
+
}
|
680 |
+
|
681 |
+
// to clear cache of /comments/feed/
|
682 |
+
if( preg_match("/https?:\/\/[^\/]+\/(.+)/", get_feed_link("comments_"), $comment_feed_out) ) {
|
683 |
+
array_push($files, self::getWpContentDir("/cache/all/") . $comment_feed_out[1]);
|
684 |
+
}
|
685 |
+
}
|
686 |
+
|
687 |
+
foreach((array)$files as $file) {
|
688 |
+
self::rm_folder_recursively($file);
|
689 |
+
}
|
690 |
+
}
|
691 |
+
|
692 |
+
if( $to_clear_parents ) {
|
693 |
+
// to clear cache of homepage
|
694 |
+
self::deleteHomePageCache();
|
695 |
+
|
696 |
+
// to clear cache of author page
|
697 |
+
self::delete_author_page_cache($post_id);
|
698 |
+
|
699 |
+
// to clear sitemap cache
|
700 |
+
self::delete_sitemap_cache();
|
701 |
+
|
702 |
+
// to clear cache of cats and tags which contains the post (only first page)
|
703 |
+
global $wpdb;
|
704 |
+
$terms = $wpdb->get_results("SELECT * FROM `" . $wpdb->prefix . "term_relationships` WHERE `object_id`=" . $post_id, ARRAY_A);
|
705 |
+
|
706 |
+
foreach($terms as $term_key => $term_val) {
|
707 |
+
self::delete_cache_of_term($term_val["term_taxonomy_id"]);
|
708 |
+
}
|
709 |
+
}
|
710 |
+
|
711 |
+
self::delete_multiple_domain_mapping_cache();
|
712 |
+
}
|
713 |
+
}
|
714 |
+
|
715 |
+
public static function delete_cache_of_term($term_taxonomy_id)
|
716 |
+
{
|
717 |
+
$term = get_term_by("term_taxonomy_id", $term_taxonomy_id);
|
718 |
+
|
719 |
+
if( !$term || is_wp_error($term) ) {
|
720 |
+
return false;
|
721 |
+
}
|
722 |
+
|
723 |
+
//if(preg_match("/cat|tag|store|listing/", $term->taxonomy)){}
|
724 |
+
|
725 |
+
$url = get_term_link($term->term_id, $term->taxonomy);
|
726 |
+
|
727 |
+
if( preg_match("/^http/", $url) ) {
|
728 |
+
$path = preg_replace("/https?\:\/\/[^\/]+/i", "", $url);
|
729 |
+
$path = trim($path, "/");
|
730 |
+
$path = urldecode($path);
|
731 |
+
|
732 |
+
// to remove the cache of tag/cat
|
733 |
+
if( file_exists(self::getWpContentDir("/cache/all/") . $path . "/index.html") ) {
|
734 |
+
@unlink(self::getWpContentDir("/cache/all/") . $path . "/index.html");
|
735 |
+
}
|
736 |
+
|
737 |
+
if( file_exists(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $path . "/index.html") ) {
|
738 |
+
@unlink(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $path . "/index.html");
|
739 |
+
}
|
740 |
+
|
741 |
+
// to remove the cache of the pages
|
742 |
+
self::rm_folder_recursively(self::getWpContentDir("/cache/all/") . $path . "/page");
|
743 |
+
self::rm_folder_recursively(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $path . "/page");
|
744 |
+
|
745 |
+
// to remove the cache of the feeds
|
746 |
+
self::rm_folder_recursively(self::getWpContentDir("/cache/all/") . $path . "/feed");
|
747 |
+
self::rm_folder_recursively(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $path . "/feed");
|
748 |
+
}
|
749 |
+
|
750 |
+
if( $term->parent > 0 ) {
|
751 |
+
$parent = get_term_by("id", $term->parent, $term->taxonomy);
|
752 |
+
self::delete_cache_of_term($parent->term_taxonomy_id);
|
753 |
+
}
|
754 |
+
}
|
755 |
+
|
756 |
+
public static function delete_author_page_cache($post_id)
|
757 |
+
{
|
758 |
+
$author_id = get_post_field('post_author', $post_id);
|
759 |
+
$permalink = get_author_posts_url($author_id);
|
760 |
+
|
761 |
+
if( preg_match("/https?:\/\/[^\/]+\/(.+)/", $permalink, $out) ) {
|
762 |
+
$path = self::getWpContentDir("/cache/all/") . $out[1];
|
763 |
+
$mobile_path = self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $out[1];
|
764 |
+
|
765 |
+
self::rm_folder_recursively($path);
|
766 |
+
self::rm_folder_recursively($mobile_path);
|
767 |
+
}
|
768 |
+
}
|
769 |
+
|
770 |
+
public static function delete_sitemap_cache()
|
771 |
+
{
|
772 |
+
//to clear sitemap.xml and sitemap-(.+).xml
|
773 |
+
$files = array_merge(glob(self::getWpContentDir("/cache/all/") . "sitemap*.xml"), glob(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . "sitemap*.xml"));
|
774 |
+
|
775 |
+
foreach((array)$files as $file) {
|
776 |
+
self::rm_folder_recursively($file);
|
777 |
+
}
|
778 |
+
}
|
779 |
+
|
780 |
+
public static function deleteHomePageCache()
|
781 |
+
{
|
782 |
+
$site_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", site_url());
|
783 |
+
$home_url_path = preg_replace("/https?\:\/\/[^\/]+/i", "", home_url());
|
784 |
+
|
785 |
+
if( $site_url_path ) {
|
786 |
+
$site_url_path = trim($site_url_path, "/");
|
787 |
+
|
788 |
+
if( $site_url_path ) {
|
789 |
+
@unlink(self::getWpContentDir("/cache/all/") . $site_url_path . "/index.html");
|
790 |
+
@unlink(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $site_url_path . "/index.html");
|
791 |
+
|
792 |
+
//to clear pagination of homepage cache
|
793 |
+
self::rm_folder_recursively(self::getWpContentDir("/cache/all/") . $site_url_path . "/page");
|
794 |
+
self::rm_folder_recursively(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $site_url_path . "/page");
|
795 |
+
}
|
796 |
+
}
|
797 |
+
|
798 |
+
if( $home_url_path ) {
|
799 |
+
$home_url_path = trim($home_url_path, "/");
|
800 |
+
|
801 |
+
if( $home_url_path ) {
|
802 |
+
@unlink(self::getWpContentDir("/cache/all/") . $home_url_path . "/index.html");
|
803 |
+
@unlink(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $home_url_path . "/index.html");
|
804 |
+
|
805 |
+
//to clear pagination of homepage cache
|
806 |
+
self::rm_folder_recursively(self::getWpContentDir("/cache/all/") . $home_url_path . "/page");
|
807 |
+
self::rm_folder_recursively(self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $home_url_path . "/page");
|
808 |
+
}
|
809 |
+
}
|
810 |
+
|
811 |
+
if( file_exists(self::getWpContentDir("/cache/all/index.html")) ) {
|
812 |
+
@unlink(self::getWpContentDir("/cache/all/index.html"));
|
813 |
+
}
|
814 |
+
|
815 |
+
if( file_exists(self::getWpContentDir("/cache/wclearfy-mobile-cache/index.html")) ) {
|
816 |
+
@unlink(self::getWpContentDir("/cache/wclearfy-mobile-cache/index.html"));
|
817 |
+
}
|
818 |
+
|
819 |
+
//to clear pagination of homepage cache
|
820 |
+
self::rm_folder_recursively(self::getWpContentDir("/cache/all/page"));
|
821 |
+
self::rm_folder_recursively(self::getWpContentDir("/cache/wclearfy-mobile-cache/page"));
|
822 |
+
|
823 |
+
// options-reading.php - static posts page
|
824 |
+
if( $page_for_posts_id = get_option('page_for_posts') ) {
|
825 |
+
$page_for_posts_permalink = urldecode(get_permalink($page_for_posts_id));
|
826 |
+
|
827 |
+
$page_for_posts_permalink = rtrim($page_for_posts_permalink, "/");
|
828 |
+
$page_for_posts_permalink = preg_replace("/__trashed$/", "", $page_for_posts_permalink);
|
829 |
+
//for /%postname%/%post_id% : sample-url__trashed/57595
|
830 |
+
$page_for_posts_permalink = preg_replace("/__trashed\/(\d+)$/", "/$1", $page_for_posts_permalink);
|
831 |
+
|
832 |
+
if( preg_match("/https?:\/\/[^\/]+\/(.+)/", $page_for_posts_permalink, $out) ) {
|
833 |
+
$page_for_posts_path = self::getWpContentDir("/cache/all/") . $out[1];
|
834 |
+
$page_for_posts_mobile_path = self::getWpContentDir("/cache/wclearfy-mobile-cache/") . $out[1];
|
835 |
+
|
836 |
+
self::rm_folder_recursively($page_for_posts_path);
|
837 |
+
self::rm_folder_recursively($page_for_posts_mobile_path);
|
838 |
+
}
|
839 |
+
}
|
840 |
+
}
|
841 |
+
|
842 |
+
public static function deleteCache($minified = false)
|
843 |
+
{
|
844 |
+
$created_tmpWclearfy = false;
|
845 |
+
$cache_deleted = false;
|
846 |
+
$minifed_deleted = false;
|
847 |
+
|
848 |
+
$cache_path = self::getWpContentDir("/cache/all");
|
849 |
+
$minified_cache_path = self::getWpContentDir("/cache/wclearfy-minified");
|
850 |
+
|
851 |
+
if( class_exists("WCL_MobileCache") ) {
|
852 |
+
if( is_dir(self::getWpContentDir("/cache/wclearfy-mobile-cache")) ) {
|
853 |
+
if( is_dir(self::getWpContentDir("/cache/tmpWclearfy")) ) {
|
854 |
+
rename(self::getWpContentDir("/cache/wclearfy-mobile-cache"), self::getWpContentDir("/cache/tmpWclearfy/mobile_") . time());
|
855 |
+
} else if( @mkdir(self::getWpContentDir("/cache/tmpWclearfy"), 0755, true) ) {
|
856 |
+
rename(self::getWpContentDir("/cache/wclearfy-mobile-cache"), self::getWpContentDir("/cache/tmpWclearfy/mobile_") . time());
|
857 |
+
}
|
858 |
+
}
|
859 |
+
}
|
860 |
+
|
861 |
+
if( !is_dir(self::getWpContentDir("/cache/tmpWclearfy")) ) {
|
862 |
+
if( @mkdir(self::getWpContentDir("/cache/tmpWclearfy"), 0755, true) ) {
|
863 |
+
$created_tmpWclearfy = true;
|
864 |
+
} else {
|
865 |
+
$created_tmpWclearfy = false;
|
866 |
+
//$this->systemMessage = array("Permission of <strong>/wp-content/cache</strong> must be <strong>755</strong>", "error");
|
867 |
+
}
|
868 |
+
} else {
|
869 |
+
$created_tmpWclearfy = true;
|
870 |
+
}
|
871 |
+
|
872 |
+
//to clear widget cache path
|
873 |
+
self::deleteWidgetCache();
|
874 |
+
|
875 |
+
self::delete_multiple_domain_mapping_cache($minified);
|
876 |
+
|
877 |
+
if( is_dir($cache_path) ) {
|
878 |
+
if( @rename($cache_path, self::getWpContentDir("/cache/tmpWclearfy/") . time()) ) {
|
879 |
+
$cache_deleted = true;
|
880 |
+
}
|
881 |
+
} else {
|
882 |
+
$cache_deleted = true;
|
883 |
+
}
|
884 |
+
|
885 |
+
if( $minified ) {
|
886 |
+
if( is_dir($minified_cache_path) ) {
|
887 |
+
if( @rename($minified_cache_path, self::getWpContentDir("/cache/tmpWclearfy/m") . time()) ) {
|
888 |
+
|
889 |
+
$minifed_deleted = true;
|
890 |
+
}
|
891 |
+
} else {
|
892 |
+
$minifed_deleted = true;
|
893 |
+
}
|
894 |
+
} else {
|
895 |
+
$minifed_deleted = true;
|
896 |
+
}
|
897 |
+
|
898 |
+
if( $created_tmpWclearfy && $cache_deleted && $minifed_deleted ) {
|
899 |
+
do_action('wclearfy_delete_cache');
|
900 |
+
|
901 |
+
self::rm_folder_recursively(self::getWpContentDir("/cache/tmpWclearfy"));
|
902 |
+
|
903 |
+
return true;
|
904 |
+
} else {
|
905 |
+
// ошибка
|
906 |
+
}
|
907 |
+
}
|
908 |
+
|
909 |
+
public static function delete_multiple_domain_mapping_cache($minified = false)
|
910 |
+
{
|
911 |
+
//https://wordpress.org/plugins/multiple-domain-mapping-on-single-site/
|
912 |
+
if( self::isPluginActive("multiple-domain-mapping-on-single-site/multidomainmapping.php") ) {
|
913 |
+
$multiple_arr = get_option('falke_mdm_mappings');
|
914 |
+
|
915 |
+
if( isset($multiple_arr) && isset($multiple_arr["mappings"]) && isset($multiple_arr["mappings"][0]) ) {
|
916 |
+
foreach($multiple_arr["mappings"] as $mapping_key => $mapping_value) {
|
917 |
+
if( $minified ) {
|
918 |
+
$mapping_domain_path = preg_replace("/(\/cache\/[^\/]+\/all\/)/", "/cache/" . $mapping_value["domain"] . "/", self::getWpContentDir("/cache/all/"));
|
919 |
+
|
920 |
+
if( is_dir($mapping_domain_path) ) {
|
921 |
+
if( @rename($mapping_domain_path, self::getWpContentDir("/cache/tmpWclearfy/") . $mapping_value["domain"] . "_" . time()) ) {
|
922 |
+
|
923 |
+
}
|
924 |
+
}
|
925 |
+
} else {
|
926 |
+
$mapping_domain_path = preg_replace("/(\/cache\/[^\/]+\/all)/", "/cache/" . $mapping_value["domain"] . "/all", self::getWpContentDir("/cache/all/index.html"));
|
927 |
+
|
928 |
+
@unlink($mapping_domain_path);
|
929 |
+
}
|
930 |
+
}
|
931 |
+
}
|
932 |
+
}
|
933 |
+
}
|
934 |
+
|
935 |
+
public static function deleteWidgetCache()
|
936 |
+
{
|
937 |
+
$widget_cache_path = self::getWpContentDir("/cache/wclearfy-widget-cache");
|
938 |
+
|
939 |
+
if( is_dir($widget_cache_path) ) {
|
940 |
+
if( !is_dir(self::getWpContentDir("/cache/tmpWclearfy")) ) {
|
941 |
+
if( @mkdir(self::getWpContentDir("/cache/tmpWclearfy"), 0755, true) ) {
|
942 |
+
//tmpWclearfy has been created
|
943 |
+
}
|
944 |
+
}
|
945 |
+
|
946 |
+
if( @rename($widget_cache_path, self::getWpContentDir("/cache/tmpWclearfy/w") . time()) ) {
|
947 |
+
//DONE
|
948 |
+
}
|
949 |
+
}
|
950 |
+
}
|
951 |
+
|
952 |
+
public static function to_move_gtranslate_rules($htaccess)
|
953 |
+
{
|
954 |
+
preg_match("/\#\#\#\s+BEGIN\sGTranslate\sconfig\s\#\#\#[^\#]+\#\#\#\s+END\sGTranslate\sconfig\s\#\#\#/i", $htaccess, $gtranslate);
|
955 |
+
|
956 |
+
if( isset($gtranslate[0]) ) {
|
957 |
+
$htaccess = preg_replace("/\#\#\#\s+BEGIN\sGTranslate\sconfig\s\#\#\#[^\#]+\#\#\#\s+END\sGTranslate\sconfig\s\#\#\#/i", "", $htaccess);
|
958 |
+
$htaccess = $gtranslate[0] . "\n" . $htaccess;
|
959 |
+
}
|
960 |
+
|
961 |
+
return $htaccess;
|
962 |
+
}
|
963 |
+
|
964 |
+
public static function getMobileUserAgents()
|
965 |
+
{
|
966 |
+
return implode("|", self::get_mobile_browsers()) . "|" . implode("|", self::get_operating_systems());
|
967 |
+
}
|
968 |
+
|
969 |
+
public static function rm_folder_recursively($dir, $i = 1)
|
970 |
+
{
|
971 |
+
if( is_dir($dir) ) {
|
972 |
+
$files = @scandir($dir);
|
973 |
+
foreach((array)$files as $file) {
|
974 |
+
if( $i > 50 && !preg_match("/wp-fastest-cache-premium/i", $dir) ) {
|
975 |
+
return true;
|
976 |
+
} else {
|
977 |
+
$i++;
|
978 |
+
}
|
979 |
+
if( '.' === $file || '..' === $file ) {
|
980 |
+
continue;
|
981 |
+
}
|
982 |
+
if( is_dir("$dir/$file") ) {
|
983 |
+
self::rm_folder_recursively("$dir/$file", $i);
|
984 |
+
} else {
|
985 |
+
if( file_exists("$dir/$file") ) {
|
986 |
+
@unlink("$dir/$file");
|
987 |
+
}
|
988 |
+
}
|
989 |
+
}
|
990 |
+
}
|
991 |
+
|
992 |
+
if( is_dir($dir) ) {
|
993 |
+
$files_tmp = @scandir($dir);
|
994 |
+
|
995 |
+
if( !isset($files_tmp[2]) ) {
|
996 |
+
@rmdir($dir);
|
997 |
+
}
|
998 |
+
}
|
999 |
+
|
1000 |
+
return true;
|
1001 |
+
}
|
1002 |
+
|
1003 |
+
public static function excludeAdminCookie()
|
1004 |
+
{
|
1005 |
+
$rules = "";
|
1006 |
+
$users_groups = array_chunk(get_users(["role" => "administrator", "fields" => ["user_login"]]), 5);
|
1007 |
+
|
1008 |
+
foreach($users_groups as $group_key => $group) {
|
1009 |
+
$tmp_users = "";
|
1010 |
+
$tmp_rule = "";
|
1011 |
+
|
1012 |
+
foreach($group as $key => $value) {
|
1013 |
+
if( $tmp_users ) {
|
1014 |
+
$tmp_users = $tmp_users . "|" . sanitize_user(wp_unslash($value->user_login), true);
|
1015 |
+
} else {
|
1016 |
+
$tmp_users = sanitize_user(wp_unslash($value->user_login), true);
|
1017 |
+
}
|
1018 |
+
|
1019 |
+
// to replace spaces with \s
|
1020 |
+
$tmp_users = preg_replace("/\s/", "\s", $tmp_users);
|
1021 |
+
|
1022 |
+
if( !next($group) ) {
|
1023 |
+
$tmp_rule = "RewriteCond %{HTTP:Cookie} !wordpress_logged_in_[^\=]+\=" . $tmp_users;
|
1024 |
+
}
|
1025 |
+
}
|
1026 |
+
|
1027 |
+
if( $rules ) {
|
1028 |
+
$rules = $rules . "\n" . $tmp_rule;
|
1029 |
+
} else {
|
1030 |
+
$rules = $tmp_rule;
|
1031 |
+
}
|
1032 |
+
}
|
1033 |
+
|
1034 |
+
return "# Start_WCLEARFY_Exclude_Admin_Cookie\n" . $rules . "\n# End_WCLEARFY_Exclude_Admin_Cookie\n";
|
1035 |
+
}
|
1036 |
+
|
1037 |
+
public static function excludeRules()
|
1038 |
+
{
|
1039 |
+
$uris = WCL_Plugin::app()->getPopulateOption('cache_reject_uri');
|
1040 |
+
|
1041 |
+
if( !empty($uris) ) {
|
1042 |
+
$uris = array_map(function ($value) {
|
1043 |
+
$site_url = site_url();
|
1044 |
+
|
1045 |
+
$value = trim(rtrim($value));
|
1046 |
+
// http://clearfy.pro/members/ -> /members/
|
1047 |
+
$value = str_replace($site_url, "", $value);
|
1048 |
+
// /members/(.*) -> members/(.*)
|
1049 |
+
$value = preg_replace("/^\//", "", $value);
|
1050 |
+
// members/ -> members
|
1051 |
+
$value = untrailingslashit($value);
|
1052 |
+
|
1053 |
+
if( empty($value) ) {
|
1054 |
+
return "RewriteCond %{REQUEST_URI} !^/$ [NC]";
|
1055 |
+
}
|
1056 |
+
|
1057 |
+
return "RewriteCond %{REQUEST_URI} !^/" . $value . " [NC]";
|
1058 |
+
}, preg_split('/\r\n|\n|\r/', $uris));
|
1059 |
+
} else {
|
1060 |
+
$uris = [];
|
1061 |
+
}
|
1062 |
+
|
1063 |
+
return "# Start WCLEARFY Exclude\n" . implode("\n", $uris) . "\n# End WCLEARFY Exclude\n";
|
1064 |
+
}
|
1065 |
+
|
1066 |
+
|
1067 |
+
public static function modifyHtaccess()
|
1068 |
+
{
|
1069 |
+
$path = ABSPATH;
|
1070 |
+
if( self::is_subdirectory_install() ) {
|
1071 |
+
$path = self::getABSPATH();
|
1072 |
+
}
|
1073 |
+
|
1074 |
+
// if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && preg_match("/iis/i", $_SERVER["SERVER_SOFTWARE"])){
|
1075 |
+
// return array("The plugin does not work with Microsoft IIS. Only with Apache", "error");
|
1076 |
+
// }
|
1077 |
+
|
1078 |
+
// if(isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && preg_match("/nginx/i", $_SERVER["SERVER_SOFTWARE"])){
|
1079 |
+
// return array("The plugin does not work with Nginx. Only with Apache", "error");
|
1080 |
+
// }
|
1081 |
+
|
1082 |
+
if( !file_exists($path . ".htaccess") ) {
|
1083 |
+
if( isset($_SERVER["SERVER_SOFTWARE"]) && $_SERVER["SERVER_SOFTWARE"] && (preg_match("/iis/i", $_SERVER["SERVER_SOFTWARE"]) || preg_match("/nginx/i", $_SERVER["SERVER_SOFTWARE"])) ) {
|
1084 |
+
//
|
1085 |
+
} else {
|
1086 |
+
throw new Exception("<label>.htaccess was not found</label> <a target='_blank' href='http://clearfy.com/docs/htaccess-was-not-found/'>Read More</a>", 98);
|
1087 |
+
}
|
1088 |
+
}
|
1089 |
+
|
1090 |
+
if( self::isPluginActive('wp-postviews/wp-postviews.php') ) {
|
1091 |
+
$wp_postviews_options = get_option("views_options");
|
1092 |
+
$wp_postviews_options["use_ajax"] = true;
|
1093 |
+
update_option("views_options", $wp_postviews_options);
|
1094 |
+
|
1095 |
+
if( !WP_CACHE ) {
|
1096 |
+
if( $wp_config = @file_get_contents(ABSPATH . "wp-config.php") ) {
|
1097 |
+
$wp_config = str_replace("\$table_prefix", "define('WP_CACHE', true);\n\$table_prefix", $wp_config);
|
1098 |
+
|
1099 |
+
if( !@file_put_contents(ABSPATH . "wp-config.php", $wp_config) ) {
|
1100 |
+
throw new Exception("define('WP_CACHE', true); is needed to be added into wp-config.php", 99);
|
1101 |
+
}
|
1102 |
+
} else {
|
1103 |
+
throw new Exception("define('WP_CACHE', true); is needed to be added into wp-config.php", 99);
|
1104 |
+
}
|
1105 |
+
}
|
1106 |
+
}
|
1107 |
+
|
1108 |
+
$htaccess = @file_get_contents($path . ".htaccess");
|
1109 |
+
|
1110 |
+
// if(defined('DONOTCACHEPAGE')){
|
1111 |
+
// return array("DONOTCACHEPAGE <label>constant is defined as TRUE. It must be FALSE</label>", "error");
|
1112 |
+
// }else
|
1113 |
+
|
1114 |
+
if( !get_option('permalink_structure') ) {
|
1115 |
+
throw new Exception("You have to set <strong><u><a href='" . admin_url() . "options-permalink.php" . "'>permalinks</a></u></strong>", 100);
|
1116 |
+
} else if( $res = self::checkSuperCache($path, $htaccess) ) {
|
1117 |
+
return $res;
|
1118 |
+
} else if( self::isPluginActive('fast-velocity-minify/fvm.php') ) {
|
1119 |
+
throw new Exception("Fast Velocity Minify needs to be deactivated", 101);
|
1120 |
+
} else if( self::isPluginActive('far-future-expiration/far-future-expiration.php') ) {
|
1121 |
+
throw new Exception("Far Future Expiration Plugin needs to be deactivated", 102);
|
1122 |
+
} else if( self::isPluginActive('sg-cachepress/sg-cachepress.php') ) {
|
1123 |
+
throw new Exception("SG Optimizer needs to be deactived", 103);
|
1124 |
+
} else if( self::isPluginActive('adrotate/adrotate.php') || self::isPluginActive('adrotate-pro/adrotate.php') ) {
|
1125 |
+
//return self::warningIncompatible("AdRotate");
|
1126 |
+
throw new Exception("AdRotate needs to be deactived", 104);
|
1127 |
+
} else if( self::isPluginActive('mobilepress/mobilepress.php') ) {
|
1128 |
+
/*return self::warningIncompatible("MobilePress", array(
|
1129 |
+
"name" => "WPtouch Mobile",
|
1130 |
+
"url" => "https://wordpress.org/plugins/wptouch/"
|
1131 |
+
));*/
|
1132 |
+
throw new Exception("MobilePress needs to be deactived", 105);
|
1133 |
+
} else if( self::isPluginActive('speed-booster-pack/speed-booster-pack.php') ) {
|
1134 |
+
throw new Exception("Speed Booster Pack needs to be deactivated<br>", 106);
|
1135 |
+
} else if( self::isPluginActive('wp-performance-score-booster/wp-performance-score-booster.php') ) {
|
1136 |
+
throw new Exception("WP Performance Score Booster needs to be deactivated<br>This plugin has aldready Gzip, Leverage Browser Caching features", 107);
|
1137 |
+
} else if( self::isPluginActive('bwp-minify/bwp-minify.php') ) {
|
1138 |
+
throw new Exception("Better WordPress Minify needs to be deactivated<br>This plugin has aldready Minify feature", 108);
|
1139 |
+
} else if( self::isPluginActive('check-and-enable-gzip-compression/richards-toolbox.php') ) {
|
1140 |
+
throw new Exception("Check and Enable GZIP compression needs to be deactivated<br>This plugin has aldready Gzip feature", 109);
|
1141 |
+
} else if( self::isPluginActive('gzippy/gzippy.php') ) {
|
1142 |
+
throw new Exception("GZippy needs to be deactivated<br>This plugin has aldready Gzip feature", 110);
|
1143 |
+
} else if( self::isPluginActive('gzip-ninja-speed-compression/gzip-ninja-speed.php') ) {
|
1144 |
+
throw new Exception("GZip Ninja Speed Compression needs to be deactivated<br>This plugin has aldready Gzip feature", 111);
|
1145 |
+
} else if( self::isPluginActive('wordpress-gzip-compression/ezgz.php') ) {
|
1146 |
+
throw new Exception("WordPress Gzip Compression needs to be deactivated<br>This plugin has aldready Gzip feature", 112);
|
1147 |
+
} else if( self::isPluginActive('filosofo-gzip-compression/filosofo-gzip-compression.php') ) {
|
1148 |
+
throw new Exception("GZIP Output needs to be deactivated<br>This plugin has aldready Gzip feature", 113);
|
1149 |
+
} else if( self::isPluginActive('head-cleaner/head-cleaner.php') ) {
|
1150 |
+
throw new Exception("Head Cleaner needs to be deactivated", 114);
|
1151 |
+
} else if( self::isPluginActive('far-future-expiry-header/far-future-expiration.php') ) {
|
1152 |
+
throw new Exception("Far Future Expiration Plugin needs to be deactivated", 115);
|
1153 |
+
} else if( is_writable($path . ".htaccess") ) {
|
1154 |
+
$htaccess = apply_filters('wclearfy/cache/htaccess_rules', $htaccess);
|
1155 |
+
|
1156 |
+
$htaccess = self::insertRewriteRule($htaccess);
|
1157 |
+
$htaccess = self::to_move_gtranslate_rules($htaccess);
|
1158 |
+
|
1159 |
+
file_put_contents($path . ".htaccess", $htaccess);
|
1160 |
+
}
|
1161 |
+
|
1162 |
+
return false;
|
1163 |
+
}
|
1164 |
+
|
1165 |
+
|
1166 |
+
/**
|
1167 |
+
* Returns the home URL, without WPML filters if the plugin is active
|
1168 |
+
*
|
1169 |
+
* @param string $path Path to add to the home URL.
|
1170 |
+
*
|
1171 |
+
* @return string
|
1172 |
+
*/
|
1173 |
+
public static function get_home_url($path = '')
|
1174 |
+
{
|
1175 |
+
static $home_url = [];
|
1176 |
+
|
1177 |
+
if( isset($home_url[$path]) ) {
|
1178 |
+
return $home_url[$path];
|
1179 |
+
}
|
1180 |
+
|
1181 |
+
$home_url[$path] = home_url($path);
|
1182 |
+
|
1183 |
+
return $home_url[$path];
|
1184 |
+
}
|
1185 |
+
|
1186 |
+
/**
|
1187 |
+
* Get the name of the "home directory", in case the home URL is not at the domain's root.
|
1188 |
+
* It can be seen like the `RewriteBase` from the .htaccess file, but without the trailing slash.
|
1189 |
+
*
|
1190 |
+
* @return string
|
1191 |
+
*/
|
1192 |
+
public static function get_home_dirname()
|
1193 |
+
{
|
1194 |
+
static $home_root;
|
1195 |
+
|
1196 |
+
if( isset($home_root) ) {
|
1197 |
+
return $home_root;
|
1198 |
+
}
|
1199 |
+
|
1200 |
+
$home_root = wp_parse_url(self::get_main_home_url());
|
1201 |
+
|
1202 |
+
if( !empty($home_root['path']) ) {
|
1203 |
+
$home_root = '/' . trim($home_root['path'], '/');
|
1204 |
+
$home_root = rtrim($home_root, '/');
|
1205 |
+
} else {
|
1206 |
+
$home_root = '';
|
1207 |
+
}
|
1208 |
+
|
1209 |
+
return $home_root;
|
1210 |
+
}
|
1211 |
+
|
1212 |
+
/**
|
1213 |
+
* Get the URL of the site's root. It corresponds to the main site's home page URL.
|
1214 |
+
*
|
1215 |
+
* @return string
|
1216 |
+
* @author Grégory Viguier
|
1217 |
+
*
|
1218 |
+
* @since 3.1.1
|
1219 |
+
*/
|
1220 |
+
public static function get_main_home_url()
|
1221 |
+
{
|
1222 |
+
static $root_url;
|
1223 |
+
|
1224 |
+
if( isset($root_url) ) {
|
1225 |
+
return $root_url;
|
1226 |
+
}
|
1227 |
+
|
1228 |
+
if( !is_multisite() || is_main_site() ) {
|
1229 |
+
$root_url = self::get_home_url('/');
|
1230 |
+
|
1231 |
+
return $root_url;
|
1232 |
+
}
|
1233 |
+
|
1234 |
+
$current_network = get_network();
|
1235 |
+
|
1236 |
+
if( $current_network ) {
|
1237 |
+
$root_url = set_url_scheme('https://' . $current_network->domain . $current_network->path);
|
1238 |
+
$root_url = trailingslashit($root_url);
|
1239 |
+
} else {
|
1240 |
+
$root_url = self::get_home_url('/');
|
1241 |
+
}
|
1242 |
+
|
1243 |
+
return $root_url;
|
1244 |
+
}
|
1245 |
+
}
|
components/cache/includes/includes/index.html
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
Silence is golden.
|
components/cache/includes/includes/todo_cdn.php
ADDED
@@ -0,0 +1,462 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class CdnWCLEARFY{
|
3 |
+
public static function cloudflare_clear_cache($email = false, $key = false, $zoneid = false){
|
4 |
+
if(!$email && !$key && !$zoneid){
|
5 |
+
if($cdn_values = get_option("WClearfyCacheCDN")){
|
6 |
+
$std_obj = json_decode($cdn_values);
|
7 |
+
|
8 |
+
foreach ($std_obj as $key => $value) {
|
9 |
+
if($value->id == "cloudflare"){
|
10 |
+
$email = $value->cdnurl;
|
11 |
+
$key = $value->originurl;
|
12 |
+
break;
|
13 |
+
}
|
14 |
+
}
|
15 |
+
|
16 |
+
if($email && $key){
|
17 |
+
$zone = self::cloudflare_get_zone_id($email, $key, false);
|
18 |
+
|
19 |
+
if($zone["success"]){
|
20 |
+
$zoneid = $zone["zoneid"];
|
21 |
+
}
|
22 |
+
}
|
23 |
+
}
|
24 |
+
}
|
25 |
+
|
26 |
+
if($email && $key && $zoneid){
|
27 |
+
$header = array("method" => "DELETE",
|
28 |
+
'headers' => array(
|
29 |
+
"X-Auth-Email" => $email,
|
30 |
+
"X-Auth-Key" => $key,
|
31 |
+
"Content-Type" => "application/json"
|
32 |
+
),
|
33 |
+
"body" => '{"purge_everything":true}'
|
34 |
+
);
|
35 |
+
|
36 |
+
$response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/purge_cache', $header);
|
37 |
+
}
|
38 |
+
}
|
39 |
+
|
40 |
+
public static function cloudflare_disable_rocket_loader($email = false, $key = false, $zoneid = false){
|
41 |
+
if($email && $key && $zoneid){
|
42 |
+
$header = array("method" => "PATCH",
|
43 |
+
'timeout' => 10,
|
44 |
+
'headers' => array(
|
45 |
+
"X-Auth-Email" => $email,
|
46 |
+
"X-Auth-Key" => $key,
|
47 |
+
"Content-Type" => "application/json"
|
48 |
+
),
|
49 |
+
'body' => '{"value":"off"}'
|
50 |
+
);
|
51 |
+
|
52 |
+
$response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/settings/rocket_loader', $header);
|
53 |
+
|
54 |
+
if(!$response || is_wp_error($response)){
|
55 |
+
return array("success" => false, "error_message" => "Unable to disable rocket loader option");
|
56 |
+
}else{
|
57 |
+
$body = json_decode(wp_remote_retrieve_body($response));
|
58 |
+
|
59 |
+
if($body->success){
|
60 |
+
return array("success" => true);
|
61 |
+
}else if(isset($body->errors) && isset($body->errors[0])){
|
62 |
+
return array("success" => false, "error_message" => $body->errors[0]->message);
|
63 |
+
}else{
|
64 |
+
return array("success" => false, "error_message" => "Unknown error: 101");
|
65 |
+
}
|
66 |
+
}
|
67 |
+
|
68 |
+
return array("success" => false, "error_message" => "Unknown error");
|
69 |
+
}
|
70 |
+
}
|
71 |
+
|
72 |
+
|
73 |
+
public static function cloudflare_set_browser_caching($email = false, $key = false, $zoneid = false){
|
74 |
+
if($email && $key && $zoneid){
|
75 |
+
$header = array("method" => "PATCH",
|
76 |
+
'timeout' => 10,
|
77 |
+
'headers' => array(
|
78 |
+
"X-Auth-Email" => $email,
|
79 |
+
"X-Auth-Key" => $key,
|
80 |
+
"Content-Type" => "application/json"
|
81 |
+
),
|
82 |
+
'body' => '{"value":16070400}'
|
83 |
+
);
|
84 |
+
|
85 |
+
$response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/settings/browser_cache_ttl', $header);
|
86 |
+
|
87 |
+
if(!$response || is_wp_error($response)){
|
88 |
+
return array("success" => false, "error_message" => "Unable to set the browser caching option");
|
89 |
+
}else{
|
90 |
+
$body = json_decode(wp_remote_retrieve_body($response));
|
91 |
+
|
92 |
+
if($body->success){
|
93 |
+
return array("success" => true);
|
94 |
+
}else if(isset($body->errors) && isset($body->errors[0])){
|
95 |
+
return array("success" => false, "error_message" => $body->errors[0]->message);
|
96 |
+
}else{
|
97 |
+
return array("success" => false, "error_message" => "Unknown error: 101");
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
return array("success" => false, "error_message" => "Unknown error");
|
102 |
+
}
|
103 |
+
}
|
104 |
+
|
105 |
+
public static function cloudflare_disable_minify($email = false, $key = false, $zoneid = false){
|
106 |
+
if($email && $key && $zoneid){
|
107 |
+
$header = array("method" => "PATCH",
|
108 |
+
'timeout' => 10,
|
109 |
+
'headers' => array(
|
110 |
+
"X-Auth-Email" => $email,
|
111 |
+
"X-Auth-Key" => $key,
|
112 |
+
"Content-Type" => "application/json"
|
113 |
+
),
|
114 |
+
'body' => '{"value":{"css":"off","html":"off","js":"off"}}'
|
115 |
+
);
|
116 |
+
|
117 |
+
$response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/'.$zoneid.'/settings/minify', $header);
|
118 |
+
|
119 |
+
if(!$response || is_wp_error($response)){
|
120 |
+
return array("success" => false, "error_message" => "Unable to disable minify options");
|
121 |
+
}else{
|
122 |
+
$body = json_decode(wp_remote_retrieve_body($response));
|
123 |
+
|
124 |
+
if($body->success){
|
125 |
+
return array("success" => true);
|
126 |
+
}else if(isset($body->errors) && isset($body->errors[0])){
|
127 |
+
return array("success" => false, "error_message" => $body->errors[0]->message);
|
128 |
+
}else{
|
129 |
+
return array("success" => false, "error_message" => "Unknown error: 101");
|
130 |
+
}
|
131 |
+
}
|
132 |
+
|
133 |
+
return array("success" => false, "error_message" => "Unknown error");
|
134 |
+
}else{
|
135 |
+
wp_die("bad request");
|
136 |
+
}
|
137 |
+
}
|
138 |
+
|
139 |
+
public static function cloudflare_get_zone_id($email = false, $key = false){
|
140 |
+
$hostname = preg_replace("/^(https?\:\/\/)?(www\d*\.)?/", "", $_SERVER["HTTP_HOST"]);
|
141 |
+
|
142 |
+
if(function_exists("idn_to_utf8")){
|
143 |
+
$hostname = idn_to_utf8($hostname);
|
144 |
+
}
|
145 |
+
|
146 |
+
$header = array("method" => "GET",
|
147 |
+
'headers' => array(
|
148 |
+
"X-Auth-Email" => $email,
|
149 |
+
"X-Auth-Key" => $key,
|
150 |
+
"Content-Type" => "application/json"
|
151 |
+
),
|
152 |
+
);
|
153 |
+
|
154 |
+
/*
|
155 |
+
status=active has been removed because status may be "pending"
|
156 |
+
*/
|
157 |
+
$response = wp_remote_request('https://api.cloudflare.com/client/v4/zones/?page=1&per_page=1000', $header);
|
158 |
+
|
159 |
+
if(!$response || is_wp_error($response)){
|
160 |
+
$res = array("success" => false, "error_message" => $response->get_error_message());
|
161 |
+
}else{
|
162 |
+
$zone = json_decode(wp_remote_retrieve_body($response));
|
163 |
+
|
164 |
+
if(isset($zone->errors) && isset($zone->errors[0])){
|
165 |
+
$res = array("success" => false, "error_message" => $zone->errors[0]->message);
|
166 |
+
}else{
|
167 |
+
if(isset($zone->result) && isset($zone->result[0])){
|
168 |
+
foreach ($zone->result as $zone_key => $zone_value) {
|
169 |
+
if(preg_match("/".$zone_value->name."/", $hostname)){
|
170 |
+
$res = array("success" => true,
|
171 |
+
"zoneid" => $zone_value->id,
|
172 |
+
"plan" => $zone_value->plan->legacy_id);
|
173 |
+
}
|
174 |
+
}
|
175 |
+
|
176 |
+
if(!$res["success"]){
|
177 |
+
$res = array("success" => false, "error_message" => "No zone name ".$hostname);
|
178 |
+
}
|
179 |
+
}else{
|
180 |
+
$res = array("success" => false, "error_message" => "There is no zone");
|
181 |
+
}
|
182 |
+
}
|
183 |
+
}
|
184 |
+
|
185 |
+
return $res;
|
186 |
+
}
|
187 |
+
|
188 |
+
public static function cloudflare_remove_webp(){
|
189 |
+
$path = ABSPATH.".htaccess";
|
190 |
+
|
191 |
+
if(file_exists($path)){
|
192 |
+
if(is_writable($path)){
|
193 |
+
$htaccess = file_get_contents($path);
|
194 |
+
$htaccess = preg_replace("/#\s?BEGIN\s?WEBPWClearfyCache.*?#\s?END\s?WEBPWClearfyCache/s", "", $htaccess);
|
195 |
+
|
196 |
+
file_put_contents($path, $htaccess);
|
197 |
+
}
|
198 |
+
}
|
199 |
+
}
|
200 |
+
|
201 |
+
|
202 |
+
public static function cloudflare_change_settings(){
|
203 |
+
//admin OR author OR editor
|
204 |
+
if(current_user_can('manage_options') || current_user_can('delete_published_posts') || current_user_can('edit_published_posts')){
|
205 |
+
if(isset($_GET["url"]) && isset($_GET["origin_url"])){
|
206 |
+
$email = $_GET["url"];
|
207 |
+
$key = $_GET["origin_url"];
|
208 |
+
}
|
209 |
+
|
210 |
+
$zone = CdnWCLEARFY::cloudflare_get_zone_id($email, $key);
|
211 |
+
|
212 |
+
if($zone["success"]){
|
213 |
+
|
214 |
+
$minify = CdnWCLEARFY::cloudflare_disable_minify($email, $key, $zone["zoneid"]);
|
215 |
+
$rocket_loader = CdnWCLEARFY::cloudflare_disable_rocket_loader($email, $key, $zone["zoneid"]);
|
216 |
+
$purge_cache = CdnWCLEARFY::cloudflare_clear_cache($email, $key, $zone["zoneid"]);
|
217 |
+
$browser_caching = CdnWCLEARFY::cloudflare_set_browser_caching($email, $key, $zone["zoneid"]);
|
218 |
+
|
219 |
+
if($zone["plan"] == "free"){
|
220 |
+
CdnWCLEARFY::cloudflare_remove_webp();;
|
221 |
+
}
|
222 |
+
|
223 |
+
|
224 |
+
if($minify["success"]){
|
225 |
+
if($rocket_loader["success"]){
|
226 |
+
if($browser_caching["success"]){
|
227 |
+
$res = array("success" => true);
|
228 |
+
}else{
|
229 |
+
$res = array("success" => false, "error_message" => $browser_caching["error_message"]);
|
230 |
+
}
|
231 |
+
}else{
|
232 |
+
$res = array("success" => false, "error_message" => $rocket_loader["error_message"]);
|
233 |
+
}
|
234 |
+
}else{
|
235 |
+
$res = array("success" => false, "error_message" => $minify["error_message"]);
|
236 |
+
}
|
237 |
+
}else{
|
238 |
+
$res = $zone;
|
239 |
+
}
|
240 |
+
|
241 |
+
wp_send_json($res);
|
242 |
+
}else{
|
243 |
+
wp_die("Must be admin");
|
244 |
+
}
|
245 |
+
}
|
246 |
+
|
247 |
+
public static function check_url(){
|
248 |
+
if(current_user_can('manage_options')){
|
249 |
+
if(isset($_GET["type"]) && $_GET["type"] == "cloudflare"){
|
250 |
+
CdnWCLEARFY::cloudflare_change_settings();
|
251 |
+
}
|
252 |
+
|
253 |
+
if(preg_match("/wp\.com/", $_GET["url"]) || $_GET["url"] == "random"){
|
254 |
+
wp_send_json(array("success" => true));
|
255 |
+
}
|
256 |
+
|
257 |
+
$host = str_replace("www.", "", $_SERVER["HTTP_HOST"]);
|
258 |
+
$_GET["url"] = esc_url_raw($_GET["url"]);
|
259 |
+
|
260 |
+
if(!preg_match("/^http/", $_GET["url"])){
|
261 |
+
$_GET["url"] = "http://".$_GET["url"];
|
262 |
+
}
|
263 |
+
|
264 |
+
if(preg_match("/^https/i", site_url()) && preg_match("/^https/i", home_url())){
|
265 |
+
$_GET["url"] = preg_replace("/http\:\/\//i", "https://", $_GET["url"]);
|
266 |
+
}
|
267 |
+
|
268 |
+
$response = wp_remote_get($_GET["url"], array('timeout' => 20, 'user-agent' => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:64.0) Gecko/20100101 Firefox/64.0"));
|
269 |
+
|
270 |
+
$header = wp_remote_retrieve_headers($response);
|
271 |
+
|
272 |
+
if ( !$response || is_wp_error( $response ) ) {
|
273 |
+
$res = array("success" => false, "error_message" => $response->get_error_message());
|
274 |
+
|
275 |
+
if($response->get_error_code() == "http_request_failed"){
|
276 |
+
if($response->get_error_message() == "Failure when receiving data from the peer"){
|
277 |
+
$res = array("success" => true);
|
278 |
+
}else if(preg_match("/cURL\serror\s60/i", $response->get_error_message())){
|
279 |
+
//cURL error 60: SSL: no alternative certificate subject name matches target host name
|
280 |
+
$res = array("success" => false, "error_message" => "<a href='https://www.wpfastestcache.com/warnings/how-to-use-cdn-on-ssl-sites/' target='_blank'>Please Read: https://www.wpfastestcache.com/warnings/how-to-use-cdn-on-ssl-sites/</a>");
|
281 |
+
}else if(preg_match("/cURL\serror\s6/i", $response->get_error_message())){
|
282 |
+
//cURL error 6: Couldn't resolve host
|
283 |
+
if(preg_match("/".preg_quote($host, "/")."/i", $_GET["url"])){
|
284 |
+
$res = array("success" => true);
|
285 |
+
}
|
286 |
+
}
|
287 |
+
}
|
288 |
+
}else{
|
289 |
+
$response_code = wp_remote_retrieve_response_code( $response );
|
290 |
+
if($response_code == 200){
|
291 |
+
$res = array("success" => true);
|
292 |
+
}else{
|
293 |
+
if(method_exists($response, "get_error_message")){
|
294 |
+
$res = array("success" => false, "error_message" => $response->get_error_message());
|
295 |
+
}else{
|
296 |
+
$res = array("success" => false, "error_message" => wp_remote_retrieve_response_message($response));
|
297 |
+
}
|
298 |
+
|
299 |
+
if(isset($header["server"]) && preg_match("/squid/i", $header["server"])){
|
300 |
+
$res = array("success" => true);
|
301 |
+
}
|
302 |
+
|
303 |
+
if(($response_code == 401) && (preg_match("/res\.cloudinary\.com/i", $_GET["url"]))){
|
304 |
+
$res = array("success" => true);
|
305 |
+
}
|
306 |
+
|
307 |
+
if(($response_code == 403) && (preg_match("/stackpathdns\.com/i", $_GET["url"]))){
|
308 |
+
$res = array("success" => true);
|
309 |
+
}
|
310 |
+
|
311 |
+
if(($response_code == 403) && (preg_match("/cloudfront\.net/i", $_GET["url"]))){
|
312 |
+
$res = array("success" => false, "error_message" => "<a href='https://www.wpfastestcache.com/warnings/amazon-s3-cloudfront-access-denied-403-forbidden/' target='_blank'>Please Read: https://www.wpfastestcache.com/warnings/amazon-s3-cloudfront-access-denied-403-forbidden</a>");
|
313 |
+
}
|
314 |
+
}
|
315 |
+
}
|
316 |
+
|
317 |
+
wp_send_json($res);
|
318 |
+
}else{
|
319 |
+
wp_die("Must be admin");
|
320 |
+
}
|
321 |
+
}
|
322 |
+
|
323 |
+
public static function cdn_options(){
|
324 |
+
if(current_user_can('manage_options')){
|
325 |
+
$cdn_values = get_option("WClearfyCacheCDN");
|
326 |
+
if($cdn_values){
|
327 |
+
echo $cdn_values;
|
328 |
+
}else{
|
329 |
+
echo json_encode(array("success" => false));
|
330 |
+
}
|
331 |
+
exit;
|
332 |
+
}else{
|
333 |
+
wp_die("Must be admin");
|
334 |
+
}
|
335 |
+
}
|
336 |
+
|
337 |
+
public static function remove_cdn_integration(){
|
338 |
+
if(current_user_can('manage_options')){
|
339 |
+
$cdn_values = get_option("WClearfyCacheCDN");
|
340 |
+
|
341 |
+
if($cdn_values){
|
342 |
+
$std_obj = json_decode($cdn_values);
|
343 |
+
$cdn_values_arr = array();
|
344 |
+
|
345 |
+
if(is_array($std_obj)){
|
346 |
+
$cdn_values_arr = $std_obj;
|
347 |
+
}else{
|
348 |
+
array_push($cdn_values_arr, $std_obj);
|
349 |
+
}
|
350 |
+
|
351 |
+
foreach ($cdn_values_arr as $cdn_key => $cdn_value) {
|
352 |
+
if($cdn_value->id == "amazonaws" || $cdn_value->id == "keycdn" || $cdn_value->id == "cdn77"){
|
353 |
+
$cdn_value->id = "other";
|
354 |
+
}
|
355 |
+
|
356 |
+
if($cdn_value->id == $_POST["id"]){
|
357 |
+
unset($cdn_values_arr[$cdn_key]);
|
358 |
+
}
|
359 |
+
}
|
360 |
+
|
361 |
+
$cdn_values_arr = array_values($cdn_values_arr);
|
362 |
+
}
|
363 |
+
|
364 |
+
if(count($cdn_values_arr) > 0){
|
365 |
+
update_option("WClearfyCacheCDN", json_encode($cdn_values_arr));
|
366 |
+
}else{
|
367 |
+
delete_option("WClearfyCacheCDN");
|
368 |
+
}
|
369 |
+
|
370 |
+
echo json_encode(array("success" => true));
|
371 |
+
exit;
|
372 |
+
}else{
|
373 |
+
wp_die("Must be admin");
|
374 |
+
}
|
375 |
+
}
|
376 |
+
|
377 |
+
public static function cdn_template(){
|
378 |
+
if(current_user_can('manage_options')){
|
379 |
+
if($_POST["id"] == "maxcdn"){
|
380 |
+
$path = WCLEARFY_MAIN_PATH."templates/cdn/maxcdn.php";
|
381 |
+
}else if($_POST["id"] == "other"){
|
382 |
+
$path = WCLEARFY_MAIN_PATH."templates/cdn/other.php";
|
383 |
+
}else if($_POST["id"] == "photon"){
|
384 |
+
$path = WCLEARFY_MAIN_PATH."templates/cdn/photon.php";
|
385 |
+
}else if($_POST["id"] == "cloudflare"){
|
386 |
+
$path = WCLEARFY_MAIN_PATH."templates/cdn/cloudflare.php";
|
387 |
+
}else{
|
388 |
+
die("Wrong cdn");
|
389 |
+
}
|
390 |
+
|
391 |
+
|
392 |
+
ob_start();
|
393 |
+
include_once($path);
|
394 |
+
$content = ob_get_contents();
|
395 |
+
ob_end_clean();
|
396 |
+
|
397 |
+
$res = array("success" => false, "content" => "");
|
398 |
+
|
399 |
+
if($data = @file_get_contents($path)){
|
400 |
+
$res["success"] = true;
|
401 |
+
$res["content"] = $content;
|
402 |
+
}
|
403 |
+
|
404 |
+
echo json_encode($res);
|
405 |
+
exit;
|
406 |
+
}else{
|
407 |
+
wp_die("Must be admin");
|
408 |
+
}
|
409 |
+
}
|
410 |
+
|
411 |
+
public static function save_cdn_integration(){
|
412 |
+
if(current_user_can('manage_options')){
|
413 |
+
if(isset($_POST) && isset($_POST["values"])){
|
414 |
+
foreach ($_POST["values"] as $val_key => &$val_value) {
|
415 |
+
$val_value = sanitize_text_field($val_value);
|
416 |
+
}
|
417 |
+
}
|
418 |
+
|
419 |
+
if($data = get_option("WClearfyCacheCDN")){
|
420 |
+
$cdn_exist = false;
|
421 |
+
$arr = json_decode($data);
|
422 |
+
|
423 |
+
if(is_array($arr)){
|
424 |
+
foreach ($arr as $cdn_key => &$cdn_value) {
|
425 |
+
if($cdn_value->id == $_POST["values"]["id"]){
|
426 |
+
$cdn_value = $_POST["values"];
|
427 |
+
$cdn_exist = true;
|
428 |
+
}
|
429 |
+
}
|
430 |
+
|
431 |
+
if(!$cdn_exist){
|
432 |
+
array_push($arr, $_POST["values"]);
|
433 |
+
}
|
434 |
+
|
435 |
+
update_option("WClearfyCacheCDN", json_encode($arr));
|
436 |
+
}else{
|
437 |
+
$tmp_arr = array();
|
438 |
+
|
439 |
+
if($arr->id == $_POST["values"]["id"]){
|
440 |
+
array_push($tmp_arr, $_POST["values"]);
|
441 |
+
}else{
|
442 |
+
array_push($tmp_arr, $arr);
|
443 |
+
array_push($tmp_arr, $_POST["values"]);
|
444 |
+
}
|
445 |
+
|
446 |
+
update_option("WClearfyCacheCDN", json_encode($tmp_arr));
|
447 |
+
}
|
448 |
+
}else{
|
449 |
+
$arr = array();
|
450 |
+
array_push($arr, $_POST["values"]);
|
451 |
+
|
452 |
+
add_option("WClearfyCacheCDN", json_encode($arr), null, "yes");
|
453 |
+
}
|
454 |
+
echo json_encode(array("success" => true));
|
455 |
+
exit;
|
456 |
+
}else{
|
457 |
+
wp_die("Must be admin");
|
458 |
+
}
|
459 |
+
}
|
460 |
+
|
461 |
+
}
|
462 |
+
?>
|
components/cache/includes/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
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_451_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 WBCR\
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
@@ -52,9 +52,9 @@ class WbcrCmp_CommentsPage extends WBCR\Factory_Templates_101\Pages\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\Factory_Templates_105\Pages\PageBase {
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
52 |
*
|
53 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
54 |
*
|
55 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
56 |
*/
|
57 |
+
public function __construct( Wbcr_Factory452_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 WBCR\
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
@@ -66,9 +66,9 @@ class WbcrCmp_DeleteCommentsPage extends WBCR\Factory_Templates_101\Pages\PageBa
|
|
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\Factory_Templates_101\Pages\PageBa
|
|
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\Factory_Templates_101\Pages\PageBa
|
|
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\Factory_Templates_105\Pages\PageBase {
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
66 |
*
|
67 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
68 |
*
|
69 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
70 |
*/
|
71 |
+
public function __construct( Wbcr_Factory452_Plugin $plugin ) {
|
72 |
$this->menu_title = __( 'Comments cleaner', 'comments-plus' );
|
73 |
|
74 |
parent::__construct( $plugin );
|
78 |
* {@inheritDoc}
|
79 |
*
|
80 |
* @param $notices
|
81 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
82 |
*
|
83 |
* @return array
|
84 |
+
* @see libs\factory\pages\themplates\FactoryPages451_ImpressiveThemplate
|
85 |
*/
|
86 |
public function getActionNotices( $notices ) {
|
87 |
|
200 |
/**
|
201 |
* Prints the content of the page
|
202 |
*
|
203 |
+
* @see libs\factory\pages\themplates\FactoryPages451_ImpressiveThemplate
|
204 |
*/
|
205 |
public function showPageContent() {
|
206 |
$stats = $this->getStats();
|
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_452_VERSION
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
68 |
|
69 |
// FRAMEWORK MODULES
|
70 |
'load_factory_modules' => array(
|
71 |
+
array('libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'),
|
72 |
+
array('libs/factory/forms', 'factory_forms_449', 'admin'),
|
73 |
+
array('libs/factory/pages', 'factory_pages_451', 'admin'),
|
74 |
+
array('libs/factory/clearfy', 'factory_templates_105', 'all'),
|
75 |
+
array('libs/factory/adverts', 'factory_adverts_129', 'admin')
|
76 |
)
|
77 |
);
|
78 |
|
79 |
+
$wcm_compatibility = new Wbcr_Factory452_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_Factory449_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_Factory452_Plugin {
|
14 |
|
15 |
/**
|
16 |
* @see self::app()
|
17 |
+
* @var Wbcr_Factory452_Plugin
|
18 |
*/
|
19 |
private static $app;
|
20 |
|
59 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
60 |
* классам.
|
61 |
*
|
62 |
+
* @return \Wbcr_Factory452_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 WBCR\
|
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\Factory_Templates_105\Configurate {
|
16 |
|
17 |
private $modified_types = [];
|
18 |
|
19 |
/**
|
20 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
21 |
*/
|
22 |
+
public function __construct( Wbcr_Factory452_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_Factory452_Activator
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
class WCTR_Activation extends Wbcr_Factory452_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_451_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 WBCR\
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
@@ -59,9 +59,9 @@ class WCTR_CyrliteraPage extends WBCR\Factory_Templates_101\Pages\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\Factory_Templates_101\Pages\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\Factory_Templates_105\Pages\PageBase {
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
59 |
*
|
60 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
61 |
*
|
62 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
63 |
*/
|
64 |
+
public function __construct( Wbcr_Factory452_Plugin $plugin ) {
|
65 |
$this->menu_title = __( 'Cyrlitera', 'cyrlitera' );
|
66 |
|
67 |
if ( ! defined( 'LOADING_CYRLITERA_AS_ADDON' ) ) {
|
203 |
}
|
204 |
|
205 |
/**
|
206 |
+
* @param $html_builder Wbcr_FactoryForms449_Html
|
207 |
*/
|
208 |
public function rollbackButton( $html_builder ) {
|
209 |
$form_name = $html_builder->getFormName();
|
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_452_VERSION
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
68 |
|
69 |
// FRAMEWORK MODULES
|
70 |
'load_factory_modules' => array(
|
71 |
+
array('libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'),
|
72 |
+
array('libs/factory/forms', 'factory_forms_449', 'admin'),
|
73 |
+
array('libs/factory/pages', 'factory_pages_451', 'admin'),
|
74 |
+
array('libs/factory/clearfy', 'factory_templates_105', 'all'),
|
75 |
+
array('libs/factory/adverts', 'factory_adverts_129', 'admin')
|
76 |
)
|
77 |
);
|
78 |
|
79 |
+
$wctr_compatibility = new Wbcr_Factory452_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_Factory449_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_Factory452_Plugin {
|
14 |
|
15 |
/**
|
16 |
* @see self::app()
|
17 |
+
* @var Wbcr_Factory452_Plugin
|
18 |
*/
|
19 |
private static $app;
|
20 |
|
57 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
58 |
* классам.
|
59 |
*
|
60 |
+
* @return \Wbcr_Factory452_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 WBCR\
|
16 |
|
17 |
public function registerActionsAndFilters() {
|
18 |
|
@@ -235,7 +235,7 @@ class WCTR_ConfigurateCyrlitera extends WBCR\Factory_Templates_101\Configurate {
|
|
235 |
* Перенаправление со старых url, которые были уже преобразованы
|
236 |
*/
|
237 |
public function redirectFromOldUrls() {
|
238 |
-
if ( ! WBCR\
|
239 |
return;
|
240 |
}
|
241 |
$is404 = is_404();
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
+
class WCTR_ConfigurateCyrlitera extends WBCR\Factory_Templates_105\Configurate {
|
16 |
|
17 |
public function registerActionsAndFilters() {
|
18 |
|
235 |
* Перенаправление со старых url, которые были уже преобразованы
|
236 |
*/
|
237 |
public function redirectFromOldUrls() {
|
238 |
+
if ( ! WBCR\Factory_Templates_105\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_Factory452_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_451_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 WBCR\
|
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\Factory_Templates_105\Pages\PageBase {
|
23 |
|
24 |
/**
|
25 |
* Requests assets (js and css) for the page.
|
26 |
*
|
27 |
+
* @param Wbcr_Factory452_ScriptList $scripts
|
28 |
+
* @param Wbcr_Factory452_StyleList $styles
|
29 |
*
|
30 |
* @return void
|
31 |
+
* @see Wbcr_FactoryPages451_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_FactoryPages451_ImpressiveThemplate $page Экземпляр страницы
|
180 |
*
|
181 |
* @return mixed Отсортированный массив с группой опций
|
182 |
*/
|
203 |
* Эта модикация является не стандартной, поэтому мы не можете реалировать ее
|
204 |
* через фреймворк.
|
205 |
*
|
206 |
+
* @param @param $html_builder Wbcr_FactoryForms449_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_Factory452_ScriptList $scripts
|
67 |
+
* @param Wbcr_Factory452_StyleList $styles
|
68 |
*
|
69 |
* @return void
|
70 |
+
* @see Wbcr_FactoryPages451_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_Factory452_ScriptList $scripts
|
65 |
+
* @param Wbcr_Factory452_StyleList $styles
|
66 |
*
|
67 |
* @return void
|
68 |
+
* @see Wbcr_FactoryPages451_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 WBCR\
|
17 |
|
18 |
/**
|
19 |
* {@inheritdoc}
|
@@ -36,12 +36,12 @@ class WDN_LicensePage extends WBCR\Factory_Templates_101\Pages\License {
|
|
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\Factory_Templates_105\Pages\License {
|
17 |
|
18 |
/**
|
19 |
* {@inheritdoc}
|
36 |
/**
|
37 |
* WCL_LicensePage constructor.
|
38 |
*
|
39 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
40 |
*
|
41 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
42 |
*
|
43 |
*/
|
44 |
+
public function __construct( Wbcr_Factory452_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_Factory452_ScriptList $scripts
|
63 |
+
* @param Wbcr_Factory452_StyleList $styles
|
64 |
*
|
65 |
* @return void
|
66 |
+
* @see Wbcr_FactoryPages451_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_Factory452_Plugin $plugin
|
70 |
*/
|
71 |
+
public function __construct( Wbcr_Factory452_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_Factory452_ScriptList $scripts
|
92 |
+
* @param Wbcr_Factory452_StyleList $styles
|
93 |
*
|
94 |
* @return void
|
95 |
+
* @see Wbcr_FactoryPages451_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_451')
|
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', '
|
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_452_VERSION
|
12 |
*/
|
13 |
|
14 |
/**
|
85 |
|
86 |
// FRAMEWORK MODULES
|
87 |
'load_factory_modules' => array(
|
88 |
+
array('libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'),
|
89 |
+
array('libs/factory/forms', 'factory_forms_449', 'admin'),
|
90 |
+
array('libs/factory/pages', 'factory_pages_451', 'admin'),
|
91 |
+
array('libs/factory/clearfy', 'factory_templates_105', 'all'),
|
92 |
+
array('libs/factory/freemius', 'factory_freemius_139', 'all'),
|
93 |
+
array('libs/factory/adverts', 'factory_adverts_129', 'admin'),
|
94 |
+
//array('libs/factory/logger', 'factory_logger_117', 'all')
|
95 |
)
|
96 |
);
|
97 |
|
98 |
+
$wdan_compatibility = new Wbcr_Factory452_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_Factory449_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_129\Base;
|
13 |
|
14 |
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
exit;
|
16 |
}
|
17 |
|
18 |
+
class WDN_Plugin extends Wbcr_Factory452_Plugin {
|
19 |
|
20 |
/**
|
21 |
+
* @var Wbcr_Factory452_Plugin
|
22 |
*/
|
23 |
private static $app;
|
24 |
private $plugin_data;
|
44 |
}
|
45 |
|
46 |
/**
|
47 |
+
* @return Wbcr_Factory452_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 WBCR\
|
19 |
|
20 |
public function registerActionsAndFilters() {
|
21 |
if ( is_admin() ) {
|
15 |
exit;
|
16 |
}
|
17 |
|
18 |
+
class WDN_ConfigHideNotices extends WBCR\Factory_Templates_105\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_Factory452_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 Factory452_Activator
|
9 |
* @version 1.0
|
10 |
*/
|
11 |
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
class WGA_Activation extends Wbcr_Factory452_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_FactoryPages451_ImpressiveThemplate $page
|
25 |
*
|
26 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
27 |
*
|
28 |
* @return void
|
29 |
* @since 3.0.1
|
components/ga-cache/admin/options.php
CHANGED
@@ -151,7 +151,7 @@ function wbcr_ga_get_plugin_options()
|
|
151 |
|
152 |
/**
|
153 |
* @param $form
|
154 |
-
* @param $page
|
155 |
*
|
156 |
* @return mixed
|
157 |
*/
|
151 |
|
152 |
/**
|
153 |
* @param $form
|
154 |
+
* @param $page Wbcr_FactoryPages451_ImpressiveThemplate
|
155 |
*
|
156 |
* @return mixed
|
157 |
*/
|
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 WBCR\
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
@@ -48,9 +48,9 @@ class WGA_CachePage extends WBCR\Factory_Templates_101\Pages\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\Factory_Templates_105\Pages\PageBase {
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
48 |
public $show_right_sidebar_in_options = true;
|
49 |
|
50 |
/**
|
51 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
52 |
*/
|
53 |
+
public function __construct( Wbcr_Factory452_Plugin $plugin ) {
|
54 |
$this->menu_title = __( 'Local Google Analytics', 'simple-google-analytics' );
|
55 |
|
56 |
if ( ! defined( 'LOADING_GA_CACHE_AS_ADDON' ) ) {
|
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 |
|
@@ -59,7 +59,7 @@ class WGA_Plugin extends Wbcr_Factory449_Plugin {
|
|
59 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
60 |
* классам.
|
61 |
*
|
62 |
-
* @return \
|
63 |
*/
|
64 |
public static function app()
|
65 |
{
|
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_Factory452_Plugin {
|
14 |
|
15 |
/**
|
16 |
* @see self::app()
|
17 |
+
* @var Wbcr_Factory452_Plugin
|
18 |
*/
|
19 |
private static $app;
|
20 |
|
59 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
60 |
* классам.
|
61 |
*
|
62 |
+
* @return \Wbcr_Factory452_Plugin|\WGA_Plugin
|
63 |
*/
|
64 |
public static function app()
|
65 |
{
|
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 WBCR\
|
16 |
|
17 |
|
18 |
public function registerActionsAndFilters() {
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
+
class WGA_ConfigGACache extends WBCR\Factory_Templates_105\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_Factory452_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_453', 'admin'),
|
71 |
+
array('libs/factory/forms', 'factory_forms_449', 'admin'),
|
72 |
+
array('libs/factory/pages', 'factory_pages_451', 'admin'),
|
73 |
+
array('libs/factory/clearfy', 'factory_templates_105', 'all'),
|
74 |
+
array('libs/factory/adverts', 'factory_adverts_129', 'admin')
|
75 |
)
|
76 |
);
|
77 |
|
78 |
+
$wga_compatibility = new Wbcr_Factory452_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 WBCR\
|
13 |
|
14 |
/**
|
15 |
* {@inheritDoc}
|
@@ -52,9 +52,9 @@ class WHTM_SettingsPage extends WBCR\Factory_Templates_101\Pages\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\Factory_Templates_105\Pages\PageBase {
|
13 |
|
14 |
/**
|
15 |
* {@inheritDoc}
|
52 |
*
|
53 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
54 |
*
|
55 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
56 |
*/
|
57 |
+
public function __construct( Wbcr_Factory452_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_452_VERSION
|
12 |
*/
|
13 |
|
14 |
/*
|
59 |
|
60 |
// FRAMEWORK MODULES
|
61 |
'load_factory_modules' => array(
|
62 |
+
array( 'libs/factory/bootstrap', 'factory_bootstrap_453', 'admin' ),
|
63 |
+
array( 'libs/factory/forms', 'factory_forms_449', 'admin' ),
|
64 |
+
array( 'libs/factory/pages', 'factory_pages_451', 'admin' ),
|
65 |
+
array( 'libs/factory/clearfy', 'factory_templates_105', 'all' ),
|
66 |
+
array( 'libs/factory/adverts', 'factory_adverts_129', 'admin')
|
67 |
)
|
68 |
);
|
69 |
|
70 |
+
$whtml_compatibility = new Wbcr_Factory452_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_Factory449_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_Factory452_Plugin {
|
17 |
|
18 |
/**
|
19 |
* @see self::app()
|
20 |
+
* @var Wbcr_Factory452_Plugin
|
21 |
*/
|
22 |
private static $app;
|
23 |
|
53 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
54 |
* классам.
|
55 |
*
|
56 |
+
* @return \Wbcr_Factory452_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 WBCR\
|
13 |
|
14 |
/**
|
15 |
* {@inheritDoc}
|
@@ -50,12 +50,12 @@ class WMAC_MinifyAndCombineSettingsPage extends WBCR\Factory_Templates_101\Pages
|
|
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 = __('Optimize CSS & JS', 'minify-and-combine');
|
61 |
$this->page_menu_short_description = __('Optimize CSS & JS', 'minify-and-combine');
|
@@ -85,11 +85,11 @@ class WMAC_MinifyAndCombineSettingsPage extends WBCR\Factory_Templates_101\Pages
|
|
85 |
/**
|
86 |
* Requests assets (js and css) for the page.
|
87 |
*
|
88 |
-
* @param
|
89 |
-
* @param
|
90 |
*
|
91 |
* @return void
|
92 |
-
* @see
|
93 |
*
|
94 |
*/
|
95 |
public function assets($scripts, $styles)
|
@@ -483,7 +483,7 @@ This can be fully automated for different types of pages with the Мinify And Co
|
|
483 |
/**
|
484 |
* @since 1.1.1 - является устаревшим
|
485 |
*/
|
486 |
-
return
|
487 |
}
|
488 |
|
489 |
public function cacheInfo()
|
9 |
*
|
10 |
* @since 1.0.0
|
11 |
*/
|
12 |
+
class WMAC_MinifyAndCombineSettingsPage extends WBCR\Factory_Templates_105\Pages\PageBase {
|
13 |
|
14 |
/**
|
15 |
* {@inheritDoc}
|
50 |
/**
|
51 |
* WMAC_MinifyAndCombineSettingsPage constructor.
|
52 |
*
|
53 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
54 |
*
|
55 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
56 |
*
|
57 |
*/
|
58 |
+
public function __construct(Wbcr_Factory452_Plugin $plugin)
|
59 |
{
|
60 |
$this->menu_title = __('Optimize CSS & JS', 'minify-and-combine');
|
61 |
$this->page_menu_short_description = __('Optimize CSS & JS', 'minify-and-combine');
|
85 |
/**
|
86 |
* Requests assets (js and css) for the page.
|
87 |
*
|
88 |
+
* @param Wbcr_Factory452_ScriptList $scripts
|
89 |
+
* @param Wbcr_Factory452_StyleList $styles
|
90 |
*
|
91 |
* @return void
|
92 |
+
* @see Wbcr_FactoryPages451_AdminPage
|
93 |
*
|
94 |
*/
|
95 |
public function assets($scripts, $styles)
|
483 |
/**
|
484 |
* @since 1.1.1 - является устаревшим
|
485 |
*/
|
486 |
+
return wbcr_factory_452_apply_filters_deprecated('wbcr_mac_settings_form_options', [$formOptions], '1.1.1', 'wmac/pages/settings_form_options');
|
487 |
}
|
488 |
|
489 |
public function cacheInfo()
|
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_Factory449_Plugin {
|
|
56 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
57 |
* классам.
|
58 |
*
|
59 |
-
* @return \
|
60 |
*/
|
61 |
public static function app()
|
62 |
{
|
13 |
}
|
14 |
|
15 |
|
16 |
+
class WMAC_Plugin extends Wbcr_Factory452_Plugin {
|
17 |
|
18 |
/**
|
19 |
* @see self::app()
|
20 |
+
* @var Wbcr_Factory452_Plugin
|
21 |
*/
|
22 |
private static $app;
|
23 |
|
56 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
57 |
* классам.
|
58 |
*
|
59 |
+
* @return \Wbcr_Factory452_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', [ 'WBCR\
|
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', [ 'WBCR\Factory_Templates_105\Helpers', 'flushPageCache' ], 10, 0 );
|
389 |
}
|
390 |
|
391 |
// Warm cache (part of speedupper)!
|
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_452_VERSION
|
12 |
*/
|
13 |
|
14 |
/*
|
59 |
|
60 |
// FRAMEWORK MODULES
|
61 |
'load_factory_modules' => array(
|
62 |
+
array( 'libs/factory/bootstrap', 'factory_bootstrap_453', 'admin' ),
|
63 |
+
array( 'libs/factory/forms', 'factory_forms_449', 'admin' ),
|
64 |
+
array( 'libs/factory/pages', 'factory_pages_451', 'admin' ),
|
65 |
+
array( 'libs/factory/clearfy', 'factory_templates_105', 'all' ),
|
66 |
+
array( 'libs/factory/adverts', 'factory_adverts_129', 'admin')
|
67 |
)
|
68 |
);
|
69 |
|
70 |
+
$wmac_compatibility = new Wbcr_Factory452_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 Factory452_Activator
|
9 |
*/
|
10 |
|
11 |
// Exit if accessed directly
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
+
class WUPM_Activation extends Wbcr_Factory452_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_templates_105.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
|
63 |
}
|
64 |
return false;
|
65 |
}
|
66 |
|
67 |
+
/*var noticeId = $.wbcr_factory_templates_105.app.showNotice('Settings successfully updated', 'success');
|
68 |
|
69 |
setTimeout(function() {
|
70 |
+
$.wbcr_factory_templates_105.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_templates_105.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_451_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_Factory452_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 WBCR\
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
@@ -66,9 +66,9 @@ class WUPM_AdvancedPage extends WBCR\Factory_Templates_101\Pages\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\Factory_Templates_101\Pages\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\Factory_Templates_105\Pages\PageBase {
|
20 |
|
21 |
/**
|
22 |
* {@inheritDoc}
|
66 |
*
|
67 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
68 |
*
|
69 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
70 |
*/
|
71 |
+
public function __construct( Wbcr_Factory452_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_Factory452_ScriptList $scripts
|
83 |
+
* @param \Wbcr_Factory452_StyleList $styles
|
84 |
*/
|
85 |
public function assets( $scripts, $styles ) {
|
86 |
parent::assets( $scripts, $styles );
|
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 WBCR\
|
20 |
|
21 |
/**
|
22 |
*{@inheritDoc}
|
@@ -83,9 +83,9 @@ class WUPM_PluginsPage extends WBCR\Factory_Templates_101\Pages\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\Factory_Templates_101\Pages\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\Factory_Templates_105\Pages\PageBase {
|
20 |
|
21 |
/**
|
22 |
*{@inheritDoc}
|
83 |
*
|
84 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
85 |
*
|
86 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
87 |
*/
|
88 |
+
public function __construct( Wbcr_Factory452_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_Factory452_ScriptList $scripts
|
125 |
+
* @param \Wbcr_Factory452_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 WBCR\
|
19 |
|
20 |
/**
|
21 |
* {@inheritDoc}
|
@@ -85,9 +85,9 @@ class WUPM_ThemesPage extends WBCR\Factory_Templates_101\Pages\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\Factory_Templates_101\Pages\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\Factory_Templates_105\Pages\PageBase {
|
19 |
|
20 |
/**
|
21 |
* {@inheritDoc}
|
85 |
private $themes_update_filters = [];
|
86 |
|
87 |
/**
|
88 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
89 |
*/
|
90 |
+
public function __construct( Wbcr_Factory452_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 FactoryPages451_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 WBCR\
|
19 |
|
20 |
/**
|
21 |
* {@inheritDoc}
|
@@ -51,9 +51,9 @@ class WUPM_UpdatesPage extends WBCR\Factory_Templates_101\Pages\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\Factory_Templates_101\Pages\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\Factory_Templates_105\Pages\PageBase {
|
19 |
|
20 |
/**
|
21 |
* {@inheritDoc}
|
51 |
*
|
52 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
53 |
*
|
54 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
55 |
*/
|
56 |
+
public function __construct( Wbcr_Factory452_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_Factory452_ScriptList $scripts
|
90 |
+
* @param \Wbcr_Factory452_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_Factory449_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_Factory452_Plugin {
|
14 |
|
15 |
/**
|
16 |
* @see self::app()
|
17 |
+
* @var Wbcr_Factory452_Plugin
|
18 |
*/
|
19 |
private static $app;
|
20 |
|
57 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
58 |
* классам.
|
59 |
*
|
60 |
+
* @return \Wbcr_Factory452_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 WBCR\
|
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\Factory_Templates_105\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_Factory452_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_452_VERSION
|
12 |
*/
|
13 |
|
14 |
// Exit if accessed directly
|
68 |
|
69 |
// FRAMEWORK MODULES
|
70 |
'load_factory_modules' => array(
|
71 |
+
array('libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'),
|
72 |
+
array('libs/factory/forms', 'factory_forms_449', 'admin'),
|
73 |
+
array('libs/factory/pages', 'factory_pages_451', 'admin'),
|
74 |
+
array('libs/factory/clearfy', 'factory_templates_105', 'all'),
|
75 |
+
array('libs/factory/adverts', 'factory_adverts_129', 'admin')
|
76 |
)
|
77 |
);
|
78 |
|
79 |
+
$wupm_compatibility = new Wbcr_Factory452_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
@@ -105,7 +105,7 @@ function wbcr_clr_admin_bar_menu($wp_admin_bar)
|
|
105 |
* @since 1.1.3 - добавлен
|
106 |
* @since 1.1.4 - является устаревшим
|
107 |
*/
|
108 |
-
$menu_items =
|
109 |
|
110 |
/**
|
111 |
* @since 1.1.3 - добавлен
|
105 |
* @since 1.1.3 - добавлен
|
106 |
* @since 1.1.4 - является устаревшим
|
107 |
*/
|
108 |
+
$menu_items = wbcr_factory_452_apply_filters_deprecated('wbcr_clearfy_admin_bar_menu_items', [$menu_items], '1.4.0', 'wbcr/clearfy/adminbar_menu_items');
|
109 |
|
110 |
/**
|
111 |
* @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 |
|
@@ -28,7 +28,7 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
|
|
28 |
* Подробнее о свойстве $app см. self::app()
|
29 |
*
|
30 |
* @param string $plugin_path
|
31 |
-
* @param array
|
32 |
*
|
33 |
* @throws Exception
|
34 |
*/
|
@@ -75,7 +75,7 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
|
|
75 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
76 |
* классам.
|
77 |
*
|
78 |
-
* @return \
|
79 |
*/
|
80 |
public static function app()
|
81 |
{
|
@@ -138,6 +138,15 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
|
|
138 |
unset($load_components['assets_manager']);
|
139 |
}
|
140 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
// Выполнить код до загрузки и инициализации компонентов
|
142 |
// ----------------------------------------------------------
|
143 |
if( is_plugin_active('wp-rocket/wp-rocket.php') ) {
|
@@ -181,7 +190,6 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
|
|
181 |
private function register_pages()
|
182 |
{
|
183 |
require_once(WCL_PLUGIN_DIR . '/admin/pages/class-page.php');
|
184 |
-
require_once(WCL_PLUGIN_DIR . '/admin/pages/class-pages-performance-cache.php');
|
185 |
|
186 |
try {
|
187 |
$this->registerPage('WCL_Setup', WCL_PLUGIN_DIR . '/admin/pages/setup/class-pages-setup.php');
|
@@ -189,10 +197,6 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
|
|
189 |
$this->registerPage('WCL_AdvancedPage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-advanced.php');
|
190 |
$this->registerPage('WCL_PerformancePage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-performance.php');
|
191 |
|
192 |
-
if( !($this->premium->is_activate() && $this->premium->is_install_package() && WCL_Plugin::app()->isActivateComponent('cache')) ) {
|
193 |
-
$this->registerPage('WCL_CachePage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-performance-cache.php');
|
194 |
-
}
|
195 |
-
|
196 |
//$this->registerPage('WCL_PerformanceGooglePage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-performance-google.php');
|
197 |
$this->registerPage('WCL_ComponentsPage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-components.php');
|
198 |
$this->registerPage('WCL_SeoPage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-seo.php');
|
@@ -315,7 +319,7 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
|
|
315 |
* @param $slug
|
316 |
* param $premium
|
317 |
*
|
318 |
-
* @return \WBCR\
|
319 |
*/
|
320 |
public function getInstallComponentsButton($component_type, $slug)
|
321 |
{
|
@@ -328,7 +332,7 @@ class WCL_Plugin extends Wbcr_Factory449_Plugin {
|
|
328 |
* @param $component_type
|
329 |
* @param $slug
|
330 |
*
|
331 |
-
* @return \WBCR\
|
332 |
*/
|
333 |
public function getDeleteComponentsButton($component_type, $slug)
|
334 |
{
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
+
class WCL_Plugin extends Wbcr_Factory452_Plugin {
|
16 |
|
17 |
/**
|
18 |
* @see self::app()
|
19 |
+
* @var Wbcr_Factory452_Plugin
|
20 |
*/
|
21 |
private static $app;
|
22 |
|
28 |
* Подробнее о свойстве $app см. self::app()
|
29 |
*
|
30 |
* @param string $plugin_path
|
31 |
+
* @param array $data
|
32 |
*
|
33 |
* @throws Exception
|
34 |
*/
|
75 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
76 |
* классам.
|
77 |
*
|
78 |
+
* @return \Wbcr_Factory452_Plugin|\WCL_Plugin
|
79 |
*/
|
80 |
public static function app()
|
81 |
{
|
138 |
unset($load_components['assets_manager']);
|
139 |
}
|
140 |
|
141 |
+
// Выполнить код до загрузки и инициализации компонентов
|
142 |
+
// ----------------------------------------------------------
|
143 |
+
if( $this->premium->is_install_package() ) {
|
144 |
+
$package = $this->premium->get_package_data();
|
145 |
+
if( version_compare($package['version'], "1.4.3", "<") ) {
|
146 |
+
unset($load_components['cache']);
|
147 |
+
}
|
148 |
+
}
|
149 |
+
|
150 |
// Выполнить код до загрузки и инициализации компонентов
|
151 |
// ----------------------------------------------------------
|
152 |
if( is_plugin_active('wp-rocket/wp-rocket.php') ) {
|
190 |
private function register_pages()
|
191 |
{
|
192 |
require_once(WCL_PLUGIN_DIR . '/admin/pages/class-page.php');
|
|
|
193 |
|
194 |
try {
|
195 |
$this->registerPage('WCL_Setup', WCL_PLUGIN_DIR . '/admin/pages/setup/class-pages-setup.php');
|
197 |
$this->registerPage('WCL_AdvancedPage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-advanced.php');
|
198 |
$this->registerPage('WCL_PerformancePage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-performance.php');
|
199 |
|
|
|
|
|
|
|
|
|
200 |
//$this->registerPage('WCL_PerformanceGooglePage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-performance-google.php');
|
201 |
$this->registerPage('WCL_ComponentsPage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-components.php');
|
202 |
$this->registerPage('WCL_SeoPage', WCL_PLUGIN_DIR . '/admin/pages/class-pages-seo.php');
|
319 |
* @param $slug
|
320 |
* param $premium
|
321 |
*
|
322 |
+
* @return \WBCR\Factory_452\Components\Install_Button
|
323 |
*/
|
324 |
public function getInstallComponentsButton($component_type, $slug)
|
325 |
{
|
332 |
* @param $component_type
|
333 |
* @param $slug
|
334 |
*
|
335 |
+
* @return \WBCR\Factory_452\Components\Delete_Button
|
336 |
*/
|
337 |
public function getDeleteComponentsButton($component_type, $slug)
|
338 |
{
|
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_452_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_FactoryForms449_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_FactoryForms449_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_FactoryForms449_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 WBCR\
|
15 |
|
16 |
/**
|
17 |
* @param WCL_Plugin $plugin
|
11 |
exit;
|
12 |
}
|
13 |
|
14 |
+
class WCL_ConfigAdvanced extends WBCR\Factory_Templates_105\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 WBCR\
|
16 |
|
17 |
/**
|
18 |
* @param WCL_Plugin $plugin
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
+
class WCL_ConfigGooglePerformance extends WBCR\Factory_Templates_105\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 WBCR\
|
16 |
|
17 |
/**
|
18 |
* @param WCL_Plugin $plugin
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
+
class WCL_ConfigPerformance extends WBCR\Factory_Templates_105\Configurate {
|
16 |
|
17 |
/**
|
18 |
* @param WCL_Plugin $plugin
|
includes/classes/class.configurate-privacy.php
CHANGED
@@ -13,7 +13,7 @@ if( !defined('ABSPATH') ) {
|
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
-
class WCL_ConfigPrivacy extends WBCR\
|
17 |
|
18 |
/**
|
19 |
* @param WCL_Plugin $plugin
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
+
class WCL_ConfigPrivacy extends WBCR\Factory_Templates_105\Configurate {
|
17 |
|
18 |
/**
|
19 |
* @param WCL_Plugin $plugin
|
includes/classes/class.configurate-security.php
CHANGED
@@ -11,7 +11,7 @@
|
|
11 |
exit;
|
12 |
}
|
13 |
|
14 |
-
class WCL_ConfigSecurity extends WBCR\
|
15 |
|
16 |
/**
|
17 |
* @param WCL_Plugin $plugin
|
11 |
exit;
|
12 |
}
|
13 |
|
14 |
+
class WCL_ConfigSecurity extends WBCR\Factory_Templates_105\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 WBCR\
|
17 |
|
18 |
/**
|
19 |
* @param WCL_Plugin $plugin
|
13 |
exit;
|
14 |
}
|
15 |
|
16 |
+
class WCL_ConfigSeo extends WBCR\Factory_Templates_105\Configurate {
|
17 |
|
18 |
/**
|
19 |
* @param WCL_Plugin $plugin
|
includes/helpers.php
CHANGED
@@ -12,7 +12,7 @@ if( !defined('ABSPATH') ) {
|
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
-
class WCL_Helper extends WBCR\
|
16 |
|
17 |
public static function array_merge_insert(array $arr, array $inserted, $position = 'bottom', $key = null)
|
18 |
{
|
12 |
exit;
|
13 |
}
|
14 |
|
15 |
+
class WCL_Helper extends WBCR\Factory_Templates_105\Helpers {
|
16 |
|
17 |
public static function array_merge_insert(array $arr, array $inserted, $position = 'bottom', $key = null)
|
18 |
{
|
libs/factory/adverts/boot.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
use WBCR\
|
4 |
|
5 |
/**
|
6 |
* Factory Adverts
|
@@ -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_129\Base;
|
4 |
|
5 |
/**
|
6 |
* Factory Adverts
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( defined('FACTORY_ADVERTS_129_LOADED') || (defined('FACTORY_ADVERTS_BLOCK') && FACTORY_ADVERTS_BLOCK) ) {
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
# Устанавливаем константу, что модуль уже загружен
|
28 |
+
define('FACTORY_ADVERTS_129_LOADED', true);
|
29 |
|
30 |
# Устанавливаем версию модуля
|
31 |
+
define('FACTORY_ADVERTS_129_VERSION', '1.2.9');
|
32 |
|
33 |
# Регистрируем тектовый домен, для интернализации интерфейса модуля
|
34 |
+
load_plugin_textdomain('wbcr_factory_adverts_129', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
35 |
|
36 |
# Устанавливаем директорию модуля
|
37 |
+
define('FACTORY_ADVERTS_129_DIR', dirname(__FILE__));
|
38 |
|
39 |
# Устанавливаем url модуля
|
40 |
+
define('FACTORY_ADVERTS_129_URL', plugins_url(null, __FILE__));
|
41 |
|
42 |
+
require_once(FACTORY_ADVERTS_129_DIR . '/includes/class-rest-request.php');
|
43 |
+
require_once(FACTORY_ADVERTS_129_DIR . '/includes/class-base.php');
|
44 |
|
45 |
/**
|
46 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
47 |
*/
|
48 |
+
add_action('wbcr_factory_adverts_129_plugin_created', function ($plugin) {
|
49 |
+
$plugin->set_adverts_manager("WBCR\Factory_Adverts_129\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_129;
|
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_Factory452_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_129\Creative_Motion_API
|
57 |
*/
|
58 |
private $api;
|
59 |
|
82 |
*
|
83 |
* @since 1.0.0 Added
|
84 |
*
|
85 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
86 |
*/
|
87 |
+
public function __construct( \Wbcr_Factory452_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_129_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_129;
|
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_Factory452_Plugin
|
39 |
*/
|
40 |
private $plugin;
|
41 |
|
46 |
*
|
47 |
* @since 1.0.0 Added
|
48 |
*
|
49 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
50 |
* @param string $content
|
51 |
*/
|
52 |
+
public function __construct( \Wbcr_Factory452_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_129;
|
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_Factory452_Plugin
|
69 |
*/
|
70 |
private $plugin;
|
71 |
|
75 |
*
|
76 |
* Variable initialization.
|
77 |
*
|
78 |
+
* @param \Wbcr_Factory452_Plugin $plugin_name
|
79 |
* @since 1.0.0 Added
|
80 |
*
|
81 |
*/
|
82 |
+
public function __construct(\Wbcr_Factory452_Plugin $plugin)
|
83 |
{
|
84 |
$this->plugin = $plugin;
|
85 |
}
|
libs/factory/adverts/langs/{wbcr_factory_adverts_127-ru_RU.mo → wbcr_factory_adverts_129-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/adverts/langs/{wbcr_factory_adverts_127-ru_RU.po → wbcr_factory_adverts_129-ru_RU.po}
RENAMED
File without changes
|
libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .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-453 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-453 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-453 .factory-accordion-item{display:none}.factory-bootstrap-453 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-453 .factory-accordion>h3.active:hover{cursor:default}
|
libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
|
libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
|
libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,18 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-449 article,.factory-bootstrap-449 aside,.factory-bootstrap-449 details,.factory-bootstrap-449 figcaption,.factory-bootstrap-449 figure,.factory-bootstrap-449 footer,.factory-bootstrap-449 header,.factory-bootstrap-449 hgroup,.factory-bootstrap-449 main,.factory-bootstrap-449 nav,.factory-bootstrap-449 section,.factory-bootstrap-449 summary{display:block}.factory-bootstrap-449 audio,.factory-bootstrap-449 canvas,.factory-bootstrap-449 video{display:inline-block}.factory-bootstrap-449 audio:not([controls]){display:none;height:0}.factory-bootstrap-449 [hidden],.factory-bootstrap-449 template{display:none}.factory-bootstrap-449 body{margin:0}.factory-bootstrap-449 a{background:0 0}.factory-bootstrap-449 a:focus{outline:thin dotted}.factory-bootstrap-449 a:active,.factory-bootstrap-449 a:hover{outline:0}.factory-bootstrap-449 h1{margin:.67em 0}.factory-bootstrap-449 b,.factory-bootstrap-449 strong{font-weight:700}.factory-bootstrap-449 dfn{font-style:italic}.factory-bootstrap-449 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-449 mark{color:#000;background:#ff0}.factory-bootstrap-449 code,.factory-bootstrap-449 kbd,.factory-bootstrap-449 pre,.factory-bootstrap-449 samp{font-size:1em}.factory-bootstrap-449 pre{white-space:pre-wrap}.factory-bootstrap-449 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-449 sub,.factory-bootstrap-449 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-449 sup{top:-.5em}.factory-bootstrap-449 sub{bottom:-.25em}.factory-bootstrap-449 img{border:0}.factory-bootstrap-449 svg:not(:root){overflow:hidden}.factory-bootstrap-449 figure{margin:0}.factory-bootstrap-449 button,.factory-bootstrap-449 input,.factory-bootstrap-449 select,.factory-bootstrap-449 textarea{margin:0}.factory-bootstrap-449 button,.factory-bootstrap-449 select{text-transform:none}.factory-bootstrap-449 select{padding-right:4px!important}.factory-bootstrap-449 button,.factory-bootstrap-449 input[type=reset],.factory-bootstrap-449 input[type=submit],html .factory-bootstrap-449 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-449 button[disabled],html .factory-bootstrap-449 input[disabled]{cursor:default}.factory-bootstrap-449 input[type=checkbox],.factory-bootstrap-449 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-449 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-449 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-449 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-449 button::-moz-focus-inner,.factory-bootstrap-449 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-449 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-449 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-449 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-449 a,.factory-bootstrap-449 a:visited{text-decoration:underline}.factory-bootstrap-449 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-449 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-449 a[href^="javascript:"]:after,.factory-bootstrap-449 a[href^="#"]:after{content:""}.factory-bootstrap-449 blockquote,.factory-bootstrap-449 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-449 thead{display:table-header-group}.factory-bootstrap-449 img,.factory-bootstrap-449 tr{page-break-inside:avoid}.factory-bootstrap-449 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-449 h2,.factory-bootstrap-449 h3,.factory-bootstrap-449 p{orphans:3;widows:3}.factory-bootstrap-449 h2,.factory-bootstrap-449 h3{page-break-after:avoid}.factory-bootstrap-449 select{background:#fff!important}.factory-bootstrap-449 .navbar{display:none}.factory-bootstrap-449 .table td,.factory-bootstrap-449 .table th{background-color:#fff!important}.factory-bootstrap-449 .btn>.caret,.factory-bootstrap-449 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-449 .label{border:1px solid #000}.factory-bootstrap-449 .table{border-collapse:collapse!important}.factory-bootstrap-449 .table-bordered td,.factory-bootstrap-449 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-449 *,.factory-bootstrap-449 :after,.factory-bootstrap-449 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-449{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-449 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-449 button,.factory-bootstrap-449 input,.factory-bootstrap-449 select,.factory-bootstrap-449 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-449 img{vertical-align:middle}.factory-bootstrap-449 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-449 .img-rounded{border-radius:6px}.factory-bootstrap-449 .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-449 .img-circle{border-radius:50%}.factory-bootstrap-449 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-449 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-449 .h1,.factory-bootstrap-449 .h2,.factory-bootstrap-449 .h3,.factory-bootstrap-449 .h4,.factory-bootstrap-449 .h5,.factory-bootstrap-449 .h6,.factory-bootstrap-449 h1,.factory-bootstrap-449 h2,.factory-bootstrap-449 h3,.factory-bootstrap-449 h4,.factory-bootstrap-449 h5,.factory-bootstrap-449 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-449 .h1 .small,.factory-bootstrap-449 .h1 small,.factory-bootstrap-449 .h2 .small,.factory-bootstrap-449 .h2 small,.factory-bootstrap-449 .h3 .small,.factory-bootstrap-449 .h3 small,.factory-bootstrap-449 .h4 .small,.factory-bootstrap-449 .h4 small,.factory-bootstrap-449 .h5 .small,.factory-bootstrap-449 .h5 small,.factory-bootstrap-449 .h6 .small,.factory-bootstrap-449 .h6 small,.factory-bootstrap-449 h1 .small,.factory-bootstrap-449 h1 small,.factory-bootstrap-449 h2 .small,.factory-bootstrap-449 h2 small,.factory-bootstrap-449 h3 .small,.factory-bootstrap-449 h3 small,.factory-bootstrap-449 h4 .small,.factory-bootstrap-449 h4 small,.factory-bootstrap-449 h5 .small,.factory-bootstrap-449 h5 small,.factory-bootstrap-449 h6 .small,.factory-bootstrap-449 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-449 h1,.factory-bootstrap-449 h2,.factory-bootstrap-449 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-449 h1 .small,.factory-bootstrap-449 h1 small,.factory-bootstrap-449 h2 .small,.factory-bootstrap-449 h2 small,.factory-bootstrap-449 h3 .small,.factory-bootstrap-449 h3 small{font-size:65%}.factory-bootstrap-449 h4,.factory-bootstrap-449 h5,.factory-bootstrap-449 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-449 h4 .small,.factory-bootstrap-449 h4 small,.factory-bootstrap-449 h5 .small,.factory-bootstrap-449 h5 small,.factory-bootstrap-449 h6 .small,.factory-bootstrap-449 h6 small{font-size:75%}.factory-bootstrap-449 .h1,.factory-bootstrap-449 h1{font-size:36px}.factory-bootstrap-449 .h2,.factory-bootstrap-449 h2{font-size:30px}.factory-bootstrap-449 .h3,.factory-bootstrap-449 h3{font-size:24px}.factory-bootstrap-449 .h4,.factory-bootstrap-449 h4{font-size:18px}.factory-bootstrap-449 .h5,.factory-bootstrap-449 h5{font-size:14px}.factory-bootstrap-449 .h6,.factory-bootstrap-449 h6{font-size:12px}.factory-bootstrap-449 p{margin:0 0 10px}.factory-bootstrap-449 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-449 .small,.factory-bootstrap-449 small{font-size:85%}.factory-bootstrap-449 cite{font-style:normal}.factory-bootstrap-449 .text-muted{color:#999}.factory-bootstrap-449 .text-primary{color:#428bca}.factory-bootstrap-449 .text-primary:hover{color:#3071a9}.factory-bootstrap-449 .text-warning{color:#8a6d3b}.factory-bootstrap-449 .text-warning:hover{color:#66512c}.factory-bootstrap-449 .text-danger{color:#a94442}.factory-bootstrap-449 .text-danger:hover{color:#843534}.factory-bootstrap-449 .text-success{color:#3c763d}.factory-bootstrap-449 .text-success:hover{color:#2b542c}.factory-bootstrap-449 .text-info{color:#31708f}.factory-bootstrap-449 .text-info:hover{color:#245269}.factory-bootstrap-449 .text-left{text-align:left}.factory-bootstrap-449 .text-right{text-align:right}.factory-bootstrap-449 .text-center{text-align:center}.factory-bootstrap-449 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-449 ol,.factory-bootstrap-449 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-449 ol ol,.factory-bootstrap-449 ol ul,.factory-bootstrap-449 ul ol,.factory-bootstrap-449 ul ul{margin-bottom:0}.factory-bootstrap-449 .list-inline,.factory-bootstrap-449 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-449 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-449 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-449 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-449 dd,.factory-bootstrap-449 dt{line-height:1.428571429}.factory-bootstrap-449 dt{font-weight:700}.factory-bootstrap-449 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-449 abbr[data-original-title],.factory-bootstrap-449 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-449 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-449 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-449 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-449 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-449 blockquote .small,.factory-bootstrap-449 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-449 blockquote .small:before,.factory-bootstrap-449 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-449 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-449 blockquote.pull-right .small,.factory-bootstrap-449 blockquote.pull-right p,.factory-bootstrap-449 blockquote.pull-right small{text-align:right}.factory-bootstrap-449 blockquote.pull-right .small:before,.factory-bootstrap-449 blockquote.pull-right small:before{content:''}.factory-bootstrap-449 blockquote.pull-right .small:after,.factory-bootstrap-449 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-449 blockquote:after,.factory-bootstrap-449 blockquote:before{content:""}.factory-bootstrap-449 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-449 code,.factory-bootstrap-449 kbd,.factory-bootstrap-449 pre,.factory-bootstrap-449 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-449 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-449 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-449 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-449 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-449 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-449 .container:after,.factory-bootstrap-449 .container:before{display:table;content:" "}.factory-bootstrap-449 .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-449 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-449 .row:after,.factory-bootstrap-449 .row:before{display:table;content:" "}.factory-bootstrap-449 .row:after{clear:both}.factory-bootstrap-449 .col-lg-1,.factory-bootstrap-449 .col-lg-10,.factory-bootstrap-449 .col-lg-11,.factory-bootstrap-449 .col-lg-12,.factory-bootstrap-449 .col-lg-2,.factory-bootstrap-449 .col-lg-3,.factory-bootstrap-449 .col-lg-4,.factory-bootstrap-449 .col-lg-5,.factory-bootstrap-449 .col-lg-6,.factory-bootstrap-449 .col-lg-7,.factory-bootstrap-449 .col-lg-8,.factory-bootstrap-449 .col-lg-9,.factory-bootstrap-449 .col-md-1,.factory-bootstrap-449 .col-md-10,.factory-bootstrap-449 .col-md-11,.factory-bootstrap-449 .col-md-12,.factory-bootstrap-449 .col-md-2,.factory-bootstrap-449 .col-md-3,.factory-bootstrap-449 .col-md-4,.factory-bootstrap-449 .col-md-5,.factory-bootstrap-449 .col-md-6,.factory-bootstrap-449 .col-md-7,.factory-bootstrap-449 .col-md-8,.factory-bootstrap-449 .col-md-9,.factory-bootstrap-449 .col-sm-1,.factory-bootstrap-449 .col-sm-10,.factory-bootstrap-449 .col-sm-11,.factory-bootstrap-449 .col-sm-12,.factory-bootstrap-449 .col-sm-2,.factory-bootstrap-449 .col-sm-3,.factory-bootstrap-449 .col-sm-4,.factory-bootstrap-449 .col-sm-5,.factory-bootstrap-449 .col-sm-6,.factory-bootstrap-449 .col-sm-7,.factory-bootstrap-449 .col-sm-8,.factory-bootstrap-449 .col-sm-9,.factory-bootstrap-449 .col-xs-1,.factory-bootstrap-449 .col-xs-10,.factory-bootstrap-449 .col-xs-11,.factory-bootstrap-449 .col-xs-12,.factory-bootstrap-449 .col-xs-2,.factory-bootstrap-449 .col-xs-3,.factory-bootstrap-449 .col-xs-4,.factory-bootstrap-449 .col-xs-5,.factory-bootstrap-449 .col-xs-6,.factory-bootstrap-449 .col-xs-7,.factory-bootstrap-449 .col-xs-8,.factory-bootstrap-449 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-449 .col-xs-1,.factory-bootstrap-449 .col-xs-10,.factory-bootstrap-449 .col-xs-11,.factory-bootstrap-449 .col-xs-12,.factory-bootstrap-449 .col-xs-2,.factory-bootstrap-449 .col-xs-3,.factory-bootstrap-449 .col-xs-4,.factory-bootstrap-449 .col-xs-5,.factory-bootstrap-449 .col-xs-6,.factory-bootstrap-449 .col-xs-7,.factory-bootstrap-449 .col-xs-8,.factory-bootstrap-449 .col-xs-9{float:left}.factory-bootstrap-449 .col-xs-12{width:100%}.factory-bootstrap-449 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-449 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-449 .col-xs-9{width:75%}.factory-bootstrap-449 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-449 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-449 .col-xs-6{width:50%}.factory-bootstrap-449 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-449 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-449 .col-xs-3{width:25%}.factory-bootstrap-449 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-449 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-449 .col-xs-pull-12{right:100%}.factory-bootstrap-449 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-449 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-449 .col-xs-pull-9{right:75%}.factory-bootstrap-449 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-449 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-449 .col-xs-pull-6{right:50%}.factory-bootstrap-449 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-449 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-449 .col-xs-pull-3{right:25%}.factory-bootstrap-449 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-449 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-449 .col-xs-pull-0{right:0}.factory-bootstrap-449 .col-xs-push-12{left:100%}.factory-bootstrap-449 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-449 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-449 .col-xs-push-9{left:75%}.factory-bootstrap-449 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-449 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-449 .col-xs-push-6{left:50%}.factory-bootstrap-449 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-449 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-449 .col-xs-push-3{left:25%}.factory-bootstrap-449 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-449 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-449 .col-xs-push-0{left:0}.factory-bootstrap-449 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-449 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-449 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-449 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-449 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-449 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-449 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-449 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-449 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-449 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-449 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-449 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-449 .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-449 table{max-width:100%;background-color:transparent}.factory-bootstrap-449 th{text-align:left}.factory-bootstrap-449 .table{width:100%;margin-bottom:20px}.factory-bootstrap-449 .table>tbody>tr>td,.factory-bootstrap-449 .table>tbody>tr>th,.factory-bootstrap-449 .table>tfoot>tr>td,.factory-bootstrap-449 .table>tfoot>tr>th,.factory-bootstrap-449 .table>thead>tr>td,.factory-bootstrap-449 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-449 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-449 .table>caption+thead>tr:first-child>td,.factory-bootstrap-449 .table>caption+thead>tr:first-child>th,.factory-bootstrap-449 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-449 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-449 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-449 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-449 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-449 .table .table{background-color:#fff}.factory-bootstrap-449 .table-condensed>tbody>tr>td,.factory-bootstrap-449 .table-condensed>tbody>tr>th,.factory-bootstrap-449 .table-condensed>tfoot>tr>td,.factory-bootstrap-449 .table-condensed>tfoot>tr>th,.factory-bootstrap-449 .table-condensed>thead>tr>td,.factory-bootstrap-449 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-449 .table-bordered,.factory-bootstrap-449 .table-bordered>tbody>tr>td,.factory-bootstrap-449 .table-bordered>tbody>tr>th,.factory-bootstrap-449 .table-bordered>tfoot>tr>td,.factory-bootstrap-449 .table-bordered>tfoot>tr>th,.factory-bootstrap-449 .table-bordered>thead>tr>td,.factory-bootstrap-449 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-449 .table-bordered>thead>tr>td,.factory-bootstrap-449 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-449 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-449 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-449 .table-hover>tbody>tr:hover>td,.factory-bootstrap-449 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-449 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-449 table td[class*=col-],.factory-bootstrap-449 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-449 .table>tbody>.active>td,.factory-bootstrap-449 .table>tbody>.active>th,.factory-bootstrap-449 .table>tbody>tr>.active,.factory-bootstrap-449 .table>tfoot>.active>td,.factory-bootstrap-449 .table>tfoot>.active>th,.factory-bootstrap-449 .table>tfoot>tr>.active,.factory-bootstrap-449 .table>thead>.active>td,.factory-bootstrap-449 .table>thead>.active>th,.factory-bootstrap-449 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-449 .table-hover>tbody>.active:hover>td,.factory-bootstrap-449 .table-hover>tbody>.active:hover>th,.factory-bootstrap-449 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-449 .table>tbody>.success>td,.factory-bootstrap-449 .table>tbody>.success>th,.factory-bootstrap-449 .table>tbody>tr>.success,.factory-bootstrap-449 .table>tfoot>.success>td,.factory-bootstrap-449 .table>tfoot>.success>th,.factory-bootstrap-449 .table>tfoot>tr>.success,.factory-bootstrap-449 .table>thead>.success>td,.factory-bootstrap-449 .table>thead>.success>th,.factory-bootstrap-449 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-449 .table-hover>tbody>.success:hover>td,.factory-bootstrap-449 .table-hover>tbody>.success:hover>th,.factory-bootstrap-449 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-449 .table>tbody>.danger>td,.factory-bootstrap-449 .table>tbody>.danger>th,.factory-bootstrap-449 .table>tbody>tr>.danger,.factory-bootstrap-449 .table>tfoot>.danger>td,.factory-bootstrap-449 .table>tfoot>.danger>th,.factory-bootstrap-449 .table>tfoot>tr>.danger,.factory-bootstrap-449 .table>thead>.danger>td,.factory-bootstrap-449 .table>thead>.danger>th,.factory-bootstrap-449 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-449 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-449 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-449 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-449 .table>tbody>.warning>td,.factory-bootstrap-449 .table>tbody>.warning>th,.factory-bootstrap-449 .table>tbody>tr>.warning,.factory-bootstrap-449 .table>tfoot>.warning>td,.factory-bootstrap-449 .table>tfoot>.warning>th,.factory-bootstrap-449 .table>tfoot>tr>.warning,.factory-bootstrap-449 .table>thead>.warning>td,.factory-bootstrap-449 .table>thead>.warning>th,.factory-bootstrap-449 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-449 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-449 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-449 .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-449 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-449 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-449 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-449 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-449 input[type=checkbox],.factory-bootstrap-449 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-449 input[type=file]{display:block}.factory-bootstrap-449 select[multiple],.factory-bootstrap-449 select[size]{height:auto}.factory-bootstrap-449 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-449 input[type=checkbox]:focus,.factory-bootstrap-449 input[type=file]:focus,.factory-bootstrap-449 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-449 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-449 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-449 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-449 .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-449 .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-449 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-449 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-449 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-449 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-449 .form-control[disabled],.factory-bootstrap-449 .form-control[readonly],.factory-bootstrap-449 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-449 textarea.form-control{height:auto}.factory-bootstrap-449 .form-group{margin-bottom:15px}.factory-bootstrap-449 .checkbox,.factory-bootstrap-449 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-449 .checkbox label,.factory-bootstrap-449 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-449 .checkbox input[type=checkbox],.factory-bootstrap-449 .checkbox-inline input[type=checkbox],.factory-bootstrap-449 .radio input[type=radio],.factory-bootstrap-449 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-449 .checkbox+.checkbox,.factory-bootstrap-449 .radio+.radio{margin-top:-5px}.factory-bootstrap-449 .checkbox-inline,.factory-bootstrap-449 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-449 .checkbox-inline+.checkbox-inline,.factory-bootstrap-449 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-449 .checkbox-inline[disabled],.factory-bootstrap-449 .checkbox[disabled],.factory-bootstrap-449 .radio-inline[disabled],.factory-bootstrap-449 .radio[disabled],.factory-bootstrap-449 fieldset[disabled] .checkbox,.factory-bootstrap-449 fieldset[disabled] .checkbox-inline,.factory-bootstrap-449 fieldset[disabled] .radio,.factory-bootstrap-449 fieldset[disabled] .radio-inline,.factory-bootstrap-449 fieldset[disabled] input[type=checkbox],.factory-bootstrap-449 fieldset[disabled] input[type=radio],.factory-bootstrap-449 input[type=checkbox][disabled],.factory-bootstrap-449 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-449 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-449 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-449 textarea.input-sm{height:auto}.factory-bootstrap-449 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-449 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-449 textarea.input-lg{height:auto}.factory-bootstrap-449 .has-warning .checkbox,.factory-bootstrap-449 .has-warning .checkbox-inline,.factory-bootstrap-449 .has-warning .control-label,.factory-bootstrap-449 .has-warning .help-block,.factory-bootstrap-449 .has-warning .radio,.factory-bootstrap-449 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-449 .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-449 .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-449 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-449 .has-error .checkbox,.factory-bootstrap-449 .has-error .checkbox-inline,.factory-bootstrap-449 .has-error .control-label,.factory-bootstrap-449 .has-error .help-block,.factory-bootstrap-449 .has-error .radio,.factory-bootstrap-449 .has-error .radio-inline{color:#a94442}.factory-bootstrap-449 .controls{display:block}.factory-bootstrap-449 .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-449 .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-449 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-449 .has-success .checkbox,.factory-bootstrap-449 .has-success .checkbox-inline,.factory-bootstrap-449 .has-success .control-label,.factory-bootstrap-449 .has-success .help-block,.factory-bootstrap-449 .has-success .radio,.factory-bootstrap-449 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-449 .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-449 .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-449 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-449 .form-control-static{margin-bottom:0}.factory-bootstrap-449 .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-449 .form-horizontal .checkbox,.factory-bootstrap-449 .form-horizontal .checkbox-inline,.factory-bootstrap-449 .form-horizontal .control-label,.factory-bootstrap-449 .form-horizontal .radio,.factory-bootstrap-449 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-449 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-449 .form-horizontal .checkbox,.factory-bootstrap-449 .form-horizontal .radio{min-height:27px}.factory-bootstrap-449 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-449 .form-horizontal .form-group:after,.factory-bootstrap-449 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-449 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-449 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-449 .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-449 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-449 .btn{text-decoration:none}.factory-bootstrap-449 .btn:focus,.factory-bootstrap-449 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-449 .btn.disabled,.factory-bootstrap-449 .btn[disabled],.factory-bootstrap-449 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-449 .btn-default.active,.factory-bootstrap-449 .btn-default:active,.factory-bootstrap-449 .btn-default:focus,.factory-bootstrap-449 .btn-default:hover,.factory-bootstrap-449 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-449 .btn-default.active,.factory-bootstrap-449 .btn-default:active,.factory-bootstrap-449 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-449 .btn-default.disabled,.factory-bootstrap-449 .btn-default.disabled.active,.factory-bootstrap-449 .btn-default.disabled:active,.factory-bootstrap-449 .btn-default.disabled:focus,.factory-bootstrap-449 .btn-default.disabled:hover,.factory-bootstrap-449 .btn-default[disabled],.factory-bootstrap-449 .btn-default[disabled].active,.factory-bootstrap-449 .btn-default[disabled]:active,.factory-bootstrap-449 .btn-default[disabled]:focus,.factory-bootstrap-449 .btn-default[disabled]:hover,.factory-bootstrap-449 fieldset[disabled] .btn-default,.factory-bootstrap-449 fieldset[disabled] .btn-default.active,.factory-bootstrap-449 fieldset[disabled] .btn-default:active,.factory-bootstrap-449 fieldset[disabled] .btn-default:focus,.factory-bootstrap-449 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-449 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-449 .btn-primary.active,.factory-bootstrap-449 .btn-primary:active,.factory-bootstrap-449 .btn-primary:focus,.factory-bootstrap-449 .btn-primary:hover,.factory-bootstrap-449 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-449 .btn-primary.active,.factory-bootstrap-449 .btn-primary:active,.factory-bootstrap-449 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-449 .btn-primary.disabled,.factory-bootstrap-449 .btn-primary.disabled.active,.factory-bootstrap-449 .btn-primary.disabled:active,.factory-bootstrap-449 .btn-primary.disabled:focus,.factory-bootstrap-449 .btn-primary.disabled:hover,.factory-bootstrap-449 .btn-primary[disabled],.factory-bootstrap-449 .btn-primary[disabled].active,.factory-bootstrap-449 .btn-primary[disabled]:active,.factory-bootstrap-449 .btn-primary[disabled]:focus,.factory-bootstrap-449 .btn-primary[disabled]:hover,.factory-bootstrap-449 fieldset[disabled] .btn-primary,.factory-bootstrap-449 fieldset[disabled] .btn-primary.active,.factory-bootstrap-449 fieldset[disabled] .btn-primary:active,.factory-bootstrap-449 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-449 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-449 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-449 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-449 .btn-warning.active,.factory-bootstrap-449 .btn-warning:active,.factory-bootstrap-449 .btn-warning:focus,.factory-bootstrap-449 .btn-warning:hover,.factory-bootstrap-449 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-449 .btn-warning.active,.factory-bootstrap-449 .btn-warning:active,.factory-bootstrap-449 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-449 .btn-warning.disabled,.factory-bootstrap-449 .btn-warning.disabled.active,.factory-bootstrap-449 .btn-warning.disabled:active,.factory-bootstrap-449 .btn-warning.disabled:focus,.factory-bootstrap-449 .btn-warning.disabled:hover,.factory-bootstrap-449 .btn-warning[disabled],.factory-bootstrap-449 .btn-warning[disabled].active,.factory-bootstrap-449 .btn-warning[disabled]:active,.factory-bootstrap-449 .btn-warning[disabled]:focus,.factory-bootstrap-449 .btn-warning[disabled]:hover,.factory-bootstrap-449 fieldset[disabled] .btn-warning,.factory-bootstrap-449 fieldset[disabled] .btn-warning.active,.factory-bootstrap-449 fieldset[disabled] .btn-warning:active,.factory-bootstrap-449 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-449 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-449 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-449 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-449 .btn-success.active,.factory-bootstrap-449 .btn-success:active,.factory-bootstrap-449 .btn-success:focus,.factory-bootstrap-449 .btn-success:hover,.factory-bootstrap-449 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-449 .btn-success.active,.factory-bootstrap-449 .btn-success:active,.factory-bootstrap-449 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-449 .btn-success.disabled,.factory-bootstrap-449 .btn-success.disabled.active,.factory-bootstrap-449 .btn-success.disabled:active,.factory-bootstrap-449 .btn-success.disabled:focus,.factory-bootstrap-449 .btn-success.disabled:hover,.factory-bootstrap-449 .btn-success[disabled],.factory-bootstrap-449 .btn-success[disabled].active,.factory-bootstrap-449 .btn-success[disabled]:active,.factory-bootstrap-449 .btn-success[disabled]:focus,.factory-bootstrap-449 .btn-success[disabled]:hover,.factory-bootstrap-449 fieldset[disabled] .btn-success,.factory-bootstrap-449 fieldset[disabled] .btn-success.active,.factory-bootstrap-449 fieldset[disabled] .btn-success:active,.factory-bootstrap-449 fieldset[disabled] .btn-success:focus,.factory-bootstrap-449 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-449 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-449 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-449 .btn-info.active,.factory-bootstrap-449 .btn-info:active,.factory-bootstrap-449 .btn-info:focus,.factory-bootstrap-449 .btn-info:hover,.factory-bootstrap-449 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-449 .btn-info.active,.factory-bootstrap-449 .btn-info:active,.factory-bootstrap-449 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-449 .btn-info.disabled,.factory-bootstrap-449 .btn-info.disabled.active,.factory-bootstrap-449 .btn-info.disabled:active,.factory-bootstrap-449 .btn-info.disabled:focus,.factory-bootstrap-449 .btn-info.disabled:hover,.factory-bootstrap-449 .btn-info[disabled],.factory-bootstrap-449 .btn-info[disabled].active,.factory-bootstrap-449 .btn-info[disabled]:active,.factory-bootstrap-449 .btn-info[disabled]:focus,.factory-bootstrap-449 .btn-info[disabled]:hover,.factory-bootstrap-449 fieldset[disabled] .btn-info,.factory-bootstrap-449 fieldset[disabled] .btn-info.active,.factory-bootstrap-449 fieldset[disabled] .btn-info:active,.factory-bootstrap-449 fieldset[disabled] .btn-info:focus,.factory-bootstrap-449 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-449 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-449 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-449 .btn-link,.factory-bootstrap-449 .btn-link:active,.factory-bootstrap-449 .btn-link[disabled],.factory-bootstrap-449 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-449 .btn-link,.factory-bootstrap-449 .btn-link:active,.factory-bootstrap-449 .btn-link:focus,.factory-bootstrap-449 .btn-link:hover{border-color:transparent}.factory-bootstrap-449 .btn-link:focus,.factory-bootstrap-449 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-449 .btn-link[disabled]:focus,.factory-bootstrap-449 .btn-link[disabled]:hover,.factory-bootstrap-449 fieldset[disabled] .btn-link:focus,.factory-bootstrap-449 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-449 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-449 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-449 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-449 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-449 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-449 input[type=button].btn-block,.factory-bootstrap-449 input[type=reset].btn-block,.factory-bootstrap-449 input[type=submit].btn-block{width:100%}.factory-bootstrap-449 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-449 .fade.in{opacity:1}.factory-bootstrap-449 .collapse{display:none}.factory-bootstrap-449 .collapse.in{display:block}.factory-bootstrap-449 .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-449 .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-449 .glyphicon:empty{width:1em}.factory-bootstrap-449 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-449 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-449 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-449 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-449 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-449 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-449 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-449 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-449 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-449 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-449 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-449 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-449 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-449 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-449 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-449 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-449 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-449 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-449 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-449 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-449 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-449 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-449 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-449 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-449 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-449 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-449 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-449 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-449 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-449 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-449 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-449 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-449 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-449 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-449 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-449 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-449 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-449 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-449 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-449 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-449 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-449 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-449 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-449 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-449 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-449 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-449 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-449 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-449 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-449 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-449 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-449 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-449 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-449 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-449 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-449 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-449 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-449 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-449 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-449 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-449 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-449 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-449 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-449 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-449 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-449 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-449 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-449 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-449 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-449 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-449 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-449 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-449 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-449 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-449 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-449 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-449 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-449 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-449 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-449 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-449 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-449 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-449 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-449 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-449 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-449 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-449 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-449 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-449 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-449 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-449 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-449 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-449 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-449 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-449 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-449 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-449 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-449 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-449 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-449 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-449 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-449 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-449 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-449 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-449 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-449 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-449 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-449 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-449 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-449 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-449 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-449 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-449 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-449 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-449 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-449 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-449 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-449 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-449 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-449 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-449 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-449 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-449 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-449 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-449 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-449 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-449 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-449 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-449 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-449 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-449 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-449 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-449 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-449 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-449 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-449 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-449 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-449 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-449 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-449 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-449 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-449 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-449 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-449 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-449 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-449 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-449 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-449 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-449 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-449 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-449 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-449 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-449 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-449 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-449 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-449 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-449 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-449 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-449 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-449 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-449 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-449 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-449 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-449 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-449 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-449 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-449 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-449 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-449 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-449 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-449 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-449 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-449 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-449 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-449 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-449 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-449 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-449 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-449 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-449 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-449 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-449 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-449 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-449 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-449 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-449 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-449 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-449 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-449 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-449 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-449 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-449 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-449 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-449 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-449 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-449 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-449 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-449 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-449 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-449 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-449 .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-449 .dropdown{position:relative}.factory-bootstrap-449 .dropdown-toggle:focus{outline:0}.factory-bootstrap-449 .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-449 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-449 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-449 .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-449 .dropdown-menu>li>a:focus,.factory-bootstrap-449 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-449 .dropdown-menu>.active>a,.factory-bootstrap-449 .dropdown-menu>.active>a:focus,.factory-bootstrap-449 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-449 .dropdown-menu>.disabled>a,.factory-bootstrap-449 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-449 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-449 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-449 .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-449 .open>.dropdown-menu{display:block}.factory-bootstrap-449 .open>a{outline:0}.factory-bootstrap-449 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-449 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-449 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-449 .dropup .caret,.factory-bootstrap-449 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-449 .dropup .dropdown-menu,.factory-bootstrap-449 .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-449 .btn-group,.factory-bootstrap-449 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-449 .btn-group-vertical>.btn,.factory-bootstrap-449 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-449 .btn-group-vertical>.btn.active,.factory-bootstrap-449 .btn-group-vertical>.btn:active,.factory-bootstrap-449 .btn-group-vertical>.btn:focus,.factory-bootstrap-449 .btn-group-vertical>.btn:hover,.factory-bootstrap-449 .btn-group>.btn.active,.factory-bootstrap-449 .btn-group>.btn:active,.factory-bootstrap-449 .btn-group>.btn:focus,.factory-bootstrap-449 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-449 .btn-group-vertical>.btn:focus,.factory-bootstrap-449 .btn-group>.btn:focus{outline:0}.factory-bootstrap-449 .btn-group .btn+.btn,.factory-bootstrap-449 .btn-group .btn+.btn-group,.factory-bootstrap-449 .btn-group .btn-group+.btn,.factory-bootstrap-449 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-449 .btn-toolbar:after,.factory-bootstrap-449 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-449 .btn-toolbar:after{clear:both}.factory-bootstrap-449 .btn-toolbar .btn-group{float:left}.factory-bootstrap-449 .btn-toolbar>.btn+.btn,.factory-bootstrap-449 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-449 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-449 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-449 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-449 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-449 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-449 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-449 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .btn-group>.btn-group{float:left}.factory-bootstrap-449 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-449 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-449 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-449 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .btn-group .dropdown-toggle:active,.factory-bootstrap-449 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-449 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-449 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-449 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-449 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-449 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-449 .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-449 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-449 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-449 .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-449 .btn .caret{margin-left:0}.factory-bootstrap-449 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-449 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-449 .btn-group-vertical>.btn,.factory-bootstrap-449 .btn-group-vertical>.btn-group,.factory-bootstrap-449 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-449 .btn-group-vertical>.btn-group:after,.factory-bootstrap-449 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-449 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-449 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-449 .btn-group-vertical>.btn+.btn,.factory-bootstrap-449 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-449 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-449 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-449 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-449 .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-449 .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-449 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-449 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-449 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-449 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-449 .btn-group-justified>.btn,.factory-bootstrap-449 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-449 .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-449 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-449 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-449 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-449 .input-group-lg>.form-control,.factory-bootstrap-449 .input-group-lg>.input-group-addon,.factory-bootstrap-449 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-449 select.input-group-lg>.form-control,.factory-bootstrap-449 select.input-group-lg>.input-group-addon,.factory-bootstrap-449 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-449 textarea.input-group-lg>.form-control,.factory-bootstrap-449 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-449 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-449 .input-group-sm>.form-control,.factory-bootstrap-449 .input-group-sm>.input-group-addon,.factory-bootstrap-449 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-449 select.input-group-sm>.form-control,.factory-bootstrap-449 select.input-group-sm>.input-group-addon,.factory-bootstrap-449 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-449 textarea.input-group-sm>.form-control,.factory-bootstrap-449 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-449 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-449 .input-group .form-control,.factory-bootstrap-449 .input-group-addon,.factory-bootstrap-449 .input-group-btn{display:table-cell}.factory-bootstrap-449 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-449 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-449 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-449 .input-group-addon,.factory-bootstrap-449 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-449 .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-449 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-449 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-449 .input-group-addon input[type=checkbox],.factory-bootstrap-449 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-449 .input-group .form-control:first-child,.factory-bootstrap-449 .input-group-addon:first-child,.factory-bootstrap-449 .input-group-btn:first-child>.btn,.factory-bootstrap-449 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-449 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-449 .input-group-addon:first-child{border-right:0}.factory-bootstrap-449 .input-group .form-control:last-child,.factory-bootstrap-449 .input-group-addon:last-child,.factory-bootstrap-449 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-449 .input-group-btn:last-child>.btn,.factory-bootstrap-449 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .input-group-addon:last-child{border-left:0}.factory-bootstrap-449 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-449 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-449 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-449 .input-group-btn>.btn{position:relative}.factory-bootstrap-449 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-449 .input-group-btn>.btn:active,.factory-bootstrap-449 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-449 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-449 .nav:after,.factory-bootstrap-449 .nav:before{display:table;content:" "}.factory-bootstrap-449 .nav:after{clear:both}.factory-bootstrap-449 .nav>li{position:relative;display:block}.factory-bootstrap-449 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-449 .nav>li>a:focus,.factory-bootstrap-449 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-449 .nav>li.disabled>a{color:#999}.factory-bootstrap-449 .nav>li.disabled>a:focus,.factory-bootstrap-449 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-449 .nav .open>a,.factory-bootstrap-449 .nav .open>a:focus,.factory-bootstrap-449 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-449 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-449 .nav>li>a>img{max-width:none}.factory-bootstrap-449 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-449 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-449 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-449 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-449 .nav-tabs>li.active>a,.factory-bootstrap-449 .nav-tabs>li.active>a:focus,.factory-bootstrap-449 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-449 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-449 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-449 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-449 .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-449 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-449 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-449 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-449 .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-449 .nav-pills>li{float:left}.factory-bootstrap-449 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-449 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-449 .nav-pills>li.active>a,.factory-bootstrap-449 .nav-pills>li.active>a:focus,.factory-bootstrap-449 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-449 .nav-stacked>li{float:none}.factory-bootstrap-449 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-449 .nav-justified{width:100%}.factory-bootstrap-449 .nav-justified>li{float:none}.factory-bootstrap-449 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-449 .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-449 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-449 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-449 .nav-tabs-justified>.active>a,.factory-bootstrap-449 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-449 .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-449 .tab-content>.tab-pane{display:none}.factory-bootstrap-449 .tab-content>.active{display:block}.factory-bootstrap-449 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-449 .navbar:after,.factory-bootstrap-449 .navbar:before{display:table;content:" "}.factory-bootstrap-449 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-449 .navbar-header:after,.factory-bootstrap-449 .navbar-header:before{display:table;content:" "}.factory-bootstrap-449 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-449 .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-449 .navbar-collapse:after,.factory-bootstrap-449 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-449 .navbar-collapse:after{clear:both}.factory-bootstrap-449 .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-449 .container>.navbar-collapse,.factory-bootstrap-449 .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-449 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-449 .navbar-fixed-bottom,.factory-bootstrap-449 .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-449 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-449 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-449 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-449 .navbar-brand:focus,.factory-bootstrap-449 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-449 .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-449 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-449 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-449 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-449 .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-449 .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-449 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-449 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-449 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-449 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-449 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-449 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-449 .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-449 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-449 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-449 .navbar-default .navbar-brand:focus,.factory-bootstrap-449 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-449 .navbar-default .navbar-nav>li>a,.factory-bootstrap-449 .navbar-default .navbar-text{color:#777}.factory-bootstrap-449 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-449 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-449 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-449 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-449 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-449 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-449 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-449 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-449 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-449 .navbar-default .navbar-toggle:focus,.factory-bootstrap-449 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-449 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-449 .navbar-default .navbar-collapse,.factory-bootstrap-449 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-449 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-449 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-449 .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-449 .navbar-default .navbar-link{color:#777}.factory-bootstrap-449 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-449 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-449 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-449 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-449 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-449 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-449 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-449 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-449 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-449 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-449 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-449 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-449 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-449 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-449 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-449 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-449 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-449 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-449 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-449 .navbar-inverse .navbar-collapse,.factory-bootstrap-449 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-449 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-449 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-449 .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-449 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-449 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-449 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-449 .breadcrumb>li{display:inline-block}.factory-bootstrap-449 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-449 .breadcrumb>.active{color:#999}.factory-bootstrap-449 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-449 .pagination>li{display:inline}.factory-bootstrap-449 .pagination>li>a,.factory-bootstrap-449 .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-449 .pagination>li:first-child>a,.factory-bootstrap-449 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-449 .pagination>li:last-child>a,.factory-bootstrap-449 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-449 .pagination>li>a:focus,.factory-bootstrap-449 .pagination>li>a:hover,.factory-bootstrap-449 .pagination>li>span:focus,.factory-bootstrap-449 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-449 .pagination>.active>a,.factory-bootstrap-449 .pagination>.active>a:focus,.factory-bootstrap-449 .pagination>.active>a:hover,.factory-bootstrap-449 .pagination>.active>span,.factory-bootstrap-449 .pagination>.active>span:focus,.factory-bootstrap-449 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-449 .pagination>.disabled>a,.factory-bootstrap-449 .pagination>.disabled>a:focus,.factory-bootstrap-449 .pagination>.disabled>a:hover,.factory-bootstrap-449 .pagination>.disabled>span,.factory-bootstrap-449 .pagination>.disabled>span:focus,.factory-bootstrap-449 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-449 .pagination-lg>li>a,.factory-bootstrap-449 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-449 .pagination-lg>li:first-child>a,.factory-bootstrap-449 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-449 .pagination-lg>li:last-child>a,.factory-bootstrap-449 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-449 .pagination-sm>li>a,.factory-bootstrap-449 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-449 .pagination-sm>li:first-child>a,.factory-bootstrap-449 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-449 .pagination-sm>li:last-child>a,.factory-bootstrap-449 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-449 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-449 .pager:after,.factory-bootstrap-449 .pager:before{display:table;content:" "}.factory-bootstrap-449 .pager:after{clear:both}.factory-bootstrap-449 .pager li{display:inline}.factory-bootstrap-449 .pager li>a,.factory-bootstrap-449 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-449 .pager li>a:focus,.factory-bootstrap-449 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-449 .pager .next>a,.factory-bootstrap-449 .pager .next>span{float:right}.factory-bootstrap-449 .pager .previous>a,.factory-bootstrap-449 .pager .previous>span{float:left}.factory-bootstrap-449 .pager .disabled>a,.factory-bootstrap-449 .pager .disabled>a:focus,.factory-bootstrap-449 .pager .disabled>a:hover,.factory-bootstrap-449 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-449 .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-449 .label[href]:focus,.factory-bootstrap-449 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-449 .label:empty{display:none}.factory-bootstrap-449 .btn .label{position:relative;top:-1px}.factory-bootstrap-449 .label-default{background-color:#999}.factory-bootstrap-449 .label-default[href]:focus,.factory-bootstrap-449 .label-default[href]:hover{background-color:gray}.factory-bootstrap-449 .label-primary{background-color:#428bca}.factory-bootstrap-449 .label-primary[href]:focus,.factory-bootstrap-449 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-449 .label-success{background-color:#5cb85c}.factory-bootstrap-449 .label-success[href]:focus,.factory-bootstrap-449 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-449 .label-info{background-color:#5bc0de}.factory-bootstrap-449 .label-info[href]:focus,.factory-bootstrap-449 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-449 .label-warning{background-color:#f0ad4e}.factory-bootstrap-449 .label-warning[href]:focus,.factory-bootstrap-449 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-449 .label-danger{background-color:#d9534f}.factory-bootstrap-449 .label-danger[href]:focus,.factory-bootstrap-449 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-449 .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-449 .badge:empty{display:none}.factory-bootstrap-449 .btn .badge{position:relative;top:-1px}.factory-bootstrap-449 a.badge:focus,.factory-bootstrap-449 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-449 .nav-pills>.active>a>.badge,.factory-bootstrap-449 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-449 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-449 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-449 .jumbotron .h1,.factory-bootstrap-449 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-449 .jumbotron p{line-height:1.4}.factory-bootstrap-449 .container .jumbotron{border-radius:6px}.factory-bootstrap-449 .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-449 .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-449 .thumbnail a>img,.factory-bootstrap-449 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-449 a.thumbnail.active,.factory-bootstrap-449 a.thumbnail:focus,.factory-bootstrap-449 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-449 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-449 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-449 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-449 .alert .alert-link{font-weight:700}.factory-bootstrap-449 .alert>p,.factory-bootstrap-449 .alert>ul{margin-bottom:0}.factory-bootstrap-449 .alert>p+p{margin-top:5px}.factory-bootstrap-449 .alert-dismissable{padding-right:35px}.factory-bootstrap-449 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-449 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-449 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-449 .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-449 .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-449 .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-449 .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-449 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-449 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-449 .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-449 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-449 .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-449 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-449 .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-449 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-449 .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-449 .media,.factory-bootstrap-449 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-449 .media,.factory-bootstrap-449 .media .media{margin-top:15px}.factory-bootstrap-449 .media:first-child{margin-top:0}.factory-bootstrap-449 .media-object{display:block}.factory-bootstrap-449 .media-heading{margin:0 0 5px}.factory-bootstrap-449 .media>.pull-left{margin-right:10px}.factory-bootstrap-449 .media>.pull-right{margin-left:10px}.factory-bootstrap-449 .media-list{padding-left:0;list-style:none}.factory-bootstrap-449 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-449 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-449 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-449 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-449 .list-group-item>.badge{float:right}.factory-bootstrap-449 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-449 a.list-group-item{color:#555}.factory-bootstrap-449 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-449 a.list-group-item:focus,.factory-bootstrap-449 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-449 a.list-group-item.active,.factory-bootstrap-449 a.list-group-item.active:focus,.factory-bootstrap-449 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-449 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-449 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-449 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-449 a.list-group-item.active .list-group-item-text,.factory-bootstrap-449 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-449 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-449 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-449 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-449 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-449 .panel-body{padding:15px}.factory-bootstrap-449 .panel-body:after,.factory-bootstrap-449 .panel-body:before{display:table;content:" "}.factory-bootstrap-449 .panel-body:after{clear:both}.factory-bootstrap-449 .panel>.list-group{margin-bottom:0}.factory-bootstrap-449 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-449 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-449 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-449 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-449 .panel>.table,.factory-bootstrap-449 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-449 .panel>.panel-body+.table,.factory-bootstrap-449 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-449 .panel>.table>tbody:first-child td,.factory-bootstrap-449 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-449 .panel>.table-bordered,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-449 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-449 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-449 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-449 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-449 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-449 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-449 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-449 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-449 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-449 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-449 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-449 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-449 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-449 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-449 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-449 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-449 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-449 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-449 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-449 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-449 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-449 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-449 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-449 .panel-title>a{color:inherit}.factory-bootstrap-449 .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-449 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-449 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-449 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-449 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-449 .panel-group .panel-footer{border-top:0}.factory-bootstrap-449 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-449 .panel-default{border-color:#ddd}.factory-bootstrap-449 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-449 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-449 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-449 .panel-primary{border-color:#428bca}.factory-bootstrap-449 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-449 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-449 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-449 .panel-success{border-color:#d6e9c6}.factory-bootstrap-449 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-449 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-449 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-449 .panel-warning{border-color:#faebcc}.factory-bootstrap-449 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-449 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-449 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-449 .panel-danger{border-color:#ebccd1}.factory-bootstrap-449 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-449 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-449 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-449 .panel-info{border-color:#bce8f1}.factory-bootstrap-449 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-449 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-449 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-449 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-449 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-449 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-449 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-449 .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-449 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-449 .close:focus,.factory-bootstrap-449 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-449 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-449 .modal-open{overflow:hidden}.factory-bootstrap-449 .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-449 .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-449 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-449 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-449 .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-449 .modal-backdrop,.factory-bootstrap-449-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-449 .modal-backdrop.fade,.factory-bootstrap-449-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-449 .modal-backdrop.in,.factory-bootstrap-449-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-449 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-449 .modal-header .close{margin-top:-2px}.factory-bootstrap-449 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-449 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-449 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-449 .modal-footer:after,.factory-bootstrap-449 .modal-footer:before{display:table;content:" "}.factory-bootstrap-449 .modal-footer:after{clear:both}.factory-bootstrap-449 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-449 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-449 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-449 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-449 .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-449 .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-449 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-449 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-449 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-449 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-449 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-449 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-449 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-449 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-449 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-449 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-449 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-449 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-449 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-449 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-449 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-449 .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-449 .popover.top{margin-top:-10px}.factory-bootstrap-449 .popover.right{margin-left:10px}.factory-bootstrap-449 .popover.bottom{margin-top:10px}.factory-bootstrap-449 .popover.left{margin-left:-10px}.factory-bootstrap-449 .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-449 .popover-content{padding:9px 14px}.factory-bootstrap-449 .popover .arrow,.factory-bootstrap-449 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-449 .popover .arrow{border-width:11px}.factory-bootstrap-449 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-449 .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-449 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-449 .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-449 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-449 .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-449 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-449 .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-449 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-449 .carousel{position:relative}.factory-bootstrap-449 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-449 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-449 .carousel-inner>.item>a>img,.factory-bootstrap-449 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-449 .carousel-inner>.active,.factory-bootstrap-449 .carousel-inner>.next,.factory-bootstrap-449 .carousel-inner>.prev{display:block}.factory-bootstrap-449 .carousel-inner>.active{left:0}.factory-bootstrap-449 .carousel-inner>.next,.factory-bootstrap-449 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-449 .carousel-inner>.next{left:100%}.factory-bootstrap-449 .carousel-inner>.prev{left:-100%}.factory-bootstrap-449 .carousel-inner>.next.left,.factory-bootstrap-449 .carousel-inner>.prev.right{left:0}.factory-bootstrap-449 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-449 .carousel-inner>.active.right{left:100%}.factory-bootstrap-449 .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-449 .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-449 .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-449 .carousel-control:focus,.factory-bootstrap-449 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-449 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-449 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-449 .carousel-control .icon-next,.factory-bootstrap-449 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-449 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-449 .carousel-control .icon-prev{left:50%}.factory-bootstrap-449 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-449 .carousel-control .icon-next{right:50%}.factory-bootstrap-449 .carousel-control .icon-next,.factory-bootstrap-449 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-449 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-449 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-449 .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-449 .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-449 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-449 .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-449 .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-449 .clearfix:after,.factory-bootstrap-449 .clearfix:before{display:table;content:" "}.factory-bootstrap-449 .clearfix:after{clear:both}.factory-bootstrap-449 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-449 .pull-right{float:right!important}.factory-bootstrap-449 .pull-left{float:left!important}.factory-bootstrap-449 .hide{display:none!important}.factory-bootstrap-449 .show{display:block!important}.factory-bootstrap-449 .invisible{visibility:hidden}.factory-bootstrap-449 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-449 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-449 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-449 .visible-lg,.factory-bootstrap-449 .visible-md,.factory-bootstrap-449 .visible-sm,.factory-bootstrap-449 .visible-xs,.factory-bootstrap-449 td.visible-lg,.factory-bootstrap-449 td.visible-md,.factory-bootstrap-449 td.visible-sm,.factory-bootstrap-449 td.visible-xs,.factory-bootstrap-449 th.visible-lg,.factory-bootstrap-449 th.visible-md,.factory-bootstrap-449 th.visible-sm,.factory-bootstrap-449 th.visible-xs,.factory-bootstrap-449 tr.visible-lg,.factory-bootstrap-449 tr.visible-md,.factory-bootstrap-449 tr.visible-sm,.factory-bootstrap-449 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-449 .hidden-xs{display:block!important}.factory-bootstrap-449 table.hidden-xs{display:table}.factory-bootstrap-449 tr.hidden-xs{display:table-row!important}.factory-bootstrap-449 td.hidden-xs,.factory-bootstrap-449 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-449 .hidden-sm{display:block!important}.factory-bootstrap-449 table.hidden-sm{display:table}.factory-bootstrap-449 tr.hidden-sm{display:table-row!important}.factory-bootstrap-449 td.hidden-sm,.factory-bootstrap-449 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-449 .hidden-md{display:block!important}.factory-bootstrap-449 table.hidden-md{display:table}.factory-bootstrap-449 tr.hidden-md{display:table-row!important}.factory-bootstrap-449 td.hidden-md,.factory-bootstrap-449 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-449 .hidden-lg{display:block!important}.factory-bootstrap-449 table.hidden-lg{display:table}.factory-bootstrap-449 tr.hidden-lg{display:table-row!important}.factory-bootstrap-449 td.hidden-lg,.factory-bootstrap-449 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-449 .hidden-lg.hidden-xs,.factory-bootstrap-449 td.hidden-lg.hidden-xs,.factory-bootstrap-449 th.hidden-lg.hidden-xs,.factory-bootstrap-449 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-449 .hidden-lg.hidden-sm,.factory-bootstrap-449 td.hidden-lg.hidden-sm,.factory-bootstrap-449 th.hidden-lg.hidden-sm,.factory-bootstrap-449 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-449 .hidden-lg.hidden-md,.factory-bootstrap-449 td.hidden-lg.hidden-md,.factory-bootstrap-449 th.hidden-lg.hidden-md,.factory-bootstrap-449 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-449 .hidden-lg,.factory-bootstrap-449 td.hidden-lg,.factory-bootstrap-449 th.hidden-lg,.factory-bootstrap-449 tr.hidden-lg{display:none!important}}.factory-bootstrap-449 .visible-print,.factory-bootstrap-449 td.visible-print,.factory-bootstrap-449 th.visible-print,.factory-bootstrap-449 tr.visible-print{display:none!important}@media print{.factory-bootstrap-449 .visible-print{display:block!important}.factory-bootstrap-449 table.visible-print{display:table}.factory-bootstrap-449 tr.visible-print{display:table-row!important}.factory-bootstrap-449 td.visible-print,.factory-bootstrap-449 th.visible-print{display:table-cell!important}.factory-bootstrap-449 .hidden-print,.factory-bootstrap-449 td.hidden-print,.factory-bootstrap-449 th.hidden-print,.factory-bootstrap-449 tr.hidden-print{display:none!important}}/*!
|
12 |
-
* Factory Default Bootstrap Theme
|
13 |
-
*
|
14 |
-
* The code is based on Bootstrap v2.1.1
|
15 |
-
*
|
16 |
-
* Bootstrap v3.0.3 (http://getbootstrap.com)
|
17 |
-
* Copyright 2013 Twitter, Inc.
|
18 |
-
* Licensed under http://www.apache.org/licenses/LICENSE-2.0
|
19 |
-
*
|
20 |
-
* @author Paul Kashtanoff <paul@byonepress.com>
|
21 |
-
* @copyright (c) 2013, OnePress Ltd
|
22 |
-
*
|
23 |
-
* @package factory-bootstrap
|
24 |
-
* @since 1.0.0
|
25 |
-
*/.factory-bootstrap-449 .btn-danger,.factory-bootstrap-449 .btn-default,.factory-bootstrap-449 .btn-info,.factory-bootstrap-449 .btn-primary,.factory-bootstrap-449 .btn-success,.factory-bootstrap-449 .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-449 .btn-danger.active,.factory-bootstrap-449 .btn-danger:active,.factory-bootstrap-449 .btn-default.active,.factory-bootstrap-449 .btn-default:active,.factory-bootstrap-449 .btn-info.active,.factory-bootstrap-449 .btn-info:active,.factory-bootstrap-449 .btn-primary.active,.factory-bootstrap-449 .btn-primary:active,.factory-bootstrap-449 .btn-success.active,.factory-bootstrap-449 .btn-success:active,.factory-bootstrap-449 .btn-warning.active,.factory-bootstrap-449 .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-449 .btn.active,.factory-bootstrap-449 .btn:active{background-image:none}.factory-bootstrap-449 .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-449 .btn-default.active,.factory-bootstrap-449 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-449 .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-449 .btn-gold:focus,.factory-bootstrap-449 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-449 .btn-gold.active,.factory-bootstrap-449 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-449 .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-449 .btn-primary:focus,.factory-bootstrap-449 .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-449 .btn-primary.active,.factory-bootstrap-449 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-449 .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-449 .btn-success:focus,.factory-bootstrap-449 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-449 .btn-success.active,.factory-bootstrap-449 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-449 .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-449 .btn-warning:focus,.factory-bootstrap-449 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-449 .btn-warning.active,.factory-bootstrap-449 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-449 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-449 .btn-danger.active,.factory-bootstrap-449 .btn-danger:active,.factory-bootstrap-449 .btn-danger:focus,.factory-bootstrap-449 .btn-danger:hover,.factory-bootstrap-449 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-449 .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-449 .btn-info:focus,.factory-bootstrap-449 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-449 .btn-info.active,.factory-bootstrap-449 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-449 .img-thumbnail,.factory-bootstrap-449 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-449 .dropdown-menu>li>a:focus,.factory-bootstrap-449 .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-449 .dropdown-menu>.active>a,.factory-bootstrap-449 .dropdown-menu>.active>a:focus,.factory-bootstrap-449 .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-449 .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-449 .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-449 .navbar-brand,.factory-bootstrap-449 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-449 .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-449 .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-449 .navbar-inverse .navbar-brand,.factory-bootstrap-449 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-449 .navbar-fixed-bottom,.factory-bootstrap-449 .navbar-fixed-top,.factory-bootstrap-449 .navbar-static-top{border-radius:0}.factory-bootstrap-449 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-449 .alert .actions{padding-top:10px}.factory-bootstrap-449 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-449 .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-449 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-449 .alert-normal,.factory-bootstrap-449 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-449 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-449 .alert-danger a:not(.btn),.factory-bootstrap-449 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-449 .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-449 .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-449 .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-449 .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-449 .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-449 .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-449 .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-449 .list-group-item.active,.factory-bootstrap-449 .list-group-item.active:focus,.factory-bootstrap-449 .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-449 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-449 .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-449 .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-449 .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-449 .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-449 .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-449 .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-449 .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-449 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-449 .factory-hidden{display:none}.factory-bootstrap-449 .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}
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 article,.factory-bootstrap-453 aside,.factory-bootstrap-453 details,.factory-bootstrap-453 figcaption,.factory-bootstrap-453 figure,.factory-bootstrap-453 footer,.factory-bootstrap-453 header,.factory-bootstrap-453 hgroup,.factory-bootstrap-453 main,.factory-bootstrap-453 nav,.factory-bootstrap-453 section,.factory-bootstrap-453 summary{display:block}.factory-bootstrap-453 audio,.factory-bootstrap-453 canvas,.factory-bootstrap-453 video{display:inline-block}.factory-bootstrap-453 audio:not([controls]){display:none;height:0}.factory-bootstrap-453 [hidden],.factory-bootstrap-453 template{display:none}.factory-bootstrap-453 body{margin:0}.factory-bootstrap-453 a{background:0 0}.factory-bootstrap-453 a:focus{outline:thin dotted}.factory-bootstrap-453 a:active,.factory-bootstrap-453 a:hover{outline:0}.factory-bootstrap-453 h1{margin:.67em 0}.factory-bootstrap-453 b,.factory-bootstrap-453 strong{font-weight:700}.factory-bootstrap-453 dfn{font-style:italic}.factory-bootstrap-453 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-453 mark{color:#000;background:#ff0}.factory-bootstrap-453 code,.factory-bootstrap-453 kbd,.factory-bootstrap-453 pre,.factory-bootstrap-453 samp{font-size:1em}.factory-bootstrap-453 pre{white-space:pre-wrap}.factory-bootstrap-453 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-453 sub,.factory-bootstrap-453 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-453 sup{top:-.5em}.factory-bootstrap-453 sub{bottom:-.25em}.factory-bootstrap-453 img{border:0}.factory-bootstrap-453 svg:not(:root){overflow:hidden}.factory-bootstrap-453 figure{margin:0}.factory-bootstrap-453 button,.factory-bootstrap-453 input,.factory-bootstrap-453 select,.factory-bootstrap-453 textarea{margin:0}.factory-bootstrap-453 button,.factory-bootstrap-453 select{text-transform:none}.factory-bootstrap-453 select{padding-right:4px!important}.factory-bootstrap-453 button,.factory-bootstrap-453 input[type=reset],.factory-bootstrap-453 input[type=submit],html .factory-bootstrap-453 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-453 button[disabled],html .factory-bootstrap-453 input[disabled]{cursor:default}.factory-bootstrap-453 input[type=checkbox],.factory-bootstrap-453 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-453 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-453 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-453 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-453 button::-moz-focus-inner,.factory-bootstrap-453 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-453 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-453 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-453 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-453 a,.factory-bootstrap-453 a:visited{text-decoration:underline}.factory-bootstrap-453 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-453 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-453 a[href^="javascript:"]:after,.factory-bootstrap-453 a[href^="#"]:after{content:""}.factory-bootstrap-453 blockquote,.factory-bootstrap-453 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-453 thead{display:table-header-group}.factory-bootstrap-453 img,.factory-bootstrap-453 tr{page-break-inside:avoid}.factory-bootstrap-453 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-453 h2,.factory-bootstrap-453 h3,.factory-bootstrap-453 p{orphans:3;widows:3}.factory-bootstrap-453 h2,.factory-bootstrap-453 h3{page-break-after:avoid}.factory-bootstrap-453 select{background:#fff!important}.factory-bootstrap-453 .navbar{display:none}.factory-bootstrap-453 .table td,.factory-bootstrap-453 .table th{background-color:#fff!important}.factory-bootstrap-453 .btn>.caret,.factory-bootstrap-453 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-453 .label{border:1px solid #000}.factory-bootstrap-453 .table{border-collapse:collapse!important}.factory-bootstrap-453 .table-bordered td,.factory-bootstrap-453 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-453 *,.factory-bootstrap-453 :after,.factory-bootstrap-453 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-453{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-453 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-453 button,.factory-bootstrap-453 input,.factory-bootstrap-453 select,.factory-bootstrap-453 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-453 img{vertical-align:middle}.factory-bootstrap-453 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-453 .img-rounded{border-radius:6px}.factory-bootstrap-453 .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-453 .img-circle{border-radius:50%}.factory-bootstrap-453 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-453 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-453 .h1,.factory-bootstrap-453 .h2,.factory-bootstrap-453 .h3,.factory-bootstrap-453 .h4,.factory-bootstrap-453 .h5,.factory-bootstrap-453 .h6,.factory-bootstrap-453 h1,.factory-bootstrap-453 h2,.factory-bootstrap-453 h3,.factory-bootstrap-453 h4,.factory-bootstrap-453 h5,.factory-bootstrap-453 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-453 .h1 .small,.factory-bootstrap-453 .h1 small,.factory-bootstrap-453 .h2 .small,.factory-bootstrap-453 .h2 small,.factory-bootstrap-453 .h3 .small,.factory-bootstrap-453 .h3 small,.factory-bootstrap-453 .h4 .small,.factory-bootstrap-453 .h4 small,.factory-bootstrap-453 .h5 .small,.factory-bootstrap-453 .h5 small,.factory-bootstrap-453 .h6 .small,.factory-bootstrap-453 .h6 small,.factory-bootstrap-453 h1 .small,.factory-bootstrap-453 h1 small,.factory-bootstrap-453 h2 .small,.factory-bootstrap-453 h2 small,.factory-bootstrap-453 h3 .small,.factory-bootstrap-453 h3 small,.factory-bootstrap-453 h4 .small,.factory-bootstrap-453 h4 small,.factory-bootstrap-453 h5 .small,.factory-bootstrap-453 h5 small,.factory-bootstrap-453 h6 .small,.factory-bootstrap-453 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-453 h1,.factory-bootstrap-453 h2,.factory-bootstrap-453 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-453 h1 .small,.factory-bootstrap-453 h1 small,.factory-bootstrap-453 h2 .small,.factory-bootstrap-453 h2 small,.factory-bootstrap-453 h3 .small,.factory-bootstrap-453 h3 small{font-size:65%}.factory-bootstrap-453 h4,.factory-bootstrap-453 h5,.factory-bootstrap-453 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-453 h4 .small,.factory-bootstrap-453 h4 small,.factory-bootstrap-453 h5 .small,.factory-bootstrap-453 h5 small,.factory-bootstrap-453 h6 .small,.factory-bootstrap-453 h6 small{font-size:75%}.factory-bootstrap-453 .h1,.factory-bootstrap-453 h1{font-size:36px}.factory-bootstrap-453 .h2,.factory-bootstrap-453 h2{font-size:30px}.factory-bootstrap-453 .h3,.factory-bootstrap-453 h3{font-size:24px}.factory-bootstrap-453 .h4,.factory-bootstrap-453 h4{font-size:18px}.factory-bootstrap-453 .h5,.factory-bootstrap-453 h5{font-size:14px}.factory-bootstrap-453 .h6,.factory-bootstrap-453 h6{font-size:12px}.factory-bootstrap-453 p{margin:0 0 10px}.factory-bootstrap-453 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-453 .small,.factory-bootstrap-453 small{font-size:85%}.factory-bootstrap-453 cite{font-style:normal}.factory-bootstrap-453 .text-muted{color:#999}.factory-bootstrap-453 .text-primary{color:#428bca}.factory-bootstrap-453 .text-primary:hover{color:#3071a9}.factory-bootstrap-453 .text-warning{color:#8a6d3b}.factory-bootstrap-453 .text-warning:hover{color:#66512c}.factory-bootstrap-453 .text-danger{color:#a94442}.factory-bootstrap-453 .text-danger:hover{color:#843534}.factory-bootstrap-453 .text-success{color:#3c763d}.factory-bootstrap-453 .text-success:hover{color:#2b542c}.factory-bootstrap-453 .text-info{color:#31708f}.factory-bootstrap-453 .text-info:hover{color:#245269}.factory-bootstrap-453 .text-left{text-align:left}.factory-bootstrap-453 .text-right{text-align:right}.factory-bootstrap-453 .text-center{text-align:center}.factory-bootstrap-453 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-453 ol,.factory-bootstrap-453 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-453 ol ol,.factory-bootstrap-453 ol ul,.factory-bootstrap-453 ul ol,.factory-bootstrap-453 ul ul{margin-bottom:0}.factory-bootstrap-453 .list-inline,.factory-bootstrap-453 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-453 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-453 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-453 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-453 dd,.factory-bootstrap-453 dt{line-height:1.428571429}.factory-bootstrap-453 dt{font-weight:700}.factory-bootstrap-453 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-453 abbr[data-original-title],.factory-bootstrap-453 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-453 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-453 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-453 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-453 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-453 blockquote .small,.factory-bootstrap-453 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-453 blockquote .small:before,.factory-bootstrap-453 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-453 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-453 blockquote.pull-right .small,.factory-bootstrap-453 blockquote.pull-right p,.factory-bootstrap-453 blockquote.pull-right small{text-align:right}.factory-bootstrap-453 blockquote.pull-right .small:before,.factory-bootstrap-453 blockquote.pull-right small:before{content:''}.factory-bootstrap-453 blockquote.pull-right .small:after,.factory-bootstrap-453 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-453 blockquote:after,.factory-bootstrap-453 blockquote:before{content:""}.factory-bootstrap-453 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-453 code,.factory-bootstrap-453 kbd,.factory-bootstrap-453 pre,.factory-bootstrap-453 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-453 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-453 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-453 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-453 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-453 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-453 .container:after,.factory-bootstrap-453 .container:before{display:table;content:" "}.factory-bootstrap-453 .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-453 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-453 .row:after,.factory-bootstrap-453 .row:before{display:table;content:" "}.factory-bootstrap-453 .row:after{clear:both}.factory-bootstrap-453 .col-lg-1,.factory-bootstrap-453 .col-lg-10,.factory-bootstrap-453 .col-lg-11,.factory-bootstrap-453 .col-lg-12,.factory-bootstrap-453 .col-lg-2,.factory-bootstrap-453 .col-lg-3,.factory-bootstrap-453 .col-lg-4,.factory-bootstrap-453 .col-lg-5,.factory-bootstrap-453 .col-lg-6,.factory-bootstrap-453 .col-lg-7,.factory-bootstrap-453 .col-lg-8,.factory-bootstrap-453 .col-lg-9,.factory-bootstrap-453 .col-md-1,.factory-bootstrap-453 .col-md-10,.factory-bootstrap-453 .col-md-11,.factory-bootstrap-453 .col-md-12,.factory-bootstrap-453 .col-md-2,.factory-bootstrap-453 .col-md-3,.factory-bootstrap-453 .col-md-4,.factory-bootstrap-453 .col-md-5,.factory-bootstrap-453 .col-md-6,.factory-bootstrap-453 .col-md-7,.factory-bootstrap-453 .col-md-8,.factory-bootstrap-453 .col-md-9,.factory-bootstrap-453 .col-sm-1,.factory-bootstrap-453 .col-sm-10,.factory-bootstrap-453 .col-sm-11,.factory-bootstrap-453 .col-sm-12,.factory-bootstrap-453 .col-sm-2,.factory-bootstrap-453 .col-sm-3,.factory-bootstrap-453 .col-sm-4,.factory-bootstrap-453 .col-sm-5,.factory-bootstrap-453 .col-sm-6,.factory-bootstrap-453 .col-sm-7,.factory-bootstrap-453 .col-sm-8,.factory-bootstrap-453 .col-sm-9,.factory-bootstrap-453 .col-xs-1,.factory-bootstrap-453 .col-xs-10,.factory-bootstrap-453 .col-xs-11,.factory-bootstrap-453 .col-xs-12,.factory-bootstrap-453 .col-xs-2,.factory-bootstrap-453 .col-xs-3,.factory-bootstrap-453 .col-xs-4,.factory-bootstrap-453 .col-xs-5,.factory-bootstrap-453 .col-xs-6,.factory-bootstrap-453 .col-xs-7,.factory-bootstrap-453 .col-xs-8,.factory-bootstrap-453 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-453 .col-xs-1,.factory-bootstrap-453 .col-xs-10,.factory-bootstrap-453 .col-xs-11,.factory-bootstrap-453 .col-xs-12,.factory-bootstrap-453 .col-xs-2,.factory-bootstrap-453 .col-xs-3,.factory-bootstrap-453 .col-xs-4,.factory-bootstrap-453 .col-xs-5,.factory-bootstrap-453 .col-xs-6,.factory-bootstrap-453 .col-xs-7,.factory-bootstrap-453 .col-xs-8,.factory-bootstrap-453 .col-xs-9{float:left}.factory-bootstrap-453 .col-xs-12{width:100%}.factory-bootstrap-453 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-453 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-453 .col-xs-9{width:75%}.factory-bootstrap-453 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-453 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-453 .col-xs-6{width:50%}.factory-bootstrap-453 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-453 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-453 .col-xs-3{width:25%}.factory-bootstrap-453 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-453 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-453 .col-xs-pull-12{right:100%}.factory-bootstrap-453 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-453 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-453 .col-xs-pull-9{right:75%}.factory-bootstrap-453 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-453 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-453 .col-xs-pull-6{right:50%}.factory-bootstrap-453 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-453 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-453 .col-xs-pull-3{right:25%}.factory-bootstrap-453 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-453 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-453 .col-xs-pull-0{right:0}.factory-bootstrap-453 .col-xs-push-12{left:100%}.factory-bootstrap-453 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-453 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-453 .col-xs-push-9{left:75%}.factory-bootstrap-453 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-453 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-453 .col-xs-push-6{left:50%}.factory-bootstrap-453 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-453 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-453 .col-xs-push-3{left:25%}.factory-bootstrap-453 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-453 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-453 .col-xs-push-0{left:0}.factory-bootstrap-453 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-453 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-453 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-453 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-453 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-453 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-453 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-453 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-453 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-453 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-453 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-453 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-453 .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-453 table{max-width:100%;background-color:transparent}.factory-bootstrap-453 th{text-align:left}.factory-bootstrap-453 .table{width:100%;margin-bottom:20px}.factory-bootstrap-453 .table>tbody>tr>td,.factory-bootstrap-453 .table>tbody>tr>th,.factory-bootstrap-453 .table>tfoot>tr>td,.factory-bootstrap-453 .table>tfoot>tr>th,.factory-bootstrap-453 .table>thead>tr>td,.factory-bootstrap-453 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-453 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-453 .table>caption+thead>tr:first-child>td,.factory-bootstrap-453 .table>caption+thead>tr:first-child>th,.factory-bootstrap-453 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-453 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-453 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-453 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-453 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-453 .table .table{background-color:#fff}.factory-bootstrap-453 .table-condensed>tbody>tr>td,.factory-bootstrap-453 .table-condensed>tbody>tr>th,.factory-bootstrap-453 .table-condensed>tfoot>tr>td,.factory-bootstrap-453 .table-condensed>tfoot>tr>th,.factory-bootstrap-453 .table-condensed>thead>tr>td,.factory-bootstrap-453 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-453 .table-bordered,.factory-bootstrap-453 .table-bordered>tbody>tr>td,.factory-bootstrap-453 .table-bordered>tbody>tr>th,.factory-bootstrap-453 .table-bordered>tfoot>tr>td,.factory-bootstrap-453 .table-bordered>tfoot>tr>th,.factory-bootstrap-453 .table-bordered>thead>tr>td,.factory-bootstrap-453 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-453 .table-bordered>thead>tr>td,.factory-bootstrap-453 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-453 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-453 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-453 .table-hover>tbody>tr:hover>td,.factory-bootstrap-453 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-453 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-453 table td[class*=col-],.factory-bootstrap-453 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-453 .table>tbody>.active>td,.factory-bootstrap-453 .table>tbody>.active>th,.factory-bootstrap-453 .table>tbody>tr>.active,.factory-bootstrap-453 .table>tfoot>.active>td,.factory-bootstrap-453 .table>tfoot>.active>th,.factory-bootstrap-453 .table>tfoot>tr>.active,.factory-bootstrap-453 .table>thead>.active>td,.factory-bootstrap-453 .table>thead>.active>th,.factory-bootstrap-453 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-453 .table-hover>tbody>.active:hover>td,.factory-bootstrap-453 .table-hover>tbody>.active:hover>th,.factory-bootstrap-453 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-453 .table>tbody>.success>td,.factory-bootstrap-453 .table>tbody>.success>th,.factory-bootstrap-453 .table>tbody>tr>.success,.factory-bootstrap-453 .table>tfoot>.success>td,.factory-bootstrap-453 .table>tfoot>.success>th,.factory-bootstrap-453 .table>tfoot>tr>.success,.factory-bootstrap-453 .table>thead>.success>td,.factory-bootstrap-453 .table>thead>.success>th,.factory-bootstrap-453 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-453 .table-hover>tbody>.success:hover>td,.factory-bootstrap-453 .table-hover>tbody>.success:hover>th,.factory-bootstrap-453 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-453 .table>tbody>.danger>td,.factory-bootstrap-453 .table>tbody>.danger>th,.factory-bootstrap-453 .table>tbody>tr>.danger,.factory-bootstrap-453 .table>tfoot>.danger>td,.factory-bootstrap-453 .table>tfoot>.danger>th,.factory-bootstrap-453 .table>tfoot>tr>.danger,.factory-bootstrap-453 .table>thead>.danger>td,.factory-bootstrap-453 .table>thead>.danger>th,.factory-bootstrap-453 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-453 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-453 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-453 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-453 .table>tbody>.warning>td,.factory-bootstrap-453 .table>tbody>.warning>th,.factory-bootstrap-453 .table>tbody>tr>.warning,.factory-bootstrap-453 .table>tfoot>.warning>td,.factory-bootstrap-453 .table>tfoot>.warning>th,.factory-bootstrap-453 .table>tfoot>tr>.warning,.factory-bootstrap-453 .table>thead>.warning>td,.factory-bootstrap-453 .table>thead>.warning>th,.factory-bootstrap-453 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-453 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-453 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-453 .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-453 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-453 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-453 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-453 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-453 input[type=checkbox],.factory-bootstrap-453 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-453 input[type=file]{display:block}.factory-bootstrap-453 select[multiple],.factory-bootstrap-453 select[size]{height:auto}.factory-bootstrap-453 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-453 input[type=checkbox]:focus,.factory-bootstrap-453 input[type=file]:focus,.factory-bootstrap-453 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-453 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-453 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-453 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-453 .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-453 .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-453 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-453 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-453 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-453 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-453 .form-control[disabled],.factory-bootstrap-453 .form-control[readonly],.factory-bootstrap-453 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-453 textarea.form-control{height:auto}.factory-bootstrap-453 .form-group{margin-bottom:15px}.factory-bootstrap-453 .checkbox,.factory-bootstrap-453 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-453 .checkbox label,.factory-bootstrap-453 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-453 .checkbox input[type=checkbox],.factory-bootstrap-453 .checkbox-inline input[type=checkbox],.factory-bootstrap-453 .radio input[type=radio],.factory-bootstrap-453 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-453 .checkbox+.checkbox,.factory-bootstrap-453 .radio+.radio{margin-top:-5px}.factory-bootstrap-453 .checkbox-inline,.factory-bootstrap-453 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-453 .checkbox-inline+.checkbox-inline,.factory-bootstrap-453 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-453 .checkbox-inline[disabled],.factory-bootstrap-453 .checkbox[disabled],.factory-bootstrap-453 .radio-inline[disabled],.factory-bootstrap-453 .radio[disabled],.factory-bootstrap-453 fieldset[disabled] .checkbox,.factory-bootstrap-453 fieldset[disabled] .checkbox-inline,.factory-bootstrap-453 fieldset[disabled] .radio,.factory-bootstrap-453 fieldset[disabled] .radio-inline,.factory-bootstrap-453 fieldset[disabled] input[type=checkbox],.factory-bootstrap-453 fieldset[disabled] input[type=radio],.factory-bootstrap-453 input[type=checkbox][disabled],.factory-bootstrap-453 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-453 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-453 textarea.input-sm{height:auto}.factory-bootstrap-453 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-453 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-453 textarea.input-lg{height:auto}.factory-bootstrap-453 .has-warning .checkbox,.factory-bootstrap-453 .has-warning .checkbox-inline,.factory-bootstrap-453 .has-warning .control-label,.factory-bootstrap-453 .has-warning .help-block,.factory-bootstrap-453 .has-warning .radio,.factory-bootstrap-453 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-453 .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-453 .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-453 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-453 .has-error .checkbox,.factory-bootstrap-453 .has-error .checkbox-inline,.factory-bootstrap-453 .has-error .control-label,.factory-bootstrap-453 .has-error .help-block,.factory-bootstrap-453 .has-error .radio,.factory-bootstrap-453 .has-error .radio-inline{color:#a94442}.factory-bootstrap-453 .controls{display:block}.factory-bootstrap-453 .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-453 .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-453 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-453 .has-success .checkbox,.factory-bootstrap-453 .has-success .checkbox-inline,.factory-bootstrap-453 .has-success .control-label,.factory-bootstrap-453 .has-success .help-block,.factory-bootstrap-453 .has-success .radio,.factory-bootstrap-453 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-453 .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-453 .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-453 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-453 .form-control-static{margin-bottom:0}.factory-bootstrap-453 .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-453 .form-horizontal .checkbox,.factory-bootstrap-453 .form-horizontal .checkbox-inline,.factory-bootstrap-453 .form-horizontal .control-label,.factory-bootstrap-453 .form-horizontal .radio,.factory-bootstrap-453 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-453 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-453 .form-horizontal .checkbox,.factory-bootstrap-453 .form-horizontal .radio{min-height:27px}.factory-bootstrap-453 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-453 .form-horizontal .form-group:after,.factory-bootstrap-453 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-453 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-453 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-453 .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-453 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-453 .btn{text-decoration:none}.factory-bootstrap-453 .btn:focus,.factory-bootstrap-453 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-453 .btn.disabled,.factory-bootstrap-453 .btn[disabled],.factory-bootstrap-453 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-453 .btn-default.active,.factory-bootstrap-453 .btn-default:active,.factory-bootstrap-453 .btn-default:focus,.factory-bootstrap-453 .btn-default:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-453 .btn-default.active,.factory-bootstrap-453 .btn-default:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-453 .btn-default.disabled,.factory-bootstrap-453 .btn-default.disabled.active,.factory-bootstrap-453 .btn-default.disabled:active,.factory-bootstrap-453 .btn-default.disabled:focus,.factory-bootstrap-453 .btn-default.disabled:hover,.factory-bootstrap-453 .btn-default[disabled],.factory-bootstrap-453 .btn-default[disabled].active,.factory-bootstrap-453 .btn-default[disabled]:active,.factory-bootstrap-453 .btn-default[disabled]:focus,.factory-bootstrap-453 .btn-default[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-default,.factory-bootstrap-453 fieldset[disabled] .btn-default.active,.factory-bootstrap-453 fieldset[disabled] .btn-default:active,.factory-bootstrap-453 fieldset[disabled] .btn-default:focus,.factory-bootstrap-453 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-453 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-453 .btn-primary.active,.factory-bootstrap-453 .btn-primary:active,.factory-bootstrap-453 .btn-primary:focus,.factory-bootstrap-453 .btn-primary:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-453 .btn-primary.active,.factory-bootstrap-453 .btn-primary:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-453 .btn-primary.disabled,.factory-bootstrap-453 .btn-primary.disabled.active,.factory-bootstrap-453 .btn-primary.disabled:active,.factory-bootstrap-453 .btn-primary.disabled:focus,.factory-bootstrap-453 .btn-primary.disabled:hover,.factory-bootstrap-453 .btn-primary[disabled],.factory-bootstrap-453 .btn-primary[disabled].active,.factory-bootstrap-453 .btn-primary[disabled]:active,.factory-bootstrap-453 .btn-primary[disabled]:focus,.factory-bootstrap-453 .btn-primary[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-primary,.factory-bootstrap-453 fieldset[disabled] .btn-primary.active,.factory-bootstrap-453 fieldset[disabled] .btn-primary:active,.factory-bootstrap-453 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-453 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-453 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-453 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-453 .btn-warning.active,.factory-bootstrap-453 .btn-warning:active,.factory-bootstrap-453 .btn-warning:focus,.factory-bootstrap-453 .btn-warning:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-453 .btn-warning.active,.factory-bootstrap-453 .btn-warning:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-453 .btn-warning.disabled,.factory-bootstrap-453 .btn-warning.disabled.active,.factory-bootstrap-453 .btn-warning.disabled:active,.factory-bootstrap-453 .btn-warning.disabled:focus,.factory-bootstrap-453 .btn-warning.disabled:hover,.factory-bootstrap-453 .btn-warning[disabled],.factory-bootstrap-453 .btn-warning[disabled].active,.factory-bootstrap-453 .btn-warning[disabled]:active,.factory-bootstrap-453 .btn-warning[disabled]:focus,.factory-bootstrap-453 .btn-warning[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-warning,.factory-bootstrap-453 fieldset[disabled] .btn-warning.active,.factory-bootstrap-453 fieldset[disabled] .btn-warning:active,.factory-bootstrap-453 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-453 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-453 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-453 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-453 .btn-success.active,.factory-bootstrap-453 .btn-success:active,.factory-bootstrap-453 .btn-success:focus,.factory-bootstrap-453 .btn-success:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-453 .btn-success.active,.factory-bootstrap-453 .btn-success:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-453 .btn-success.disabled,.factory-bootstrap-453 .btn-success.disabled.active,.factory-bootstrap-453 .btn-success.disabled:active,.factory-bootstrap-453 .btn-success.disabled:focus,.factory-bootstrap-453 .btn-success.disabled:hover,.factory-bootstrap-453 .btn-success[disabled],.factory-bootstrap-453 .btn-success[disabled].active,.factory-bootstrap-453 .btn-success[disabled]:active,.factory-bootstrap-453 .btn-success[disabled]:focus,.factory-bootstrap-453 .btn-success[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-success,.factory-bootstrap-453 fieldset[disabled] .btn-success.active,.factory-bootstrap-453 fieldset[disabled] .btn-success:active,.factory-bootstrap-453 fieldset[disabled] .btn-success:focus,.factory-bootstrap-453 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-453 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-453 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-453 .btn-info.active,.factory-bootstrap-453 .btn-info:active,.factory-bootstrap-453 .btn-info:focus,.factory-bootstrap-453 .btn-info:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-453 .btn-info.active,.factory-bootstrap-453 .btn-info:active,.factory-bootstrap-453 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-453 .btn-info.disabled,.factory-bootstrap-453 .btn-info.disabled.active,.factory-bootstrap-453 .btn-info.disabled:active,.factory-bootstrap-453 .btn-info.disabled:focus,.factory-bootstrap-453 .btn-info.disabled:hover,.factory-bootstrap-453 .btn-info[disabled],.factory-bootstrap-453 .btn-info[disabled].active,.factory-bootstrap-453 .btn-info[disabled]:active,.factory-bootstrap-453 .btn-info[disabled]:focus,.factory-bootstrap-453 .btn-info[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-info,.factory-bootstrap-453 fieldset[disabled] .btn-info.active,.factory-bootstrap-453 fieldset[disabled] .btn-info:active,.factory-bootstrap-453 fieldset[disabled] .btn-info:focus,.factory-bootstrap-453 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-453 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-453 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-453 .btn-link,.factory-bootstrap-453 .btn-link:active,.factory-bootstrap-453 .btn-link[disabled],.factory-bootstrap-453 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-453 .btn-link,.factory-bootstrap-453 .btn-link:active,.factory-bootstrap-453 .btn-link:focus,.factory-bootstrap-453 .btn-link:hover{border-color:transparent}.factory-bootstrap-453 .btn-link:focus,.factory-bootstrap-453 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-453 .btn-link[disabled]:focus,.factory-bootstrap-453 .btn-link[disabled]:hover,.factory-bootstrap-453 fieldset[disabled] .btn-link:focus,.factory-bootstrap-453 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-453 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-453 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-453 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-453 input[type=button].btn-block,.factory-bootstrap-453 input[type=reset].btn-block,.factory-bootstrap-453 input[type=submit].btn-block{width:100%}.factory-bootstrap-453 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-453 .fade.in{opacity:1}.factory-bootstrap-453 .collapse{display:none}.factory-bootstrap-453 .collapse.in{display:block}.factory-bootstrap-453 .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-453 .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-453 .glyphicon:empty{width:1em}.factory-bootstrap-453 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-453 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-453 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-453 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-453 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-453 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-453 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-453 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-453 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-453 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-453 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-453 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-453 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-453 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-453 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-453 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-453 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-453 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-453 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-453 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-453 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-453 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-453 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-453 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-453 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-453 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-453 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-453 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-453 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-453 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-453 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-453 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-453 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-453 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-453 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-453 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-453 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-453 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-453 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-453 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-453 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-453 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-453 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-453 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-453 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-453 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-453 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-453 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-453 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-453 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-453 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-453 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-453 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-453 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-453 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-453 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-453 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-453 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-453 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-453 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-453 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-453 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-453 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-453 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-453 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-453 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-453 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-453 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-453 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-453 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-453 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-453 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-453 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-453 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-453 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-453 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-453 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-453 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-453 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-453 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-453 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-453 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-453 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-453 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-453 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-453 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-453 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-453 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-453 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-453 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-453 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-453 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-453 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-453 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-453 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-453 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-453 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-453 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-453 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-453 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-453 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-453 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-453 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-453 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-453 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-453 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-453 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-453 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-453 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-453 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-453 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-453 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-453 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-453 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-453 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-453 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-453 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-453 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-453 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-453 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-453 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-453 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-453 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-453 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-453 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-453 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-453 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-453 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-453 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-453 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-453 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-453 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-453 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-453 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-453 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-453 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-453 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-453 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-453 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-453 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-453 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-453 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-453 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-453 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-453 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-453 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-453 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-453 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-453 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-453 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-453 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-453 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-453 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-453 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-453 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-453 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-453 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-453 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-453 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-453 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-453 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-453 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-453 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-453 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-453 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-453 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-453 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-453 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-453 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-453 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-453 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-453 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-453 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-453 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-453 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-453 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-453 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-453 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-453 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-453 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-453 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-453 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-453 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-453 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-453 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-453 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-453 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-453 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-453 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-453 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-453 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-453 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-453 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-453 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-453 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-453 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-453 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-453 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-453 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-453 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-453 .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-453 .dropdown{position:relative}.factory-bootstrap-453 .dropdown-toggle:focus{outline:0}.factory-bootstrap-453 .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-453 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-453 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-453 .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-453 .dropdown-menu>li>a:focus,.factory-bootstrap-453 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-453 .dropdown-menu>.active>a,.factory-bootstrap-453 .dropdown-menu>.active>a:focus,.factory-bootstrap-453 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-453 .dropdown-menu>.disabled>a,.factory-bootstrap-453 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-453 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-453 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-453 .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-453 .open>.dropdown-menu{display:block}.factory-bootstrap-453 .open>a{outline:0}.factory-bootstrap-453 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-453 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-453 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-453 .dropup .caret,.factory-bootstrap-453 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-453 .dropup .dropdown-menu,.factory-bootstrap-453 .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-453 .btn-group,.factory-bootstrap-453 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-453 .btn-group-vertical>.btn,.factory-bootstrap-453 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-453 .btn-group-vertical>.btn.active,.factory-bootstrap-453 .btn-group-vertical>.btn:active,.factory-bootstrap-453 .btn-group-vertical>.btn:focus,.factory-bootstrap-453 .btn-group-vertical>.btn:hover,.factory-bootstrap-453 .btn-group>.btn.active,.factory-bootstrap-453 .btn-group>.btn:active,.factory-bootstrap-453 .btn-group>.btn:focus,.factory-bootstrap-453 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-453 .btn-group-vertical>.btn:focus,.factory-bootstrap-453 .btn-group>.btn:focus{outline:0}.factory-bootstrap-453 .btn-group .btn+.btn,.factory-bootstrap-453 .btn-group .btn+.btn-group,.factory-bootstrap-453 .btn-group .btn-group+.btn,.factory-bootstrap-453 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-453 .btn-toolbar:after,.factory-bootstrap-453 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-453 .btn-toolbar:after{clear:both}.factory-bootstrap-453 .btn-toolbar .btn-group{float:left}.factory-bootstrap-453 .btn-toolbar>.btn+.btn,.factory-bootstrap-453 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-453 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-453 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-453 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-453 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-453 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-453 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-453 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .btn-group>.btn-group{float:left}.factory-bootstrap-453 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-453 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-453 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-453 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .btn-group .dropdown-toggle:active,.factory-bootstrap-453 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-453 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-453 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-453 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-453 .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-453 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-453 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-453 .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-453 .btn .caret{margin-left:0}.factory-bootstrap-453 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-453 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-453 .btn-group-vertical>.btn,.factory-bootstrap-453 .btn-group-vertical>.btn-group,.factory-bootstrap-453 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-453 .btn-group-vertical>.btn-group:after,.factory-bootstrap-453 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-453 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-453 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-453 .btn-group-vertical>.btn+.btn,.factory-bootstrap-453 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-453 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-453 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-453 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-453 .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-453 .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-453 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-453 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-453 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-453 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-453 .btn-group-justified>.btn,.factory-bootstrap-453 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-453 .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-453 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-453 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-453 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-453 .input-group-lg>.form-control,.factory-bootstrap-453 .input-group-lg>.input-group-addon,.factory-bootstrap-453 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-453 select.input-group-lg>.form-control,.factory-bootstrap-453 select.input-group-lg>.input-group-addon,.factory-bootstrap-453 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-453 textarea.input-group-lg>.form-control,.factory-bootstrap-453 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-453 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-453 .input-group-sm>.form-control,.factory-bootstrap-453 .input-group-sm>.input-group-addon,.factory-bootstrap-453 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-453 select.input-group-sm>.form-control,.factory-bootstrap-453 select.input-group-sm>.input-group-addon,.factory-bootstrap-453 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-453 textarea.input-group-sm>.form-control,.factory-bootstrap-453 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-453 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-453 .input-group .form-control,.factory-bootstrap-453 .input-group-addon,.factory-bootstrap-453 .input-group-btn{display:table-cell}.factory-bootstrap-453 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-453 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-453 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-453 .input-group-addon,.factory-bootstrap-453 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-453 .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-453 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-453 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-453 .input-group-addon input[type=checkbox],.factory-bootstrap-453 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-453 .input-group .form-control:first-child,.factory-bootstrap-453 .input-group-addon:first-child,.factory-bootstrap-453 .input-group-btn:first-child>.btn,.factory-bootstrap-453 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-453 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-453 .input-group-addon:first-child{border-right:0}.factory-bootstrap-453 .input-group .form-control:last-child,.factory-bootstrap-453 .input-group-addon:last-child,.factory-bootstrap-453 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-453 .input-group-btn:last-child>.btn,.factory-bootstrap-453 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .input-group-addon:last-child{border-left:0}.factory-bootstrap-453 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-453 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-453 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-453 .input-group-btn>.btn{position:relative}.factory-bootstrap-453 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-453 .input-group-btn>.btn:active,.factory-bootstrap-453 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-453 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-453 .nav:after,.factory-bootstrap-453 .nav:before{display:table;content:" "}.factory-bootstrap-453 .nav:after{clear:both}.factory-bootstrap-453 .nav>li{position:relative;display:block}.factory-bootstrap-453 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-453 .nav>li>a:focus,.factory-bootstrap-453 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-453 .nav>li.disabled>a{color:#999}.factory-bootstrap-453 .nav>li.disabled>a:focus,.factory-bootstrap-453 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-453 .nav .open>a,.factory-bootstrap-453 .nav .open>a:focus,.factory-bootstrap-453 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-453 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-453 .nav>li>a>img{max-width:none}.factory-bootstrap-453 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-453 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-453 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-453 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-453 .nav-tabs>li.active>a,.factory-bootstrap-453 .nav-tabs>li.active>a:focus,.factory-bootstrap-453 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-453 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-453 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-453 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-453 .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-453 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-453 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-453 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-453 .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-453 .nav-pills>li{float:left}.factory-bootstrap-453 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-453 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-453 .nav-pills>li.active>a,.factory-bootstrap-453 .nav-pills>li.active>a:focus,.factory-bootstrap-453 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-453 .nav-stacked>li{float:none}.factory-bootstrap-453 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-453 .nav-justified{width:100%}.factory-bootstrap-453 .nav-justified>li{float:none}.factory-bootstrap-453 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-453 .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-453 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-453 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-453 .nav-tabs-justified>.active>a,.factory-bootstrap-453 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-453 .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-453 .tab-content>.tab-pane{display:none}.factory-bootstrap-453 .tab-content>.active{display:block}.factory-bootstrap-453 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-453 .navbar:after,.factory-bootstrap-453 .navbar:before{display:table;content:" "}.factory-bootstrap-453 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-453 .navbar-header:after,.factory-bootstrap-453 .navbar-header:before{display:table;content:" "}.factory-bootstrap-453 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-453 .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-453 .navbar-collapse:after,.factory-bootstrap-453 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-453 .navbar-collapse:after{clear:both}.factory-bootstrap-453 .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-453 .container>.navbar-collapse,.factory-bootstrap-453 .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-453 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-453 .navbar-fixed-bottom,.factory-bootstrap-453 .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-453 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-453 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-453 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-453 .navbar-brand:focus,.factory-bootstrap-453 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-453 .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-453 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-453 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-453 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-453 .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-453 .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-453 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-453 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-453 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-453 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-453 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-453 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-453 .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-453 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-453 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-453 .navbar-default .navbar-brand:focus,.factory-bootstrap-453 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-453 .navbar-default .navbar-nav>li>a,.factory-bootstrap-453 .navbar-default .navbar-text{color:#777}.factory-bootstrap-453 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-453 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-453 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-453 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-453 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-453 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-453 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-453 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-453 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-453 .navbar-default .navbar-toggle:focus,.factory-bootstrap-453 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-453 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-453 .navbar-default .navbar-collapse,.factory-bootstrap-453 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-453 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-453 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-453 .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-453 .navbar-default .navbar-link{color:#777}.factory-bootstrap-453 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-453 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-453 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-453 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-453 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-453 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-453 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-453 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-453 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-453 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-453 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-453 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-453 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-453 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-453 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-453 .navbar-inverse .navbar-collapse,.factory-bootstrap-453 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-453 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-453 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-453 .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-453 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-453 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-453 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-453 .breadcrumb>li{display:inline-block}.factory-bootstrap-453 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-453 .breadcrumb>.active{color:#999}.factory-bootstrap-453 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-453 .pagination>li{display:inline}.factory-bootstrap-453 .pagination>li>a,.factory-bootstrap-453 .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-453 .pagination>li:first-child>a,.factory-bootstrap-453 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-453 .pagination>li:last-child>a,.factory-bootstrap-453 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-453 .pagination>li>a:focus,.factory-bootstrap-453 .pagination>li>a:hover,.factory-bootstrap-453 .pagination>li>span:focus,.factory-bootstrap-453 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-453 .pagination>.disabled>a,.factory-bootstrap-453 .pagination>.disabled>a:focus,.factory-bootstrap-453 .pagination>.disabled>a:hover,.factory-bootstrap-453 .pagination>.disabled>span,.factory-bootstrap-453 .pagination>.disabled>span:focus,.factory-bootstrap-453 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-453 .pagination-lg>li>a,.factory-bootstrap-453 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-453 .pagination-lg>li:first-child>a,.factory-bootstrap-453 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-453 .pagination-lg>li:last-child>a,.factory-bootstrap-453 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-453 .pagination-sm>li>a,.factory-bootstrap-453 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-453 .pagination-sm>li:first-child>a,.factory-bootstrap-453 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-453 .pagination-sm>li:last-child>a,.factory-bootstrap-453 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-453 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-453 .pager:after,.factory-bootstrap-453 .pager:before{display:table;content:" "}.factory-bootstrap-453 .pager:after{clear:both}.factory-bootstrap-453 .pager li{display:inline}.factory-bootstrap-453 .pager li>a,.factory-bootstrap-453 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-453 .pager li>a:focus,.factory-bootstrap-453 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-453 .pager .next>a,.factory-bootstrap-453 .pager .next>span{float:right}.factory-bootstrap-453 .pager .previous>a,.factory-bootstrap-453 .pager .previous>span{float:left}.factory-bootstrap-453 .pager .disabled>a,.factory-bootstrap-453 .pager .disabled>a:focus,.factory-bootstrap-453 .pager .disabled>a:hover,.factory-bootstrap-453 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-453 .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-453 .label[href]:focus,.factory-bootstrap-453 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-453 .label:empty{display:none}.factory-bootstrap-453 .btn .label{position:relative;top:-1px}.factory-bootstrap-453 .label-default{background-color:#999}.factory-bootstrap-453 .label-default[href]:focus,.factory-bootstrap-453 .label-default[href]:hover{background-color:gray}.factory-bootstrap-453 .label-primary{background-color:#428bca}.factory-bootstrap-453 .label-primary[href]:focus,.factory-bootstrap-453 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-453 .label-success{background-color:#5cb85c}.factory-bootstrap-453 .label-success[href]:focus,.factory-bootstrap-453 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-453 .label-info{background-color:#5bc0de}.factory-bootstrap-453 .label-info[href]:focus,.factory-bootstrap-453 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-453 .label-warning{background-color:#f0ad4e}.factory-bootstrap-453 .label-warning[href]:focus,.factory-bootstrap-453 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-453 .label-danger{background-color:#d9534f}.factory-bootstrap-453 .label-danger[href]:focus,.factory-bootstrap-453 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-453 .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-453 .badge:empty{display:none}.factory-bootstrap-453 .btn .badge{position:relative;top:-1px}.factory-bootstrap-453 a.badge:focus,.factory-bootstrap-453 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-453 .nav-pills>.active>a>.badge,.factory-bootstrap-453 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-453 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-453 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-453 .jumbotron .h1,.factory-bootstrap-453 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-453 .jumbotron p{line-height:1.4}.factory-bootstrap-453 .container .jumbotron{border-radius:6px}.factory-bootstrap-453 .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-453 .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-453 .thumbnail a>img,.factory-bootstrap-453 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-453 a.thumbnail.active,.factory-bootstrap-453 a.thumbnail:focus,.factory-bootstrap-453 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-453 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-453 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-453 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-453 .alert .alert-link{font-weight:700}.factory-bootstrap-453 .alert>p,.factory-bootstrap-453 .alert>ul{margin-bottom:0}.factory-bootstrap-453 .alert>p+p{margin-top:5px}.factory-bootstrap-453 .alert-dismissable{padding-right:35px}.factory-bootstrap-453 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-453 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-453 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-453 .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-453 .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-453 .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-453 .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-453 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-453 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-453 .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-453 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-453 .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-453 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-453 .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-453 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-453 .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-453 .media,.factory-bootstrap-453 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-453 .media,.factory-bootstrap-453 .media .media{margin-top:15px}.factory-bootstrap-453 .media:first-child{margin-top:0}.factory-bootstrap-453 .media-object{display:block}.factory-bootstrap-453 .media-heading{margin:0 0 5px}.factory-bootstrap-453 .media>.pull-left{margin-right:10px}.factory-bootstrap-453 .media>.pull-right{margin-left:10px}.factory-bootstrap-453 .media-list{padding-left:0;list-style:none}.factory-bootstrap-453 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-453 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-453 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-453 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-453 .list-group-item>.badge{float:right}.factory-bootstrap-453 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-453 a.list-group-item{color:#555}.factory-bootstrap-453 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-453 a.list-group-item:focus,.factory-bootstrap-453 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-453 a.list-group-item.active,.factory-bootstrap-453 a.list-group-item.active:focus,.factory-bootstrap-453 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-453 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-453 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-453 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-453 a.list-group-item.active .list-group-item-text,.factory-bootstrap-453 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-453 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-453 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-453 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-453 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-453 .panel-body{padding:15px}.factory-bootstrap-453 .panel-body:after,.factory-bootstrap-453 .panel-body:before{display:table;content:" "}.factory-bootstrap-453 .panel-body:after{clear:both}.factory-bootstrap-453 .panel>.list-group{margin-bottom:0}.factory-bootstrap-453 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-453 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-453 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-453 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-453 .panel>.table,.factory-bootstrap-453 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-453 .panel>.panel-body+.table,.factory-bootstrap-453 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-453 .panel>.table>tbody:first-child td,.factory-bootstrap-453 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-453 .panel>.table-bordered,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-453 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-453 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-453 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-453 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-453 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-453 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-453 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-453 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-453 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-453 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-453 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-453 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-453 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-453 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-453 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-453 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-453 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-453 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-453 .panel-title>a{color:inherit}.factory-bootstrap-453 .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-453 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-453 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-453 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-453 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-453 .panel-group .panel-footer{border-top:0}.factory-bootstrap-453 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-453 .panel-default{border-color:#ddd}.factory-bootstrap-453 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-453 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-453 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-453 .panel-primary{border-color:#428bca}.factory-bootstrap-453 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-453 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-453 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-453 .panel-success{border-color:#d6e9c6}.factory-bootstrap-453 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-453 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-453 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-453 .panel-warning{border-color:#faebcc}.factory-bootstrap-453 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-453 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-453 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-453 .panel-danger{border-color:#ebccd1}.factory-bootstrap-453 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-453 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-453 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-453 .panel-info{border-color:#bce8f1}.factory-bootstrap-453 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-453 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-453 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-453 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-453 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-453 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-453 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-453 .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-453 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-453 .close:focus,.factory-bootstrap-453 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-453 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-453 .modal-open{overflow:hidden}.factory-bootstrap-453 .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-453 .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-453 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-453 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-453 .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-453 .modal-backdrop,.factory-bootstrap-453-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-453 .modal-backdrop.fade,.factory-bootstrap-453-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-453 .modal-backdrop.in,.factory-bootstrap-453-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-453 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-453 .modal-header .close{margin-top:-2px}.factory-bootstrap-453 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-453 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-453 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-453 .modal-footer:after,.factory-bootstrap-453 .modal-footer:before{display:table;content:" "}.factory-bootstrap-453 .modal-footer:after{clear:both}.factory-bootstrap-453 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-453 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-453 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-453 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-453 .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-453 .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-453 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-453 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-453 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-453 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-453 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-453 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-453 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-453 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-453 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-453 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-453 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-453 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-453 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-453 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-453 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-453 .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-453 .popover.top{margin-top:-10px}.factory-bootstrap-453 .popover.right{margin-left:10px}.factory-bootstrap-453 .popover.bottom{margin-top:10px}.factory-bootstrap-453 .popover.left{margin-left:-10px}.factory-bootstrap-453 .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-453 .popover-content{padding:9px 14px}.factory-bootstrap-453 .popover .arrow,.factory-bootstrap-453 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-453 .popover .arrow{border-width:11px}.factory-bootstrap-453 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-453 .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-453 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-453 .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-453 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-453 .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-453 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-453 .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-453 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-453 .carousel{position:relative}.factory-bootstrap-453 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-453 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-453 .carousel-inner>.item>a>img,.factory-bootstrap-453 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-453 .carousel-inner>.active,.factory-bootstrap-453 .carousel-inner>.next,.factory-bootstrap-453 .carousel-inner>.prev{display:block}.factory-bootstrap-453 .carousel-inner>.active{left:0}.factory-bootstrap-453 .carousel-inner>.next,.factory-bootstrap-453 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-453 .carousel-inner>.next{left:100%}.factory-bootstrap-453 .carousel-inner>.prev{left:-100%}.factory-bootstrap-453 .carousel-inner>.next.left,.factory-bootstrap-453 .carousel-inner>.prev.right{left:0}.factory-bootstrap-453 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-453 .carousel-inner>.active.right{left:100%}.factory-bootstrap-453 .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-453 .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-453 .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-453 .carousel-control:focus,.factory-bootstrap-453 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-453 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-453 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-453 .carousel-control .icon-next,.factory-bootstrap-453 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-453 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-453 .carousel-control .icon-prev{left:50%}.factory-bootstrap-453 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-453 .carousel-control .icon-next{right:50%}.factory-bootstrap-453 .carousel-control .icon-next,.factory-bootstrap-453 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-453 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-453 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-453 .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-453 .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-453 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-453 .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-453 .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-453 .clearfix:after,.factory-bootstrap-453 .clearfix:before{display:table;content:" "}.factory-bootstrap-453 .clearfix:after{clear:both}.factory-bootstrap-453 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-453 .pull-right{float:right!important}.factory-bootstrap-453 .pull-left{float:left!important}.factory-bootstrap-453 .hide{display:none!important}.factory-bootstrap-453 .show{display:block!important}.factory-bootstrap-453 .invisible{visibility:hidden}.factory-bootstrap-453 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-453 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-453 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-453 .visible-lg,.factory-bootstrap-453 .visible-md,.factory-bootstrap-453 .visible-sm,.factory-bootstrap-453 .visible-xs,.factory-bootstrap-453 td.visible-lg,.factory-bootstrap-453 td.visible-md,.factory-bootstrap-453 td.visible-sm,.factory-bootstrap-453 td.visible-xs,.factory-bootstrap-453 th.visible-lg,.factory-bootstrap-453 th.visible-md,.factory-bootstrap-453 th.visible-sm,.factory-bootstrap-453 th.visible-xs,.factory-bootstrap-453 tr.visible-lg,.factory-bootstrap-453 tr.visible-md,.factory-bootstrap-453 tr.visible-sm,.factory-bootstrap-453 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-453 .hidden-xs{display:block!important}.factory-bootstrap-453 table.hidden-xs{display:table}.factory-bootstrap-453 tr.hidden-xs{display:table-row!important}.factory-bootstrap-453 td.hidden-xs,.factory-bootstrap-453 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-453 .hidden-sm{display:block!important}.factory-bootstrap-453 table.hidden-sm{display:table}.factory-bootstrap-453 tr.hidden-sm{display:table-row!important}.factory-bootstrap-453 td.hidden-sm,.factory-bootstrap-453 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-453 .hidden-md{display:block!important}.factory-bootstrap-453 table.hidden-md{display:table}.factory-bootstrap-453 tr.hidden-md{display:table-row!important}.factory-bootstrap-453 td.hidden-md,.factory-bootstrap-453 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-453 .hidden-lg{display:block!important}.factory-bootstrap-453 table.hidden-lg{display:table}.factory-bootstrap-453 tr.hidden-lg{display:table-row!important}.factory-bootstrap-453 td.hidden-lg,.factory-bootstrap-453 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-453 .hidden-lg.hidden-xs,.factory-bootstrap-453 td.hidden-lg.hidden-xs,.factory-bootstrap-453 th.hidden-lg.hidden-xs,.factory-bootstrap-453 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-453 .hidden-lg.hidden-sm,.factory-bootstrap-453 td.hidden-lg.hidden-sm,.factory-bootstrap-453 th.hidden-lg.hidden-sm,.factory-bootstrap-453 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-453 .hidden-lg.hidden-md,.factory-bootstrap-453 td.hidden-lg.hidden-md,.factory-bootstrap-453 th.hidden-lg.hidden-md,.factory-bootstrap-453 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-453 .hidden-lg,.factory-bootstrap-453 td.hidden-lg,.factory-bootstrap-453 th.hidden-lg,.factory-bootstrap-453 tr.hidden-lg{display:none!important}}.factory-bootstrap-453 .visible-print,.factory-bootstrap-453 td.visible-print,.factory-bootstrap-453 th.visible-print,.factory-bootstrap-453 tr.visible-print{display:none!important}@media print{.factory-bootstrap-453 .visible-print{display:block!important}.factory-bootstrap-453 table.visible-print{display:table}.factory-bootstrap-453 tr.visible-print{display:table-row!important}.factory-bootstrap-453 td.visible-print,.factory-bootstrap-453 th.visible-print{display:table-cell!important}.factory-bootstrap-453 .hidden-print,.factory-bootstrap-453 td.hidden-print,.factory-bootstrap-453 th.hidden-print,.factory-bootstrap-453 tr.hidden-print{display:none!important}}.factory-bootstrap-453 .btn-danger,.factory-bootstrap-453 .btn-default,.factory-bootstrap-453 .btn-info,.factory-bootstrap-453 .btn-primary,.factory-bootstrap-453 .btn-success,.factory-bootstrap-453 .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-453 .btn-danger.active,.factory-bootstrap-453 .btn-danger:active,.factory-bootstrap-453 .btn-default.active,.factory-bootstrap-453 .btn-default:active,.factory-bootstrap-453 .btn-info.active,.factory-bootstrap-453 .btn-info:active,.factory-bootstrap-453 .btn-primary.active,.factory-bootstrap-453 .btn-primary:active,.factory-bootstrap-453 .btn-success.active,.factory-bootstrap-453 .btn-success:active,.factory-bootstrap-453 .btn-warning.active,.factory-bootstrap-453 .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-453 .btn.active,.factory-bootstrap-453 .btn:active{background-image:none}.factory-bootstrap-453 .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-453 .btn-default.active,.factory-bootstrap-453 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-453 .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-453 .btn-gold:focus,.factory-bootstrap-453 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-453 .btn-gold.active,.factory-bootstrap-453 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .btn-primary.active,.factory-bootstrap-453 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-453 .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-453 .btn-success:focus,.factory-bootstrap-453 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-453 .btn-success.active,.factory-bootstrap-453 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-453 .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-453 .btn-warning:focus,.factory-bootstrap-453 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-453 .btn-warning.active,.factory-bootstrap-453 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-453 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-453 .btn-danger.active,.factory-bootstrap-453 .btn-danger:active,.factory-bootstrap-453 .btn-danger:focus,.factory-bootstrap-453 .btn-danger:hover,.factory-bootstrap-453 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-453 .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-453 .btn-info:focus,.factory-bootstrap-453 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-453 .btn-info.active,.factory-bootstrap-453 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-453 .img-thumbnail,.factory-bootstrap-453 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-453 .dropdown-menu>li>a:focus,.factory-bootstrap-453 .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-453 .dropdown-menu>.active>a,.factory-bootstrap-453 .dropdown-menu>.active>a:focus,.factory-bootstrap-453 .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-453 .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-453 .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-453 .navbar-brand,.factory-bootstrap-453 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-453 .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-453 .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-453 .navbar-inverse .navbar-brand,.factory-bootstrap-453 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-453 .navbar-fixed-bottom,.factory-bootstrap-453 .navbar-fixed-top,.factory-bootstrap-453 .navbar-static-top{border-radius:0}.factory-bootstrap-453 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-453 .alert .actions{padding-top:10px}.factory-bootstrap-453 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-453 .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-453 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-453 .alert-normal,.factory-bootstrap-453 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-453 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-453 .alert-danger a:not(.btn),.factory-bootstrap-453 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .list-group-item.active,.factory-bootstrap-453 .list-group-item.active:focus,.factory-bootstrap-453 .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-453 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-453 .factory-hidden{display:none}.factory-bootstrap-453 .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.datepicker.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,10 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
/*!
|
12 |
-
* Datepicker for Bootstrap v1.5.0-dev (https://github.com/eternicode/bootstrap-datepicker)
|
13 |
-
*
|
14 |
-
* Copyright 2012 Stefan Petre
|
15 |
-
* Improvements by Andrew Rowls
|
16 |
-
* Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
17 |
-
*/.datepicker{border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:0}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#eee;cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:active,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:focus,.datepicker table tr td.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{color:#000;background-color:#ffcd70;border-color:#f59e00}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled:hover[disabled].active,.datepicker table tr td.today.disabled:hover[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today[disabled],.datepicker table tr td.today[disabled].active,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today.disabled,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today:hover:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:focus,.datepicker table tr td.range.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{color:#000;background-color:#f4bb51;border-color:#bf800c}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{background-image:none}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled:hover[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today.disabled,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{color:#fff;background-color:#999;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:focus,.datepicker table tr td.selected:hover:hover,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{color:#fff;background-color:#858585;border-color:#373737}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{background-image:none}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled:hover[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected.disabled,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected:hover:hover{background-color:#999;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:focus,.datepicker table tr td.active:hover:hover,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{background-image:none}.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled:hover[disabled].active,.datepicker table tr td.active.disabled:hover[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active[disabled],.datepicker table tr td.active[disabled].active,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active.disabled,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:focus,.datepicker table tr td span.active:hover:hover,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled:hover[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active.disabled,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker tfoot tr th,.datepicker thead tr:first-child th{cursor:pointer}.datepicker tfoot tr th:hover,.datepicker thead tr:first-child th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;font-weight:400;line-height:1.42857143;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:solid #ccc;border-width:1px 0;margin-left:-5px;margin-right:-5px}.datepicker.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;color:#333;font-size:13px;line-height:1.42857143}.datepicker.datepicker-inline td,.datepicker.datepicker-inline th,.datepicker.dropdown-menu td,.datepicker.dropdown-menu th{padding:0 5px}
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.datepicker{border-radius:4px;direction:ltr}.datepicker-inline{width:220px}.datepicker.datepicker-rtl{direction:rtl}.datepicker.datepicker-rtl table tr td span{float:right}.datepicker-dropdown{top:0;left:0}.datepicker-dropdown:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-top:0;border-bottom-color:rgba(0,0,0,.2);position:absolute}.datepicker-dropdown:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;border-top:0;position:absolute}.datepicker-dropdown.datepicker-orient-left:before{left:6px}.datepicker-dropdown.datepicker-orient-left:after{left:7px}.datepicker-dropdown.datepicker-orient-right:before{right:6px}.datepicker-dropdown.datepicker-orient-right:after{right:7px}.datepicker-dropdown.datepicker-orient-top:before{top:-7px}.datepicker-dropdown.datepicker-orient-top:after{top:-6px}.datepicker-dropdown.datepicker-orient-bottom:before{bottom:-7px;border-bottom:0;border-top:7px solid #999}.datepicker-dropdown.datepicker-orient-bottom:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}.datepicker>div{display:none}.datepicker.days .datepicker-days,.datepicker.months .datepicker-months,.datepicker.years .datepicker-years{display:block}.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border-radius:4px;border:0}.table-striped .datepicker table tr td,.table-striped .datepicker table tr th{background-color:transparent}.datepicker table tr td.day.focused,.datepicker table tr td.day:hover{background:#eee;cursor:pointer}.datepicker table tr td.new,.datepicker table tr td.old{color:#999}.datepicker table tr td.disabled,.datepicker table tr td.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td.today,.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today:hover{color:#000;background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today.disabled:hover:focus,.datepicker table tr td.today.disabled:hover:hover,.datepicker table tr td.today:active,.datepicker table tr td.today:focus,.datepicker table tr td.today:hover,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.datepicker table tr td.today:hover:focus,.datepicker table tr td.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{color:#000;background-color:#ffcd70;border-color:#f59e00}.datepicker table tr td.today.active,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:hover.active,.datepicker table tr td.today.disabled:hover:active,.datepicker table tr td.today:active,.datepicker table tr td.today:hover.active,.datepicker table tr td.today:hover:active,.open .dropdown-toggle.datepicker table tr td.today,.open .dropdown-toggle.datepicker table tr td.today.disabled,.open .dropdown-toggle.datepicker table tr td.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.today:hover{background-image:none}.datepicker table tr td.today.disabled,.datepicker table tr td.today.disabled.active,.datepicker table tr td.today.disabled.disabled,.datepicker table tr td.today.disabled.disabled.active,.datepicker table tr td.today.disabled.disabled:active,.datepicker table tr td.today.disabled.disabled:focus,.datepicker table tr td.today.disabled.disabled:hover,.datepicker table tr td.today.disabled:active,.datepicker table tr td.today.disabled:focus,.datepicker table tr td.today.disabled:hover,.datepicker table tr td.today.disabled:hover.disabled,.datepicker table tr td.today.disabled:hover.disabled.active,.datepicker table tr td.today.disabled:hover.disabled:active,.datepicker table tr td.today.disabled:hover.disabled:focus,.datepicker table tr td.today.disabled:hover.disabled:hover,.datepicker table tr td.today.disabled:hover[disabled],.datepicker table tr td.today.disabled:hover[disabled].active,.datepicker table tr td.today.disabled:hover[disabled]:active,.datepicker table tr td.today.disabled:hover[disabled]:focus,.datepicker table tr td.today.disabled:hover[disabled]:hover,.datepicker table tr td.today.disabled[disabled],.datepicker table tr td.today.disabled[disabled].active,.datepicker table tr td.today.disabled[disabled]:active,.datepicker table tr td.today.disabled[disabled]:focus,.datepicker table tr td.today.disabled[disabled]:hover,.datepicker table tr td.today:hover.disabled,.datepicker table tr td.today:hover.disabled.active,.datepicker table tr td.today:hover.disabled:active,.datepicker table tr td.today:hover.disabled:focus,.datepicker table tr td.today:hover.disabled:hover,.datepicker table tr td.today:hover[disabled],.datepicker table tr td.today:hover[disabled].active,.datepicker table tr td.today:hover[disabled]:active,.datepicker table tr td.today:hover[disabled]:focus,.datepicker table tr td.today:hover[disabled]:hover,.datepicker table tr td.today[disabled],.datepicker table tr td.today[disabled].active,.datepicker table tr td.today[disabled]:active,.datepicker table tr td.today[disabled]:focus,.datepicker table tr td.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.today,fieldset[disabled] .datepicker table tr td.today.active,fieldset[disabled] .datepicker table tr td.today.disabled,fieldset[disabled] .datepicker table tr td.today.disabled.active,fieldset[disabled] .datepicker table tr td.today.disabled:active,fieldset[disabled] .datepicker table tr td.today.disabled:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover,fieldset[disabled] .datepicker table tr td.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.today:active,fieldset[disabled] .datepicker table tr td.today:focus,fieldset[disabled] .datepicker table tr td.today:hover,fieldset[disabled] .datepicker table tr td.today:hover.active,fieldset[disabled] .datepicker table tr td.today:hover:active,fieldset[disabled] .datepicker table tr td.today:hover:focus,fieldset[disabled] .datepicker table tr td.today:hover:hover{background-color:#ffdb99;border-color:#ffb733}.datepicker table tr td.today:hover:hover{color:#000}.datepicker table tr td.today.active:hover{color:#fff}.datepicker table tr td.range,.datepicker table tr td.range.disabled,.datepicker table tr td.range.disabled:hover,.datepicker table tr td.range:hover{background:#eee;border-radius:0}.datepicker table tr td.range.today,.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today:hover{color:#000;background-color:#f7ca77;border-color:#f1a417;border-radius:0}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today.disabled:hover:focus,.datepicker table tr td.range.today.disabled:hover:hover,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:focus,.datepicker table tr td.range.today:hover,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.datepicker table tr td.range.today:hover:focus,.datepicker table tr td.range.today:hover:hover,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{color:#000;background-color:#f4bb51;border-color:#bf800c}.datepicker table tr td.range.today.active,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:hover.active,.datepicker table tr td.range.today.disabled:hover:active,.datepicker table tr td.range.today:active,.datepicker table tr td.range.today:hover.active,.datepicker table tr td.range.today:hover:active,.open .dropdown-toggle.datepicker table tr td.range.today,.open .dropdown-toggle.datepicker table tr td.range.today.disabled,.open .dropdown-toggle.datepicker table tr td.range.today.disabled:hover,.open .dropdown-toggle.datepicker table tr td.range.today:hover{background-image:none}.datepicker table tr td.range.today.disabled,.datepicker table tr td.range.today.disabled.active,.datepicker table tr td.range.today.disabled.disabled,.datepicker table tr td.range.today.disabled.disabled.active,.datepicker table tr td.range.today.disabled.disabled:active,.datepicker table tr td.range.today.disabled.disabled:focus,.datepicker table tr td.range.today.disabled.disabled:hover,.datepicker table tr td.range.today.disabled:active,.datepicker table tr td.range.today.disabled:focus,.datepicker table tr td.range.today.disabled:hover,.datepicker table tr td.range.today.disabled:hover.disabled,.datepicker table tr td.range.today.disabled:hover.disabled.active,.datepicker table tr td.range.today.disabled:hover.disabled:active,.datepicker table tr td.range.today.disabled:hover.disabled:focus,.datepicker table tr td.range.today.disabled:hover.disabled:hover,.datepicker table tr td.range.today.disabled:hover[disabled],.datepicker table tr td.range.today.disabled:hover[disabled].active,.datepicker table tr td.range.today.disabled:hover[disabled]:active,.datepicker table tr td.range.today.disabled:hover[disabled]:focus,.datepicker table tr td.range.today.disabled:hover[disabled]:hover,.datepicker table tr td.range.today.disabled[disabled],.datepicker table tr td.range.today.disabled[disabled].active,.datepicker table tr td.range.today.disabled[disabled]:active,.datepicker table tr td.range.today.disabled[disabled]:focus,.datepicker table tr td.range.today.disabled[disabled]:hover,.datepicker table tr td.range.today:hover.disabled,.datepicker table tr td.range.today:hover.disabled.active,.datepicker table tr td.range.today:hover.disabled:active,.datepicker table tr td.range.today:hover.disabled:focus,.datepicker table tr td.range.today:hover.disabled:hover,.datepicker table tr td.range.today:hover[disabled],.datepicker table tr td.range.today:hover[disabled].active,.datepicker table tr td.range.today:hover[disabled]:active,.datepicker table tr td.range.today:hover[disabled]:focus,.datepicker table tr td.range.today:hover[disabled]:hover,.datepicker table tr td.range.today[disabled],.datepicker table tr td.range.today[disabled].active,.datepicker table tr td.range.today[disabled]:active,.datepicker table tr td.range.today[disabled]:focus,.datepicker table tr td.range.today[disabled]:hover,fieldset[disabled] .datepicker table tr td.range.today,fieldset[disabled] .datepicker table tr td.range.today.active,fieldset[disabled] .datepicker table tr td.range.today.disabled,fieldset[disabled] .datepicker table tr td.range.today.disabled.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover.active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:active,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.range.today.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.range.today:active,fieldset[disabled] .datepicker table tr td.range.today:focus,fieldset[disabled] .datepicker table tr td.range.today:hover,fieldset[disabled] .datepicker table tr td.range.today:hover.active,fieldset[disabled] .datepicker table tr td.range.today:hover:active,fieldset[disabled] .datepicker table tr td.range.today:hover:focus,fieldset[disabled] .datepicker table tr td.range.today:hover:hover{background-color:#f7ca77;border-color:#f1a417}.datepicker table tr td.selected,.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected:hover{color:#fff;background-color:#999;border-color:#555;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected.disabled:hover:focus,.datepicker table tr td.selected.disabled:hover:hover,.datepicker table tr td.selected:active,.datepicker table tr td.selected:focus,.datepicker table tr td.selected:hover,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.datepicker table tr td.selected:hover:focus,.datepicker table tr td.selected:hover:hover,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{color:#fff;background-color:#858585;border-color:#373737}.datepicker table tr td.selected.active,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:hover.active,.datepicker table tr td.selected.disabled:hover:active,.datepicker table tr td.selected:active,.datepicker table tr td.selected:hover.active,.datepicker table tr td.selected:hover:active,.open .dropdown-toggle.datepicker table tr td.selected,.open .dropdown-toggle.datepicker table tr td.selected.disabled,.open .dropdown-toggle.datepicker table tr td.selected.disabled:hover,.open .dropdown-toggle.datepicker table tr td.selected:hover{background-image:none}.datepicker table tr td.selected.disabled,.datepicker table tr td.selected.disabled.active,.datepicker table tr td.selected.disabled.disabled,.datepicker table tr td.selected.disabled.disabled.active,.datepicker table tr td.selected.disabled.disabled:active,.datepicker table tr td.selected.disabled.disabled:focus,.datepicker table tr td.selected.disabled.disabled:hover,.datepicker table tr td.selected.disabled:active,.datepicker table tr td.selected.disabled:focus,.datepicker table tr td.selected.disabled:hover,.datepicker table tr td.selected.disabled:hover.disabled,.datepicker table tr td.selected.disabled:hover.disabled.active,.datepicker table tr td.selected.disabled:hover.disabled:active,.datepicker table tr td.selected.disabled:hover.disabled:focus,.datepicker table tr td.selected.disabled:hover.disabled:hover,.datepicker table tr td.selected.disabled:hover[disabled],.datepicker table tr td.selected.disabled:hover[disabled].active,.datepicker table tr td.selected.disabled:hover[disabled]:active,.datepicker table tr td.selected.disabled:hover[disabled]:focus,.datepicker table tr td.selected.disabled:hover[disabled]:hover,.datepicker table tr td.selected.disabled[disabled],.datepicker table tr td.selected.disabled[disabled].active,.datepicker table tr td.selected.disabled[disabled]:active,.datepicker table tr td.selected.disabled[disabled]:focus,.datepicker table tr td.selected.disabled[disabled]:hover,.datepicker table tr td.selected:hover.disabled,.datepicker table tr td.selected:hover.disabled.active,.datepicker table tr td.selected:hover.disabled:active,.datepicker table tr td.selected:hover.disabled:focus,.datepicker table tr td.selected:hover.disabled:hover,.datepicker table tr td.selected:hover[disabled],.datepicker table tr td.selected:hover[disabled].active,.datepicker table tr td.selected:hover[disabled]:active,.datepicker table tr td.selected:hover[disabled]:focus,.datepicker table tr td.selected:hover[disabled]:hover,.datepicker table tr td.selected[disabled],.datepicker table tr td.selected[disabled].active,.datepicker table tr td.selected[disabled]:active,.datepicker table tr td.selected[disabled]:focus,.datepicker table tr td.selected[disabled]:hover,fieldset[disabled] .datepicker table tr td.selected,fieldset[disabled] .datepicker table tr td.selected.active,fieldset[disabled] .datepicker table tr td.selected.disabled,fieldset[disabled] .datepicker table tr td.selected.disabled.active,fieldset[disabled] .datepicker table tr td.selected.disabled:active,fieldset[disabled] .datepicker table tr td.selected.disabled:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover,fieldset[disabled] .datepicker table tr td.selected.disabled:hover.active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:active,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.selected.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.selected:active,fieldset[disabled] .datepicker table tr td.selected:focus,fieldset[disabled] .datepicker table tr td.selected:hover,fieldset[disabled] .datepicker table tr td.selected:hover.active,fieldset[disabled] .datepicker table tr td.selected:hover:active,fieldset[disabled] .datepicker table tr td.selected:hover:focus,fieldset[disabled] .datepicker table tr td.selected:hover:hover{background-color:#999;border-color:#555}.datepicker table tr td.active,.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active.disabled:hover:focus,.datepicker table tr td.active.disabled:hover:hover,.datepicker table tr td.active:active,.datepicker table tr td.active:focus,.datepicker table tr td.active:hover,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.datepicker table tr td.active:hover:focus,.datepicker table tr td.active:hover:hover,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td.active.active,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:hover.active,.datepicker table tr td.active.disabled:hover:active,.datepicker table tr td.active:active,.datepicker table tr td.active:hover.active,.datepicker table tr td.active:hover:active,.open .dropdown-toggle.datepicker table tr td.active,.open .dropdown-toggle.datepicker table tr td.active.disabled,.open .dropdown-toggle.datepicker table tr td.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td.active:hover{background-image:none}.datepicker table tr td.active.disabled,.datepicker table tr td.active.disabled.active,.datepicker table tr td.active.disabled.disabled,.datepicker table tr td.active.disabled.disabled.active,.datepicker table tr td.active.disabled.disabled:active,.datepicker table tr td.active.disabled.disabled:focus,.datepicker table tr td.active.disabled.disabled:hover,.datepicker table tr td.active.disabled:active,.datepicker table tr td.active.disabled:focus,.datepicker table tr td.active.disabled:hover,.datepicker table tr td.active.disabled:hover.disabled,.datepicker table tr td.active.disabled:hover.disabled.active,.datepicker table tr td.active.disabled:hover.disabled:active,.datepicker table tr td.active.disabled:hover.disabled:focus,.datepicker table tr td.active.disabled:hover.disabled:hover,.datepicker table tr td.active.disabled:hover[disabled],.datepicker table tr td.active.disabled:hover[disabled].active,.datepicker table tr td.active.disabled:hover[disabled]:active,.datepicker table tr td.active.disabled:hover[disabled]:focus,.datepicker table tr td.active.disabled:hover[disabled]:hover,.datepicker table tr td.active.disabled[disabled],.datepicker table tr td.active.disabled[disabled].active,.datepicker table tr td.active.disabled[disabled]:active,.datepicker table tr td.active.disabled[disabled]:focus,.datepicker table tr td.active.disabled[disabled]:hover,.datepicker table tr td.active:hover.disabled,.datepicker table tr td.active:hover.disabled.active,.datepicker table tr td.active:hover.disabled:active,.datepicker table tr td.active:hover.disabled:focus,.datepicker table tr td.active:hover.disabled:hover,.datepicker table tr td.active:hover[disabled],.datepicker table tr td.active:hover[disabled].active,.datepicker table tr td.active:hover[disabled]:active,.datepicker table tr td.active:hover[disabled]:focus,.datepicker table tr td.active:hover[disabled]:hover,.datepicker table tr td.active[disabled],.datepicker table tr td.active[disabled].active,.datepicker table tr td.active[disabled]:active,.datepicker table tr td.active[disabled]:focus,.datepicker table tr td.active[disabled]:hover,fieldset[disabled] .datepicker table tr td.active,fieldset[disabled] .datepicker table tr td.active.active,fieldset[disabled] .datepicker table tr td.active.disabled,fieldset[disabled] .datepicker table tr td.active.disabled.active,fieldset[disabled] .datepicker table tr td.active.disabled:active,fieldset[disabled] .datepicker table tr td.active.disabled:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover,fieldset[disabled] .datepicker table tr td.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td.active:active,fieldset[disabled] .datepicker table tr td.active:focus,fieldset[disabled] .datepicker table tr td.active:hover,fieldset[disabled] .datepicker table tr td.active:hover.active,fieldset[disabled] .datepicker table tr td.active:hover:active,fieldset[disabled] .datepicker table tr td.active:hover:focus,fieldset[disabled] .datepicker table tr td.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span{display:block;width:23%;height:54px;line-height:54px;float:left;margin:1%;cursor:pointer;border-radius:4px}.datepicker table tr td span:hover{background:#eee}.datepicker table tr td span.disabled,.datepicker table tr td span.disabled:hover{background:0 0;color:#999;cursor:default}.datepicker table tr td span.active,.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active:hover{color:#fff;background-color:#428bca;border-color:#357ebd;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active.disabled:hover:focus,.datepicker table tr td span.active.disabled:hover:hover,.datepicker table tr td span.active:active,.datepicker table tr td span.active:focus,.datepicker table tr td span.active:hover,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.datepicker table tr td span.active:hover:focus,.datepicker table tr td span.active:hover:hover,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{color:#fff;background-color:#3276b1;border-color:#285e8e}.datepicker table tr td span.active.active,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:hover.active,.datepicker table tr td span.active.disabled:hover:active,.datepicker table tr td span.active:active,.datepicker table tr td span.active:hover.active,.datepicker table tr td span.active:hover:active,.open .dropdown-toggle.datepicker table tr td span.active,.open .dropdown-toggle.datepicker table tr td span.active.disabled,.open .dropdown-toggle.datepicker table tr td span.active.disabled:hover,.open .dropdown-toggle.datepicker table tr td span.active:hover{background-image:none}.datepicker table tr td span.active.disabled,.datepicker table tr td span.active.disabled.active,.datepicker table tr td span.active.disabled.disabled,.datepicker table tr td span.active.disabled.disabled.active,.datepicker table tr td span.active.disabled.disabled:active,.datepicker table tr td span.active.disabled.disabled:focus,.datepicker table tr td span.active.disabled.disabled:hover,.datepicker table tr td span.active.disabled:active,.datepicker table tr td span.active.disabled:focus,.datepicker table tr td span.active.disabled:hover,.datepicker table tr td span.active.disabled:hover.disabled,.datepicker table tr td span.active.disabled:hover.disabled.active,.datepicker table tr td span.active.disabled:hover.disabled:active,.datepicker table tr td span.active.disabled:hover.disabled:focus,.datepicker table tr td span.active.disabled:hover.disabled:hover,.datepicker table tr td span.active.disabled:hover[disabled],.datepicker table tr td span.active.disabled:hover[disabled].active,.datepicker table tr td span.active.disabled:hover[disabled]:active,.datepicker table tr td span.active.disabled:hover[disabled]:focus,.datepicker table tr td span.active.disabled:hover[disabled]:hover,.datepicker table tr td span.active.disabled[disabled],.datepicker table tr td span.active.disabled[disabled].active,.datepicker table tr td span.active.disabled[disabled]:active,.datepicker table tr td span.active.disabled[disabled]:focus,.datepicker table tr td span.active.disabled[disabled]:hover,.datepicker table tr td span.active:hover.disabled,.datepicker table tr td span.active:hover.disabled.active,.datepicker table tr td span.active:hover.disabled:active,.datepicker table tr td span.active:hover.disabled:focus,.datepicker table tr td span.active:hover.disabled:hover,.datepicker table tr td span.active:hover[disabled],.datepicker table tr td span.active:hover[disabled].active,.datepicker table tr td span.active:hover[disabled]:active,.datepicker table tr td span.active:hover[disabled]:focus,.datepicker table tr td span.active:hover[disabled]:hover,.datepicker table tr td span.active[disabled],.datepicker table tr td span.active[disabled].active,.datepicker table tr td span.active[disabled]:active,.datepicker table tr td span.active[disabled]:focus,.datepicker table tr td span.active[disabled]:hover,fieldset[disabled] .datepicker table tr td span.active,fieldset[disabled] .datepicker table tr td span.active.active,fieldset[disabled] .datepicker table tr td span.active.disabled,fieldset[disabled] .datepicker table tr td span.active.disabled.active,fieldset[disabled] .datepicker table tr td span.active.disabled:active,fieldset[disabled] .datepicker table tr td span.active.disabled:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover,fieldset[disabled] .datepicker table tr td span.active.disabled:hover.active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:active,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,fieldset[disabled] .datepicker table tr td span.active:active,fieldset[disabled] .datepicker table tr td span.active:focus,fieldset[disabled] .datepicker table tr td span.active:hover,fieldset[disabled] .datepicker table tr td span.active:hover.active,fieldset[disabled] .datepicker table tr td span.active:hover:active,fieldset[disabled] .datepicker table tr td span.active:hover:focus,fieldset[disabled] .datepicker table tr td span.active:hover:hover{background-color:#428bca;border-color:#357ebd}.datepicker table tr td span.new,.datepicker table tr td span.old{color:#999}.datepicker .datepicker-switch{width:145px}.datepicker tfoot tr th,.datepicker thead tr:first-child th{cursor:pointer}.datepicker tfoot tr th:hover,.datepicker thead tr:first-child th:hover{background:#eee}.datepicker .cw{font-size:10px;width:12px;padding:0 2px 0 5px;vertical-align:middle}.datepicker thead tr:first-child .cw{cursor:default;background-color:transparent}.input-group.date .input-group-addon{cursor:pointer}.input-daterange{width:100%}.input-daterange input{text-align:center}.input-daterange input:first-child{border-radius:3px 0 0 3px}.input-daterange input:last-child{border-radius:0 3px 3px 0}.input-daterange .input-group-addon{width:auto;min-width:16px;padding:4px 5px;font-weight:400;line-height:1.42857143;text-align:center;text-shadow:0 1px 0 #fff;vertical-align:middle;background-color:#eee;border:solid #ccc;border-width:1px 0;margin-left:-5px;margin-right:-5px}.datepicker.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:5px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;color:#333;font-size:13px;line-height:1.42857143}.datepicker.datepicker-inline td,.datepicker.datepicker-inline th,.datepicker.dropdown-menu td,.datepicker.dropdown-menu th{padding:0 5px}
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
|
libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-453 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-453 .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-453 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-453 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-453 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-453 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-453 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-453 .factory-form-group legend+.control-group{margin-top:0}
|
libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
|
libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
|
libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
|
libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .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
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .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-453 .btn-primary:focus,.factory-bootstrap-453 .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-453 .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-453 .btn-primary:disabled,.factory-bootstrap-453 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-453 .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-453 .pagination>.active>a,.factory-bootstrap-453 .pagination>.active>a:focus,.factory-bootstrap-453 .pagination>.active>a:hover,.factory-bootstrap-453 .pagination>.active>span,.factory-bootstrap-453 .pagination>.active>span:focus,.factory-bootstrap-453 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
|
libs/factory/bootstrap/assets/css-min/control.checkbox.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
#side-sortables .factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
#side-sortables .factory-bootstrap-453 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-453 .factory-checkbox-disabled button,.factory-bootstrap-453 .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-453 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-453 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-453 .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-453 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-453 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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.color.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .factory-color{position:relative}.factory-bootstrap-453 .factory-color .factory-color-hex{display:inline-block;width:65px;text-align:left;vertical-align:top;border-top-right-radius:3px;border-bottom-right-radius:3px;border-radius:3px;z-index:1;position:relative;margin-left:26px;border-top-left-radius:0;border-bottom-left-radius:0}.factory-bootstrap-453 .factory-color .factory-background,.factory-bootstrap-453 .factory-color .factory-pattern{cursor:pointer;height:26px;width:26px;position:absolute;border-radius:5px;background:transparent url(../../assets/images/color_picker_pattern.jpg) center center repeat;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34);z-index:1;border-top-right-radius:0!important;border-bottom-right-radius:0!important}.factory-bootstrap-453 .factory-color .factory-background{z-index:2;border-radius:3px}
|
libs/factory/bootstrap/assets/css-min/control.dropdown.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-453 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-453 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .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-453 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-453 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-453 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-453 .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
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-453 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-453 .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-453 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-453 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-453 .factory-mtextbox-add-item{display:block;margin-top:10px}
|
libs/factory/bootstrap/assets/css-min/holder.more-link.min.css
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-453 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-453 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-453 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-453 .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-453 .factory-tab .factory-more-link-hide:hover{color:#999}
|
libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -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.
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
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.factoryBootstrap453_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.factoryBootstrap453_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/bootstrap.tooltip.min.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
libs/factory/bootstrap/assets/js-min/control.checkbox.min.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -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.
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
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.factoryBootstrap453_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.factoryBootstrap453_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-453 .factory-checkbox.factory-buttons-way").factoryBootstrap453_checkboxControl(),a(".factory-bootstrap-453 .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.color.min.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){a.widget("
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){a.widget("factoryBootstrap453.colorControl",{_create:function(){this.$element=this.element,this.$picker=this.$element.find(".factory-color-hex"),this.$preview=this.$element.find(".factory-preview"),this.$background=this.$element.find(".factory-background"),this._init()},_init:function(b){var c=this,d={width:216,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(a,b){c.$background.css({background:b.color.toString()}),c.$element.trigger("change.color.factory",[b.color.toString()]),c.$element.trigger("updated.color.factory",[b.color.toString()])}},e=this.$element.data("picker-target");e&&(d.target=a(e)),this.$picker.factoryBootstrap453_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap453_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap453_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap453_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap453_iris("show")},getValue:function(){return this.$picker.val()},setValue:function(a,b){this.$picker.val(a),b&&self.$picker.trigger("change")}}),a(function(){a.widget.bridge("factoryBootstrap453_colorControl",a.factoryBootstrap453.colorControl),a(".factory-bootstrap-453 .factory-color").factoryBootstrap453_colorControl({})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.dropdown.min.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -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.
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
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.factoryBootstrap453_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.factoryBootstrap453_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-453 .factory-dropdown").factoryBootstrap453_dropdownControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.list.min.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -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.
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
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.factoryBootstrap453_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.factoryBootstrap453_listControl.Constructor=b,a(function(){a(".factory-bootstrap-453 .factory-list").factoryBootstrap453_listControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -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.
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
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.factoryBootstrap453_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-453 .factory-multiple-textbox-group").factoryBootstrap453_MultipleTextboxControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/holder.more-link.min.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a,b,c,d){"use strict";var e="
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a,b,c,d){"use strict";var e="factoryBootstrap453_moreLink";a.fn[e]=function(b,c){return this.each(function(){var b=a(this);b.find(".factory-more-link-show").click(function(){return a(a(this).attr("href")).fadeIn(),a(this).hide(),!1}),b.find(".factory-more-link-hide").click(function(){var b=a(a(this).attr("href"));return b.fadeOut(300,function(){b.parents(".factory-more-link").find(".factory-more-link-show").show()}),!1})})},a(function(){a(".factory-bootstrap-453 .factory-more-link").factoryBootstrap453_moreLink()})}(jQuery,window,document);
|
libs/factory/bootstrap/assets/js-min/plugin.color.min.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
libs/factory/bootstrap/assets/js-min/plugin.iris.min.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/*!
|
2 |
-
* Bootstrap generator - v1.0.1, 2021-
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
@@ -7,7 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
/*! Iris Color Picker - v1.0.4 - 2013-11-18
|
11 |
-
* https://github.com/Automattic/Iris
|
12 |
-
* Copyright (c) 2013 Matt Wiebe; Licensed GPLv2 */
|
13 |
-
!function(a,b){function c(){var b,c;j?k="filter":(b=a('<div id="iris-gradtest" />'),c="linear-gradient(top,#fff,#000)",a.each(l,function(a,d){return b.css("backgroundImage",d+c),b.css("backgroundImage").match("gradient")?(k=a,!1):void 0}),k===!1&&(b.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),b.css("backgroundImage").match("gradient")&&(k="webkit")),b.remove())}function d(b,c){return b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),"webkit"===k?f(b,c):l[k]+"linear-gradient("+b+", "+c.join(", ")+")"}function e(b,c){var d,e,f,h,i,j,k,l,m;b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),d="top"===b?0:1,e=a(this),f=c.length-1,h="filter",i=1===d?"left":"top",j=1===d?"right":"bottom",k=1===d?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+k+":100%;"+i+":%start%;"+j+":%end%;"+h+':%filter%;" data-color:"%color%"></div>',m="","static"===e.css("position")&&e.css({position:"relative"}),c=g(c),a.each(c,function(a,b){var e,g,h;return a===f?!1:(e=c[a+1],void(b.stop!==e.stop&&(g=100-parseFloat(e.stop)+"%",b.octoHex=new Color(b.color).toIEOctoHex(),e.octoHex=new Color(e.color).toIEOctoHex(),h="progid:DXImageTransform.Microsoft.Gradient(GradientType="+d+", StartColorStr='"+b.octoHex+"', EndColorStr='"+e.octoHex+"')",m+=l.replace("%start%",b.stop).replace("%end%",g).replace("%filter%",h))))}),e.find(".iris-ie-gradient-shim").remove(),a(m).prependTo(e)}function f(b,c){var d=[];return b="top"===b?"0% 0%,0% 100%,":"0% 100%,100% 100%,",c=g(c),a.each(c,function(a,b){d.push("color-stop("+parseFloat(b.stop)/100+", "+b.color+")")}),"-webkit-gradient(linear,"+b+d.join(",")+")"}function g(b){var c=[],d=[],e=[],f=b.length-1;return a.each(b,function(a,b){var e=b,f=!1,g=b.match(/1?[0-9]{1,2}%$/);g&&(e=b.replace(/\s?1?[0-9]{1,2}%$/,""),f=g.shift()),c.push(e),d.push(f)}),d[0]===!1&&(d[0]="0%"),d[f]===!1&&(d[f]="100%"),d=h(d),a.each(d,function(a){e[a]={color:c[a],stop:d[a]}}),e}function h(b){var c,d,e,f,g=0,i=b.length-1,j=0,k=!1;if(b.length<=2||a.inArray(!1,b)<0)return b;for(;j<b.length-1;)k||b[j]!==!1?k&&b[j]!==!1&&(i=j,j=b.length):(g=j-1,k=!0),j++;for(d=i-g,f=parseInt(b[g].replace("%"),10),c=(parseFloat(b[i].replace("%"))-f)/d,j=g+1,e=1;i>j;)b[j]=f+e*c+"%",e++,j++;return h(b)}var i,j,k,l,m,n,o,p,q;return i='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',o=navigator.userAgent.toLowerCase(),p="Microsoft Internet Explorer"===navigator.appName,q=p?parseFloat(o.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,j=p&&10>q,k=!1,l=["-moz-","-webkit-","-o-","-ms-"],m='.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;top:none;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}',j&&7>=q?(a.fn.iris=a.noop,void(a.support.iris=!1)):(a.support.factoryBootstrap449_iris=!0,a.fn.factoryBootstrap449_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap449_raninbowGradient=function(b,c){var d,e,f,g;for(b=b||"top",d=a.extend({},{s:100,l:50},c),e="hsl(%h%,"+d.s+"%,"+d.l+"%)",f=0,g=[];360>=f;)g.push(e.replace("%h%",f)),f+=30;return this.each(function(){a(this).factoryBootstrap449_gradient(b,g)})},n={options:{color:!1,mode:"hsl",controls:{horiz:"s",vert:"l",strip:"h"},hide:!0,border:!0,target:!1,width:200,palettes:!1},_color:"",_palettes:["#000","#fff","#d33","#d93","#ee2","#81d742","#1e73be","#8224e3"],_inited:!1,_defaultHSLControls:{horiz:"s",vert:"l",strip:"h"},_defaultHSVControls:{horiz:"h",vert:"v",strip:"s"},_scale:{h:360,s:100,l:100,v:100},_create:function(){var b=this,d=b.element,e=b.options.color||d.val();k===!1&&c(),d.is("input")?(b.options.target?b.picker=a(i).appendTo(b.options.target):b.picker=a(i).insertAfter(d),b._addInputListeners(d)):(d.append(i),b.picker=d.find(".iris-picker")),p?9===q?b.picker.addClass("iris-ie-9"):8>=q&&b.picker.addClass("iris-ie-lt9"):o.indexOf("compatible")<0&&o.indexOf("khtml")<0&&o.match(/mozilla/)&&b.picker.addClass("iris-mozilla"),b.options.palettes&&b._addPalettes(),b._color=new Color(e).setHSpace(b.options.mode),b.options.color=b._color.toString(),b.controls={square:b.picker.find(".iris-square"),squareDrag:b.picker.find(".iris-square-value"),horiz:b.picker.find(".iris-square-horiz"),vert:b.picker.find(".iris-square-vert"),strip:b.picker.find(".iris-strip"),stripSlider:b.picker.find(".iris-strip .iris-slider-offset")},"hsv"===b.options.mode&&b._has("l",b.options.controls)?b.options.controls=b._defaultHSVControls:"hsl"===b.options.mode&&b._has("v",b.options.controls)&&(b.options.controls=b._defaultHSLControls),b.hue=b._color.h(),b.options.hide&&b.picker.hide(),b.options.border&&b.picker.addClass("iris-border"),b._initControls(),b.active="external",b._dimensions(),b._change()},_has:function(b,c){var d=!1;return a.each(c,function(a,c){return b===c?(d=!0,!1):void 0}),d},_addPalettes:function(){var b=a('<div class="iris-palette-container" />'),c=a('<a class="iris-palette" tabindex="0" />'),d=a.isArray(this.options.palettes)?this.options.palettes:this._palettes;this.picker.find(".iris-palette-container").length&&(b=this.picker.find(".iris-palette-container").detach().html("")),a.each(d,function(a,d){c.clone().data("color",d).css("backgroundColor",d).appendTo(b).height(10).width(10)}),this.picker.append(b)},_paint:function(){var a=this;a._paintDimension("top","strip"),a._paintDimension("top","vert"),a._paintDimension("left","horiz")},_paintDimension:function(a,b){var c,d=this,e=d._color,f=d.options.mode,g=d._getHSpaceColor(),h=d.controls[b],i=d.options.controls;if(b!==d.active&&("square"!==d.active||"strip"===b))switch(i[b]){case"h":if("hsv"===f){switch(g=e.clone(),b){case"horiz":g[i.vert](100);break;case"vert":g[i.horiz](100);break;case"strip":g.setHSpace("hsl")}c=g.toHsl()}else c="strip"===b?{s:g.s,l:g.l}:{s:100,l:g.l};h.factoryBootstrap449_raninbowGradient(a,c);break;case"s":"hsv"===f?"vert"===b?c=[e.clone().a(0).s(0).toCSS("rgba"),e.clone().a(1).s(0).toCSS("rgba")]:"strip"===b?c=[e.clone().s(100).toCSS("hsl"),e.clone().s(0).toCSS("hsl")]:"horiz"===b&&(c=["#fff","hsl("+g.h+",100%,50%)"]):c="vert"===b&&"h"===d.options.controls.horiz?["hsla(0, 0%, "+g.l+"%, 0)","hsla(0, 0%, "+g.l+"%, 1)"]:["hsl("+g.h+",0%,50%)","hsl("+g.h+",100%,50%)"],h.factoryBootstrap449_gradient(a,c);break;case"l":c="strip"===b?["hsl("+g.h+",100%,100%)","hsl("+g.h+", "+g.s+"%,50%)","hsl("+g.h+",100%,0%)"]:["#fff","rgba(255,255,255,0) 50%","rgba(0,0,0,0) 50%","rgba(0,0,0,1)"],h.factoryBootstrap449_gradient(a,c);break;case"v":c="strip"===b?[e.clone().v(100).toCSS(),e.clone().v(0).toCSS()]:["rgba(0,0,0,0)","#000"],h.factoryBootstrap449_gradient(a,c)}},_getHSpaceColor:function(){return"hsv"===this.options.mode?this._color.toHsv():this._color.toHsl()},_dimensions:function(b){var c,d,e,f,g=this,h=g.options,i=g.controls,j=i.square,k=g.picker.find(".iris-strip"),l="77.5%",m="12%",n=20,o=h.border?h.width-n:h.width,p=a.isArray(h.palettes)?h.palettes.length:g._palettes.length;return b&&(j.css("width",""),k.css("width",""),g.picker.css({width:"",height:""})),l=o*(parseFloat(l)/100),m=o*(parseFloat(m)/100),c=h.border?l+n:l,j.width(l).height(l),k.height(l).width(m),g.picker.css({width:h.width,height:c}),h.palettes?(d=2*l/100,f=l-(p-1)*d,e=f/p,g.picker.find(".iris-palette").each(function(b){var c=0===b?0:d;a(this).css({width:e,height:e,marginLeft:c})}),g.picker.css("paddingBottom",e+d),void k.height(e+d+l)):g.picker.css("paddingBottom","")},_addInputListeners:function(a){var b=this,c=100,d=function(c){var d=new Color(a.val()),e=a.val().replace(/^#/,"");a.removeClass("iris-error"),d.error?""!==e&&a.addClass("iris-error"):d.toString()!==b._color.toString()&&("keyup"===c.type&&e.match(/^[0-9a-fA-F]{3}$/)||b._setOption("color",d.toString()))};a.on("change",d).on("keyup",b._debounce(d,c)),b.options.hide&&a.one("focus",function(){b.show()})},_initControls:function(){var b=this,c=b.controls,d=c.square,e=b.options.controls,f=b._scale[e.strip];c.stripSlider.slider({orientation:"vertical",max:f,slide:function(a,c){b.active="strip","h"===e.strip&&(c.value=f-c.value),b._color[e.strip](c.value),b._change.apply(b,arguments)}}),c.squareDrag.draggable({containment:"parent",zIndex:1e3,cursor:"move",drag:function(a,c){b._squareDrag(a,c)},start:function(){d.addClass("iris-dragging"),a(this).addClass("ui-state-focus")},stop:function(){d.removeClass("iris-dragging"),a(this).removeClass("ui-state-focus")}}).on("mousedown mouseup",function(c){var d="ui-state-focus";c.preventDefault(),"mousedown"===c.type?(b.picker.find("."+d).removeClass(d).blur(),a(this).addClass(d).focus()):a(this).removeClass(d)}).on("keydown",function(a){var d=c.square,e=c.squareDrag,f=e.position(),g=b.options.width/100;switch(a.altKey&&(g*=10),a.keyCode){case 37:f.left-=g;break;case 38:f.top-=g;break;case 39:f.left+=g;break;case 40:f.top+=g;break;default:return!0}f.left=Math.max(0,Math.min(f.left,d.width())),f.top=Math.max(0,Math.min(f.top,d.height())),e.css(f),b._squareDrag(a,{position:f}),a.preventDefault()}),d.mousedown(function(c){var d,e;1===c.which&&a(c.target).is("div")&&(d=b.controls.square.offset(),e={top:c.pageY-d.top,left:c.pageX-d.left},c.preventDefault(),b._squareDrag(c,{position:e}),c.target=b.controls.squareDrag.get(0),b.controls.squareDrag.css(e).trigger(c))}),b.options.palettes&&b._paletteListeners()},_paletteListeners:function(){var b=this;b.picker.find(".iris-palette-container").on("click.palette",".iris-palette",function(){b._color.fromCSS(a(this).data("color")),b.active="external",b._change()}).on("keydown.palette",".iris-palette",function(b){return 13!==b.keyCode&&32!==b.keyCode?!0:(b.stopPropagation(),void a(this).click())})},_squareDrag:function(a,b){var c=this,d=c.options.controls,e=c._squareDimensions(),f=Math.round((e.h-b.position.top)/e.h*c._scale[d.vert]),g=c._scale[d.horiz]-Math.round((e.w-b.position.left)/e.w*c._scale[d.horiz]);c._color[d.horiz](g)[d.vert](f),c.active="square",c._change.apply(c,arguments)},_setOption:function(b,c){var d,e,f,g=this,h=g.options[b],i=!1;switch(g.options[b]=c,b){case"color":c=""+c,d=c.replace(/^#/,""),e=new Color(c).setHSpace(g.options.mode),e.error?g.options[b]=h:(g._color=e,g.options.color=g.options[b]=g._color.toString(),g.active="external",g._change());break;case"palettes":i=!0,c?g._addPalettes():g.picker.find(".iris-palette-container").remove(),h||g._paletteListeners();break;case"width":i=!0;break;case"border":i=!0,f=c?"addClass":"removeClass",g.picker[f]("iris-border");break;case"mode":case"controls":if(h===c)return;return f=g.element,h=g.options,h.hide=!g.picker.is(":visible"),g.destroy(),g.picker.remove(),a(g.element).iris(h)}i&&g._dimensions(!0)},_squareDimensions:function(a){var c,d,e=this.controls.square;return a!==b&&e.data("dimensions")?e.data("dimensions"):(d=this.controls.squareDrag,c={w:e.width(),h:e.height()},e.data("dimensions",c),c)},_isNonHueControl:function(a,b){return"square"===a&&"h"===this.options.controls.strip?!0:"external"===b||"h"===b&&"strip"===a?!1:!0},_change:function(){var b=this,c=b.controls,d=b._getHSpaceColor(),e=["square","strip"],f=b.options.controls,g=f[b.active]||"external",h=b.hue;"strip"===b.active?e=[]:"external"!==b.active&&e.pop(),a.each(e,function(a,e){var g,h,i;if(e!==b.active)switch(e){case"strip":g="h"===f.strip?b._scale[f.strip]-d[f.strip]:d[f.strip],c.stripSlider.slider("value",g);break;case"square":h=b._squareDimensions(),i={left:d[f.horiz]/b._scale[f.horiz]*h.w,top:h.h-d[f.vert]/b._scale[f.vert]*h.h},b.controls.squareDrag.css(i)}}),d.h!==h&&b._isNonHueControl(b.active,g)&&b._color.h(h),b.hue=b._color.h(),b.options.color=b._color.toString(),b._inited&&b._trigger("change",{type:b.active},{color:b._color}),b.element.is(":input")&&!b._color.error&&(b.element.removeClass("iris-error"),b.element.val()!==b._color.toString()&&b.element.val(b._color.toString())),b._paint(),b._inited=!0,b.active=!1},_debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},show:function(){this.picker.show()},hide:function(){this.picker.hide()},toggle:function(){this.picker.toggle()},color:function(a){return a===!0?this._color.clone():a===b?this._color.toString():void this.option("color",a)}},a.widget("a8c.factoryBootstrap449_iris",n),void a('<style id="iris-css">'+m+"</style>").appendTo("head"))}(jQuery);
|
1 |
/*!
|
2 |
+
* Bootstrap generator - v1.0.1, 2021-11-19
|
3 |
* Webcraftic factory build
|
4 |
*
|
5 |
* Copyright 2018, Alex Kovalev <alex.kovalevv@gmail.com>, Webcraftic <wordpress.webraftic@gmail.com>
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a,b){function c(){var b,c;j?k="filter":(b=a('<div id="iris-gradtest" />'),c="linear-gradient(top,#fff,#000)",a.each(l,function(a,d){return b.css("backgroundImage",d+c),b.css("backgroundImage").match("gradient")?(k=a,!1):void 0}),k===!1&&(b.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),b.css("backgroundImage").match("gradient")&&(k="webkit")),b.remove())}function d(b,c){return b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),"webkit"===k?f(b,c):l[k]+"linear-gradient("+b+", "+c.join(", ")+")"}function e(b,c){var d,e,f,h,i,j,k,l,m;b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),d="top"===b?0:1,e=a(this),f=c.length-1,h="filter",i=1===d?"left":"top",j=1===d?"right":"bottom",k=1===d?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+k+":100%;"+i+":%start%;"+j+":%end%;"+h+':%filter%;" data-color:"%color%"></div>',m="","static"===e.css("position")&&e.css({position:"relative"}),c=g(c),a.each(c,function(a,b){var e,g,h;return a===f?!1:(e=c[a+1],void(b.stop!==e.stop&&(g=100-parseFloat(e.stop)+"%",b.octoHex=new Color(b.color).toIEOctoHex(),e.octoHex=new Color(e.color).toIEOctoHex(),h="progid:DXImageTransform.Microsoft.Gradient(GradientType="+d+", StartColorStr='"+b.octoHex+"', EndColorStr='"+e.octoHex+"')",m+=l.replace("%start%",b.stop).replace("%end%",g).replace("%filter%",h))))}),e.find(".iris-ie-gradient-shim").remove(),a(m).prependTo(e)}function f(b,c){var d=[];return b="top"===b?"0% 0%,0% 100%,":"0% 100%,100% 100%,",c=g(c),a.each(c,function(a,b){d.push("color-stop("+parseFloat(b.stop)/100+", "+b.color+")")}),"-webkit-gradient(linear,"+b+d.join(",")+")"}function g(b){var c=[],d=[],e=[],f=b.length-1;return a.each(b,function(a,b){var e=b,f=!1,g=b.match(/1?[0-9]{1,2}%$/);g&&(e=b.replace(/\s?1?[0-9]{1,2}%$/,""),f=g.shift()),c.push(e),d.push(f)}),d[0]===!1&&(d[0]="0%"),d[f]===!1&&(d[f]="100%"),d=h(d),a.each(d,function(a){e[a]={color:c[a],stop:d[a]}}),e}function h(b){var c,d,e,f,g=0,i=b.length-1,j=0,k=!1;if(b.length<=2||a.inArray(!1,b)<0)return b;for(;j<b.length-1;)k||b[j]!==!1?k&&b[j]!==!1&&(i=j,j=b.length):(g=j-1,k=!0),j++;for(d=i-g,f=parseInt(b[g].replace("%"),10),c=(parseFloat(b[i].replace("%"))-f)/d,j=g+1,e=1;i>j;)b[j]=f+e*c+"%",e++,j++;return h(b)}var i,j,k,l,m,n,o,p,q;return i='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',o=navigator.userAgent.toLowerCase(),p="Microsoft Internet Explorer"===navigator.appName,q=p?parseFloat(o.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,j=p&&10>q,k=!1,l=["-moz-","-webkit-","-o-","-ms-"],m='.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;top:none;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}',j&&7>=q?(a.fn.iris=a.noop,void(a.support.iris=!1)):(a.support.factoryBootstrap453_iris=!0,a.fn.factoryBootstrap453_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap453_raninbowGradient=function(b,c){var d,e,f,g;for(b=b||"top",d=a.extend({},{s:100,l:50},c),e="hsl(%h%,"+d.s+"%,"+d.l+"%)",f=0,g=[];360>=f;)g.push(e.replace("%h%",f)),f+=30;return this.each(function(){a(this).factoryBootstrap453_gradient(b,g)})},n={options:{color:!1,mode:"hsl",controls:{horiz:"s",vert:"l",strip:"h"},hide:!0,border:!0,target:!1,width:200,palettes:!1},_color:"",_palettes:["#000","#fff","#d33","#d93","#ee2","#81d742","#1e73be","#8224e3"],_inited:!1,_defaultHSLControls:{horiz:"s",vert:"l",strip:"h"},_defaultHSVControls:{horiz:"h",vert:"v",strip:"s"},_scale:{h:360,s:100,l:100,v:100},_create:function(){var b=this,d=b.element,e=b.options.color||d.val();k===!1&&c(),d.is("input")?(b.options.target?b.picker=a(i).appendTo(b.options.target):b.picker=a(i).insertAfter(d),b._addInputListeners(d)):(d.append(i),b.picker=d.find(".iris-picker")),p?9===q?b.picker.addClass("iris-ie-9"):8>=q&&b.picker.addClass("iris-ie-lt9"):o.indexOf("compatible")<0&&o.indexOf("khtml")<0&&o.match(/mozilla/)&&b.picker.addClass("iris-mozilla"),b.options.palettes&&b._addPalettes(),b._color=new Color(e).setHSpace(b.options.mode),b.options.color=b._color.toString(),b.controls={square:b.picker.find(".iris-square"),squareDrag:b.picker.find(".iris-square-value"),horiz:b.picker.find(".iris-square-horiz"),vert:b.picker.find(".iris-square-vert"),strip:b.picker.find(".iris-strip"),stripSlider:b.picker.find(".iris-strip .iris-slider-offset")},"hsv"===b.options.mode&&b._has("l",b.options.controls)?b.options.controls=b._defaultHSVControls:"hsl"===b.options.mode&&b._has("v",b.options.controls)&&(b.options.controls=b._defaultHSLControls),b.hue=b._color.h(),b.options.hide&&b.picker.hide(),b.options.border&&b.picker.addClass("iris-border"),b._initControls(),b.active="external",b._dimensions(),b._change()},_has:function(b,c){var d=!1;return a.each(c,function(a,c){return b===c?(d=!0,!1):void 0}),d},_addPalettes:function(){var b=a('<div class="iris-palette-container" />'),c=a('<a class="iris-palette" tabindex="0" />'),d=a.isArray(this.options.palettes)?this.options.palettes:this._palettes;this.picker.find(".iris-palette-container").length&&(b=this.picker.find(".iris-palette-container").detach().html("")),a.each(d,function(a,d){c.clone().data("color",d).css("backgroundColor",d).appendTo(b).height(10).width(10)}),this.picker.append(b)},_paint:function(){var a=this;a._paintDimension("top","strip"),a._paintDimension("top","vert"),a._paintDimension("left","horiz")},_paintDimension:function(a,b){var c,d=this,e=d._color,f=d.options.mode,g=d._getHSpaceColor(),h=d.controls[b],i=d.options.controls;if(b!==d.active&&("square"!==d.active||"strip"===b))switch(i[b]){case"h":if("hsv"===f){switch(g=e.clone(),b){case"horiz":g[i.vert](100);break;case"vert":g[i.horiz](100);break;case"strip":g.setHSpace("hsl")}c=g.toHsl()}else c="strip"===b?{s:g.s,l:g.l}:{s:100,l:g.l};h.factoryBootstrap453_raninbowGradient(a,c);break;case"s":"hsv"===f?"vert"===b?c=[e.clone().a(0).s(0).toCSS("rgba"),e.clone().a(1).s(0).toCSS("rgba")]:"strip"===b?c=[e.clone().s(100).toCSS("hsl"),e.clone().s(0).toCSS("hsl")]:"horiz"===b&&(c=["#fff","hsl("+g.h+",100%,50%)"]):c="vert"===b&&"h"===d.options.controls.horiz?["hsla(0, 0%, "+g.l+"%, 0)","hsla(0, 0%, "+g.l+"%, 1)"]:["hsl("+g.h+",0%,50%)","hsl("+g.h+",100%,50%)"],h.factoryBootstrap453_gradient(a,c);break;case"l":c="strip"===b?["hsl("+g.h+",100%,100%)","hsl("+g.h+", "+g.s+"%,50%)","hsl("+g.h+",100%,0%)"]:["#fff","rgba(255,255,255,0) 50%","rgba(0,0,0,0) 50%","rgba(0,0,0,1)"],h.factoryBootstrap453_gradient(a,c);break;case"v":c="strip"===b?[e.clone().v(100).toCSS(),e.clone().v(0).toCSS()]:["rgba(0,0,0,0)","#000"],h.factoryBootstrap453_gradient(a,c)}},_getHSpaceColor:function(){return"hsv"===this.options.mode?this._color.toHsv():this._color.toHsl()},_dimensions:function(b){var c,d,e,f,g=this,h=g.options,i=g.controls,j=i.square,k=g.picker.find(".iris-strip"),l="77.5%",m="12%",n=20,o=h.border?h.width-n:h.width,p=a.isArray(h.palettes)?h.palettes.length:g._palettes.length;return b&&(j.css("width",""),k.css("width",""),g.picker.css({width:"",height:""})),l=o*(parseFloat(l)/100),m=o*(parseFloat(m)/100),c=h.border?l+n:l,j.width(l).height(l),k.height(l).width(m),g.picker.css({width:h.width,height:c}),h.palettes?(d=2*l/100,f=l-(p-1)*d,e=f/p,g.picker.find(".iris-palette").each(function(b){var c=0===b?0:d;a(this).css({width:e,height:e,marginLeft:c})}),g.picker.css("paddingBottom",e+d),void k.height(e+d+l)):g.picker.css("paddingBottom","")},_addInputListeners:function(a){var b=this,c=100,d=function(c){var d=new Color(a.val()),e=a.val().replace(/^#/,"");a.removeClass("iris-error"),d.error?""!==e&&a.addClass("iris-error"):d.toString()!==b._color.toString()&&("keyup"===c.type&&e.match(/^[0-9a-fA-F]{3}$/)||b._setOption("color",d.toString()))};a.on("change",d).on("keyup",b._debounce(d,c)),b.options.hide&&a.one("focus",function(){b.show()})},_initControls:function(){var b=this,c=b.controls,d=c.square,e=b.options.controls,f=b._scale[e.strip];c.stripSlider.slider({orientation:"vertical",max:f,slide:function(a,c){b.active="strip","h"===e.strip&&(c.value=f-c.value),b._color[e.strip](c.value),b._change.apply(b,arguments)}}),c.squareDrag.draggable({containment:"parent",zIndex:1e3,cursor:"move",drag:function(a,c){b._squareDrag(a,c)},start:function(){d.addClass("iris-dragging"),a(this).addClass("ui-state-focus")},stop:function(){d.removeClass("iris-dragging"),a(this).removeClass("ui-state-focus")}}).on("mousedown mouseup",function(c){var d="ui-state-focus";c.preventDefault(),"mousedown"===c.type?(b.picker.find("."+d).removeClass(d).blur(),a(this).addClass(d).focus()):a(this).removeClass(d)}).on("keydown",function(a){var d=c.square,e=c.squareDrag,f=e.position(),g=b.options.width/100;switch(a.altKey&&(g*=10),a.keyCode){case 37:f.left-=g;break;case 38:f.top-=g;break;case 39:f.left+=g;break;case 40:f.top+=g;break;default:return!0}f.left=Math.max(0,Math.min(f.left,d.width())),f.top=Math.max(0,Math.min(f.top,d.height())),e.css(f),b._squareDrag(a,{position:f}),a.preventDefault()}),d.mousedown(function(c){var d,e;1===c.which&&a(c.target).is("div")&&(d=b.controls.square.offset(),e={top:c.pageY-d.top,left:c.pageX-d.left},c.preventDefault(),b._squareDrag(c,{position:e}),c.target=b.controls.squareDrag.get(0),b.controls.squareDrag.css(e).trigger(c))}),b.options.palettes&&b._paletteListeners()},_paletteListeners:function(){var b=this;b.picker.find(".iris-palette-container").on("click.palette",".iris-palette",function(){b._color.fromCSS(a(this).data("color")),b.active="external",b._change()}).on("keydown.palette",".iris-palette",function(b){return 13!==b.keyCode&&32!==b.keyCode?!0:(b.stopPropagation(),void a(this).click())})},_squareDrag:function(a,b){var c=this,d=c.options.controls,e=c._squareDimensions(),f=Math.round((e.h-b.position.top)/e.h*c._scale[d.vert]),g=c._scale[d.horiz]-Math.round((e.w-b.position.left)/e.w*c._scale[d.horiz]);c._color[d.horiz](g)[d.vert](f),c.active="square",c._change.apply(c,arguments)},_setOption:function(b,c){var d,e,f,g=this,h=g.options[b],i=!1;switch(g.options[b]=c,b){case"color":c=""+c,d=c.replace(/^#/,""),e=new Color(c).setHSpace(g.options.mode),e.error?g.options[b]=h:(g._color=e,g.options.color=g.options[b]=g._color.toString(),g.active="external",g._change());break;case"palettes":i=!0,c?g._addPalettes():g.picker.find(".iris-palette-container").remove(),h||g._paletteListeners();break;case"width":i=!0;break;case"border":i=!0,f=c?"addClass":"removeClass",g.picker[f]("iris-border");break;case"mode":case"controls":if(h===c)return;return f=g.element,h=g.options,h.hide=!g.picker.is(":visible"),g.destroy(),g.picker.remove(),a(g.element).iris(h)}i&&g._dimensions(!0)},_squareDimensions:function(a){var c,d,e=this.controls.square;return a!==b&&e.data("dimensions")?e.data("dimensions"):(d=this.controls.squareDrag,c={w:e.width(),h:e.height()},e.data("dimensions",c),c)},_isNonHueControl:function(a,b){return"square"===a&&"h"===this.options.controls.strip?!0:"external"===b||"h"===b&&"strip"===a?!1:!0},_change:function(){var b=this,c=b.controls,d=b._getHSpaceColor(),e=["square","strip"],f=b.options.controls,g=f[b.active]||"external",h=b.hue;"strip"===b.active?e=[]:"external"!==b.active&&e.pop(),a.each(e,function(a,e){var g,h,i;if(e!==b.active)switch(e){case"strip":g="h"===f.strip?b._scale[f.strip]-d[f.strip]:d[f.strip],c.stripSlider.slider("value",g);break;case"square":h=b._squareDimensions(),i={left:d[f.horiz]/b._scale[f.horiz]*h.w,top:h.h-d[f.vert]/b._scale[f.vert]*h.h},b.controls.squareDrag.css(i)}}),d.h!==h&&b._isNonHueControl(b.active,g)&&b._color.h(h),b.hue=b._color.h(),b.options.color=b._color.toString(),b._inited&&b._trigger("change",{type:b.active},{color:b._color}),b.element.is(":input")&&!b._color.error&&(b.element.removeClass("iris-error"),b.element.val()!==b._color.toString()&&b.element.val(b._color.toString())),b._paint(),b._inited=!0,b.active=!1},_debounce:function(a,b,c){var d,e;return function(){var f,g,h=this,i=arguments;return f=function(){d=null,c||(e=a.apply(h,i))},g=c&&!d,clearTimeout(d),d=setTimeout(f,b),g&&(e=a.apply(h,i)),e}},show:function(){this.picker.show()},hide:function(){this.picker.hide()},toggle:function(){this.picker.toggle()},color:function(a){return a===!0?this._color.clone():a===b?this._color.toString():void this.option("color",a)}},a.widget("a8c.factoryBootstrap453_iris",n),void a('<style id="iris-css">'+m+"</style>").appendTo("head"))}(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_453_LOADED') ) {
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
+
define('FACTORY_BOOTSTRAP_453_VERSION', '4.5.3');
|
27 |
+
define('FACTORY_BOOTSTRAP_453_LOADED', true);
|
28 |
|
29 |
if( !defined('FACTORY_FLAT_ADMIN') ) {
|
30 |
define('FACTORY_FLAT_ADMIN', true);
|
31 |
}
|
32 |
|
33 |
+
define('FACTORY_BOOTSTRAP_453_DIR', dirname(__FILE__));
|
34 |
+
define('FACTORY_BOOTSTRAP_453_URL', plugins_url(null, __FILE__));
|
35 |
|
36 |
+
require_once(FACTORY_BOOTSTRAP_453_DIR . '/includes/functions.php');
|
37 |
|
38 |
/**
|
39 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
40 |
*/
|
41 |
+
add_action('wbcr_factory_bootstrap_453_plugin_created', function ($plugin) {
|
42 |
+
$manager = new Wbcr_FactoryBootstrap453_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_FactoryBootstrap449_Manager {
|
|
51 |
*
|
52 |
* @since 1.0.0
|
53 |
*/
|
54 |
-
public function __construct(
|
55 |
{
|
56 |
$this->plugin = $plugin;
|
57 |
|
@@ -115,8 +115,8 @@ class Wbcr_FactoryBootstrap449_Manager {
|
|
115 |
public function loadAssets($hook)
|
116 |
{
|
117 |
|
118 |
-
do_action('
|
119 |
-
do_action('
|
120 |
|
121 |
$dependencies = [];
|
122 |
if( !empty($this->scripts) ) {
|
@@ -161,8 +161,8 @@ class Wbcr_FactoryBootstrap449_Manager {
|
|
161 |
$cache_enable = apply_filters('wbcr/factory/bootstrap/cache_enable', true);
|
162 |
|
163 |
$cache_id = md5(implode(',', $this->scripts) . $type . $this->plugin->getPluginVersion());
|
164 |
-
$cache_dir_path =
|
165 |
-
$cache_dir_url =
|
166 |
|
167 |
$cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
|
168 |
$cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
|
@@ -189,7 +189,7 @@ class Wbcr_FactoryBootstrap449_Manager {
|
|
189 |
foreach($scripts as $script_to_load) {
|
190 |
$script_to_load = sanitize_text_field($script_to_load);
|
191 |
if( $cache_enable && $cache_dir_exists ) {
|
192 |
-
$fname =
|
193 |
if( file_exists($fname) ) {
|
194 |
$f = @fopen($fname, 'r');
|
195 |
$concat_files[] = @fread($f, filesize($fname));
|
@@ -197,9 +197,9 @@ class Wbcr_FactoryBootstrap449_Manager {
|
|
197 |
}
|
198 |
} else {
|
199 |
if( $type == 'js' ) {
|
200 |
-
wp_enqueue_script(md5($script_to_load),
|
201 |
} else {
|
202 |
-
wp_enqueue_style(md5($script_to_load),
|
203 |
}
|
204 |
$is_first = false;
|
205 |
}
|
20 |
*
|
21 |
* @since 3.2.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryBootstrap453_Manager {
|
24 |
|
25 |
/**
|
26 |
* A plugin for which the manager was created.
|
27 |
*
|
28 |
* @since 3.2.0
|
29 |
+
* @var Wbcr_Factory452_Plugin
|
30 |
*/
|
31 |
public $plugin;
|
32 |
|
51 |
*
|
52 |
* @since 1.0.0
|
53 |
*/
|
54 |
+
public function __construct(Wbcr_Factory452_Plugin $plugin)
|
55 |
{
|
56 |
$this->plugin = $plugin;
|
57 |
|
115 |
public function loadAssets($hook)
|
116 |
{
|
117 |
|
118 |
+
do_action('wbcr_factory_452_bootstrap_enqueue_scripts', $hook);
|
119 |
+
do_action('wbcr_factory_452_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook);
|
120 |
|
121 |
$dependencies = [];
|
122 |
if( !empty($this->scripts) ) {
|
161 |
$cache_enable = apply_filters('wbcr/factory/bootstrap/cache_enable', true);
|
162 |
|
163 |
$cache_id = md5(implode(',', $this->scripts) . $type . $this->plugin->getPluginVersion());
|
164 |
+
$cache_dir_path = FACTORY_BOOTSTRAP_453_DIR . '/assets/cache/';
|
165 |
+
$cache_dir_url = FACTORY_BOOTSTRAP_453_URL . '/assets/cache/';
|
166 |
|
167 |
$cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
|
168 |
$cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
|
189 |
foreach($scripts as $script_to_load) {
|
190 |
$script_to_load = sanitize_text_field($script_to_load);
|
191 |
if( $cache_enable && $cache_dir_exists ) {
|
192 |
+
$fname = FACTORY_BOOTSTRAP_453_DIR . "/assets/$type-min/$script_to_load.min." . $type;
|
193 |
if( file_exists($fname) ) {
|
194 |
$f = @fopen($fname, 'r');
|
195 |
$concat_files[] = @fread($f, filesize($fname));
|
197 |
}
|
198 |
} else {
|
199 |
if( $type == 'js' ) {
|
200 |
+
wp_enqueue_script(md5($script_to_load), FACTORY_BOOTSTRAP_453_URL . "/assets/$type-min/$script_to_load.min." . $type, $is_first ? $dependencies : false, $this->plugin->getPluginVersion());
|
201 |
} else {
|
202 |
+
wp_enqueue_style(md5($script_to_load), FACTORY_BOOTSTRAP_453_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion());
|
203 |
}
|
204 |
$is_first = false;
|
205 |
}
|
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_449_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_449_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_449_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_449_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_449_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_449_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_452_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_452'), __('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_452')]);
|
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_452')]);
|
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_452' ), 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_452')]);
|
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_452_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_452')], 403);
|
113 |
}
|
114 |
|
115 |
if( empty($component_name) ) {
|
116 |
+
wp_send_json_error(['error_message' => __('Required attribute [component_name] is empty.', 'wbcr_factory_452')]);
|
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_452_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-452-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-452-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-452-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_452.hooks.run('core/components/pre_update', [$this, data]);
|
58 |
|
59 |
self.sendRequest(data, function(response) {
|
60 |
if( !response || !response.success ) {
|
61 |
+
$.wfactory_452.hooks.run('core/components/update_error', [
|
62 |
$this,
|
63 |
data,
|
64 |
response
|
80 |
$this.removeClass('button-default').addClass('button-primary');
|
81 |
}
|
82 |
|
83 |
+
$.wfactory_452.hooks.run('core/components/installed', [
|
84 |
$this,
|
85 |
data,
|
86 |
response
|
96 |
$this.removeClass('button-primary').addClass('button-default');
|
97 |
}
|
98 |
|
99 |
+
$.wfactory_452.hooks.run('core/components/pre_activate', [
|
100 |
$this,
|
101 |
data,
|
102 |
response
|
124 |
$this.removeClass('button-default').addClass('button-primary');
|
125 |
}
|
126 |
|
127 |
+
$.wfactory_452.hooks.run('core/components/deactivated', [
|
128 |
$this,
|
129 |
data,
|
130 |
response
|
134 |
|
135 |
plugin_action = 'install';
|
136 |
|
137 |
+
$.wfactory_452.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_452.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-452-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_452.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_452.hooks.run('core/components/activated', [
|
191 |
componentButton,
|
192 |
sendData,
|
193 |
response
|
210 |
console.log(xhr.responseText);
|
211 |
console.log(thrownError);
|
212 |
|
213 |
+
$.wfactory_452.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_452 ) {
|
12 |
+
$.wfactory_452 = {};
|
13 |
}
|
14 |
|
15 |
+
$.wfactory_452.filters = $.wfactory_452.filters || {
|
16 |
|
17 |
/**
|
18 |
* A set of registered filters.
|
79 |
}
|
80 |
};
|
81 |
|
82 |
+
$.wfactory_452.hooks = $.wfactory_452.hooks || {
|
83 |
|
84 |
/**
|
85 |
* Applies filters to a given input value.
|
86 |
*/
|
87 |
run: function(filterName, args) {
|
88 |
+
$.wfactory_452.filters.run(filterName, args);
|
89 |
},
|
90 |
|
91 |
/**
|
92 |
* Registers a new filter.
|
93 |
*/
|
94 |
add: function(filterName, callback, priority) {
|
95 |
+
$.wfactory_452.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_452_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
define('FACTORY_452_LOADED', true);
|
22 |
|
23 |
+
define('FACTORY_452_VERSION', '4.5.2');
|
24 |
|
25 |
+
define('FACTORY_452_DIR', dirname(__FILE__));
|
26 |
+
define('FACTORY_452_URL', plugins_url(null, __FILE__));
|
27 |
|
28 |
+
load_plugin_textdomain('wbcr_factory_452', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
29 |
|
30 |
#comp merge
|
31 |
+
require_once(FACTORY_452_DIR . '/includes/functions.php');
|
32 |
|
33 |
+
require_once(FACTORY_452_DIR . '/includes/entities/class-factory-paths.php');
|
34 |
+
require_once(FACTORY_452_DIR . '/includes/entities/class-factory-support.php');
|
35 |
|
36 |
+
require_once(FACTORY_452_DIR . '/includes/class-factory-requests.php');
|
37 |
+
require_once(FACTORY_452_DIR . '/includes/class-factory-options.php');
|
38 |
+
require_once(FACTORY_452_DIR . '/includes/class-factory-plugin-base.php');
|
39 |
+
require_once(FACTORY_452_DIR . '/includes/class-factory-migrations.php');
|
40 |
+
require_once(FACTORY_452_DIR . '/includes/class-factory-notices.php');
|
41 |
|
42 |
// ASSETS
|
43 |
+
require_once(FACTORY_452_DIR . '/includes/assets-managment/class-factory-assets-list.php');
|
44 |
+
require_once(FACTORY_452_DIR . '/includes/assets-managment/class-factory-script-list.php');
|
45 |
+
require_once(FACTORY_452_DIR . '/includes/assets-managment/class-factory-style-list.php');
|
46 |
|
47 |
// PREMIUM
|
48 |
+
require_once(FACTORY_452_DIR . '/includes/premium/class-factory-license-interface.php');
|
49 |
+
require_once(FACTORY_452_DIR . '/includes/premium/class-factory-provider-abstract.php');
|
50 |
+
require_once(FACTORY_452_DIR . '/includes/premium/class-factory-manager.php');
|
51 |
|
52 |
// UPDATES
|
53 |
+
require_once(FACTORY_452_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php');
|
54 |
+
require_once(FACTORY_452_DIR . '/includes/updates/repositories/class-factory-wordpress.php');
|
55 |
+
require_once(FACTORY_452_DIR . '/includes/updates/repositories/class-factory-github.php');
|
56 |
+
require_once(FACTORY_452_DIR . '/includes/updates/class-factory-upgrader.php');
|
57 |
+
require_once(FACTORY_452_DIR . '/includes/updates/class-factory-premium-upgrader.php');
|
58 |
|
59 |
+
require_once(FACTORY_452_DIR . '/includes/class-factory-plugin-abstract.php');
|
60 |
|
61 |
+
require_once(FACTORY_452_DIR . '/includes/activation/class-factory-activator.php');
|
62 |
+
require_once(FACTORY_452_DIR . '/includes/activation/class-factory-update.php');
|
63 |
#endcomp
|
64 |
|
65 |
add_action('admin_enqueue_scripts', function () {
|
66 |
+
wp_enqueue_script('wfactory-452-core-general', FACTORY_452_URL . '/assets/js/core-general.js', [
|
67 |
'jquery'
|
68 |
+
], FACTORY_452_VERSION);
|
69 |
+
wp_enqueue_script('wfactory-452-core-components', FACTORY_452_URL . '/assets/js/core-components.js', [
|
70 |
'jquery',
|
71 |
+
'wfactory-452-core-general'
|
72 |
+
], FACTORY_452_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_Factory452_Activator {
|
23 |
|
24 |
/**
|
25 |
* Curent plugin.
|
26 |
*
|
27 |
+
* @var Wbcr_Factory452_Plugin
|
28 |
*/
|
29 |
public $plugin;
|
30 |
|
31 |
+
public function __construct( Wbcr_Factory452_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_Factory452_Update {
|
24 |
|
25 |
/**
|
26 |
* Current plugin
|
27 |
*
|
28 |
+
* @var Wbcr_Factory452_Plugin
|
29 |
*/
|
30 |
var $plugin;
|
31 |
|
32 |
+
public function __construct( Wbcr_Factory452_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_Factory449_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_Factory452_AssetsList {
|
23 |
|
24 |
protected $all = [];
|
25 |
public $header_place = [];
|
29 |
protected $default_place;
|
30 |
|
31 |
/**
|
32 |
+
* @var Wbcr_Factory452_Plugin
|
33 |
*/
|
34 |
protected $plugin;
|
35 |
|
36 |
/**
|
37 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
38 |
* @param bool $defaultIsFooter
|
39 |
*/
|
40 |
+
public function __construct( Wbcr_Factory452_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_Factory449_ScriptList extends Wbcr_Factory449_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_Factory452_ScriptList extends Wbcr_Factory452_AssetsList {
|
24 |
|
25 |
public $localize_data = [];
|
26 |
public $use_ajax = false;
|
149 |
* @param string $varname
|
150 |
* @param array $data
|
151 |
*
|
152 |
+
* @return Wbcr_Factory452_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_Factory452_StyleList extends Wbcr_Factory452_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_templates_105' ), $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_452' ), $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_452' ), $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_452;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory452_Plugin;
|
7 |
|
8 |
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit;
|
35 |
/**
|
36 |
* Migrations constructor.
|
37 |
*
|
38 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
39 |
*
|
40 |
* @throws Exception
|
41 |
*/
|
42 |
+
public function __construct( Wbcr_Factory452_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_452' ) . "</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_452' ) . '</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_452" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
|
166 |
|
167 |
+
$notice_text .= __( "Old plugin version (debug):", "wbcr_factory_452" ) . ' ' . $this->get_old_plugin_version() . "<br>";
|
168 |
+
$notice_text .= __( "Current plugin version:", "wbcr_factory_452" ) . ' ' . $this->get_current_plugin_version() . "<br>";
|
169 |
+
$notice_text .= __( "Need migration:", "wbcr_factory_452" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
|
170 |
+
$notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_452" ) . "</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_452' ) . '</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_452' ) );
|
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 |
|
@@ -202,8 +202,8 @@ class Notices {
|
|
202 |
$classes[] = $plugin_name . '-factory-notice-dismiss';
|
203 |
}
|
204 |
?>
|
205 |
-
<div data-name="wbcr_factory_notice_<?php echo esc_attr($data['id']) ?>" data-expires="
|
206 |
-
|
207 |
</div>
|
208 |
<?php
|
209 |
}
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_452;
|
4 |
|
5 |
+
use Wbcr_Factory452_Plugin;
|
6 |
|
7 |
// Exit if accessed directly
|
8 |
if( !defined('ABSPATH') ) {
|
27 |
class Notices {
|
28 |
|
29 |
/**
|
30 |
+
* @var Wbcr_Factory452_Plugin
|
31 |
*/
|
32 |
protected $plugin;
|
33 |
/**
|
58 |
/**
|
59 |
* Инициализируем уведомлений сразу после загрузки модуля уведомлений
|
60 |
*
|
61 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
62 |
*/
|
63 |
public function __construct($plugin)
|
64 |
{
|
86 |
public function currentScreenAction()
|
87 |
{
|
88 |
/**
|
89 |
+
* @since 2.1.2 - Добавлен, модуль factory_notices_000 был удален. Поэтому в этому хуке мы заменили префикс на factory_452
|
90 |
*/
|
91 |
$this->notices = apply_filters('wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName());
|
92 |
|
202 |
$classes[] = $plugin_name . '-factory-notice-dismiss';
|
203 |
}
|
204 |
?>
|
205 |
+
<div data-name="wbcr_factory_notice_<?php echo esc_attr($data['id']) ?>" data-expires="<?php echo esc_attr($settings['dismiss_expires']) ?>" data-nonce="<?php echo wp_create_nonce($this->plugin->getPluginName() . '_factory_dismiss_notice'); ?>" class="<?php echo esc_attr(implode(' ', $classes)) ?>">
|
206 |
+
<?php echo $data['text'] ?>
|
207 |
</div>
|
208 |
<?php
|
209 |
}
|
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_452;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
10 |
}
|
11 |
|
12 |
/**
|
13 |
+
* Трейт используется для расширения базового класса плагина Wbcr_Factory452_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_Factory449_Plugin extends Wbcr_Factory449_Base {
|
|
86 |
*
|
87 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
88 |
* @since 4.1.9
|
89 |
-
* @var WBCR\
|
90 |
*/
|
91 |
private $adverts;
|
92 |
|
@@ -95,7 +95,7 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
|
|
95 |
*
|
96 |
* @author Artem Prihodko <webtemyk@yandex.ru>
|
97 |
* @since 4.3.7
|
98 |
-
* @var WBCR\
|
99 |
*/
|
100 |
public $logger;
|
101 |
|
@@ -115,8 +115,8 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_Base {
|
|
186 |
* Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
|
187 |
* скриптов, стилей) фреймворка.
|
188 |
*
|
189 |
-
* @param
|
190 |
*/
|
191 |
-
public function setBootstap(
|
192 |
{
|
193 |
$this->bootstrap = $bootstrap;
|
194 |
}
|
@@ -196,9 +196,9 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_Base {
|
|
584 |
return null;
|
585 |
}
|
586 |
|
587 |
-
return
|
588 |
}
|
589 |
|
590 |
/**
|
@@ -594,13 +594,13 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_Base {
|
|
846 |
*/
|
847 |
protected function init_plugin_migrations()
|
848 |
{
|
849 |
-
new WBCR\
|
850 |
}
|
851 |
|
852 |
/**
|
@@ -857,7 +857,7 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_Base {
|
|
857 |
*/
|
858 |
protected function init_plugin_notices()
|
859 |
{
|
860 |
-
new Wbcr\
|
861 |
}
|
862 |
|
863 |
/**
|
@@ -873,7 +873,7 @@ abstract class Wbcr_Factory449_Plugin extends Wbcr_Factory449_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_Factory449_Plugin extends Wbcr_Factory449_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_Factory452_Plugin extends Wbcr_Factory452_Base {
|
28 |
|
29 |
/**
|
30 |
+
* Instance class Wbcr_Factory452_Request, required manages http requests
|
31 |
*
|
32 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
|
33 |
+
* @var Wbcr_Factory452_Request
|
34 |
*/
|
35 |
public $request;
|
36 |
|
37 |
/**
|
38 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
|
39 |
+
* @var \WBCR\Factory_452\Premium\Provider
|
40 |
*/
|
41 |
public $premium;
|
42 |
|
43 |
/**
|
44 |
* The Bootstrap Manager class
|
45 |
*
|
46 |
+
* @var Wbcr_FactoryBootstrap453_Manager
|
47 |
*/
|
48 |
public $bootstrap;
|
49 |
|
50 |
/**
|
51 |
* The Bootstrap Manager class
|
52 |
*
|
53 |
+
* @var Wbcr_FactoryForms449_Manager
|
54 |
*/
|
55 |
public $forms;
|
56 |
|
57 |
/**
|
58 |
+
* Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory452_Activator.
|
59 |
* Классы активации используются для упаковки набора функций, которые нужно выполнить во время
|
60 |
* активации плагина.
|
61 |
*
|
62 |
+
* @var array[] Wbcr_Factory452_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_129\Base
|
90 |
*/
|
91 |
private $adverts;
|
92 |
|
95 |
*
|
96 |
* @author Artem Prihodko <webtemyk@yandex.ru>
|
97 |
* @since 4.3.7
|
98 |
+
* @var WBCR\Factory_Logger_117\Logger
|
99 |
*/
|
100 |
public $logger;
|
101 |
|
115 |
|
116 |
parent::__construct($plugin_path, $data);
|
117 |
|
118 |
+
$this->request = new Wbcr_Factory452_Request();
|
119 |
+
//$this->route = new Wbcr_Factory452_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-452-intall-component" == $_REQUEST['action'] ) {
|
148 |
+
add_action('wp_ajax_wfactory-452-intall-component', [$this, 'ajax_handler_install_components']);
|
149 |
}
|
150 |
|
151 |
+
if( "wfactory-452-prepare-component" == $_REQUEST['action'] ) {
|
152 |
+
add_action('wp_ajax_wfactory-452-prepare-component', [$this, 'ajax_handler_prepare_component']);
|
153 |
}
|
154 |
+
if( "wfactory-452-creativemotion-install-plugin" == $_REQUEST['action'] ) {
|
155 |
+
add_action('wp_ajax_wfactory-452-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_452_DIR . '/ajax/install-addons.php';
|
169 |
+
wfactory_452_install_components($this);
|
170 |
}
|
171 |
|
172 |
public function ajax_handler_prepare_component()
|
173 |
{
|
174 |
+
require_once FACTORY_452_DIR . '/ajax/install-addons.php';
|
175 |
+
wfactory_452_prepare_component($this);
|
176 |
}
|
177 |
|
178 |
public function ajax_handler_install_creativemotion_plugins()
|
179 |
{
|
180 |
+
require_once FACTORY_452_DIR . '/ajax/install-addons.php';
|
181 |
+
wfactory_452_creativemotion_install_plugin($this);
|
182 |
}
|
183 |
// --------------------------------------------------------
|
184 |
|
186 |
* Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
|
187 |
* скриптов, стилей) фреймворка.
|
188 |
*
|
189 |
+
* @param Wbcr_FactoryBootstrap453_Manager $bootstrap
|
190 |
*/
|
191 |
+
public function setBootstap(Wbcr_FactoryBootstrap453_Manager $bootstrap)
|
192 |
{
|
193 |
$this->bootstrap = $bootstrap;
|
194 |
}
|
196 |
/**
|
197 |
* Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
|
198 |
*
|
199 |
+
* @param Wbcr_FactoryForms449_Manager $forms
|
200 |
*/
|
201 |
+
public function setForms(Wbcr_FactoryForms449_Manager $forms)
|
202 |
{
|
203 |
$this->forms = $forms;
|
204 |
}
|
246 |
*/
|
247 |
public function set_license_provider($name, $class_name)
|
248 |
{
|
249 |
+
if( !isset(WBCR\Factory_452\Premium\Manager::$providers[$name]) ) {
|
250 |
+
WBCR\Factory_452\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_452\Updates\Upgrader::$repositories[$name]) ) {
|
269 |
+
WBCR\Factory_452\Updates\Upgrader::$repositories[$name] = $class_name;
|
270 |
}
|
271 |
}
|
272 |
|
276 |
* Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
|
277 |
* рекламных объявлений.
|
278 |
*
|
279 |
+
* @return \WBCR\Factory_Adverts_129\Base
|
280 |
* @since 1.1
|
281 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
282 |
*/
|
312 |
|
313 |
public function newScriptList()
|
314 |
{
|
315 |
+
return new Wbcr_Factory452_ScriptList($this);
|
316 |
}
|
317 |
|
318 |
public function newStyleList()
|
319 |
{
|
320 |
+
return new Wbcr_Factory452_StyleList($this);
|
321 |
}
|
322 |
|
323 |
/**
|
324 |
* Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
|
325 |
* фреймворка pages. Разработчик создает собственный класс, унаследованный от
|
326 |
+
* Wbcr_FactoryPages451_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_FactoryPages451_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_FactoryPages451') ) {
|
359 |
+
throw new Exception('The factory_pages_451 module is not included.');
|
360 |
}
|
361 |
|
362 |
+
Wbcr_FactoryPages451::register($this, $class_name);
|
363 |
}
|
364 |
|
365 |
/**
|
409 |
/**
|
410 |
* @since 4.1.1 - change hook name
|
411 |
*/
|
412 |
+
if( apply_filters("wbcr/factory_452/cancel_plugin_activation_{$this->plugin_name}", false) ) {
|
413 |
return;
|
414 |
}
|
415 |
|
416 |
/**
|
417 |
+
* wbcr_factory_452_plugin_activation
|
418 |
*
|
419 |
* @since 4.1.1 - deprecated
|
420 |
*/
|
421 |
+
wbcr_factory_452_do_action_deprecated('wbcr_factory_452_plugin_activation', [
|
422 |
$this
|
423 |
], '4.1.1', "wbcr/factory/plugin_activation");
|
424 |
|
427 |
*
|
428 |
* @since 4.1.2 - deprecated
|
429 |
*/
|
430 |
+
wbcr_factory_452_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_452_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_452_plugin_activation_' . $this->plugin_name
|
452 |
*
|
453 |
* @since 4.1.1 - deprecated
|
454 |
*/
|
455 |
+
wbcr_factory_452_do_action_deprecated('wbcr_factory_452_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_452/cancel_plugin_deactivation_{$this->plugin_name}", false) ) {
|
497 |
return;
|
498 |
}
|
499 |
|
500 |
/**
|
501 |
+
* wbcr_factory_452_plugin_deactivation
|
502 |
*
|
503 |
* @since 4.1.1 - deprecated
|
504 |
*/
|
505 |
+
wbcr_factory_452_do_action_deprecated('wbcr_factory_452_plugin_deactivation', [
|
506 |
$this
|
507 |
], '4.1.1', "wbcr/factory/plugin_deactivation");
|
508 |
|
511 |
*
|
512 |
* @since 4.1.2 - deprecated
|
513 |
*/
|
514 |
+
wbcr_factory_452_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_452_plugin_deactivation_ . $this->plugin_name
|
527 |
*
|
528 |
* @since 4.1.1 - deprecated
|
529 |
*/
|
530 |
+
wbcr_factory_452_do_action_deprecated('wbcr_factory_452_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_452_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_FactoryPages451') ) {
|
578 |
+
throw new Exception('The factory_pages_451 module is not included.');
|
579 |
}
|
580 |
|
581 |
if( !is_admin() ) {
|
584 |
return null;
|
585 |
}
|
586 |
|
587 |
+
return Wbcr_FactoryPages451::getPageUrl($this, $page_id, $args);
|
588 |
}
|
589 |
|
590 |
/**
|
594 |
* @param $slug
|
595 |
* param $premium
|
596 |
*
|
597 |
+
* @return \WBCR\Factory_452\Components\Install_Button
|
598 |
*/
|
599 |
public function get_install_component_button($component_type, $slug)
|
600 |
{
|
601 |
+
require_once FACTORY_452_DIR . '/includes/components/class-install-component-button.php';
|
602 |
|
603 |
+
return new \WBCR\Factory_452\Components\Install_Button($this, $component_type, $slug);
|
604 |
}
|
605 |
|
606 |
/**
|
609 |
* @param $component_type
|
610 |
* @param $slug
|
611 |
*
|
612 |
+
* @return \WBCR\Factory_452\Components\Delete_Button
|
613 |
*/
|
614 |
public function get_delete_component_button($component_type, $slug)
|
615 |
{
|
616 |
+
require_once FACTORY_452_DIR . '/includes/components/class-delete-component-button.php';
|
617 |
|
618 |
+
return new WBCR\Factory_452\Components\Delete_Button($this, $component_type, $slug);
|
619 |
}
|
620 |
|
621 |
/**
|
798 |
/**
|
799 |
* @since 4.1.1 - deprecated
|
800 |
*/
|
801 |
+
wbcr_factory_452_do_action_deprecated('wbcr_factory_452_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_452/modules_loaded-" . $this->plugin_name);
|
802 |
|
803 |
/**
|
804 |
* @since 4.1.1 - add
|
805 |
*/
|
806 |
+
do_action('wbcr/factory_452/modules_loaded-' . $this->plugin_name);
|
807 |
}
|
808 |
|
809 |
|
830 |
});
|
831 |
|
832 |
if( is_admin() ) {
|
833 |
+
add_filter('wbcr_factory_452_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_452\Migrations($this);
|
850 |
}
|
851 |
|
852 |
/**
|
857 |
*/
|
858 |
protected function init_plugin_notices()
|
859 |
{
|
860 |
+
new Wbcr\Factory_452\Notices($this);
|
861 |
}
|
862 |
|
863 |
/**
|
873 |
protected function init_plugin_updates()
|
874 |
{
|
875 |
if( $this->has_updates ) {
|
876 |
+
new WBCR\Factory_452\Updates\Upgrader($this);
|
877 |
}
|
878 |
}
|
879 |
|
896 |
}
|
897 |
|
898 |
// Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
|
899 |
+
$this->premium = WBCR\Factory_452\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_452\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_Factory449_Base {
|
|
81 |
* https://robin-image-optimizer.webcraftic.com/premium-features.
|
82 |
*
|
83 |
* Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
|
84 |
-
* экземпляр класса \WBCR\
|
85 |
* Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
|
86 |
* можете изменить все ссылки в одном месте.
|
87 |
*
|
@@ -127,7 +127,7 @@ class Wbcr_Factory449_Base {
|
|
127 |
* к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
|
128 |
* взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
|
129 |
* индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
|
130 |
-
* WBCR\
|
131 |
*
|
132 |
* На текущий момент существует только реализация для freemius провайдера.
|
133 |
*
|
@@ -177,9 +177,9 @@ class Wbcr_Factory449_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_Factory449_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 |
|
@@ -271,8 +271,8 @@ class Wbcr_Factory449_Base {
|
|
271 |
throw new Exception('One of the required attributes has not been passed (prefix, plugin_title, plugin_name, plugin_version, plugin_text_domain).');
|
272 |
}
|
273 |
|
274 |
-
$this->support = new \WBCR\
|
275 |
-
$this->paths = new \WBCR\
|
276 |
|
277 |
// used only in the module 'updates'
|
278 |
$this->plugin_slug = !empty($this->plugin_name) ? $this->plugin_name : basename($plugin_file);
|
@@ -394,7 +394,7 @@ class Wbcr_Factory449_Base {
|
|
394 |
* Проверяет, включен ли премиум для этого плагина или нет.
|
395 |
*
|
396 |
* @return bool Возвращает true, если премиум пакет включен для этого плагина.
|
397 |
-
* См.
|
398 |
*/
|
399 |
public function has_premium()
|
400 |
{
|
@@ -404,7 +404,7 @@ class Wbcr_Factory449_Base {
|
|
404 |
/**
|
405 |
* Позволяет получить заголовок плагина.
|
406 |
*
|
407 |
-
* @return string Возвращает заголовок плагина. См.
|
408 |
*/
|
409 |
public function getPluginTitle()
|
410 |
{
|
@@ -414,7 +414,7 @@ class Wbcr_Factory449_Base {
|
|
414 |
/**
|
415 |
* Позволяет получить префикс плагина.
|
416 |
*
|
417 |
-
* @return string Возвращает префикс плагина.См.
|
418 |
*/
|
419 |
public function getPrefix()
|
420 |
{
|
@@ -424,7 +424,7 @@ class Wbcr_Factory449_Base {
|
|
424 |
/**
|
425 |
* Позволяет получить имя плагина.
|
426 |
*
|
427 |
-
* @return string Возвращает имя плагина. См.
|
428 |
*/
|
429 |
public function getPluginName()
|
430 |
{
|
@@ -434,7 +434,7 @@ class Wbcr_Factory449_Base {
|
|
434 |
/**
|
435 |
* Позволяет получить версию плагина.
|
436 |
*
|
437 |
-
* @return string Возвращает версию плагина. См.
|
438 |
*/
|
439 |
public function getPluginVersion()
|
440 |
{
|
@@ -458,7 +458,7 @@ class Wbcr_Factory449_Base {
|
|
458 |
* какие-то данные не описанные в интерфейсе этого плагина.
|
459 |
*
|
460 |
* @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
|
461 |
-
*
|
462 |
*
|
463 |
* @return null
|
464 |
*/
|
@@ -472,9 +472,9 @@ class Wbcr_Factory449_Base {
|
|
472 |
}
|
473 |
|
474 |
/**
|
475 |
-
* Предоставляет доступ к экземпляру класса \WBCR\
|
476 |
*
|
477 |
-
* @return \WBCR\
|
478 |
*/
|
479 |
public function get_support()
|
480 |
{
|
@@ -482,9 +482,9 @@ class Wbcr_Factory449_Base {
|
|
482 |
}
|
483 |
|
484 |
/**
|
485 |
-
* Предоставляет доступ к экземпляру класса \WBCR\
|
486 |
*
|
487 |
-
* @return \WBCR\
|
488 |
*/
|
489 |
public function get_paths()
|
490 |
{
|
@@ -494,7 +494,7 @@ class Wbcr_Factory449_Base {
|
|
494 |
/**
|
495 |
* Позволяет получить сырые данные плагина в виде объекта StdClass.
|
496 |
*
|
497 |
-
* @return object Возвращает объект с сырыми данными плагина. См.
|
498 |
*/
|
499 |
public function getPluginInfo()
|
500 |
{
|
5 |
}
|
6 |
|
7 |
/**
|
8 |
+
* Базовый класс для создания нового плагина. Полную реализацию класса смотрите в Wbcr_Factory452_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_Factory452_Base {
|
21 |
|
22 |
+
use WBCR\Factory_452\Options;
|
23 |
|
24 |
/**
|
25 |
* Обязательное свойство. Префикс, используется для создания пространство имен.
|
81 |
* https://robin-image-optimizer.webcraftic.com/premium-features.
|
82 |
*
|
83 |
* Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
|
84 |
+
* экземпляр класса \WBCR\Factory_452\Entities\Support, для получения информации о сайте плагина.
|
85 |
* Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
|
86 |
* можете изменить все ссылки в одном месте.
|
87 |
*
|
127 |
* к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
|
128 |
* взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
|
129 |
* индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
|
130 |
+
* WBCR\Factory_452\Premium\Provider > WBCR\Factory_Freemius_139\Premium\Provider
|
131 |
*
|
132 |
* На текущий момент существует только реализация для freemius провайдера.
|
133 |
*
|
177 |
* }
|
178 |
*/
|
179 |
protected $load_factory_modules = [
|
180 |
+
['libs/factory/bootstrap', 'factory_bootstrap_453', 'admin'],
|
181 |
+
['libs/factory/forms', 'factory_forms_449', 'admin'],
|
182 |
+
['libs/factory/pages', 'factory_pages_451', 'admin'],
|
183 |
];
|
184 |
|
185 |
/**
|
209 |
|
210 |
|
211 |
/**
|
212 |
+
* Экземпляр класса \WBCR\Factory_452\Entities\Support используется для получения информации
|
213 |
* о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
|
214 |
* ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
|
215 |
*
|
216 |
+
* @var \WBCR\Factory_452\Entities\Support
|
217 |
*/
|
218 |
protected $support;
|
219 |
|
220 |
/**
|
221 |
+
* Экземпляр класса \WBCR\Factory_452\Entities\Paths используется для получения информации о
|
222 |
* путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
|
223 |
* или его входного файла.
|
224 |
*
|
225 |
+
* @var \WBCR\Factory_452\Entities\Paths
|
226 |
*/
|
227 |
protected $paths;
|
228 |
|
271 |
throw new Exception('One of the required attributes has not been passed (prefix, plugin_title, plugin_name, plugin_version, plugin_text_domain).');
|
272 |
}
|
273 |
|
274 |
+
$this->support = new \WBCR\Factory_452\Entities\Support($this->support_details);
|
275 |
+
$this->paths = new \WBCR\Factory_452\Entities\Paths($plugin_file);
|
276 |
|
277 |
// used only in the module 'updates'
|
278 |
$this->plugin_slug = !empty($this->plugin_name) ? $this->plugin_name : basename($plugin_file);
|
394 |
* Проверяет, включен ли премиум для этого плагина или нет.
|
395 |
*
|
396 |
* @return bool Возвращает true, если премиум пакет включен для этого плагина.
|
397 |
+
* См. Wbcr_Factory452_Base::has_premium
|
398 |
*/
|
399 |
public function has_premium()
|
400 |
{
|
404 |
/**
|
405 |
* Позволяет получить заголовок плагина.
|
406 |
*
|
407 |
+
* @return string Возвращает заголовок плагина. См. Wbcr_Factory452_Base::plugin_title
|
408 |
*/
|
409 |
public function getPluginTitle()
|
410 |
{
|
414 |
/**
|
415 |
* Позволяет получить префикс плагина.
|
416 |
*
|
417 |
+
* @return string Возвращает префикс плагина.См. Wbcr_Factory452_Base::prefix
|
418 |
*/
|
419 |
public function getPrefix()
|
420 |
{
|
424 |
/**
|
425 |
* Позволяет получить имя плагина.
|
426 |
*
|
427 |
+
* @return string Возвращает имя плагина. См. Wbcr_Factory452_Base::plugin_name
|
428 |
*/
|
429 |
public function getPluginName()
|
430 |
{
|
434 |
/**
|
435 |
* Позволяет получить версию плагина.
|
436 |
*
|
437 |
+
* @return string Возвращает версию плагина. См. Wbcr_Factory452_Base::plugin_version
|
438 |
*/
|
439 |
public function getPluginVersion()
|
440 |
{
|
458 |
* какие-то данные не описанные в интерфейсе этого плагина.
|
459 |
*
|
460 |
* @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
|
461 |
+
* Wbcr_Factory452_Base::plugin_data
|
462 |
*
|
463 |
* @return null
|
464 |
*/
|
472 |
}
|
473 |
|
474 |
/**
|
475 |
+
* Предоставляет доступ к экземпляру класса \WBCR\Factory_452\Entities\Support.
|
476 |
*
|
477 |
+
* @return \WBCR\Factory_452\Entities\Support
|
478 |
*/
|
479 |
public function get_support()
|
480 |
{
|
482 |
}
|
483 |
|
484 |
/**
|
485 |
+
* Предоставляет доступ к экземпляру класса \WBCR\Factory_452\Entities\Paths.
|
486 |
*
|
487 |
+
* @return \WBCR\Factory_452\Entities\Paths
|
488 |
*/
|
489 |
public function get_paths()
|
490 |
{
|
494 |
/**
|
495 |
* Позволяет получить сырые данные плагина в виде объекта StdClass.
|
496 |
*
|
497 |
+
* @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory452_Base::plugin_data
|
498 |
*/
|
499 |
public function getPluginInfo()
|
500 |
{
|
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_Factory452_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_Factory449_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_Factory449_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_Factory452_Requirements' ) ) {
|
16 |
+
class Wbcr_Factory452_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_templates_105' ), $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_452' ), $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_452' ), $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_452' ), $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_452\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', \WBCR\
|
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_452\Components;
|
4 |
|
5 |
/**
|
6 |
* This file groups the settings for quick setup
|
22 |
|
23 |
protected $classes = [
|
24 |
'button',
|
25 |
+
'wfactory-452-process-button'
|
26 |
];
|
27 |
protected $data = [];
|
28 |
protected $base_path;
|
37 |
* @throws \Exception
|
38 |
* @since 4.3.3
|
39 |
*/
|
40 |
+
public function __construct(\Wbcr_Factory452_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', \WBCR\Factory_Templates_105\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_452'),
|
424 |
+
'install' => __('Install', 'wbcr_factory_452'),
|
425 |
+
'deactivate' => __('Deactivate', 'wbcr_factory_452'),
|
426 |
+
'delete' => __('Delete', 'wbcr_factory_452'),
|
427 |
+
'loading' => __('Please wait...', 'wbcr_factory_452'),
|
428 |
+
'preparation' => __('Preparation...', 'wbcr_factory_452'),
|
429 |
+
'read' => __('Read more', 'wbcr_factory_452')
|
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_452\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_452\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_449_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_449_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_449_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_452_deprecated_hook()
|
57 |
*
|
58 |
*/
|
59 |
+
function wbcr_factory_452_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_452_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_452_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_452_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_452_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_452_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_452\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_452\Premium;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory452_Plugin;
|
7 |
|
8 |
// Exit if accessed directly
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
24 |
public static $providers;
|
25 |
|
26 |
/**
|
27 |
+
* @var Wbcr_Factory452_Plugin
|
28 |
*/
|
29 |
protected $plugin;
|
30 |
|
36 |
/**
|
37 |
* Manager constructor.
|
38 |
*
|
39 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
40 |
* @param array $settings
|
41 |
*
|
42 |
* @throws Exception
|
43 |
*/
|
44 |
+
public function __construct( Wbcr_Factory452_Plugin $plugin, array $settings ) {
|
45 |
$this->plugin = $plugin;
|
46 |
$this->settings = $settings;
|
47 |
}
|
48 |
|
49 |
/**
|
50 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
51 |
* @param array $settings
|
52 |
*
|
53 |
+
* @return \WBCR\Factory_Freemius_139\Premium\Provider
|
54 |
* @throws Exception
|
55 |
*/
|
56 |
+
public static function instance( Wbcr_Factory452_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_139\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_452\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_452\Premium;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory452_Plugin;
|
7 |
|
8 |
// Exit if accessed directly
|
9 |
if( !defined('ABSPATH') ) {
|
21 |
abstract class Provider {
|
22 |
|
23 |
/**
|
24 |
+
* @var Wbcr_Factory452_Plugin
|
25 |
*/
|
26 |
protected $plugin;
|
27 |
|
38 |
/**
|
39 |
* Provider constructor.
|
40 |
*
|
41 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
42 |
* @param array $settings
|
43 |
*/
|
44 |
+
public function __construct(Wbcr_Factory452_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_452\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_452\Updates;
|
4 |
|
5 |
use Exception;
|
6 |
use Plugin_Installer_Skin;
|
7 |
use Plugin_Upgrader;
|
8 |
+
use Wbcr_Factory452_Plugin;
|
9 |
+
use Wbcr_FactoryPages451_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_Factory452_Plugin $plugin
|
49 |
*
|
50 |
* @throws Exception
|
51 |
* @since 4.1.1
|
52 |
*
|
53 |
*/
|
54 |
+
public function __construct(Wbcr_Factory452_Plugin $plugin)
|
55 |
{
|
56 |
parent::__construct($plugin);
|
57 |
|
242 |
/**
|
243 |
* Выводит уведомление внутри интерфейса плагина, на всех страницах плагина.
|
244 |
*
|
245 |
+
* @param Wbcr_FactoryPages451_ImpressiveThemplate $obj
|
246 |
*
|
247 |
+
* @param Wbcr_Factory452_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_452'),
|
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_452'),
|
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_452'), $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_452'), $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_452\Updates;
|
4 |
|
5 |
use Exception;
|
6 |
use stdClass;
|
7 |
+
use Wbcr_Factory452_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_139\Updates\Freemius_Repository',
|
32 |
+
* 'freemius' => '\WBCR\Factory_452\Updates\Wordpress_Repository'
|
33 |
* ]
|
34 |
*/
|
35 |
public static $repositories = [];
|
42 |
protected $type = 'default';
|
43 |
|
44 |
/**
|
45 |
+
* @var Wbcr_Factory452_Plugin
|
46 |
*/
|
47 |
protected $plugin;
|
48 |
|
88 |
/**
|
89 |
* Manager constructor.
|
90 |
*
|
91 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
92 |
* @param $args
|
93 |
* @param bool $is_premium
|
94 |
*
|
96 |
* @since 4.1.1
|
97 |
*
|
98 |
*/
|
99 |
+
public function __construct(Wbcr_Factory452_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_452\Updates\Wordpress_Repository';
|
111 |
+
self::$repositories['github'] = '\WBCR\Factory_452\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_452\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_452\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory452_Plugin;
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
57 |
/**
|
58 |
* Wordpress constructor.
|
59 |
*
|
60 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
61 |
* @param bool $is_premium
|
62 |
* @since 4.4.1
|
63 |
*/
|
64 |
+
public function __construct(Wbcr_Factory452_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_452\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory452_Plugin;
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
23 |
protected $initialized = false;
|
24 |
|
25 |
/**
|
26 |
+
* @var Wbcr_Factory452_Plugin
|
27 |
*/
|
28 |
protected $plugin;
|
29 |
|
30 |
/**
|
31 |
* Repository constructor.
|
32 |
*
|
33 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
34 |
* @param array $settings
|
35 |
*/
|
36 |
+
abstract public function __construct(Wbcr_Factory452_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_452\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory452_Plugin;
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
20 |
/**
|
21 |
* Wordpress constructor.
|
22 |
*
|
23 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
24 |
* @param array $settings
|
25 |
*/
|
26 |
+
public function __construct(Wbcr_Factory452_Plugin $plugin, array $settings = [])
|
27 |
{
|
28 |
$this->plugin = $plugin;
|
29 |
}
|
libs/factory/core/langs/{wbcr_factory_449-ru_RU.mo → wbcr_factory_452-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/core/langs/{wbcr_factory_449-ru_RU.po → wbcr_factory_452-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_446_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_446_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_449_LOADED') ) {
|
26 |
return;
|
27 |
}
|
28 |
|
29 |
+
define('FACTORY_FORMS_449_LOADED', true);
|
30 |
|
31 |
+
define('FACTORY_FORMS_449_VERSION', '4.4.9');
|
32 |
|
33 |
// absolute path and URL to the files and resources of the module.
|
34 |
+
define('FACTORY_FORMS_449_DIR', dirname(__FILE__));
|
35 |
+
define('FACTORY_FORMS_449_URL', plugins_url(null, __FILE__));
|
36 |
|
37 |
#comp merge
|
38 |
+
require_once(FACTORY_FORMS_449_DIR . '/includes/providers/value-provider.interface.php');
|
39 |
+
require_once(FACTORY_FORMS_449_DIR . '/includes/providers/meta-value-provider.class.php');
|
40 |
+
require_once(FACTORY_FORMS_449_DIR . '/includes/providers/options-value-provider.class.php');
|
41 |
|
42 |
+
require_once(FACTORY_FORMS_449_DIR . '/includes/form.class.php');
|
43 |
#endcomp
|
44 |
|
45 |
+
load_plugin_textdomain('wbcr_factory_forms_449', 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_449_register_controls' hook
|
53 |
*
|
54 |
*/
|
55 |
+
if( !function_exists('wbcr_factory_forms_449_register_default_controls') ) {
|
56 |
|
57 |
/**
|
58 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
59 |
*
|
60 |
* @throws Exception
|
61 |
*/
|
62 |
+
function wbcr_factory_forms_449_register_default_controls(Wbcr_Factory452_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_449_DIR . '/includes/html-builder.class.php');
|
70 |
+
require_once(FACTORY_FORMS_449_DIR . '/includes/form-element.class.php');
|
71 |
+
require_once(FACTORY_FORMS_449_DIR . '/includes/control.class.php');
|
72 |
+
require_once(FACTORY_FORMS_449_DIR . '/includes/complex-control.class.php');
|
73 |
+
require_once(FACTORY_FORMS_449_DIR . '/includes/holder.class.php');
|
74 |
+
require_once(FACTORY_FORMS_449_DIR . '/includes/control-holder.class.php');
|
75 |
+
require_once(FACTORY_FORMS_449_DIR . '/includes/custom-element.class.php');
|
76 |
+
require_once(FACTORY_FORMS_449_DIR . '/includes/form-layout.class.php');
|
77 |
|
78 |
// registration of controls
|
79 |
$plugin->forms->registerControls([
|
80 |
[
|
81 |
'type' => 'checkbox',
|
82 |
+
'class' => 'Wbcr_FactoryForms449_CheckboxControl',
|
83 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/checkbox.php'
|
84 |
],
|
85 |
[
|
86 |
'type' => 'list',
|
87 |
+
'class' => 'Wbcr_FactoryForms449_ListControl',
|
88 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/list.php'
|
89 |
],
|
90 |
[
|
91 |
'type' => 'dropdown',
|
92 |
+
'class' => 'Wbcr_FactoryForms449_DropdownControl',
|
93 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/dropdown.php'
|
94 |
],
|
95 |
[
|
96 |
'type' => 'dropdown-and-colors',
|
97 |
+
'class' => 'Wbcr_FactoryForms449_DropdownAndColorsControl',
|
98 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/dropdown-and-colors.php'
|
99 |
],
|
100 |
[
|
101 |
'type' => 'hidden',
|
102 |
+
'class' => 'Wbcr_FactoryForms449_HiddenControl',
|
103 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/hidden.php'
|
104 |
],
|
105 |
[
|
106 |
'type' => 'hidden',
|
107 |
+
'class' => 'Wbcr_FactoryForms449_HiddenControl',
|
108 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/hidden.php'
|
109 |
],
|
110 |
[
|
111 |
'type' => 'radio',
|
112 |
+
'class' => 'Wbcr_FactoryForms449_RadioControl',
|
113 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/radio.php'
|
114 |
],
|
115 |
[
|
116 |
'type' => 'radio-colors',
|
117 |
+
'class' => 'Wbcr_FactoryForms449_RadioColorsControl',
|
118 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/radio-colors.php'
|
119 |
],
|
120 |
[
|
121 |
'type' => 'textarea',
|
122 |
+
'class' => 'Wbcr_FactoryForms449_TextareaControl',
|
123 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/textarea.php'
|
124 |
],
|
125 |
[
|
126 |
'type' => 'textbox',
|
127 |
+
'class' => 'Wbcr_FactoryForms449_TextboxControl',
|
128 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/textbox.php'
|
129 |
],
|
130 |
[
|
131 |
'type' => 'multiple-textbox',
|
132 |
+
'class' => 'Wbcr_FactoryForms449_MultipleTextboxControl',
|
133 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/multiple-textbox.php'
|
134 |
],
|
135 |
[
|
136 |
'type' => 'datetimepicker-range',
|
137 |
+
'class' => 'Wbcr_FactoryForms449_DatepickerRangeControl',
|
138 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/datepicker-range.php'
|
139 |
],
|
140 |
[
|
141 |
'type' => 'url',
|
142 |
+
'class' => 'Wbcr_FactoryForms449_UrlControl',
|
143 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/url.php'
|
144 |
],
|
145 |
[
|
146 |
'type' => 'wp-editor',
|
147 |
+
'class' => 'Wbcr_FactoryForms449_WpEditorControl',
|
148 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/wp-editor.php'
|
149 |
],
|
150 |
[
|
151 |
'type' => 'color',
|
152 |
+
'class' => 'Wbcr_FactoryForms449_ColorControl',
|
153 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/color.php'
|
154 |
],
|
155 |
[
|
156 |
'type' => 'color-and-opacity',
|
157 |
+
'class' => 'Wbcr_FactoryForms449_ColorAndOpacityControl',
|
158 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/color-and-opacity.php'
|
159 |
],
|
160 |
[
|
161 |
'type' => 'gradient',
|
162 |
+
'class' => 'Wbcr_FactoryForms449_GradientControl',
|
163 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/gradient.php'
|
164 |
],
|
165 |
[
|
166 |
'type' => 'font',
|
167 |
+
'class' => 'Wbcr_FactoryForms449_FontControl',
|
168 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/font.php'
|
169 |
],
|
170 |
[
|
171 |
'type' => 'google-font',
|
172 |
+
'class' => 'Wbcr_FactoryForms449_GoogleFontControl',
|
173 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/google-font.php'
|
174 |
],
|
175 |
[
|
176 |
'type' => 'pattern',
|
177 |
+
'class' => 'Wbcr_FactoryForms449_PatternControl',
|
178 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/pattern.php'
|
179 |
],
|
180 |
[
|
181 |
'type' => 'integer',
|
182 |
+
'class' => 'Wbcr_FactoryForms449_IntegerControl',
|
183 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/integer.php'
|
184 |
],
|
185 |
[
|
186 |
'type' => 'control-group',
|
187 |
+
'class' => 'Wbcr_FactoryForms449_ControlGroupHolder',
|
188 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/holders/control-group.php'
|
189 |
],
|
190 |
[
|
191 |
'type' => 'paddings-editor',
|
192 |
+
'class' => 'Wbcr_FactoryForms449_PaddingsEditorControl',
|
193 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/paddings-editor.php'
|
194 |
],
|
195 |
]);
|
196 |
|
198 |
$plugin->forms->registerHolders([
|
199 |
[
|
200 |
'type' => 'tab',
|
201 |
+
'class' => 'Wbcr_FactoryForms449_TabHolder',
|
202 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/holders/tab.php'
|
203 |
],
|
204 |
[
|
205 |
'type' => 'tab-item',
|
206 |
+
'class' => 'Wbcr_FactoryForms449_TabItemHolder',
|
207 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/holders/tab-item.php'
|
208 |
],
|
209 |
[
|
210 |
'type' => 'accordion',
|
211 |
+
'class' => 'Wbcr_FactoryForms449_AccordionHolder',
|
212 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/holders/accordion.php'
|
213 |
],
|
214 |
[
|
215 |
'type' => 'accordion-item',
|
216 |
+
'class' => 'Wbcr_FactoryForms449_AccordionItemHolder',
|
217 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/holders/accordion-item.php'
|
218 |
],
|
219 |
[
|
220 |
'type' => 'control-group',
|
221 |
+
'class' => 'Wbcr_FactoryForms449_ControlGroupHolder',
|
222 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/holders/control-group.php'
|
223 |
],
|
224 |
[
|
225 |
'type' => 'control-group-item',
|
226 |
+
'class' => 'Wbcr_FactoryForms449_ControlGroupItem',
|
227 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/holders/control-group-item.php'
|
228 |
],
|
229 |
[
|
230 |
'type' => 'form-group',
|
231 |
+
'class' => 'Wbcr_FactoryForms449_FormGroupHolder',
|
232 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/holders/form-group.php'
|
233 |
],
|
234 |
[
|
235 |
'type' => 'more-link',
|
236 |
+
'class' => 'Wbcr_FactoryForms449_MoreLinkHolder',
|
237 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/holders/more-link.php'
|
238 |
],
|
239 |
[
|
240 |
'type' => 'div',
|
241 |
+
'class' => 'Wbcr_FactoryForms449_DivHolder',
|
242 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/holders/div.php'
|
243 |
],
|
244 |
[
|
245 |
'type' => 'columns',
|
246 |
+
'class' => 'Wbcr_FactoryForms449_ColumnsHolder',
|
247 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/holders/columns.php'
|
248 |
]
|
249 |
]);
|
250 |
|
252 |
$plugin->forms->registerCustomElements([
|
253 |
[
|
254 |
'type' => 'html',
|
255 |
+
'class' => 'Wbcr_FactoryForms449_Html',
|
256 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/customs/html.php',
|
257 |
],
|
258 |
[
|
259 |
'type' => 'separator',
|
260 |
+
'class' => 'Wbcr_FactoryForms449_Separator',
|
261 |
+
'include' => FACTORY_FORMS_449_DIR . '/controls/customs/separator.php',
|
262 |
],
|
263 |
]);
|
264 |
|
265 |
// registration of form layouts
|
266 |
$plugin->forms->registerFormLayout([
|
267 |
'name' => 'bootstrap-3',
|
268 |
+
'class' => 'Wbcr_FactoryForms449_Bootstrap3FormLayout',
|
269 |
+
'include' => FACTORY_FORMS_449_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
|
270 |
]);
|
271 |
}
|
272 |
|
273 |
+
add_action('wbcr_factory_forms_449_register_controls', 'wbcr_factory_forms_449_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 |
|
@@ -82,8 +82,8 @@
|
|
82 |
if( void 0 === window.__factory_checkbox_control_events_off_data ) {
|
83 |
window.__factory_checkbox_control_events_off_data = {};
|
84 |
}
|
85 |
-
window.__factory_checkbox_control_events_on_data['<?php echo $name_on_form ?>'] =
|
86 |
-
window.__factory_checkbox_control_events_off_data['<?php echo $name_on_form ?>'] =
|
87 |
</script>
|
88 |
<?php
|
89 |
}
|
@@ -130,11 +130,11 @@
|
|
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="
|
138 |
echo 'checked="checked"';
|
139 |
} ?>" />
|
140 |
</div>
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms449_CheckboxControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms449_CheckboxControl extends Wbcr_FactoryForms449_Control {
|
26 |
|
27 |
public $type = 'checkbox';
|
28 |
|
82 |
if( void 0 === window.__factory_checkbox_control_events_off_data ) {
|
83 |
window.__factory_checkbox_control_events_off_data = {};
|
84 |
}
|
85 |
+
window.__factory_checkbox_control_events_on_data['<?php echo $name_on_form ?>'] = <?php echo $events_on_string_data ?>;
|
86 |
+
window.__factory_checkbox_control_events_off_data['<?php echo $name_on_form ?>'] = <?php echo $events_off_string_data ?>;
|
87 |
</script>
|
88 |
<?php
|
89 |
}
|
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_449') ?></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_449') ?></button>
|
137 |
+
<input type="checkbox" style="display: none" id="<?php echo $name_on_form ?>" class="factory-result" name="<?php echo $name_on_form ?>" value="<?php echo $value ?>" <?php if( $value ) {
|
138 |
echo 'checked="checked"';
|
139 |
} ?>" />
|
140 |
</div>
|
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_FactoryForms449_ColorAndOpacityControl') ) {
|
24 |
}
|
25 |
|
26 |
+
class Wbcr_FactoryForms449_ColorAndOpacityControl extends Wbcr_FactoryForms449_ComplexControl {
|
27 |
|
28 |
public $type = 'color-and-opacity';
|
29 |
|
57 |
'way' => 'slider'
|
58 |
));
|
59 |
|
60 |
+
$this->color = new Wbcr_FactoryForms449_ColorControl($options['color'], $form, $provider);
|
61 |
+
$this->opacity = new Wbcr_FactoryForms449_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_FactoryForms449_ColorControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms449_ColorControl extends Wbcr_FactoryForms449_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_FactoryForms449_Html') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryForms449_Html extends Wbcr_FactoryForms449_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_FactoryForms449_Separator') ) {
|
18 |
+
class Wbcr_FactoryForms449_Separator extends Wbcr_FactoryForms449_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_FactoryForms449_DatepickerRangeControl') ) {
|
33 |
|
34 |
+
class Wbcr_FactoryForms449_DatepickerRangeControl extends Wbcr_FactoryForms449_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_FactoryForms449_TextboxControl($options['range_1'], $form, $provider);
|
69 |
+
$this->range_2 = new Wbcr_FactoryForms449_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 FactoryForms449_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 FactoryForms449_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_FactoryForms449_DropdownAndColorsControl') ) {
|
41 |
|
42 |
+
class Wbcr_FactoryForms449_DropdownAndColorsControl extends Wbcr_FactoryForms449_ComplexControl {
|
43 |
|
44 |
public $type = 'dropdown-and-colors';
|
45 |
|
69 |
'name' => $this->options['name'] . '__colors',
|
70 |
));
|
71 |
|
72 |
+
$this->dropdown = new Wbcr_FactoryForms449_DropdownControl($options['dropdown'], $form, $provider);
|
73 |
+
$this->colors = new Wbcr_FactoryForms449_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 |
|
@@ -100,7 +100,7 @@
|
|
100 |
if( void 0 === window.factory_dropdown_control_events_data ) {
|
101 |
window.factory_dropdown_control_events_data = {};
|
102 |
}
|
103 |
-
window.factory_dropdown_control_events_data['<?php echo $name_on_form ?>'] =
|
104 |
</script>
|
105 |
<?php
|
106 |
}
|
@@ -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() ?>>
|
@@ -323,7 +323,7 @@
|
|
323 |
$styles = ( $is_visible ) ? 'style="display: none;"' : '';
|
324 |
|
325 |
?>
|
326 |
-
<div style="display: none;" class="factory-hint factory-hint
|
327 |
<?php
|
328 |
}
|
329 |
}
|
@@ -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_FactoryForms449_DropdownControl' ) ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms449_DropdownControl extends Wbcr_FactoryForms449_Control {
|
27 |
|
28 |
public $type = 'dropdown';
|
29 |
|
100 |
if( void 0 === window.factory_dropdown_control_events_data ) {
|
101 |
window.factory_dropdown_control_events_data = {};
|
102 |
}
|
103 |
+
window.factory_dropdown_control_events_data['<?php echo $name_on_form ?>'] = <?php echo $events_string_data ?>;
|
104 |
</script>
|
105 |
<?php
|
106 |
}
|
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_449' ) ) ?>'
|
127 |
};
|
128 |
</script>
|
129 |
<?php
|
268 |
}
|
269 |
|
270 |
$is_empty = $this->isAjax() || empty( $items );
|
271 |
+
$empty_list = $this->getOption( 'empty', __( '- empty -', 'wbcr_factory_forms_449' ) );
|
272 |
|
273 |
?>
|
274 |
<select <?php $this->attrs() ?>>
|
323 |
$styles = ( $is_visible ) ? 'style="display: none;"' : '';
|
324 |
|
325 |
?>
|
326 |
+
<div style="display: none;" class="factory-hint factory-hint-<?php echo esc_attr( $name ) ?>"<?php echo $styles ?>><?php echo $hint ?></div>
|
327 |
<?php
|
328 |
}
|
329 |
}
|
349 |
}
|
350 |
|
351 |
$value = isset( $item['value'] ) ? $item['value'] : '';
|
352 |
+
$title = isset( $item['title'] ) ? $item['title'] : __( '- empty -', 'wbcr_factory_forms_449' );
|
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_FactoryForms449_FontControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms449_FontControl extends Wbcr_FactoryForms449_ComplexControl {
|
26 |
|
27 |
public $type = 'font';
|
28 |
|
54 |
'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
|
55 |
);
|
56 |
|
57 |
+
$this->size = new Wbcr_FactoryForms449_IntegerControl($option_font_size, $form, $provider);
|
58 |
+
$this->family = new Wbcr_FactoryForms449_DropdownControl($option_font_family, $form, $provider);
|
59 |
+
$this->color = new Wbcr_FactoryForms449_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_449_fonts', $fonts);
|
70 |
+
$fonts = apply_filters('wbcr_factory_forms_449_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_449')),
|
81 |
array(
|
82 |
'group',
|
83 |
+
__('Sans Serif:', 'wbcr_factory_forms_449'),
|
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_449'),
|
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_449'),
|
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_FactoryForms449_GoogleFontControl extends Wbcr_FactoryForms449_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_FactoryForms449_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_449'))
|
53 |
);
|
54 |
|
55 |
$fontsCommon = array(
|
56 |
'group',
|
57 |
+
__('Standard:', 'wbcr_factory_forms_449'),
|
58 |
array(
|
59 |
|
60 |
array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
|
65 |
)
|
66 |
);
|
67 |
|
68 |
+
$fontsGoogleFonts = array('group', __('Google Fonts:', 'wbcr_factory_forms_449'), 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_449');
|
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_449');
|
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_449');
|
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_FactoryForms449_GradientControl') ) {
|
29 |
+
class Wbcr_FactoryForms449_GradientControl extends Wbcr_FactoryForms449_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_449' ) ?>';
|
70 |
+
factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_449' ) ?>';
|
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_FactoryForms449_HiddenControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms449_HiddenControl extends Wbcr_FactoryForms449_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_FactoryForms449_AccordionItemHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms449_AccordionItemHolder extends Wbcr_FactoryForms449_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_FactoryForms449_AccordionHolder') ) {
|
17 |
/**
|
18 |
* Tab Control Holder
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
class Wbcr_FactoryForms449_AccordionHolder extends Wbcr_FactoryForms449_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_FactoryForms449_ColumnsHolder') ) {
|
18 |
/**
|
19 |
* Columns Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms449_ColumnsHolder extends Wbcr_FactoryForms449_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_FactoryForms449_ControlGroupItem') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms449_ControlGroupItem extends Wbcr_FactoryForms449_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_FactoryForms449_ControlGroupHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms449_ControlGroupHolder extends Wbcr_FactoryForms449_ControlHolder {
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
61 |
continue;
|
62 |
}
|
63 |
|
64 |
+
$builder = new Wbcr_FactoryForms449_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_FactoryForms449_DivHolder') ) {
|
18 |
/**
|
19 |
* Div Control Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms449_DivHolder extends Wbcr_FactoryForms449_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_FactoryForms449_FormGroupHolder') ) {
|
18 |
/**
|
19 |
* Group Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms449_FormGroupHolder extends Wbcr_FactoryForms449_Holder {
|
24 |
|
25 |
/**
|
26 |
* A holder type.
|
libs/factory/forms/controls/holders/more-link.php
CHANGED
@@ -14,14 +14,14 @@ if( !defined('ABSPATH') ) {
|
|
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_FactoryForms449_MoreLinkHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Collapsed Group Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms449_MoreLinkHolder extends Wbcr_FactoryForms449_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_FactoryForms449_TabItemHolder') ) {
|
17 |
/**
|
18 |
* Tab Item Control Holder
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
class Wbcr_FactoryForms449_TabItemHolder extends Wbcr_FactoryForms449_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_FactoryForms449_TabHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms449_TabHolder extends Wbcr_FactoryForms449_Holder {
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
* @param mixed[] $options A holder options.
|
47 |
+
* @param FactoryForms449_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_FactoryForms449_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_FactoryForms449_IntegerControl') ) {
|
36 |
|
37 |
+
class Wbcr_FactoryForms449_IntegerControl extends Wbcr_FactoryForms449_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_FactoryForms449_ListControl') ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms449_ListControl extends Wbcr_FactoryForms449_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_449') ) ?>'
|
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_449'));
|
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 |
|
@@ -75,7 +75,7 @@
|
|
75 |
<?php $counter = 0; ?>
|
76 |
<?php foreach($values as $value): ?>
|
77 |
<div class="factory-mtextbox-item">
|
78 |
-
<input value="
|
79 |
<?php if( $counter >= 1 ): ?>
|
80 |
<button class="btn btn-default btn-small factory-mtextbox-remove-item">
|
81 |
<i class="fa fa-times" aria-hidden="true"></i></button>
|
@@ -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_FactoryForms449_MultipleTextboxControl') ) {
|
19 |
|
20 |
+
class Wbcr_FactoryForms449_MultipleTextboxControl extends Wbcr_FactoryForms449_Control {
|
21 |
|
22 |
public $type = 'multiple-textbox';
|
23 |
|
75 |
<?php $counter = 0; ?>
|
76 |
<?php foreach($values as $value): ?>
|
77 |
<div class="factory-mtextbox-item">
|
78 |
+
<input value="<?php echo esc_attr($value) ?>"<?php $this->attrs() ?>/>
|
79 |
<?php if( $counter >= 1 ): ?>
|
80 |
<button class="btn btn-default btn-small factory-mtextbox-remove-item">
|
81 |
<i class="fa fa-times" aria-hidden="true"></i></button>
|
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_449') ?>
|
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_FactoryForms449_PaddingsEditorControl') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryForms449_PaddingsEditorControl extends Wbcr_FactoryForms449_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_449') ?>
|
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_FactoryForms449_PatternControl') ) {
|
19 |
|
20 |
+
class Wbcr_FactoryForms449_PatternControl extends Wbcr_FactoryForms449_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_449_patterns', array());
|
56 |
+
$this->patterns = apply_filters('wbcr_factory_forms_449_patterns-' . $name, $this->patterns);
|
57 |
|
58 |
$this->custom_patterns = $this->getOption('patterns', array());
|
59 |
|
60 |
+
$this->color = new Wbcr_FactoryForms449_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_449') ?>">
|
106 |
<i class="fa fa-flask"></i>
|
107 |
+
<span><?php _e('re-color', 'wbcr_factory_forms_449') ?></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_449') ?></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_449') ?></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 |
|
@@ -102,7 +102,7 @@
|
|
102 |
<span class="factory-form-radio-item">
|
103 |
<lable class="factory-from-radio-label">
|
104 |
<input type="radio" <?php $this->attrs() ?> value="<?php echo esc_attr($item[0]) ?>" <?php echo $checked ?>/>
|
105 |
-
<span style="background-color
|
106 |
</lable>
|
107 |
</span>
|
108 |
<?php }
|
27 |
exit;
|
28 |
}
|
29 |
|
30 |
+
if( !class_exists('Wbcr_FactoryForms449_RadioColorsControl') ) {
|
31 |
|
32 |
+
class Wbcr_FactoryForms449_RadioColorsControl extends Wbcr_FactoryForms449_Control {
|
33 |
|
34 |
public $type = 'radio-color';
|
35 |
|
102 |
<span class="factory-form-radio-item">
|
103 |
<lable class="factory-from-radio-label">
|
104 |
<input type="radio" <?php $this->attrs() ?> value="<?php echo esc_attr($item[0]) ?>" <?php echo $checked ?>/>
|
105 |
+
<span style="background-color:<?php echo esc_attr($item[1]) ?>"></span>
|
106 |
</lable>
|
107 |
</span>
|
108 |
<?php }
|
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 |
|
@@ -76,7 +76,7 @@
|
|
76 |
: '';
|
77 |
?>
|
78 |
<span class="factory-form-radio-item">
|
79 |
-
<lable class="factory-from-radio-label"
|
80 |
<input type="radio" <?php $this->attrs() ?> value="<?php echo esc_attr($item[0]) ?>" <?php echo $checked ?>/>
|
81 |
</span>
|
82 |
<?php }
|
21 |
exit;
|
22 |
}
|
23 |
|
24 |
+
if( !class_exists('Wbcr_FactoryForms449_RadioControl') ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms449_RadioControl extends Wbcr_FactoryForms449_Control {
|
27 |
|
28 |
public $type = 'radio';
|
29 |
|
76 |
: '';
|
77 |
?>
|
78 |
<span class="factory-form-radio-item">
|
79 |
+
<lable class="factory-from-radio-label"><?php echo esc_html($item[1]); ?></lable>
|
80 |
<input type="radio" <?php $this->attrs() ?> value="<?php echo esc_attr($item[0]) ?>" <?php echo $checked ?>/>
|
81 |
</span>
|
82 |
<?php }
|
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_FactoryForms449_TextareaControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms449_TextareaControl extends Wbcr_FactoryForms449_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_FactoryForms449_TextboxControl') ) {
|
33 |
|
34 |
+
class Wbcr_FactoryForms449_TextboxControl extends Wbcr_FactoryForms449_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 FactoryForms449_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_FactoryForms449_UrlControl') ) {
|
22 |
|
23 |
+
class Wbcr_FactoryForms449_UrlControl extends Wbcr_FactoryForms449_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_FactoryForms449_WpEditorControl') ) {
|
26 |
|
27 |
+
class Wbcr_FactoryForms449_WpEditorControl extends Wbcr_FactoryForms449_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_449_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_FactoryForms449_ComplexControl') ) {
|
17 |
/**
|
18 |
* The base class for all controls.
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
abstract class Wbcr_FactoryForms449_ComplexControl extends Wbcr_FactoryForms449_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_FactoryForms449_Control[]
|
37 |
*/
|
38 |
public $inner_controls = array();
|
39 |
|
41 |
* Sets a provider for the control.
|
42 |
*
|
43 |
* @since 1.0.0
|
44 |
+
* @param Wbcr_IFactoryForms449_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_FactoryForms449_ControlHolder') ) {
|
18 |
/**
|
19 |
* The base class for control holders.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
abstract class Wbcr_FactoryForms449_ControlHolder extends Wbcr_FactoryForms449_Control {
|
24 |
|
25 |
/**
|
26 |
* Holder Elements.
|
27 |
*
|
28 |
* @since 1.0.0
|
29 |
+
* @var Wbcr_FactoryForms449_Control[]
|
30 |
*/
|
31 |
protected $elements = array();
|
32 |
|
43 |
*
|
44 |
* @since 1.0.0
|
45 |
* @param mixed[] $options A holder options.
|
46 |
+
* @param Wbcr_FactoryForms449_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_FactoryForms449_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_FactoryForms449_Control') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all controls.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
abstract class Wbcr_FactoryForms449_Control extends Wbcr_FactoryForms449_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_IFactoryForms449_ValueProvider
|
47 |
*/
|
48 |
protected $provider = null;
|
49 |
|
51 |
* Create a new instance of the control.
|
52 |
*
|
53 |
* @param mixed[] $options
|
54 |
+
* @param FactoryForms449_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 IFactoryForms449_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_FactoryForms449_CustomElement') ) {
|
18 |
/**
|
19 |
* The base class for all controls.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
abstract class Wbcr_FactoryForms449_CustomElement extends Wbcr_FactoryForms449_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_FactoryForms449_FormElement') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all form element (controls, holders).
|
23 |
*
|
24 |
* @since 1.0.0
|
25 |
*/
|
26 |
+
abstract class Wbcr_FactoryForms449_FormElement {
|
27 |
|
28 |
/**
|
29 |
* A type of an elemnt.
|
37 |
* An html attribute builder.
|
38 |
*
|
39 |
* @since 1.0.0
|
40 |
+
* @var Wbcr_FactoryForms449_HtmlAttributeBuilder
|
41 |
*/
|
42 |
private $html_builder;
|
43 |
|
53 |
* A parent form.
|
54 |
*
|
55 |
* @since 1.0.0
|
56 |
+
* @var Wbcr_FactoryForms449_Form
|
57 |
*/
|
58 |
protected $form;
|
59 |
|
61 |
* A form layout.
|
62 |
*
|
63 |
* @since 1.0.0
|
64 |
+
* @var Wbcr_FactoryForms449_FormLayout
|
65 |
*/
|
66 |
protected $layout;
|
67 |
|
94 |
*
|
95 |
* @since 1.0.0
|
96 |
* @param mixed[] $options A holder options.
|
97 |
+
* @param Wbcr_FactoryForms449_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_FactoryForms449_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_FactoryForms449_FormLayout') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all form layouts.
|
21 |
*/
|
22 |
+
abstract class Wbcr_FactoryForms449_FormLayout extends Wbcr_FactoryForms449_Holder {
|
23 |
|
24 |
/**
|
25 |
* A form layout name.
|
42 |
*
|
43 |
* @since 1.0.0
|
44 |
* @param mixed[] $options A holder options.
|
45 |
+
* @param Wbcr_FactoryForms449_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-449-' . $this->type);
|
56 |
+
$this->addCssClass('factory-forms-449-' . $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_449_plugin_created', 'wbcr_factory_forms_449_plugin_created');
|
19 |
|
20 |
+
function wbcr_factory_forms_449_plugin_created($plugin)
|
21 |
{
|
22 |
+
$plugin->forms = new Wbcr_FactoryForms449_Manager($plugin);
|
23 |
}
|
24 |
|
25 |
+
if( !class_exists('Wbcr_FactoryForms449_Manager') ) {
|
26 |
|
27 |
+
class Wbcr_FactoryForms449_Manager {
|
28 |
|
29 |
// ----------------------------------------------------
|
30 |
// Static fields and methods
|
57 |
/**
|
58 |
* Registers a set of new controls.
|
59 |
*
|
60 |
+
* @see FactoryForms449_Form::registerControl()
|
61 |
*
|
62 |
* @since 1.0.0
|
63 |
* @return void
|
95 |
/**
|
96 |
* Registers a set of new holder controls.
|
97 |
*
|
98 |
+
* @see FactoryForms449_Form::registerHolder()
|
99 |
*
|
100 |
* @since 1.0.0
|
101 |
* @return void
|
129 |
/**
|
130 |
* Registers a set of new custom form elements.
|
131 |
*
|
132 |
+
* @see FactoryForms449_Form::registerCustomElement()
|
133 |
*
|
134 |
* @since 1.0.0
|
135 |
* @return void
|
180 |
public static $controls_registered = false;
|
181 |
}
|
182 |
}
|
183 |
+
if( !class_exists('Wbcr_FactoryForms449_Form') ) {
|
184 |
/**
|
185 |
* An abstraction for forms.
|
186 |
*/
|
187 |
+
class Wbcr_FactoryForms449_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_IFactoryForms449_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_FactoryForms449_FormLayout
|
249 |
*/
|
250 |
public $layout;
|
251 |
|
261 |
*
|
262 |
* @since 1.0.0
|
263 |
* @param array $options
|
264 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
265 |
*/
|
266 |
+
public function __construct(array $options, Wbcr_Factory452_Plugin $plugin)
|
267 |
{
|
268 |
// register controls once, when the first form is created
|
269 |
+
if( !Wbcr_FactoryForms449_Manager::$controls_registered ) {
|
270 |
|
271 |
+
do_action('wbcr_factory_forms_449_register_controls', $plugin);
|
272 |
|
273 |
//if( !empty($plugin) ) {
|
274 |
+
do_action('wbcr_factory_forms_449_register_controls_' . $plugin->getPluginName(), $plugin);
|
275 |
//}
|
276 |
|
277 |
+
Wbcr_FactoryForms449_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_FactoryForms449_Manager::$temper = 'flat';
|
293 |
}
|
294 |
|
295 |
/**
|
296 |
* Sets a provider for the control.
|
297 |
*
|
298 |
* @since 1.0.0
|
299 |
+
* @param Wbcr_IFactoryForms449_ValueProvider $provider
|
300 |
* @return void
|
301 |
*/
|
302 |
public function setProvider($provider)
|
332 |
*/
|
333 |
public function getItems()
|
334 |
{
|
335 |
+
return apply_filters('wbcr_factory_452_form_items', $this->items, $this->name);
|
336 |
}
|
337 |
|
338 |
/**
|
339 |
* Returns form controls (control objects).
|
340 |
*
|
341 |
* @since 1.0.0
|
342 |
+
* @return Wbcr_FactoryForms449_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_FactoryForms449_Control[]
|
359 |
*/
|
360 |
|
361 |
public function createControls($holder = null)
|
395 |
*
|
396 |
* @since 1.0.0
|
397 |
* @param array $item Item data.
|
398 |
+
* @return Wbcr_FactoryForms449_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_FactoryForms449_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_FactoryForms449_Control A control object.
|
437 |
*/
|
438 |
public function createControl($item)
|
439 |
{
|
441 |
|
442 |
if( is_array($item) ) {
|
443 |
|
444 |
+
$control_data = Wbcr_FactoryForms449_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_FactoryForms449_Holder A control holder object.
|
469 |
*/
|
470 |
public function createHolder($item)
|
471 |
{
|
473 |
|
474 |
if( is_array($item) ) {
|
475 |
|
476 |
+
$holderData = Wbcr_FactoryForms449_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_FactoryForms449_FormElement A custom form element object.
|
495 |
*/
|
496 |
public function createCustomElement($item)
|
497 |
{
|
499 |
|
500 |
if( is_array($item) ) {
|
501 |
|
502 |
+
$data = Wbcr_FactoryForms449_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_FactoryForms449_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_FactoryForms449_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_FactoryForms449_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_FactoryForms449_Manager::$registered_controls;
|
606 |
} elseif( self::isControlHolder($type) ) {
|
607 |
+
$haystack = Wbcr_FactoryForms449_Manager::$registered_holders;
|
608 |
}
|
609 |
|
610 |
if( isset($haystack[$type]) ) {
|
660 |
*/
|
661 |
public static function isControl($item)
|
662 |
{
|
663 |
+
return isset(Wbcr_FactoryForms449_Manager::$registered_controls[$item['type']]);
|
664 |
}
|
665 |
|
666 |
/**
|
672 |
*/
|
673 |
public static function isControlHolder($item)
|
674 |
{
|
675 |
+
return isset(Wbcr_FactoryForms449_Manager::$registered_holders[$item['type']]);
|
676 |
}
|
677 |
|
678 |
/**
|
684 |
*/
|
685 |
public static function isCustomElement($item)
|
686 |
{
|
687 |
+
return isset(Wbcr_FactoryForms449_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_FactoryForms449_Holder') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for control holders.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
abstract class Wbcr_FactoryForms449_Holder extends Wbcr_FactoryForms449_FormElement {
|
25 |
|
26 |
/**
|
27 |
* Holder Elements.
|
28 |
*
|
29 |
* @since 1.0.0
|
30 |
+
* @var Wbcr_FactoryForms449_Control[]
|
31 |
*/
|
32 |
protected $elements = array();
|
33 |
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
* @param mixed[] $options A holder options.
|
47 |
+
* @param Wbcr_FactoryForms449_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_FactoryForms449_Control[].
|
60 |
*/
|
61 |
public function getElements()
|
62 |
{
|
84 |
$is_first_item = false;
|
85 |
}
|
86 |
|
87 |
+
do_action('wbcr_factory_452_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_FactoryForms449_HtmlAttributeBuilder') ) {
|
18 |
/**
|
19 |
* Html Attribute Builder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms449_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_FactoryForms449_OptionsValueProvider') ) {
|
18 |
|
19 |
/**
|
20 |
* Factory Meta Value Provider
|
24 |
*
|
25 |
* @since 1.0.0
|
26 |
*/
|
27 |
+
class Wbcr_FactoryForms449_MetaValueProvider implements Wbcr_IFactoryForms449_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_FactoryForms449_OptionsValueProvider') ) {
|
17 |
|
18 |
/**
|
19 |
* Factory Options Value Provider
|
22 |
*
|
23 |
* @since 1.0.0
|
24 |
*/
|
25 |
+
class Wbcr_FactoryForms449_OptionsValueProvider implements Wbcr_IFactoryForms449_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_Factory452_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_IFactoryForms449_ValueProvider') ) {
|
18 |
/**
|
19 |
* The interface for all value provides.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
interface Wbcr_IFactoryForms449_ValueProvider {
|
24 |
|
25 |
/**
|
26 |
* Inits a form a provider to get data from a storage.
|
libs/factory/forms/langs/{wbcr_factory_forms_446-ru_RU.mo → wbcr_factory_forms_449-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/forms/langs/{wbcr_factory_forms_446-ru_RU.po → wbcr_factory_forms_449-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 |
{
|
@@ -90,7 +90,7 @@
|
|
90 |
$col_right = $control->getLayoutOption('column-right', '10');
|
91 |
?>
|
92 |
<div class="form-group form-group-<?php echo $control->getType() ?> <?php echo $theme_class ?> <?php echo $control_name_class ?>">
|
93 |
-
<label for="<?php $control->printNameOnForm() ?>" class="col-sm
|
94 |
<?php if( $control->hasIcon() ) { ?>
|
95 |
<img class="control-icon" src="<?php $control->icon() ?>"/>
|
96 |
<?php } ?>
|
@@ -101,7 +101,7 @@
|
|
101 |
if( $control->hasHint() ) {
|
102 |
if( $hint_type == 'icon' ): ?>
|
103 |
<?php $hint_icon_color = $control->getLayoutOption('hint-icon-color', 'green'); ?>
|
104 |
-
<span class="factory-hint-icon factory-hint-icon
|
105 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""/>
|
106 |
|
107 |
</span>
|
@@ -111,12 +111,12 @@
|
|
111 |
<?php endif; ?>
|
112 |
<?php } ?>
|
113 |
</label>
|
114 |
-
<div class="control-group col-sm
|
115 |
<?php
|
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_FactoryForms449_Bootstrap3FormLayout') ) {
|
18 |
/**
|
19 |
* A form layout based on Twitter Bootstrap 3
|
20 |
*/
|
21 |
+
class Wbcr_FactoryForms449_Bootstrap3FormLayout extends Wbcr_FactoryForms449_FormLayout {
|
22 |
|
23 |
public $name = 'default';
|
24 |
|
27 |
*
|
28 |
* @since 1.0.0
|
29 |
* @param array $options A holder options.
|
30 |
+
* @param Wbcr_FactoryForms449_Form $form A parent form.
|
31 |
*/
|
32 |
public function __construct($options, $form)
|
33 |
{
|
68 |
}
|
69 |
|
70 |
/**
|
71 |
+
* @param Wbcr_FactoryForms449_Control $control
|
72 |
*/
|
73 |
public function beforeControl($control)
|
74 |
{
|
90 |
$col_right = $control->getLayoutOption('column-right', '10');
|
91 |
?>
|
92 |
<div class="form-group form-group-<?php echo $control->getType() ?> <?php echo $theme_class ?> <?php echo $control_name_class ?>">
|
93 |
+
<label for="<?php $control->printNameOnForm() ?>" class="col-sm-<?php echo $col_left ?> control-label">
|
94 |
<?php if( $control->hasIcon() ) { ?>
|
95 |
<img class="control-icon" src="<?php $control->icon() ?>"/>
|
96 |
<?php } ?>
|
101 |
if( $control->hasHint() ) {
|
102 |
if( $hint_type == 'icon' ): ?>
|
103 |
<?php $hint_icon_color = $control->getLayoutOption('hint-icon-color', 'green'); ?>
|
104 |
+
<span class="factory-hint-icon factory-hint-icon-<?php echo $hint_icon_color ?>" data-toggle="factory-tooltip" data-placement="right" title="<?php $control->hint(true) ?>">
|
105 |
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAQAAABKmM6bAAAAUUlEQVQIHU3BsQ1AQABA0X/komIrnQHYwyhqQ1hBo9KZRKL9CBfeAwy2ri42JA4mPQ9rJ6OVt0BisFM3Po7qbEliru7m/FkY+TN64ZVxEzh4ndrMN7+Z+jXCAAAAAElFTkSuQmCC" alt=""/>
|
106 |
|
107 |
</span>
|
111 |
<?php endif; ?>
|
112 |
<?php } ?>
|
113 |
</label>
|
114 |
+
<div class="control-group col-sm-<?php echo $col_right ?>">
|
115 |
<?php
|
116 |
}
|
117 |
|
118 |
/**
|
119 |
+
* @param Wbcr_FactoryForms449_Control $control
|
120 |
*/
|
121 |
public function afterControl($control)
|
122 |
{
|
168 |
}
|
169 |
|
170 |
/**
|
171 |
+
* @param Wbcr_FactoryForms449_Control $control
|
172 |
* @param int $index
|
173 |
* @param int $total
|
174 |
*/
|
193 |
}
|
194 |
|
195 |
/**
|
196 |
+
* @param Wbcr_FactoryForms449_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_139_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
define('FACTORY_FREEMIUS_139_VERSION', '1.3.9');
|
22 |
|
23 |
+
define('FACTORY_FREEMIUS_139_LOADED', true);
|
24 |
+
define('FACTORY_FREEMIUS_139_DIR', dirname(__FILE__));
|
25 |
+
define('FACTORY_FREEMIUS_139_URL', plugins_url(null, __FILE__));
|
26 |
|
27 |
#comp merge
|
28 |
// Freemius
|
29 |
+
require_once(FACTORY_FREEMIUS_139_DIR . '/includes/entities/class-freemius-entity.php');
|
30 |
+
require_once(FACTORY_FREEMIUS_139_DIR . '/includes/entities/class-freemius-scope.php');
|
31 |
+
require_once(FACTORY_FREEMIUS_139_DIR . '/includes/entities/class-freemius-user.php');
|
32 |
+
require_once(FACTORY_FREEMIUS_139_DIR . '/includes/entities/class-freemius-site.php');
|
33 |
+
require_once(FACTORY_FREEMIUS_139_DIR . '/includes/entities/class-freemius-license.php');
|
34 |
+
require_once(FACTORY_FREEMIUS_139_DIR . '/includes/licensing/class-freemius-provider.php');
|
35 |
+
require_once(FACTORY_FREEMIUS_139_DIR . '/includes/updates/class-freemius-repository.php');
|
36 |
|
37 |
if( !class_exists('Freemius_Api_WordPress') ) {
|
38 |
+
require_once FACTORY_FREEMIUS_139_DIR . '/includes/sdk/FreemiusWordPress.php';
|
39 |
}
|
40 |
|
41 |
+
require_once(FACTORY_FREEMIUS_139_DIR . '/includes/class-freemius-api.php');
|
42 |
|
43 |
/**
|
44 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
45 |
*/
|
46 |
+
add_action('wbcr_factory_freemius_139_plugin_created', function ($plugin) {
|
47 |
# Устанавливаем класс провайдера лицензий для премиум менеджера
|
48 |
+
$plugin->set_license_provider('freemius', 'WBCR\Factory_Freemius_139\Premium\Provider');
|
49 |
# Устанавливаем класс репозитория обновлений для менеджера обновлений
|
50 |
+
$plugin->set_update_repository('freemius', 'WBCR\Factory_Freemius_139\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_139;
|
4 |
|
5 |
use Freemius_Api_WordPress;
|
6 |
use Freemius_Exception;
|
7 |
+
use Wbcr_Factory452_Plugin;
|
8 |
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
exit;
|
33 |
private $api;
|
34 |
|
35 |
/**
|
36 |
+
* @var Wbcr_Factory452_Plugin
|
37 |
*/
|
38 |
private $plugin;
|
39 |
|
48 |
private static $clock_diff;
|
49 |
|
50 |
/**
|
51 |
+
* @param Wbcr_Factory452_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_Factory452_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_Factory452_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_Factory452_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_139\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_139\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_452\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_139\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_139\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_139\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_139\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_139\Premium;
|
4 |
+
|
5 |
+
use WBCR\Factory_Freemius_139\Entities\License;
|
6 |
+
use WBCR\Factory_Freemius_139\Entities\Plugin;
|
7 |
+
use WBCR\Factory_Freemius_139\Entities\Site;
|
8 |
+
use WBCR\Factory_Freemius_139\Entities\User;
|
9 |
+
use WBCR\Factory_452\Premium\Provider as License_Provider;
|
10 |
+
use Wbcr_Factory452_Plugin;
|
11 |
+
use WBCR\Factory_Freemius_139\Api;
|
12 |
use WP_Error;
|
13 |
use Exception;
|
14 |
|
40 |
private $slug;
|
41 |
|
42 |
/**
|
43 |
+
* @var \WBCR\Factory_Freemius_139\Api
|
44 |
*/
|
45 |
private $site_api;
|
46 |
|
47 |
/**
|
48 |
+
* @var \WBCR\Factory_Freemius_139\Api
|
49 |
*/
|
50 |
private $plugin_api;
|
51 |
|
52 |
/**
|
53 |
+
* @var \WBCR\Factory_Freemius_139\Api
|
54 |
*/
|
55 |
private $user_api;
|
56 |
|
82 |
/**
|
83 |
* Manager constructor.
|
84 |
*
|
85 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
86 |
*
|
87 |
* @throws Exception
|
88 |
*/
|
89 |
+
public function __construct(Wbcr_Factory452_Plugin $plugin, array $settings)
|
90 |
{
|
91 |
parent::__construct($plugin, $settings);
|
92 |
|
150 |
}
|
151 |
|
152 |
/**
|
153 |
+
* @return \WBCR\Factory_Freemius_139\Entities\License|null
|
154 |
* @throws Exception
|
155 |
*/
|
156 |
public function get_license()
|
613 |
/**
|
614 |
* @param bool $flush
|
615 |
*
|
616 |
+
* @return \WBCR\Factory_Freemius_139\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_139\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_139\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_139\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
7 |
+
use Wbcr_Factory452_Plugin;
|
8 |
+
use WBCR\Factory_452\Updates\Repository;
|
9 |
|
10 |
if( !defined('ABSPATH') ) {
|
11 |
exit;
|
20 |
class Freemius_Repository extends Repository {
|
21 |
|
22 |
/**
|
23 |
+
* @var \WBCR\Factory_Freemius_139\Premium\Provider
|
24 |
*/
|
25 |
private $premium;
|
26 |
|
27 |
/**
|
28 |
* Freemius constructor.
|
29 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
30 |
*
|
31 |
* @throws Exception
|
32 |
* @since 4.0.0
|
33 |
*
|
34 |
*/
|
35 |
+
public function __construct(Wbcr_Factory452_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_139\Premium\Provider ) {
|
47 |
throw new Exception("This repository type requires Freemius premium provider.");
|
48 |
}
|
49 |
|
libs/factory/logger/assets/js/logger.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
function
|
2 |
var btn = jQuery(element),
|
3 |
currentBtnText = btn.html();
|
4 |
|
@@ -10,18 +10,18 @@ function wbcr_factory_logger_114_LogCleanup(element) {
|
|
10 |
url: ajaxurl,
|
11 |
method: 'post',
|
12 |
data: {
|
13 |
-
action: '
|
14 |
-
nonce:
|
15 |
},
|
16 |
success: function (data) {
|
17 |
btn.html(currentBtnText);
|
18 |
|
19 |
jQuery('#wbcr-log-viewer').html('');
|
20 |
jQuery('#wbcr-log-size').text('0B');
|
21 |
-
jQuery.
|
22 |
},
|
23 |
error: function (jqXHR, textStatus, errorThrown) {
|
24 |
-
jQuery.
|
25 |
btn.html(currentBtnText);
|
26 |
}
|
27 |
});
|
1 |
+
function wbcr_factory_logger_117_LogCleanup(element) {
|
2 |
var btn = jQuery(element),
|
3 |
currentBtnText = btn.html();
|
4 |
|
10 |
url: ajaxurl,
|
11 |
method: 'post',
|
12 |
data: {
|
13 |
+
action: 'wbcr_factory_logger_117_logs_cleanup',
|
14 |
+
nonce: wbcr_factory_logger_117.clean_logs_nonce
|
15 |
},
|
16 |
success: function (data) {
|
17 |
btn.html(currentBtnText);
|
18 |
|
19 |
jQuery('#wbcr-log-viewer').html('');
|
20 |
jQuery('#wbcr-log-size').text('0B');
|
21 |
+
jQuery.wbcr_factory_templates_105.app.showNotice(data.message, data.type);
|
22 |
},
|
23 |
error: function (jqXHR, textStatus, errorThrown) {
|
24 |
+
jQuery.wbcr_factory_templates_105.app.showNotice('Error: ' + errorThrown + ', status: ' + textStatus, 'danger');
|
25 |
btn.html(currentBtnText);
|
26 |
}
|
27 |
});
|
libs/factory/logger/boot.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
use WBCR\
|
4 |
|
5 |
/**
|
6 |
* Factory Logger
|
@@ -19,31 +19,31 @@ if( !defined('ABSPATH') ) {
|
|
19 |
exit;
|
20 |
}
|
21 |
|
22 |
-
if( defined('
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
-
define('
|
27 |
-
define('
|
28 |
-
define('
|
29 |
-
define('
|
30 |
|
31 |
-
load_plugin_textdomain('
|
32 |
|
33 |
-
require_once(
|
34 |
|
35 |
if( is_admin() ) {
|
36 |
-
require_once(
|
37 |
-
require_once(
|
38 |
-
require_once(
|
39 |
-
require_once(
|
40 |
}
|
41 |
|
42 |
/**
|
43 |
-
* @param
|
44 |
*/
|
45 |
-
add_action('
|
46 |
-
/* @var
|
47 |
|
48 |
/* Settings of Logger
|
49 |
$settings = [
|
@@ -54,7 +54,7 @@ add_action('wbcr_factory_logger_114_plugin_created', function ($plugin) {
|
|
54 |
'rotate_limit' => 3,
|
55 |
];
|
56 |
|
57 |
-
$plugin->set_logger( "WBCR\
|
58 |
*/
|
59 |
-
$plugin->set_logger("WBCR\
|
60 |
});
|
1 |
<?php
|
2 |
|
3 |
+
use WBCR\Factory_Logger_117\Logger;
|
4 |
|
5 |
/**
|
6 |
* Factory Logger
|
19 |
exit;
|
20 |
}
|
21 |
|
22 |
+
if( defined('FACTORY_LOGGER_117_LOADED') || (defined('FACTORY_LOGGER_STOP') && FACTORY_LOGGER_STOP) ) {
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
+
define('FACTORY_LOGGER_117_LOADED', true);
|
27 |
+
define('FACTORY_LOGGER_117_VERSION', '1.1.7');
|
28 |
+
define('FACTORY_LOGGER_117_DIR', dirname(__FILE__));
|
29 |
+
define('FACTORY_LOGGER_117_URL', plugins_url(null, __FILE__));
|
30 |
|
31 |
+
load_plugin_textdomain('wbcr_factory_logger_117', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
32 |
|
33 |
+
require_once(FACTORY_LOGGER_117_DIR . '/includes/class-logger.php');
|
34 |
|
35 |
if( is_admin() ) {
|
36 |
+
require_once(FACTORY_LOGGER_117_DIR . '/includes/class-log-export.php');
|
37 |
+
require_once(FACTORY_LOGGER_117_DIR . '/pages/class-logger-impressive-page.php');
|
38 |
+
require_once(FACTORY_LOGGER_117_DIR . '/pages/class-logger-impressive-lite.php');
|
39 |
+
require_once(FACTORY_LOGGER_117_DIR . '/pages/class-logger-admin-page.php');
|
40 |
}
|
41 |
|
42 |
/**
|
43 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
44 |
*/
|
45 |
+
add_action('wbcr_factory_logger_117_plugin_created', function ($plugin) {
|
46 |
+
/* @var Wbcr_Factory452_Plugin $plugin */
|
47 |
|
48 |
/* Settings of Logger
|
49 |
$settings = [
|
54 |
'rotate_limit' => 3,
|
55 |
];
|
56 |
|
57 |
+
$plugin->set_logger( "WBCR\Factory_Logger_117\Logger", $settings );
|
58 |
*/
|
59 |
+
$plugin->set_logger("WBCR\Factory_Logger_117\Logger");
|
60 |
});
|
libs/factory/logger/includes/class-log-export.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* Prepares export files, ZIPs them and allows to download the package.
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Logger_117;
|
4 |
|
5 |
/**
|
6 |
* Prepares export files, ZIPs them and allows to download the package.
|
libs/factory/logger/includes/class-logger.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -48,7 +48,7 @@ class Logger {
|
|
48 |
const LEVEL_DEBUG = 'debug';
|
49 |
|
50 |
/**
|
51 |
-
* @var \
|
52 |
*/
|
53 |
public $plugin;
|
54 |
|
@@ -92,7 +92,7 @@ class Logger {
|
|
92 |
/**
|
93 |
* Logger constructor.
|
94 |
*
|
95 |
-
* @param \
|
96 |
* @param array $settings
|
97 |
*/
|
98 |
public function __construct( $plugin, $settings = [] ) {
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Logger_117;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
48 |
const LEVEL_DEBUG = 'debug';
|
49 |
|
50 |
/**
|
51 |
+
* @var \Wbcr_Factory452_Plugin Plugin class.
|
52 |
*/
|
53 |
public $plugin;
|
54 |
|
92 |
/**
|
93 |
* Logger constructor.
|
94 |
*
|
95 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
96 |
* @param array $settings
|
97 |
*/
|
98 |
public function __construct( $plugin, $settings = [] ) {
|
libs/factory/logger/langs/{wbcr_factory_logger_114-ru_RU.mo → wbcr_factory_logger_117-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/logger/langs/{wbcr_factory_logger_114-ru_RU.po → wbcr_factory_logger_117-ru_RU.po}
RENAMED
File without changes
|
libs/factory/logger/pages/class-logger-admin-page.php
CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
* @copyright (c) 2020, Webcraftic
|
13 |
* @version 1.0
|
14 |
*/
|
15 |
-
class
|
16 |
|
17 |
/**
|
18 |
* {@inheritdoc}
|
@@ -30,16 +30,16 @@ class Wbcr_FactoryLogger114_AdminPage extends Wbcr_FactoryPages448_AdminPage {
|
|
30 |
public $type = 'page';
|
31 |
|
32 |
/**
|
33 |
-
* @param
|
34 |
*/
|
35 |
public function __construct( $plugin ) {
|
36 |
$this->id = $plugin->getPrefix() . "logger";
|
37 |
|
38 |
-
$this->menu_title = __( 'Plugin Log', '
|
39 |
-
$this->page_title = __( 'Plugin log', '
|
40 |
$this->capabilitiy = "manage_options";
|
41 |
|
42 |
-
add_action( '
|
43 |
|
44 |
parent::__construct( $plugin );
|
45 |
}
|
@@ -53,10 +53,10 @@ class Wbcr_FactoryLogger114_AdminPage extends Wbcr_FactoryPages448_AdminPage {
|
|
53 |
public function assets( $scripts, $styles ) {
|
54 |
parent::assets( $scripts, $styles );
|
55 |
|
56 |
-
$this->styles->add(
|
57 |
-
$this->scripts->add(
|
58 |
-
wp_localize_script( '
|
59 |
-
'clean_logs_nonce' => wp_create_nonce( '
|
60 |
] );
|
61 |
}
|
62 |
|
@@ -64,7 +64,7 @@ class Wbcr_FactoryLogger114_AdminPage extends Wbcr_FactoryPages448_AdminPage {
|
|
64 |
* {@inheritdoc}
|
65 |
*/
|
66 |
public function getMenuTitle() {
|
67 |
-
return __( 'Plugin Log', '
|
68 |
}
|
69 |
|
70 |
/**
|
@@ -81,35 +81,35 @@ class Wbcr_FactoryLogger114_AdminPage extends Wbcr_FactoryPages448_AdminPage {
|
|
81 |
$buttons = "
|
82 |
<div class='wbcr_factory_logger_buttons'>
|
83 |
<a href='" . wp_nonce_url( $this->getActionUrl( 'export' ) ) . "'
|
84 |
-
class='button button-primary'>" . __( 'Export Debug Information', '
|
85 |
<a href='#'
|
86 |
class='button button-secondary'
|
87 |
-
onclick='
|
88 |
-
data-working='" . __( 'Working...', '
|
89 |
-
sprintf( __( 'Clean-up Logs (<span id="wbcr-log-size">%s</span>)', '
|
90 |
</a>
|
91 |
</div>";
|
92 |
|
93 |
?>
|
94 |
<div class="wbcr_factory_logger_container">
|
95 |
<div class="wbcr_factory_logger_page_title">
|
96 |
-
<h1><?php _e( 'Logs of the', '
|
97 |
<?php echo $this->plugin->getPluginTitle() . " " . $this->plugin->getPluginVersion(); ?></h1>
|
98 |
<p>
|
99 |
-
<?php _e( 'In this section, you can track how the plugin works. Sending this log to the developer will help you resolve possible issues.', '
|
100 |
</p>
|
101 |
</div>
|
102 |
-
|
103 |
<div class="wbcr-log-viewer" id="wbcr-log-viewer">
|
104 |
<?php echo $this->plugin->logger->prettify() ?>
|
105 |
</div>
|
106 |
-
|
107 |
</div>
|
108 |
<?php
|
109 |
}
|
110 |
|
111 |
public function ajax_cleanup() {
|
112 |
-
check_admin_referer( '
|
113 |
|
114 |
if ( ! current_user_can( 'manage_options' ) ) {
|
115 |
wp_die( - 1 );
|
@@ -117,13 +117,13 @@ class Wbcr_FactoryLogger114_AdminPage extends Wbcr_FactoryPages448_AdminPage {
|
|
117 |
|
118 |
if ( ! $this->plugin->logger->clean_up() ) {
|
119 |
wp_send_json_error( [
|
120 |
-
'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', '
|
121 |
'type' => 'danger',
|
122 |
] );
|
123 |
}
|
124 |
|
125 |
wp_send_json( [
|
126 |
-
'message' => esc_html__( 'Logs clean-up successfully', '
|
127 |
'type' => 'success',
|
128 |
] );
|
129 |
}
|
@@ -132,7 +132,7 @@ class Wbcr_FactoryLogger114_AdminPage extends Wbcr_FactoryPages448_AdminPage {
|
|
132 |
* Processing log export action in form of ZIP archive.
|
133 |
*/
|
134 |
public function exportAction() {
|
135 |
-
$export = new WBCR\
|
136 |
|
137 |
if ( $export->prepare() ) {
|
138 |
$export->download( true );
|
12 |
* @copyright (c) 2020, Webcraftic
|
13 |
* @version 1.0
|
14 |
*/
|
15 |
+
class Wbcr_FactoryLogger117_AdminPage extends Wbcr_FactoryPages451_AdminPage {
|
16 |
|
17 |
/**
|
18 |
* {@inheritdoc}
|
30 |
public $type = 'page';
|
31 |
|
32 |
/**
|
33 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
34 |
*/
|
35 |
public function __construct( $plugin ) {
|
36 |
$this->id = $plugin->getPrefix() . "logger";
|
37 |
|
38 |
+
$this->menu_title = __( 'Plugin Log', 'wbcr_factory_logger_117' );
|
39 |
+
$this->page_title = __( 'Plugin log', 'wbcr_factory_logger_117' );
|
40 |
$this->capabilitiy = "manage_options";
|
41 |
|
42 |
+
add_action( 'wp_ajax_wbcr_factory_logger_117_logs_cleanup', [ $this, 'ajax_cleanup' ] );
|
43 |
|
44 |
parent::__construct( $plugin );
|
45 |
}
|
53 |
public function assets( $scripts, $styles ) {
|
54 |
parent::assets( $scripts, $styles );
|
55 |
|
56 |
+
$this->styles->add( FACTORY_LOGGER_117_URL . '/assets/css/logger.css' );
|
57 |
+
$this->scripts->add( FACTORY_LOGGER_117_URL . '/assets/js/logger.js', [ 'jquery' ], 'wbcr_factory_logger_117', FACTORY_LOGGER_117_VERSION );
|
58 |
+
wp_localize_script( 'wbcr_factory_logger_117', 'wbcr_factory_logger_117', [
|
59 |
+
'clean_logs_nonce' => wp_create_nonce( 'wbcr_factory_logger_117_clean_logs' ),
|
60 |
] );
|
61 |
}
|
62 |
|
64 |
* {@inheritdoc}
|
65 |
*/
|
66 |
public function getMenuTitle() {
|
67 |
+
return __( 'Plugin Log', 'wbcr_factory_logger_117' );
|
68 |
}
|
69 |
|
70 |
/**
|
81 |
$buttons = "
|
82 |
<div class='wbcr_factory_logger_buttons'>
|
83 |
<a href='" . wp_nonce_url( $this->getActionUrl( 'export' ) ) . "'
|
84 |
+
class='button button-primary'>" . __( 'Export Debug Information', 'wbcr_factory_logger_117' ) . "</a>
|
85 |
<a href='#'
|
86 |
class='button button-secondary'
|
87 |
+
onclick='wbcr_factory_logger_117_LogCleanup(this);return false;'
|
88 |
+
data-working='" . __( 'Working...', 'wbcr_factory_logger_117' ) . "'>" .
|
89 |
+
sprintf( __( 'Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_117' ), $this->get_log_size_formatted() ) . "
|
90 |
</a>
|
91 |
</div>";
|
92 |
|
93 |
?>
|
94 |
<div class="wbcr_factory_logger_container">
|
95 |
<div class="wbcr_factory_logger_page_title">
|
96 |
+
<h1><?php _e( 'Logs of the', 'wbcr_factory_logger_117' ) ?>
|
97 |
<?php echo $this->plugin->getPluginTitle() . " " . $this->plugin->getPluginVersion(); ?></h1>
|
98 |
<p>
|
99 |
+
<?php _e( 'In this section, you can track how the plugin works. Sending this log to the developer will help you resolve possible issues.', 'wbcr_factory_logger_117' ) ?>
|
100 |
</p>
|
101 |
</div>
|
102 |
+
<?php echo $buttons; ?>
|
103 |
<div class="wbcr-log-viewer" id="wbcr-log-viewer">
|
104 |
<?php echo $this->plugin->logger->prettify() ?>
|
105 |
</div>
|
106 |
+
<?php echo $buttons; ?>
|
107 |
</div>
|
108 |
<?php
|
109 |
}
|
110 |
|
111 |
public function ajax_cleanup() {
|
112 |
+
check_admin_referer( 'wbcr_factory_logger_117_clean_logs', 'nonce' );
|
113 |
|
114 |
if ( ! current_user_can( 'manage_options' ) ) {
|
115 |
wp_die( - 1 );
|
117 |
|
118 |
if ( ! $this->plugin->logger->clean_up() ) {
|
119 |
wp_send_json_error( [
|
120 |
+
'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_117' ),
|
121 |
'type' => 'danger',
|
122 |
] );
|
123 |
}
|
124 |
|
125 |
wp_send_json( [
|
126 |
+
'message' => esc_html__( 'Logs clean-up successfully', 'wbcr_factory_logger_117' ),
|
127 |
'type' => 'success',
|
128 |
] );
|
129 |
}
|
132 |
* Processing log export action in form of ZIP archive.
|
133 |
*/
|
134 |
public function exportAction() {
|
135 |
+
$export = new WBCR\Factory_Logger_117\Log_Export( $this->plugin->logger );
|
136 |
|
137 |
if ( $export->prepare() ) {
|
138 |
$export->download( true );
|
libs/factory/logger/pages/class-logger-impressive-lite.php
CHANGED
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
* @copyright (c) 2020, Webcraftic
|
13 |
* @version 1.0
|
14 |
*/
|
15 |
-
class
|
16 |
|
17 |
/**
|
18 |
* {@inheritdoc}
|
@@ -30,14 +30,14 @@ class Wbcr_FactoryLogger114_Lite extends \WBCR\Factory_Templates_101\ImpressiveL
|
|
30 |
public $type = 'page';
|
31 |
|
32 |
/**
|
33 |
-
* @param
|
34 |
*/
|
35 |
public function __construct( $plugin ) {
|
36 |
$this->id = $plugin->getPrefix() . "logger";
|
37 |
|
38 |
-
$this->page_menu_short_description = __( 'Plugin debug report', '
|
39 |
|
40 |
-
add_action( '
|
41 |
|
42 |
parent::__construct( $plugin );
|
43 |
}
|
@@ -51,10 +51,10 @@ class Wbcr_FactoryLogger114_Lite extends \WBCR\Factory_Templates_101\ImpressiveL
|
|
51 |
public function assets( $scripts, $styles ) {
|
52 |
parent::assets( $scripts, $styles );
|
53 |
|
54 |
-
$this->styles->add(
|
55 |
-
$this->scripts->add(
|
56 |
-
$this->scripts->localize( '
|
57 |
-
'clean_logs_nonce' => wp_create_nonce( '
|
58 |
] );
|
59 |
}
|
60 |
|
@@ -62,7 +62,7 @@ class Wbcr_FactoryLogger114_Lite extends \WBCR\Factory_Templates_101\ImpressiveL
|
|
62 |
* {@inheritdoc}
|
63 |
*/
|
64 |
public function getMenuTitle() {
|
65 |
-
return __( 'Plugin Log', '
|
66 |
}
|
67 |
|
68 |
/**
|
@@ -72,32 +72,32 @@ class Wbcr_FactoryLogger114_Lite extends \WBCR\Factory_Templates_101\ImpressiveL
|
|
72 |
$buttons = "
|
73 |
<div class='btn-group'>
|
74 |
<a href='" . wp_nonce_url( $this->getActionUrl( 'export' ) ) . "'
|
75 |
-
class='button button-primary'>" . __( 'Export Debug Information', '
|
76 |
<a href='#'
|
77 |
class='button button-secondary'
|
78 |
-
onclick='
|
79 |
-
data-working='" . __( 'Working...', '
|
80 |
</a>
|
81 |
</div>";
|
82 |
?>
|
83 |
<div class="wbcr-factory-page-group-header" style="margin-top:0;">
|
84 |
-
<strong><?php _e( 'Plugin Log', '
|
85 |
<p>
|
86 |
-
<?php _e( 'In this section, you can track how the plugin works. Sending this log to the developer will help you resolve possible issues.', '
|
87 |
</p>
|
88 |
</div>
|
89 |
<div class="wbcr-factory-page-group-body" style="padding: 0 20px">
|
90 |
-
|
91 |
<div class="wbcr-log-viewer" id="wbcr-log-viewer">
|
92 |
<?php echo $this->plugin->logger->prettify() ?>
|
93 |
</div>
|
94 |
-
|
95 |
</div>
|
96 |
<?php
|
97 |
}
|
98 |
|
99 |
public function ajax_cleanup() {
|
100 |
-
check_admin_referer( '
|
101 |
|
102 |
if ( ! current_user_can( 'manage_options' ) ) {
|
103 |
wp_die( - 1 );
|
@@ -105,13 +105,13 @@ class Wbcr_FactoryLogger114_Lite extends \WBCR\Factory_Templates_101\ImpressiveL
|
|
105 |
|
106 |
if ( ! $this->plugin->logger->clean_up() ) {
|
107 |
wp_send_json_error( [
|
108 |
-
'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', '
|
109 |
'type' => 'danger',
|
110 |
] );
|
111 |
}
|
112 |
|
113 |
wp_send_json( [
|
114 |
-
'message' => esc_html__( 'Logs clean-up successfully', '
|
115 |
'type' => 'success',
|
116 |
] );
|
117 |
}
|
@@ -120,7 +120,7 @@ class Wbcr_FactoryLogger114_Lite extends \WBCR\Factory_Templates_101\ImpressiveL
|
|
120 |
* Processing log export action in form of ZIP archive.
|
121 |
*/
|
122 |
public function exportAction() {
|
123 |
-
$export = new WBCR\
|
124 |
|
125 |
if ( $export->prepare() ) {
|
126 |
$export->download( true );
|
12 |
* @copyright (c) 2020, Webcraftic
|
13 |
* @version 1.0
|
14 |
*/
|
15 |
+
class Wbcr_FactoryLogger117_Lite extends \WBCR\Factory_Templates_105\ImpressiveLite {
|
16 |
|
17 |
/**
|
18 |
* {@inheritdoc}
|
30 |
public $type = 'page';
|
31 |
|
32 |
/**
|
33 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
34 |
*/
|
35 |
public function __construct( $plugin ) {
|
36 |
$this->id = $plugin->getPrefix() . "logger";
|
37 |
|
38 |
+
$this->page_menu_short_description = __( 'Plugin debug report', 'wbcr_factory_logger_117' );
|
39 |
|
40 |
+
add_action( 'wp_ajax_wbcr_factory_logger_117_logs_cleanup', [ $this, 'ajax_cleanup' ] );
|
41 |
|
42 |
parent::__construct( $plugin );
|
43 |
}
|
51 |
public function assets( $scripts, $styles ) {
|
52 |
parent::assets( $scripts, $styles );
|
53 |
|
54 |
+
$this->styles->add( FACTORY_LOGGER_117_URL . '/assets/css/logger.css' );
|
55 |
+
$this->scripts->add( FACTORY_LOGGER_117_URL . '/assets/js/logger.js', [ 'jquery' ], 'wbcr_factory_logger_117', FACTORY_LOGGER_117_VERSION );
|
56 |
+
$this->scripts->localize( 'wbcr_factory_logger_117', [
|
57 |
+
'clean_logs_nonce' => wp_create_nonce( 'wbcr_factory_logger_117_clean_logs' ),
|
58 |
] );
|
59 |
}
|
60 |
|
62 |
* {@inheritdoc}
|
63 |
*/
|
64 |
public function getMenuTitle() {
|
65 |
+
return __( 'Plugin Log', 'wbcr_factory_logger_117' );
|
66 |
}
|
67 |
|
68 |
/**
|
72 |
$buttons = "
|
73 |
<div class='btn-group'>
|
74 |
<a href='" . wp_nonce_url( $this->getActionUrl( 'export' ) ) . "'
|
75 |
+
class='button button-primary'>" . __( 'Export Debug Information', 'wbcr_factory_logger_117' ) . "</a>
|
76 |
<a href='#'
|
77 |
class='button button-secondary'
|
78 |
+
onclick='wbcr_factory_logger_117_LogCleanup(this);return false;'
|
79 |
+
data-working='" . __( 'Working...', 'wbcr_factory_logger_117' ) . "'>" . sprintf( __( 'Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_117' ), $this->get_log_size_formatted() ) . "
|
80 |
</a>
|
81 |
</div>";
|
82 |
?>
|
83 |
<div class="wbcr-factory-page-group-header" style="margin-top:0;">
|
84 |
+
<strong><?php _e( 'Plugin Log', 'wbcr_factory_logger_117' ) ?></strong>
|
85 |
<p>
|
86 |
+
<?php _e( 'In this section, you can track how the plugin works. Sending this log to the developer will help you resolve possible issues.', 'wbcr_factory_logger_117' ) ?>
|
87 |
</p>
|
88 |
</div>
|
89 |
<div class="wbcr-factory-page-group-body" style="padding: 0 20px">
|
90 |
+
<?php echo $buttons; ?>
|
91 |
<div class="wbcr-log-viewer" id="wbcr-log-viewer">
|
92 |
<?php echo $this->plugin->logger->prettify() ?>
|
93 |
</div>
|
94 |
+
<?php echo $buttons; ?>
|
95 |
</div>
|
96 |
<?php
|
97 |
}
|
98 |
|
99 |
public function ajax_cleanup() {
|
100 |
+
check_admin_referer( 'wbcr_factory_logger_117_clean_logs', 'nonce' );
|
101 |
|
102 |
if ( ! current_user_can( 'manage_options' ) ) {
|
103 |
wp_die( - 1 );
|
105 |
|
106 |
if ( ! $this->plugin->logger->clean_up() ) {
|
107 |
wp_send_json_error( [
|
108 |
+
'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_117' ),
|
109 |
'type' => 'danger',
|
110 |
] );
|
111 |
}
|
112 |
|
113 |
wp_send_json( [
|
114 |
+
'message' => esc_html__( 'Logs clean-up successfully', 'wbcr_factory_logger_117' ),
|
115 |
'type' => 'success',
|
116 |
] );
|
117 |
}
|
120 |
* Processing log export action in form of ZIP archive.
|
121 |
*/
|
122 |
public function exportAction() {
|
123 |
+
$export = new WBCR\Factory_Logger_117\Log_Export( $this->plugin->logger );
|
124 |
|
125 |
if ( $export->prepare() ) {
|
126 |
$export->download( true );
|
libs/factory/logger/pages/class-logger-impressive-page.php
CHANGED
@@ -12,7 +12,7 @@ if( !defined('ABSPATH') ) {
|
|
12 |
* @copyright (c) 2020, Webcraftic
|
13 |
* @version 1.0
|
14 |
*/
|
15 |
-
class
|
16 |
|
17 |
/**
|
18 |
* {@inheritdoc}
|
@@ -30,16 +30,16 @@ class Wbcr_FactoryLogger114_PageBase extends \WBCR\Factory_Templates_101\Pages\P
|
|
30 |
public $type = 'page';
|
31 |
|
32 |
/**
|
33 |
-
* @param
|
34 |
*/
|
35 |
public function __construct($plugin)
|
36 |
{
|
37 |
$this->id = $plugin->getPrefix() . "logger";
|
38 |
|
39 |
-
$this->menu_title = __('Plugin Log', '
|
40 |
-
$this->page_menu_short_description = __('Plugin debug report', '
|
41 |
|
42 |
-
add_action('
|
43 |
|
44 |
parent::__construct($plugin);
|
45 |
}
|
@@ -54,10 +54,10 @@ class Wbcr_FactoryLogger114_PageBase extends \WBCR\Factory_Templates_101\Pages\P
|
|
54 |
{
|
55 |
parent::assets($scripts, $styles);
|
56 |
|
57 |
-
$this->styles->add(
|
58 |
-
$this->scripts->add(
|
59 |
-
$this->scripts->localize('
|
60 |
-
'clean_logs_nonce' => wp_create_nonce('
|
61 |
]);
|
62 |
}
|
63 |
|
@@ -66,7 +66,7 @@ class Wbcr_FactoryLogger114_PageBase extends \WBCR\Factory_Templates_101\Pages\P
|
|
66 |
*/
|
67 |
public function getMenuTitle()
|
68 |
{
|
69 |
-
return __('Plugin Log', '
|
70 |
}
|
71 |
|
72 |
/**
|
@@ -77,33 +77,33 @@ class Wbcr_FactoryLogger114_PageBase extends \WBCR\Factory_Templates_101\Pages\P
|
|
77 |
$buttons = "
|
78 |
<div class='btn-group'>
|
79 |
<a href='" . wp_nonce_url($this->getActionUrl('export')) . "'
|
80 |
-
class='button button-primary'>" . __('Export Debug Information', '
|
81 |
<a href='#'
|
82 |
class='button button-secondary'
|
83 |
-
onclick='
|
84 |
-
data-working='" . __('Working...', '
|
85 |
</a>
|
86 |
</div>";
|
87 |
?>
|
88 |
<div class="wbcr-factory-page-group-header" style="margin-top:0;">
|
89 |
-
<strong><?php _e('Plugin Log', '
|
90 |
<p>
|
91 |
-
<?php _e('In this section, you can track how the plugin works. Sending this log to the developer will help you resolve possible issues.', '
|
92 |
</p>
|
93 |
</div>
|
94 |
<div class="wbcr-factory-page-group-body" style="padding: 0 20px">
|
95 |
-
|
96 |
<div class="wbcr-log-viewer" id="wbcr-log-viewer">
|
97 |
<?php echo $this->plugin->logger->prettify() ?>
|
98 |
</div>
|
99 |
-
|
100 |
</div>
|
101 |
<?php
|
102 |
}
|
103 |
|
104 |
public function ajax_cleanup()
|
105 |
{
|
106 |
-
check_admin_referer('
|
107 |
|
108 |
if( !current_user_can('manage_options') ) {
|
109 |
wp_die(-1);
|
@@ -111,13 +111,13 @@ class Wbcr_FactoryLogger114_PageBase extends \WBCR\Factory_Templates_101\Pages\P
|
|
111 |
|
112 |
if( !$this->plugin->logger->clean_up() ) {
|
113 |
wp_send_json_error([
|
114 |
-
'message' => esc_html__('Failed to clean-up logs. Please try again later.', '
|
115 |
'type' => 'danger',
|
116 |
]);
|
117 |
}
|
118 |
|
119 |
wp_send_json([
|
120 |
-
'message' => esc_html__('Logs clean-up successfully', '
|
121 |
'type' => 'success',
|
122 |
]);
|
123 |
}
|
@@ -127,7 +127,7 @@ class Wbcr_FactoryLogger114_PageBase extends \WBCR\Factory_Templates_101\Pages\P
|
|
127 |
*/
|
128 |
public function exportAction()
|
129 |
{
|
130 |
-
$export = new WBCR\
|
131 |
|
132 |
if( $export->prepare() ) {
|
133 |
$export->download(true);
|
12 |
* @copyright (c) 2020, Webcraftic
|
13 |
* @version 1.0
|
14 |
*/
|
15 |
+
class Wbcr_FactoryLogger117_PageBase extends \WBCR\Factory_Templates_105\Pages\PageBase {
|
16 |
|
17 |
/**
|
18 |
* {@inheritdoc}
|
30 |
public $type = 'page';
|
31 |
|
32 |
/**
|
33 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
34 |
*/
|
35 |
public function __construct($plugin)
|
36 |
{
|
37 |
$this->id = $plugin->getPrefix() . "logger";
|
38 |
|
39 |
+
$this->menu_title = __('Plugin Log', 'wbcr_factory_logger_117');
|
40 |
+
$this->page_menu_short_description = __('Plugin debug report', 'wbcr_factory_logger_117');
|
41 |
|
42 |
+
add_action('wp_ajax_wbcr_factory_logger_117_logs_cleanup', [$this, 'ajax_cleanup']);
|
43 |
|
44 |
parent::__construct($plugin);
|
45 |
}
|
54 |
{
|
55 |
parent::assets($scripts, $styles);
|
56 |
|
57 |
+
$this->styles->add(FACTORY_LOGGER_117_URL . '/assets/css/logger.css');
|
58 |
+
$this->scripts->add(FACTORY_LOGGER_117_URL . '/assets/js/logger.js', ['jquery'], 'wbcr_factory_logger_117', FACTORY_LOGGER_117_VERSION);
|
59 |
+
$this->scripts->localize('wbcr_factory_logger_117', [
|
60 |
+
'clean_logs_nonce' => wp_create_nonce('wbcr_factory_logger_117_clean_logs'),
|
61 |
]);
|
62 |
}
|
63 |
|
66 |
*/
|
67 |
public function getMenuTitle()
|
68 |
{
|
69 |
+
return __('Plugin Log', 'wbcr_factory_logger_117');
|
70 |
}
|
71 |
|
72 |
/**
|
77 |
$buttons = "
|
78 |
<div class='btn-group'>
|
79 |
<a href='" . wp_nonce_url($this->getActionUrl('export')) . "'
|
80 |
+
class='button button-primary'>" . __('Export Debug Information', 'wbcr_factory_logger_117') . "</a>
|
81 |
<a href='#'
|
82 |
class='button button-secondary'
|
83 |
+
onclick='wbcr_factory_logger_117_LogCleanup(this);return false;'
|
84 |
+
data-working='" . __('Working...', 'wbcr_factory_logger_117') . "'>" . sprintf(__('Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_117'), $this->get_log_size_formatted()) . "
|
85 |
</a>
|
86 |
</div>";
|
87 |
?>
|
88 |
<div class="wbcr-factory-page-group-header" style="margin-top:0;">
|
89 |
+
<strong><?php _e('Plugin Log', 'wbcr_factory_logger_117') ?></strong>
|
90 |
<p>
|
91 |
+
<?php _e('In this section, you can track how the plugin works. Sending this log to the developer will help you resolve possible issues.', 'wbcr_factory_logger_117') ?>
|
92 |
</p>
|
93 |
</div>
|
94 |
<div class="wbcr-factory-page-group-body" style="padding: 0 20px">
|
95 |
+
<?php echo $buttons; ?>
|
96 |
<div class="wbcr-log-viewer" id="wbcr-log-viewer">
|
97 |
<?php echo $this->plugin->logger->prettify() ?>
|
98 |
</div>
|
99 |
+
<?php echo $buttons; ?>
|
100 |
</div>
|
101 |
<?php
|
102 |
}
|
103 |
|
104 |
public function ajax_cleanup()
|
105 |
{
|
106 |
+
check_admin_referer('wbcr_factory_logger_117_clean_logs', 'nonce');
|
107 |
|
108 |
if( !current_user_can('manage_options') ) {
|
109 |
wp_die(-1);
|
111 |
|
112 |
if( !$this->plugin->logger->clean_up() ) {
|
113 |
wp_send_json_error([
|
114 |
+
'message' => esc_html__('Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_117'),
|
115 |
'type' => 'danger',
|
116 |
]);
|
117 |
}
|
118 |
|
119 |
wp_send_json([
|
120 |
+
'message' => esc_html__('Logs clean-up successfully', 'wbcr_factory_logger_117'),
|
121 |
'type' => 'success',
|
122 |
]);
|
123 |
}
|
127 |
*/
|
128 |
public function exportAction()
|
129 |
{
|
130 |
+
$export = new WBCR\Factory_Logger_117\Log_Export($this->plugin->logger);
|
131 |
|
132 |
if( $export->prepare() ) {
|
133 |
$export->download(true);
|
libs/factory/pages/boot.php
CHANGED
@@ -19,25 +19,25 @@ 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 |
|
43 |
|
19 |
return;
|
20 |
}
|
21 |
|
22 |
+
if( defined('FACTORY_PAGES_451_LOADED') ) {
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
+
define('FACTORY_PAGES_451_LOADED', true);
|
27 |
|
28 |
+
define('FACTORY_PAGES_451_VERSION', '4.5.1');
|
29 |
|
30 |
+
define('FACTORY_PAGES_451_DIR', dirname(__FILE__));
|
31 |
+
define('FACTORY_PAGES_451_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_451', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
38 |
|
39 |
+
require(FACTORY_PAGES_451_DIR . '/pages.php');
|
40 |
+
require(FACTORY_PAGES_451_DIR . '/includes/page.class.php');
|
41 |
+
require(FACTORY_PAGES_451_DIR . '/includes/admin-page.class.php');
|
42 |
|
43 |
|
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_FactoryPages448_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_FactoryPages448_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_FactoryPages448_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_FactoryPages451_AdminPage') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryPages451_AdminPage extends Wbcr_FactoryPages451_Page {
|
20 |
|
21 |
/**
|
22 |
* Visible page title.
|
209 |
*/
|
210 |
public $add_link_to_plugin_actions = false;
|
211 |
|
212 |
+
public function __construct(Wbcr_Factory452_Plugin $plugin)
|
213 |
{
|
214 |
parent::__construct($plugin);
|
215 |
$this->configure();
|
325 |
{
|
326 |
$result_id = $this->getResultId();
|
327 |
|
328 |
+
$this->hidden = apply_filters('wbcr_factory_452_page_is_hidden_' . $result_id, $this->hidden);
|
329 |
|
330 |
if( $this->hidden ) {
|
331 |
return;
|
332 |
}
|
333 |
|
334 |
+
$this->internal = apply_filters('wbcr_factory_452_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_452_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_FactoryPages448_Page' ) ) {
|
|
30 |
* Чтобы не было конфликтов с другими плагинами, используйте префиксы.
|
31 |
*
|
32 |
* @since 1.0.0
|
33 |
-
* @see
|
34 |
*
|
35 |
* @var string
|
36 |
*/
|
@@ -39,7 +39,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages448_Page' ) ) {
|
|
39 |
/**
|
40 |
* Current Factory Plugin.
|
41 |
*
|
42 |
-
* @var
|
43 |
*/
|
44 |
public $plugin;
|
45 |
|
@@ -51,11 +51,11 @@ if ( ! class_exists( 'Wbcr_FactoryPages448_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_FactoryPages448_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_FactoryPages451_Page' ) ) {
|
18 |
|
19 |
+
class Wbcr_FactoryPages451_Page {
|
20 |
|
21 |
|
22 |
/**
|
30 |
* Чтобы не было конфликтов с другими плагинами, используйте префиксы.
|
31 |
*
|
32 |
* @since 1.0.0
|
33 |
+
* @see FactoryPages451_AdminPage
|
34 |
*
|
35 |
* @var string
|
36 |
*/
|
39 |
/**
|
40 |
* Current Factory Plugin.
|
41 |
*
|
42 |
+
* @var Wbcr_Factory452_Plugin
|
43 |
*/
|
44 |
public $plugin;
|
45 |
|
51 |
//private $default_actions = array();
|
52 |
|
53 |
/**
|
54 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
55 |
*
|
56 |
* @throws Exception
|
57 |
*/
|
58 |
+
public function __construct( Wbcr_Factory452_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_451/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_448-fr_FR.mo → wbcr_factory_pages_451-fr_FR.mo}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_448-fr_FR.po → wbcr_factory_pages_451-fr_FR.po}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_448-ru_RU.mo → wbcr_factory_pages_451-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_448-ru_RU.po → wbcr_factory_pages_451-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_FactoryPages451::actionAdminMenu');
|
18 |
+
add_action('network_admin_menu', 'Wbcr_FactoryPages451::actionAdminMenu');
|
19 |
|
20 |
+
if( !class_exists('Wbcr_FactoryPages451') ) {
|
21 |
/**
|
22 |
* A base class to manage pages.
|
23 |
*
|
24 |
* @since 1.0.0
|
25 |
*/
|
26 |
+
class Wbcr_FactoryPages451 {
|
27 |
|
28 |
/**
|
29 |
+
* @var Wbcr_FactoryPages451_Page[]
|
30 |
*/
|
31 |
private static $pages = array();
|
32 |
|
33 |
/**
|
34 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
35 |
* @param $class_name
|
36 |
*/
|
37 |
public static function register($plugin, $class_name)
|
59 |
}
|
60 |
}
|
61 |
|
62 |
+
public static function getPageUrl(Wbcr_Factory452_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_Factory452_Plugin $plugin
|
79 |
* @return array
|
80 |
*/
|
81 |
public static function getIds($plugin)
|
93 |
}
|
94 |
}
|
95 |
|
96 |
+
if( !function_exists('wbcr_factory_pages_451_get_page_id') ) {
|
97 |
/**
|
98 |
*
|
99 |
+
* @param Wbcr_Factory452_Plugin $plugin
|
100 |
* @param string $page_id
|
101 |
* @return string
|
102 |
*/
|
103 |
+
function wbcr_factory_pages_451_get_page_id($plugin, $page_id)
|
104 |
{
|
105 |
return $page_id . '-' . $plugin->getPluginName();
|
106 |
}
|
libs/factory/templates/assets/css/clearfy-base.css
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
#WBCR {
|
9 |
/* subscribe widget */
|
10 |
}
|
11 |
-
#WBCR .wbcr-factory-templates-
|
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-templates-
|
30 |
padding: 30px 80px;
|
31 |
}
|
32 |
-
#WBCR .wbcr-factory-templates-
|
33 |
margin: 0 0 20px;
|
34 |
}
|
35 |
-
#WBCR .wbcr-factory-templates-
|
36 |
border: 2px dashed #8bc34a;
|
37 |
background: #fff;
|
38 |
padding: 20px;
|
39 |
}
|
40 |
-
#WBCR .wbcr-factory-templates-
|
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-templates-
|
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-templates-
|
65 |
outline: none;
|
66 |
border: 0;
|
67 |
}
|
68 |
-
#WBCR .wbcr-factory-templates-
|
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-templates-
|
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-templates-
|
93 |
outline: none;
|
94 |
border: 0;
|
95 |
}
|
96 |
-
#WBCR .wbcr-factory-templates-
|
97 |
background: #fff;
|
98 |
color: #353535;
|
99 |
font-weight: 600;
|
100 |
border: 2px dashed #8bc34a;
|
101 |
}
|
102 |
-
#WBCR .wbcr-factory-templates-
|
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-templates-
|
114 |
position: relative;
|
115 |
margin-bottom: 20px;
|
116 |
}
|
117 |
-
#WBCR .wbcr-factory-templates-
|
118 |
font-size: 15px;
|
119 |
padding: 7px;
|
120 |
padding-left: 20px;
|
121 |
}
|
122 |
-
#WBCR .wbcr-factory-templates-
|
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-templates-
|
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-templates-
|
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-templates-
|
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-templates-
|
224 |
padding: 10px 80px;
|
225 |
}
|
226 |
-
#WBCR .wbcr-factory-templates-
|
227 |
padding: 10px;
|
228 |
}
|
229 |
-
#WBCR .wbcr-factory-templates-
|
230 |
margin: 0 0 20px;
|
231 |
padding: 10px 0;
|
232 |
font-size: 13px;
|
233 |
font-weight: 600;
|
234 |
}
|
235 |
-
#WBCR .wbcr-factory-templates-
|
236 |
margin-bottom: 20px;
|
237 |
}
|
238 |
-
#WBCR .wbcr-factory-templates-
|
239 |
font-size: 13px;
|
240 |
padding: 2px;
|
241 |
padding-left: 10px;
|
242 |
}
|
243 |
-
#WBCR .wbcr-factory-templates-
|
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-templates-
|
251 |
font-weight: 700;
|
252 |
line-height: 16px;
|
253 |
font-size: 12px;
|
8 |
#WBCR {
|
9 |
/* subscribe widget */
|
10 |
}
|
11 |
+
#WBCR .wbcr-factory-templates-105-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-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion {
|
30 |
padding: 30px 80px;
|
31 |
}
|
32 |
+
#WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion h3 {
|
33 |
margin: 0 0 20px;
|
34 |
}
|
35 |
+
#WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion .wbcr-factory-inner-contanier {
|
36 |
border: 2px dashed #8bc34a;
|
37 |
background: #fff;
|
38 |
padding: 20px;
|
39 |
}
|
40 |
+
#WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-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-templates-105-impressive-page-template .wbcr-factory-templates-105-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-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion .wbcr-factory-activate-premium:focus {
|
65 |
outline: none;
|
66 |
border: 0;
|
67 |
}
|
68 |
+
#WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-templates-105-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-templates-105-impressive-page-template .wbcr-factory-templates-105-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-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-suggetion .wbcr-factory-purchase-premium:focus {
|
93 |
outline: none;
|
94 |
border: 0;
|
95 |
}
|
96 |
+
#WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion {
|
97 |
background: #fff;
|
98 |
color: #353535;
|
99 |
font-weight: 600;
|
100 |
border: 2px dashed #8bc34a;
|
101 |
}
|
102 |
+
#WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-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-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion ul {
|
114 |
position: relative;
|
115 |
margin-bottom: 20px;
|
116 |
}
|
117 |
+
#WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion ul li {
|
118 |
font-size: 15px;
|
119 |
padding: 7px;
|
120 |
padding-left: 20px;
|
121 |
}
|
122 |
+
#WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-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-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-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-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-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-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-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-templates-105-impressive-page-template .wbcr-factory-templates-105-multisite-pro-suggetion {
|
224 |
padding: 10px 80px;
|
225 |
}
|
226 |
+
#WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion {
|
227 |
padding: 10px;
|
228 |
}
|
229 |
+
#WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-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-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion ul {
|
236 |
margin-bottom: 20px;
|
237 |
}
|
238 |
+
#WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion ul li {
|
239 |
font-size: 13px;
|
240 |
padding: 2px;
|
241 |
padding-left: 10px;
|
242 |
}
|
243 |
+
#WBCR .wbcr-factory-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-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-templates-105-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-105-pro-suggettion .wbcr-factory-purchase-premium {
|
251 |
font-weight: 700;
|
252 |
line-height: 16px;
|
253 |
font-size: 12px;
|
libs/factory/templates/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-templates-
|
7 |
padding: 0 20px 20px;
|
8 |
text-align: center;
|
9 |
}
|
10 |
-
#WBCR .wbc-factory-templates-
|
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-templates-
|
22 |
margin-left: 0;
|
23 |
}
|
24 |
-
#WBCR .wbc-factory-templates-
|
25 |
position: absolute;
|
26 |
bottom: 0;
|
27 |
right: 0;
|
28 |
left: 0;
|
29 |
}
|
30 |
-
#WBCR .wbc-factory-templates-
|
31 |
min-height: 163px;
|
32 |
}
|
33 |
-
#WBCR .wbc-factory-templates-
|
34 |
-
#WBCR .wbc-factory-templates-
|
35 |
margin-right: 0 !important;
|
36 |
}
|
37 |
-
#WBCR .wbc-factory-templates-
|
38 |
font-size: 17px;
|
39 |
margin-top: 0 !important;
|
40 |
}
|
41 |
-
#WBCR .wbc-factory-templates-
|
42 |
float: right;
|
43 |
}
|
44 |
-
#WBCR .wbc-factory-templates-
|
45 |
float: right;
|
46 |
margin-left: 5px;
|
47 |
}
|
48 |
-
#WBCR .wbc-factory-templates-
|
49 |
-
#WBCR .wbc-factory-templates-
|
50 |
font-size: 16px !important;
|
51 |
line-height: 1.5 !important;
|
52 |
color: #62696f;
|
53 |
}
|
54 |
-
#WBCR .wbc-factory-templates-
|
55 |
color: #5c5d5f;
|
56 |
text-decoration: none;
|
57 |
font-weight: 600;
|
58 |
font-size: 15px;
|
59 |
}
|
60 |
-
#WBCR .wbc-factory-templates-
|
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-templates-
|
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-templates-
|
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-templates-
|
109 |
border-color: #e8d7b2;
|
110 |
background-color: #fff9eb;
|
111 |
}
|
112 |
-
#WBCR .wbc-factory-templates-
|
113 |
background-color: #f1f1f1;
|
114 |
}
|
115 |
-
#WBCR .wbc-factory-templates-
|
116 |
color: #ababab;
|
117 |
text-decoration: none;
|
118 |
font-weight: 600;
|
119 |
font-size: 15px;
|
120 |
}
|
121 |
-
#WBCR .wbc-factory-templates-
|
122 |
opacity: 0.3;
|
123 |
}
|
124 |
-
#WBCR .wbc-factory-templates-
|
125 |
color: #afafaf;
|
126 |
}
|
127 |
-
#WBCR .wbc-factory-templates-
|
128 |
background-color: #f9f2f1;
|
129 |
}
|
130 |
@media screen and (max-width: 1750px) {
|
131 |
-
#WBCR .wbc-factory-templates-
|
132 |
width: 49%;
|
133 |
}
|
134 |
}
|
135 |
@media screen and (max-width: 1350px) {
|
136 |
-
#WBCR .wbc-factory-templates-
|
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-templates-105-components {
|
7 |
padding: 0 20px 20px;
|
8 |
text-align: center;
|
9 |
}
|
10 |
+
#WBCR .wbc-factory-templates-105-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-templates-105-components .plugin-card:first-child {
|
22 |
margin-left: 0;
|
23 |
}
|
24 |
+
#WBCR .wbc-factory-templates-105-components .plugin-card .plugin-card-bottom {
|
25 |
position: absolute;
|
26 |
bottom: 0;
|
27 |
right: 0;
|
28 |
left: 0;
|
29 |
}
|
30 |
+
#WBCR .wbc-factory-templates-105-components .plugin-card .plugin-card-top {
|
31 |
min-height: 163px;
|
32 |
}
|
33 |
+
#WBCR .wbc-factory-templates-105-components .plugin-card .desc,
|
34 |
+
#WBCR .wbc-factory-templates-105-components .plugin-card .name {
|
35 |
margin-right: 0 !important;
|
36 |
}
|
37 |
+
#WBCR .wbc-factory-templates-105-components .plugin-card .name h3 {
|
38 |
font-size: 17px;
|
39 |
margin-top: 0 !important;
|
40 |
}
|
41 |
+
#WBCR .wbc-factory-templates-105-components .plugin-card .install-now {
|
42 |
float: right;
|
43 |
}
|
44 |
+
#WBCR .wbc-factory-templates-105-components .plugin-card .delete-now {
|
45 |
float: right;
|
46 |
margin-left: 5px;
|
47 |
}
|
48 |
+
#WBCR .wbc-factory-templates-105-components .plugin-card .delete-now .dashicons,
|
49 |
+
#WBCR .wbc-factory-templates-105-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-templates-105-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-templates-105-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-templates-105-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-templates-105-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-templates-105-components .plugin-card.premium {
|
109 |
border-color: #e8d7b2;
|
110 |
background-color: #fff9eb;
|
111 |
}
|
112 |
+
#WBCR .wbc-factory-templates-105-components .plugin-card.plugin-status-deactive {
|
113 |
background-color: #f1f1f1;
|
114 |
}
|
115 |
+
#WBCR .wbc-factory-templates-105-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-templates-105-components .plugin-card.plugin-status-deactive .plugin-icon {
|
122 |
opacity: 0.3;
|
123 |
}
|
124 |
+
#WBCR .wbc-factory-templates-105-components .plugin-card.plugin-status-deactive .desc {
|
125 |
color: #afafaf;
|
126 |
}
|
127 |
+
#WBCR .wbc-factory-templates-105-components .plugin-card.plugin-status-deactive.premium {
|
128 |
background-color: #f9f2f1;
|
129 |
}
|
130 |
@media screen and (max-width: 1750px) {
|
131 |
+
#WBCR .wbc-factory-templates-105-components .plugin-card {
|
132 |
width: 49%;
|
133 |
}
|
134 |
}
|
135 |
@media screen and (max-width: 1350px) {
|
136 |
+
#WBCR .wbc-factory-templates-105-components .plugin-card {
|
137 |
width: 100%;
|
138 |
}
|
139 |
}
|
libs/factory/templates/assets/css/libs/autocomplete.css
CHANGED
@@ -5,44 +5,44 @@
|
|
5 |
*
|
6 |
* @since 2.2.0
|
7 |
*/
|
8 |
-
#wbcr-factory-templates-
|
9 |
width: 100%;
|
10 |
box-sizing: border-box;
|
11 |
border-color: #d6d4d4;
|
12 |
}
|
13 |
-
#wbcr-factory-templates-
|
14 |
-
#wbcr-factory-templates-
|
15 |
-
#wbcr-factory-templates-
|
16 |
color: #eae9e9;
|
17 |
}
|
18 |
-
#wbcr-factory-templates-
|
19 |
padding: 10px;
|
20 |
}
|
21 |
-
#wbcr-factory-templates-
|
22 |
display: block !important;
|
23 |
}
|
24 |
-
.wbcr-factory-templates-
|
25 |
border: 1px solid #999;
|
26 |
background: #FFF;
|
27 |
overflow: auto;
|
28 |
}
|
29 |
-
.wbcr-factory-templates-
|
30 |
padding: 2px 5px;
|
31 |
white-space: nowrap;
|
32 |
overflow: hidden;
|
33 |
cursor: pointer;
|
34 |
}
|
35 |
-
.wbcr-factory-templates-
|
36 |
background: #F0F0F0;
|
37 |
}
|
38 |
-
.wbcr-factory-templates-
|
39 |
font-weight: normal;
|
40 |
color: #3399FF;
|
41 |
}
|
42 |
-
.wbcr-factory-templates-
|
43 |
padding: 2px 5px;
|
44 |
}
|
45 |
-
.wbcr-factory-templates-
|
46 |
display: block;
|
47 |
border-bottom: 1px solid #000;
|
48 |
}
|
5 |
*
|
6 |
* @since 2.2.0
|
7 |
*/
|
8 |
+
#wbcr-factory-templates-105__search_options_form #wbcr-factory-templates-105__autocomplete {
|
9 |
width: 100%;
|
10 |
box-sizing: border-box;
|
11 |
border-color: #d6d4d4;
|
12 |
}
|
13 |
+
#wbcr-factory-templates-105__search_options_form #wbcr-factory-templates-105__autocomplete::placeholder,
|
14 |
+
#wbcr-factory-templates-105__search_options_form #wbcr-factory-templates-105__autocomplete::-moz-placeholder,
|
15 |
+
#wbcr-factory-templates-105__search_options_form #wbcr-factory-templates-105__autocomplete::-webkit-input-placeholder {
|
16 |
color: #eae9e9;
|
17 |
}
|
18 |
+
#wbcr-factory-templates-105__search_options_form.wbcr-factory-templates-105__autocomplete-wrap {
|
19 |
padding: 10px;
|
20 |
}
|
21 |
+
#wbcr-factory-templates-105__search_options_form .wbcr-factory-templates-105__autocomplete-label {
|
22 |
display: block !important;
|
23 |
}
|
24 |
+
.wbcr-factory-templates-105__autocomplete-suggestions {
|
25 |
border: 1px solid #999;
|
26 |
background: #FFF;
|
27 |
overflow: auto;
|
28 |
}
|
29 |
+
.wbcr-factory-templates-105__autocomplete-suggestion {
|
30 |
padding: 2px 5px;
|
31 |
white-space: nowrap;
|
32 |
overflow: hidden;
|
33 |
cursor: pointer;
|
34 |
}
|
35 |
+
.wbcr-factory-templates-105__autocomplete-selected {
|
36 |
background: #F0F0F0;
|
37 |
}
|
38 |
+
.wbcr-factory-templates-105__autocomplete-suggestions strong {
|
39 |
font-weight: normal;
|
40 |
color: #3399FF;
|
41 |
}
|
42 |
+
.wbcr-factory-templates-105__autocomplete-group {
|
43 |
padding: 2px 5px;
|
44 |
}
|
45 |
+
.wbcr-factory-templates-105__autocomplete-group strong {
|
46 |
display: block;
|
47 |
border-bottom: 1px solid #000;
|
48 |
}
|
libs/factory/templates/assets/css/page-setup.css
CHANGED
@@ -2,13 +2,13 @@
|
|
2 |
margin: 0;
|
3 |
padding: 0;
|
4 |
}
|
5 |
-
.w-factory-templates-
|
6 |
text-align: right;
|
7 |
padding: 10px;
|
8 |
background: #f7f7f7;
|
9 |
border-top: 1px solid #e8e8e8;
|
10 |
}
|
11 |
-
.w-factory-templates-
|
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-templates-
|
20 |
-
.w-factory-templates-
|
21 |
-
.w-factory-templates-
|
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-templates-
|
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-templates-
|
35 |
-
.w-factory-templates-
|
36 |
-
.w-factory-templates-
|
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-templates-
|
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-templates-
|
50 |
-
.w-factory-templates-
|
51 |
padding: 30px;
|
52 |
}
|
53 |
-
.w-factory-templates-
|
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-templates-
|
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-templates-
|
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-templates-
|
87 |
border-color: #ff1c40 !important;
|
88 |
color: #222;
|
89 |
font-weight: 700;
|
90 |
}
|
91 |
-
.w-factory-templates-
|
92 |
border-color: #ff1c40 !important;
|
93 |
}
|
94 |
-
.w-factory-templates-
|
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-templates-
|
103 |
-
.w-factory-templates-
|
104 |
color: #111;
|
105 |
text-decoration: underline;
|
106 |
}
|
107 |
-
/*.w-factory-templates-
|
108 |
border-color: #f57d4f;
|
109 |
color: #f57d4f
|
110 |
}
|
111 |
|
112 |
-
.w-factory-templates-
|
113 |
border-color: #f57d4f;
|
114 |
background: #f57d4f
|
115 |
}*/
|
116 |
-
.w-factory-templates-
|
117 |
overflow: hidden;
|
118 |
margin: 20px 0 0;
|
119 |
position: relative;
|
120 |
}
|
121 |
-
.w-factory-templates-
|
122 |
margin-bottom: 0;
|
123 |
}
|
124 |
-
.w-factory-templates-
|
125 |
margin-top: 0;
|
126 |
}
|
127 |
-
.w-factory-templates-
|
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-templates-
|
135 |
text-align: center;
|
136 |
}
|
137 |
-
.w-factory-templates-
|
138 |
max-width: 250px;
|
139 |
}
|
140 |
-
.w-factory-templates-
|
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-templates-
|
148 |
font-size: 1em;
|
149 |
line-height: 1.75;
|
150 |
color: #666;
|
151 |
}
|
152 |
-
.w-factory-templates-
|
153 |
background: #f1f1f1;
|
154 |
}
|
155 |
-
.w-factory-templates-
|
156 |
-
.w-factory-templates-
|
157 |
padding: 10px 15px;
|
158 |
}
|
159 |
-
.w-factory-templates-
|
160 |
-
.w-factory-templates-
|
161 |
-
.w-factory-templates-
|
162 |
-
.w-factory-templates-
|
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-templates-
|
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-templates-
|
178 |
font-size: 22px !important;
|
179 |
}
|
180 |
-
.w-factory-templates-
|
181 |
color: #f57d4f;
|
182 |
}
|
183 |
-
.w-factory-templates-
|
184 |
-
.w-factory-templates-
|
185 |
color: #111;
|
186 |
}
|
187 |
-
.w-factory-templates-
|
188 |
width: 100%;
|
189 |
font-size: 0.92em;
|
190 |
}
|
191 |
-
.w-factory-templates-
|
192 |
padding: 0;
|
193 |
text-align: center;
|
194 |
width: auto;
|
195 |
vertical-align: middle;
|
196 |
}
|
197 |
-
.w-factory-templates-
|
198 |
border: 1px solid #f5f5f5;
|
199 |
padding: 6px;
|
200 |
text-align: center;
|
201 |
vertical-align: middle;
|
202 |
}
|
203 |
-
.w-factory-templates-
|
204 |
outline: 0;
|
205 |
border: 0;
|
206 |
padding: 0;
|
@@ -208,18 +208,18 @@
|
|
208 |
text-align: center;
|
209 |
width: 100%;
|
210 |
}
|
211 |
-
.w-factory-templates-
|
212 |
cursor: move;
|
213 |
color: #ccc;
|
214 |
}
|
215 |
-
.w-factory-templates-
|
216 |
content: "\f333";
|
217 |
font-family: dashicons;
|
218 |
}
|
219 |
-
.w-factory-templates-
|
220 |
background: #f5f5f5;
|
221 |
}
|
222 |
-
.w-factory-templates-
|
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-templates-
|
234 |
content: "\f502";
|
235 |
font-family: dashicons;
|
236 |
position: absolute;
|
237 |
left: 0;
|
238 |
top: 0;
|
239 |
}
|
240 |
-
.w-factory-templates-
|
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-templates-
|
252 |
content: "\f182";
|
253 |
font-family: dashicons;
|
254 |
position: absolute;
|
255 |
left: 0;
|
256 |
top: 0;
|
257 |
}
|
258 |
-
.w-factory-templates-
|
259 |
width: 100%;
|
260 |
border-top: 1px solid #eee;
|
261 |
}
|
262 |
-
.w-factory-templates-
|
263 |
display: none;
|
264 |
}
|
265 |
-
.w-factory-templates-
|
266 |
width: 30%;
|
267 |
font-weight: 700;
|
268 |
}
|
269 |
-
.w-factory-templates-
|
270 |
-
.w-factory-templates-
|
271 |
padding: 14px 0;
|
272 |
border-bottom: 1px solid #eee;
|
273 |
}
|
274 |
-
.w-factory-templates-
|
275 |
-
.w-factory-templates-
|
276 |
padding-right: 9px;
|
277 |
}
|
278 |
-
.w-factory-templates-
|
279 |
padding-top: 0;
|
280 |
}
|
281 |
-
.w-factory-templates-
|
282 |
color: #777;
|
283 |
margin: 6px 0 0 24px;
|
284 |
line-height: 1.75;
|
285 |
}
|
286 |
-
.w-factory-templates-
|
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-templates-
|
294 |
line-height: 1;
|
295 |
}
|
296 |
@media screen and (max-width: 782px) {
|
297 |
-
.w-factory-templates-
|
298 |
width: auto;
|
299 |
}
|
300 |
}
|
301 |
-
.w-factory-templates-
|
302 |
float: right;
|
303 |
}
|
304 |
-
.w-factory-templates-
|
305 |
overflow: hidden;
|
306 |
margin: 0 0 24px;
|
307 |
padding-bottom: 2px;
|
308 |
}
|
309 |
-
.w-factory-templates-
|
310 |
margin-bottom: 12px;
|
311 |
}
|
312 |
-
.w-factory-templates-
|
313 |
float: left;
|
314 |
width: 50%;
|
315 |
box-sizing: border-box;
|
316 |
}
|
317 |
-
.w-factory-templates-
|
318 |
float: right;
|
319 |
width: 50%;
|
320 |
box-sizing: border-box;
|
321 |
}
|
322 |
-
.w-factory-templates-
|
323 |
padding: 0 2em 0 0;
|
324 |
list-style: none outside;
|
325 |
margin: 0;
|
326 |
}
|
327 |
-
.w-factory-templates-
|
328 |
display: block;
|
329 |
padding: 0 0 0.75em;
|
330 |
}
|
331 |
-
.w-factory-templates-
|
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-templates-
|
346 |
-
.w-factory-templates-
|
347 |
-
.w-factory-templates-
|
348 |
background: #f5f5f5;
|
349 |
border-color: #aaa;
|
350 |
}
|
351 |
-
.w-factory-templates-
|
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-templates-
|
359 |
-
.w-factory-templates-
|
360 |
-
.w-factory-templates-
|
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-templates-
|
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-templates-
|
378 |
content: "\f105";
|
379 |
}
|
380 |
-
.w-factory-templates-
|
381 |
content: "\f126";
|
382 |
}
|
383 |
-
.w-factory-templates-
|
384 |
content: "\f465";
|
385 |
}
|
386 |
-
.w-factory-templates-
|
387 |
-
.w-factory-templates-
|
388 |
padding: 24px 24px 0;
|
389 |
margin: 0 0 24px;
|
390 |
overflow: hidden;
|
391 |
background: #f5f5f5;
|
392 |
}
|
393 |
-
.w-factory-templates-
|
394 |
-
.w-factory-templates-
|
395 |
padding: 0;
|
396 |
margin: 0 0 12px;
|
397 |
}
|
398 |
-
.w-factory-templates-
|
399 |
-
.w-factory-templates-
|
400 |
-
.w-factory-templates-
|
401 |
-
.w-factory-templates-
|
402 |
margin: 0 0 24px;
|
403 |
}
|
404 |
-
.w-factory-templates-
|
405 |
opacity: 0;
|
406 |
position: absolute;
|
407 |
left: -9999px;
|
408 |
}
|
409 |
-
.w-factory-templates-
|
410 |
position: relative;
|
411 |
display: inline-block;
|
412 |
padding-left: 28px;
|
413 |
}
|
414 |
-
.w-factory-templates-
|
415 |
-
.w-factory-templates-
|
416 |
position: absolute;
|
417 |
content: "";
|
418 |
display: inline-block;
|
419 |
}
|
420 |
-
.w-factory-templates-
|
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-templates-
|
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-templates-
|
442 |
content: none;
|
443 |
}
|
444 |
-
.w-factory-templates-
|
445 |
content: "";
|
446 |
}
|
447 |
-
.w-factory-templates-
|
448 |
outline: #3b99fc auto 5px;
|
449 |
}
|
450 |
-
.w-factory-templates-
|
451 |
background: #935687;
|
452 |
border-color: #935687;
|
453 |
}
|
2 |
margin: 0;
|
3 |
padding: 0;
|
4 |
}
|
5 |
+
.w-factory-templates-105__form-buttons {
|
6 |
text-align: right;
|
7 |
padding: 10px;
|
8 |
background: #f7f7f7;
|
9 |
border-top: 1px solid #e8e8e8;
|
10 |
}
|
11 |
+
.w-factory-templates-105__form-buttons .w-factory-templates-105__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-templates-105__form-buttons .w-factory-templates-105__skip-button:active,
|
20 |
+
.w-factory-templates-105__form-buttons .w-factory-templates-105__skip-button:hover,
|
21 |
+
.w-factory-templates-105__form-buttons .w-factory-templates-105__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-templates-105__form-buttons .w-factory-templates-105__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-templates-105__form-buttons .w-factory-templates-105__continue-button:active,
|
35 |
+
.w-factory-templates-105__form-buttons .w-factory-templates-105__continue-button:hover,
|
36 |
+
.w-factory-templates-105__form-buttons .w-factory-templates-105__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-templates-105-setup {
|
42 |
text-align: center;
|
43 |
max-width: 900px;
|
44 |
margin: 65px auto 24px;
|
46 |
background: #f1f1f1;
|
47 |
padding: 0;
|
48 |
}
|
49 |
+
.w-factory-templates-105-setup__inner-wrap,
|
50 |
+
.w-factory-templates-105__setup-form .factory-form-layout {
|
51 |
padding: 30px;
|
52 |
}
|
53 |
+
.w-factory-templates-105-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-templates-105-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-templates-105-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-templates-105-setup-steps li.active {
|
87 |
border-color: #ff1c40 !important;
|
88 |
color: #222;
|
89 |
font-weight: 700;
|
90 |
}
|
91 |
+
.w-factory-templates-105-setup-steps li.active::before {
|
92 |
border-color: #ff1c40 !important;
|
93 |
}
|
94 |
+
.w-factory-templates-105-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-templates-105-setup-steps li a:focus,
|
103 |
+
.w-factory-templates-105-setup-steps li a:hover {
|
104 |
color: #111;
|
105 |
text-decoration: underline;
|
106 |
}
|
107 |
+
/*.w-factory-templates-105-setup-steps li.done {
|
108 |
border-color: #f57d4f;
|
109 |
color: #f57d4f
|
110 |
}
|
111 |
|
112 |
+
.w-factory-templates-105-setup-steps li.done::before {
|
113 |
border-color: #f57d4f;
|
114 |
background: #f57d4f
|
115 |
}*/
|
116 |
+
.w-factory-templates-105-setup .w-factory-templates-105-setup-actions {
|
117 |
overflow: hidden;
|
118 |
margin: 20px 0 0;
|
119 |
position: relative;
|
120 |
}
|
121 |
+
.w-factory-templates-105-setup-content p:last-child {
|
122 |
margin-bottom: 0;
|
123 |
}
|
124 |
+
.w-factory-templates-105-setup-content p.store-setup {
|
125 |
margin-top: 0;
|
126 |
}
|
127 |
+
.w-factory-templates-105-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-templates-105-logo {
|
135 |
text-align: center;
|
136 |
}
|
137 |
+
.w-factory-templates-105-logo img {
|
138 |
max-width: 250px;
|
139 |
}
|
140 |
+
.w-factory-templates-105-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-templates-105-setup-content table {
|
148 |
font-size: 1em;
|
149 |
line-height: 1.75;
|
150 |
color: #666;
|
151 |
}
|
152 |
+
.w-factory-templates-105-setup-content table thead {
|
153 |
background: #f1f1f1;
|
154 |
}
|
155 |
+
.w-factory-templates-105-setup-content table th,
|
156 |
+
.w-factory-templates-105-setup-content table td {
|
157 |
padding: 10px 15px;
|
158 |
}
|
159 |
+
.w-factory-templates-105-setup-content h1,
|
160 |
+
.w-factory-templates-105-setup-content h2,
|
161 |
+
.w-factory-templates-105-setup-content h3,
|
162 |
+
.w-factory-templates-105-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-templates-105-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-templates-105-setup-step__new_onboarding-welcome {
|
178 |
font-size: 22px !important;
|
179 |
}
|
180 |
+
.w-factory-templates-105-setup-content a {
|
181 |
color: #f57d4f;
|
182 |
}
|
183 |
+
.w-factory-templates-105-setup-content a:focus,
|
184 |
+
.w-factory-templates-105-setup-content a:hover {
|
185 |
color: #111;
|
186 |
}
|
187 |
+
.w-factory-templates-105-setup-content table.tax-rates {
|
188 |
width: 100%;
|
189 |
font-size: 0.92em;
|
190 |
}
|
191 |
+
.w-factory-templates-105-setup-content table.tax-rates th {
|
192 |
padding: 0;
|
193 |
text-align: center;
|
194 |
width: auto;
|
195 |
vertical-align: middle;
|
196 |
}
|
197 |
+
.w-factory-templates-105-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-templates-105-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-templates-105-setup-content table.tax-rates td.sort {
|
212 |
cursor: move;
|
213 |
color: #ccc;
|
214 |
}
|
215 |
+
.w-factory-templates-105-setup-content table.tax-rates td.sort::before {
|
216 |
content: "\f333";
|
217 |
font-family: dashicons;
|
218 |
}
|
219 |
+
.w-factory-templates-105-setup-content table.tax-rates td.readonly {
|
220 |
background: #f5f5f5;
|
221 |
}
|
222 |
+
.w-factory-templates-105-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-templates-105-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-templates-105-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-templates-105-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-templates-105-setup-content .w-factory-templates-105-setup-pages {
|
259 |
width: 100%;
|
260 |
border-top: 1px solid #eee;
|
261 |
}
|
262 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages thead th {
|
263 |
display: none;
|
264 |
}
|
265 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages .page-name {
|
266 |
width: 30%;
|
267 |
font-weight: 700;
|
268 |
}
|
269 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages td,
|
270 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages th {
|
271 |
padding: 14px 0;
|
272 |
border-bottom: 1px solid #eee;
|
273 |
}
|
274 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages td:first-child,
|
275 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages th:first-child {
|
276 |
padding-right: 9px;
|
277 |
}
|
278 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages th {
|
279 |
padding-top: 0;
|
280 |
}
|
281 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-pages .page-options p {
|
282 |
color: #777;
|
283 |
margin: 6px 0 0 24px;
|
284 |
line-height: 1.75;
|
285 |
}
|
286 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-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-templates-105-setup-content .w-factory-templates-105-setup-pages .page-options p label {
|
294 |
line-height: 1;
|
295 |
}
|
296 |
@media screen and (max-width: 782px) {
|
297 |
+
.w-factory-templates-105-setup-content .form-table tbody th {
|
298 |
width: auto;
|
299 |
}
|
300 |
}
|
301 |
+
.w-factory-templates-105-setup-content .twitter-share-button {
|
302 |
float: right;
|
303 |
}
|
304 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps {
|
305 |
overflow: hidden;
|
306 |
margin: 0 0 24px;
|
307 |
padding-bottom: 2px;
|
308 |
}
|
309 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps h2 {
|
310 |
margin-bottom: 12px;
|
311 |
}
|
312 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps .w-factory-templates-105-setup-next-steps-first {
|
313 |
float: left;
|
314 |
width: 50%;
|
315 |
box-sizing: border-box;
|
316 |
}
|
317 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps .w-factory-templates-105-setup-next-steps-last {
|
318 |
float: right;
|
319 |
width: 50%;
|
320 |
box-sizing: border-box;
|
321 |
}
|
322 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul {
|
323 |
padding: 0 2em 0 0;
|
324 |
list-style: none outside;
|
325 |
margin: 0;
|
326 |
}
|
327 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul li a {
|
328 |
display: block;
|
329 |
padding: 0 0 0.75em;
|
330 |
}
|
331 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-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-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .setup-product a.button:active,
|
346 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .setup-product a.button:focus,
|
347 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .setup-product a.button:hover {
|
348 |
background: #f5f5f5;
|
349 |
border-color: #aaa;
|
350 |
}
|
351 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-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-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .setup-product a.button-primary:active,
|
359 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .setup-product a.button-primary:focus,
|
360 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-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-templates-105-setup-content .w-factory-templates-105-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-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .learn-more a::before {
|
378 |
content: "\f105";
|
379 |
}
|
380 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .video-walkthrough a::before {
|
381 |
content: "\f126";
|
382 |
}
|
383 |
+
.w-factory-templates-105-setup-content .w-factory-templates-105-setup-next-steps ul .newsletter a::before {
|
384 |
content: "\f465";
|
385 |
}
|
386 |
+
.w-factory-templates-105-setup-content .updated,
|
387 |
+
.w-factory-templates-105-setup-content .woocommerce-newsletter {
|
388 |
padding: 24px 24px 0;
|
389 |
margin: 0 0 24px;
|
390 |
overflow: hidden;
|
391 |
background: #f5f5f5;
|
392 |
}
|
393 |
+
.w-factory-templates-105-setup-content .updated p,
|
394 |
+
.w-factory-templates-105-setup-content .woocommerce-newsletter p {
|
395 |
padding: 0;
|
396 |
margin: 0 0 12px;
|
397 |
}
|
398 |
+
.w-factory-templates-105-setup-content .updated form,
|
399 |
+
.w-factory-templates-105-setup-content .updated p:last-child,
|
400 |
+
.w-factory-templates-105-setup-content .woocommerce-newsletter form,
|
401 |
+
.w-factory-templates-105-setup-content .woocommerce-newsletter p:last-child {
|
402 |
margin: 0 0 24px;
|
403 |
}
|
404 |
+
.w-factory-templates-105-setup-content .checkbox input[type=checkbox] {
|
405 |
opacity: 0;
|
406 |
position: absolute;
|
407 |
left: -9999px;
|
408 |
}
|
409 |
+
.w-factory-templates-105-setup-content .checkbox label {
|
410 |
position: relative;
|
411 |
display: inline-block;
|
412 |
padding-left: 28px;
|
413 |
}
|
414 |
+
.w-factory-templates-105-setup-content .checkbox label::after,
|
415 |
+
.w-factory-templates-105-setup-content .checkbox label::before {
|
416 |
position: absolute;
|
417 |
content: "";
|
418 |
display: inline-block;
|
419 |
}
|
420 |
+
.w-factory-templates-105-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-templates-105-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-templates-105-setup-content .checkbox input[type=checkbox] + label::after {
|
442 |
content: none;
|
443 |
}
|
444 |
+
.w-factory-templates-105-setup-content .checkbox input[type=checkbox]:checked + label::after {
|
445 |
content: "";
|
446 |
}
|
447 |
+
.w-factory-templates-105-setup-content .checkbox input[type=checkbox]:focus + label::before {
|
448 |
outline: #3b99fc auto 5px;
|
449 |
}
|
450 |
+
.w-factory-templates-105-setup-content .checkbox input[type=checkbox]:checked + label::before {
|
451 |
background: #935687;
|
452 |
border-color: #935687;
|
453 |
}
|
libs/factory/templates/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_templates_105.app - методы для работы с приложением. Скрыть, показать уведомления.
|
6 |
+
* $.wbcr_factory_templates_105.hooks - это иммитация хуков и фильтров аналогично тем, что используются в Wordpress
|
7 |
*
|
8 |
* Copyright 2018, Webcraftic, http://webcraftic.com
|
9 |
*
|
13 |
(function($) {
|
14 |
'use strict';
|
15 |
|
16 |
+
if( !$.wbcr_factory_templates_105 ) {
|
17 |
+
$.wbcr_factory_templates_105 = {};
|
18 |
}
|
19 |
|
20 |
//todo: Переопредление для совместимости со старыми версиями плагинов.
|
21 |
+
$.wbcr_factory_templates_105.filters = $.wbcr_factory_templates_105.filters || $.wfactory_452.filters;
|
22 |
//todo: Переопредление для совместимости со старыми версиями плагинов.
|
23 |
+
$.wbcr_factory_templates_105.hooks = $.wbcr_factory_templates_105.hooks || $.wfactory_452.hooks;
|
24 |
|
25 |
+
$.wbcr_factory_templates_105.app = $.wbcr_factory_templates_105.app || {
|
26 |
/**
|
27 |
* Создает и показывает уведомление внутри интерфейса Clearfy
|
28 |
*
|
68 |
/**
|
69 |
* Хук выполняет проивольную функцию, после того как уведомление отображено
|
70 |
* Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
|
71 |
+
* Пример регистрации хука $.wfactory_452.hooks.add('wbcr/factory_templates_105/updated',
|
72 |
* function(noticeId) {});
|
73 |
* @param {string} noticeId - id уведомления
|
74 |
*/
|
75 |
+
$.wfactory_452.hooks.run('wbcr/factory_templates_105/showed_notice', [noticeId]);
|
76 |
+
$.wfactory_452.hooks.run('wbcr/clearfy/showed_notice', [noticeId]);
|
77 |
});
|
78 |
|
79 |
return noticeId;
|
98 |
/**
|
99 |
* Хук выполняет проивольную функцию, после того как уведомление скрыто
|
100 |
* Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
|
101 |
+
* Пример регистрации хука $.wfactory_452.hooks.add('wbcr/factory_templates_105/updated',
|
102 |
* function(noticeId)
|
103 |
* {});
|
104 |
* @param {string} noticeId - id уведомления
|
105 |
*/
|
106 |
+
$.wfactory_452.hooks.run('wbcr/factory_templates_105/hidded_notice', [noticeId]);
|
107 |
+
$.wfactory_452.hooks.run('wbcr/clearfy/hidded_notice', [noticeId]);
|
108 |
});
|
109 |
},
|
110 |
|
121 |
|
122 |
};
|
123 |
|
124 |
+
$.wfactory_452.hooks.add('core/components/pre_activate', function(button) {
|
125 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
126 |
if( !$('#WBCR').length ) {
|
127 |
return false;
|
137 |
}
|
138 |
});
|
139 |
|
140 |
+
$.wfactory_452.hooks.add('core/components/deactivated', function(button, data, response) {
|
141 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
142 |
if( !$('#WBCR').length ) {
|
143 |
return false;
|
156 |
}
|
157 |
});
|
158 |
|
159 |
+
$.wfactory_452.hooks.add('core/components/deleted', function(button) {
|
160 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
161 |
if( !$('#WBCR').length ) {
|
162 |
return false;
|
175 |
}
|
176 |
});
|
177 |
|
178 |
+
$.wfactory_452.hooks.add('core/components/activation_error', function(plugin, button, response) {
|
179 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
180 |
+
if( !($('#WBCR').length && $.wbcr_factory_templates_105) ) {
|
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_templates_105.app.showNotice(response.data.error_message, 'danger');
|
188 |
}
|
189 |
});
|
190 |
|
191 |
+
$.wfactory_452.hooks.add('core/components/update_error', function(button, data, response) {
|
192 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
193 |
+
if( !($('#WBCR').length && $.wbcr_factory_templates_105) ) {
|
194 |
return false;
|
195 |
}
|
196 |
|
197 |
if( response.data && response.data.error_message ) {
|
198 |
+
$.wbcr_factory_templates_105.app.showNotice(response.data.error_message, 'danger');
|
199 |
}
|
200 |
|
201 |
});
|
202 |
|
203 |
+
$.wfactory_452.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_452.hooks.add('core/components/ajax_error', function(xhr, ajaxOptions, thrownError) {
|
213 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
214 |
+
if( !($('#WBCR').length && $.wbcr_factory_templates_105) ) {
|
215 |
return false;
|
216 |
}
|
217 |
|
218 |
+
$.wbcr_factory_templates_105.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
|
219 |
});
|
220 |
|
221 |
})(jQuery);
|
libs/factory/templates/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_templates_105.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_templates_105.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_templates_105.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_templates_105.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
|
84 |
|
85 |
allNotices.push(noticeId);
|
86 |
}
|
libs/factory/templates/assets/js/clearfy-search-options.js
CHANGED
@@ -39,10 +39,10 @@
|
|
39 |
throw new Error('Global var {wfactory_clearfy_search_options} is not declared.');
|
40 |
}
|
41 |
|
42 |
-
$('#wbcr-factory-templates-
|
43 |
lookup: wfactory_clearfy_search_options,
|
44 |
onSelect: function(suggestion) {
|
45 |
-
$('#wbcr-factory-templates-
|
46 |
window.location.href = suggestion.data.page_url;
|
47 |
}
|
48 |
});
|
39 |
throw new Error('Global var {wfactory_clearfy_search_options} is not declared.');
|
40 |
}
|
41 |
|
42 |
+
$('#wbcr-factory-templates-105__autocomplete').wfactory_clearfy_autocomplete({
|
43 |
lookup: wfactory_clearfy_search_options,
|
44 |
onSelect: function(suggestion) {
|
45 |
+
$('#wbcr-factory-templates-105__autocomplete').prop("disabled", true);
|
46 |
window.location.href = suggestion.data.page_url;
|
47 |
}
|
48 |
});
|
libs/factory/templates/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_templates_105.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
|
29 |
setTimeout(function() {
|
30 |
+
$.wbcr_factory_templates_105.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_templates_105.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
|
56 |
setTimeout(function() {
|
57 |
+
$.wbcr_factory_templates_105.app.hideNotice(noticeId);
|
58 |
}, 5000);
|
59 |
}
|
60 |
});
|
libs/factory/templates/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-templates-101__autocomplete-selected",suggestion:"wbcr-factory-templates-101__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-templates-101__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-templates-101__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-templates-105__autocomplete-selected",suggestion:"wbcr-factory-templates-105__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-templates-105__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-templates-105__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/templates/boot.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Factory Templates
|
4 |
*
|
5 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
6 |
-
* @since 1.0.
|
7 |
* @package clearfy
|
8 |
* @copyright (c) 2018, Webcraftic Ltd
|
9 |
*
|
@@ -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-templates-
|
42 |
'jquery',
|
43 |
-
'wfactory-
|
44 |
-
],
|
45 |
|
46 |
-
require_once
|
47 |
-
$all_options = \WBCR\
|
48 |
|
49 |
if( empty($all_options) ) {
|
50 |
return;
|
@@ -72,21 +72,21 @@ if( is_admin() ) {
|
|
72 |
//return;
|
73 |
//}
|
74 |
|
75 |
-
wp_localize_script('wbcr-factory-templates-
|
76 |
});
|
77 |
|
78 |
-
if( defined('
|
79 |
-
require(
|
80 |
-
require(
|
81 |
-
require(
|
82 |
|
83 |
-
require(
|
84 |
-
require(
|
85 |
-
require(
|
86 |
|
87 |
-
require(
|
88 |
-
require(
|
89 |
-
require(
|
90 |
-
require(
|
91 |
}
|
92 |
}
|
3 |
* Factory Templates
|
4 |
*
|
5 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
6 |
+
* @since 1.0.2
|
7 |
* @package clearfy
|
8 |
* @copyright (c) 2018, Webcraftic Ltd
|
9 |
*
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( defined('FACTORY_TEMPLATES_105_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
define('FACTORY_TEMPLATES_105_LOADED', true);
|
22 |
|
23 |
+
define('FACTORY_TEMPLATES_105', '1.0.5');
|
24 |
|
25 |
+
define('FACTORY_TEMPLATES_105_DIR', dirname(__FILE__));
|
26 |
+
define('FACTORY_TEMPLATES_105_URL', plugins_url(null, __FILE__));
|
27 |
|
28 |
+
load_plugin_textdomain('wbcr_factory_templates_105', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
29 |
|
30 |
+
require(FACTORY_TEMPLATES_105_DIR . '/includes/ajax-handlers.php');
|
31 |
+
require(FACTORY_TEMPLATES_105_DIR . '/includes/class-helpers.php');
|
32 |
+
require(FACTORY_TEMPLATES_105_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-templates-105-global', FACTORY_TEMPLATES_105_URL . '/assets/js/clearfy-globals.js', [
|
42 |
'jquery',
|
43 |
+
'wfactory-452-core-general'
|
44 |
+
], FACTORY_TEMPLATES_105);
|
45 |
|
46 |
+
require_once FACTORY_TEMPLATES_105_DIR . '/includes/class-search-options.php';
|
47 |
+
$all_options = \WBCR\Factory_Templates_105\Search_Options::get_all_options();
|
48 |
|
49 |
if( empty($all_options) ) {
|
50 |
return;
|
72 |
//return;
|
73 |
//}
|
74 |
|
75 |
+
wp_localize_script('wbcr-factory-templates-105-global', 'wfactory_clearfy_search_options', $formated_options);
|
76 |
});
|
77 |
|
78 |
+
if( defined('FACTORY_PAGES_451_LOADED') ) {
|
79 |
+
require(FACTORY_TEMPLATES_105_DIR . '/pages/templates/impressive/class-page-template-impressive.php');
|
80 |
+
require(FACTORY_TEMPLATES_105_DIR . '/pages/templates/impressive/class-pages.php');
|
81 |
+
require(FACTORY_TEMPLATES_105_DIR . '/pages/templates/impressive-lite/class-page-template-impressive-lite.php');
|
82 |
|
83 |
+
require(FACTORY_TEMPLATES_105_DIR . '/pages/class-page-more-features.php');
|
84 |
+
require(FACTORY_TEMPLATES_105_DIR . '/pages/class-page-license.php');
|
85 |
+
require(FACTORY_TEMPLATES_105_DIR . '/pages/class-pages-components.php');
|
86 |
|
87 |
+
require(FACTORY_TEMPLATES_105_DIR . '/pages/setup-parts/class-step.php');
|
88 |
+
require(FACTORY_TEMPLATES_105_DIR . '/pages/setup-parts/class-step-form.php');
|
89 |
+
require(FACTORY_TEMPLATES_105_DIR . '/pages/setup-parts/class-step-custom.php');
|
90 |
+
require(FACTORY_TEMPLATES_105_DIR . '/pages/class-page-setup.php');
|
91 |
}
|
92 |
}
|
libs/factory/templates/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_templates_101_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_templates_101_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_templates_101_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_templates_101_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_templates_101_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_Factory452_Plugin $plugin_instance
|
19 |
*
|
20 |
* @since 2.3.0
|
21 |
*
|
22 |
*/
|
23 |
+
function wbcr_factory_templates_105_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_templates_105')]);
|
38 |
}
|
39 |
|
40 |
if( empty($group_id) ) {
|
41 |
+
wp_send_json_error(['error_message' => __('Group ID is empty!', 'wbcr_factory_templates_105')]);
|
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_templates_105')]);
|
67 |
|
68 |
die();
|
69 |
}
|
71 |
/**
|
72 |
* Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
|
73 |
*
|
74 |
+
* @param Wbcr_Factory452_Plugin $plugin_instance
|
75 |
*
|
76 |
* @since 2.0.7
|
77 |
*
|
78 |
*/
|
79 |
+
function wbcr_factory_templates_105_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_templates_105')]);
|
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_templates_105')]);
|
106 |
} else {
|
107 |
$plugin_instance->premium->activate($license_key);
|
108 |
+
$success_message = __('Your license has been successfully activated', 'wbcr_factory_templates_105');
|
109 |
}
|
110 |
break;
|
111 |
case 'deactivate':
|
112 |
$plugin_instance->premium->deactivate();
|
113 |
+
$success_message = __('The license is deactivated', 'wbcr_factory_templates_105');
|
114 |
break;
|
115 |
case 'sync':
|
116 |
$plugin_instance->premium->sync();
|
117 |
+
$success_message = __('The license has been updated', 'wbcr_factory_templates_105');
|
118 |
break;
|
119 |
case 'unsubscribe':
|
120 |
$plugin_instance->premium->cancel_paid_subscription();
|
121 |
+
$success_message = __('Subscription success cancelled', 'wbcr_factory_templates_105');
|
122 |
break;
|
123 |
}
|
124 |
} catch( Exception $e ) {
|
libs/factory/templates/includes/class-configurate.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
@@ -19,9 +19,9 @@ if( !defined('ABSPATH') ) {
|
|
19 |
abstract class Configurate {
|
20 |
|
21 |
/**
|
22 |
-
* @param \
|
23 |
*/
|
24 |
-
public function __construct(\
|
25 |
{
|
26 |
$this->plugin = $plugin;
|
27 |
$this->registerActionsAndFilters();
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Templates_105;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
19 |
abstract class Configurate {
|
20 |
|
21 |
/**
|
22 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
23 |
*/
|
24 |
+
public function __construct(\Wbcr_Factory452_Plugin $plugin)
|
25 |
{
|
26 |
$this->plugin = $plugin;
|
27 |
$this->registerActionsAndFilters();
|
libs/factory/templates/includes/class-helpers.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
namespace WBCR\
|
3 |
|
4 |
// Exit if accessed directly
|
5 |
if( !defined('ABSPATH') ) {
|
1 |
<?php
|
2 |
+
namespace WBCR\Factory_Templates_105;
|
3 |
|
4 |
// Exit if accessed directly
|
5 |
if( !defined('ABSPATH') ) {
|
libs/factory/templates/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_Templates_105;
|
4 |
|
5 |
/**
|
6 |
* Class Search options
|
libs/factory/templates/pages/class-page-license.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
@@ -82,7 +82,7 @@ class License extends PageBase {
|
|
82 |
|
83 |
/**
|
84 |
* @since 2.0.7
|
85 |
-
* @var \WBCR\
|
86 |
*/
|
87 |
protected $premium;
|
88 |
|
@@ -100,7 +100,7 @@ class License extends PageBase {
|
|
100 |
|
101 |
/**
|
102 |
* @since 2.0.7
|
103 |
-
* @var \WBCR\
|
104 |
*/
|
105 |
protected $premium_license;
|
106 |
|
@@ -109,9 +109,9 @@ class License extends PageBase {
|
|
109 |
|
110 |
/**
|
111 |
* {@inheritdoc}
|
112 |
-
* @param \
|
113 |
*/
|
114 |
-
public function __construct(\
|
115 |
{
|
116 |
$this->plugin = $plugin;
|
117 |
|
@@ -138,8 +138,8 @@ class License extends PageBase {
|
|
138 |
{
|
139 |
parent::assets($scripts, $styles);
|
140 |
|
141 |
-
$this->styles->add(
|
142 |
-
$this->scripts->add(
|
143 |
}
|
144 |
|
145 |
/**
|
@@ -149,7 +149,7 @@ class License extends PageBase {
|
|
149 |
*/
|
150 |
public function ajax_handler()
|
151 |
{
|
152 |
-
|
153 |
}
|
154 |
|
155 |
/**
|
@@ -159,7 +159,7 @@ class License extends PageBase {
|
|
159 |
{
|
160 |
?>
|
161 |
<div id="wcl-license-wrapper"
|
162 |
-
data-loader="<?php echo
|
163 |
data-plugin-name="<?php echo esc_attr($this->plugin_name); ?>"
|
164 |
data-nonce="<?php echo wp_create_nonce("clearfy_activate_license_for_{$this->plugin_name}") ?>">
|
165 |
<?php $this->show_license_form(); ?>
|
@@ -265,11 +265,11 @@ class License extends PageBase {
|
|
265 |
if( $this->is_premium ):
|
266 |
?>
|
267 |
<p style="margin-top: 10px;">
|
268 |
-
<?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!', '
|
269 |
</p>
|
270 |
<?php else: ?>
|
271 |
<p style="margin-top: 10px;">
|
272 |
-
<?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.', '
|
273 |
</p>
|
274 |
<?php endif;
|
275 |
}
|
@@ -281,16 +281,16 @@ class License extends PageBase {
|
|
281 |
{
|
282 |
?>
|
283 |
<div id="license-manager"
|
284 |
-
class="factory-bootstrap-
|
285 |
<div>
|
286 |
-
<h3><?php printf(__('Activate %s', '
|
287 |
<?php echo $this->get_plan_description() ?>
|
288 |
</div>
|
289 |
<br>
|
290 |
<?php if( is_wp_error($notice) ) : ?>
|
291 |
-
<div class="license-message
|
292 |
<div class="alert <?php echo esc_attr($notice->get_error_code()); ?>">
|
293 |
-
<h4 class="alert-heading"><?php _e($notice->get_error_message(), '
|
294 |
</div>
|
295 |
</div>
|
296 |
<?php endif; ?>
|
@@ -300,20 +300,20 @@ class License extends PageBase {
|
|
300 |
<a href="<?php echo $this->plugin->get_support()->get_pricing_url(true, 'license_page'); ?>"
|
301 |
class="purchase-premium" target="_blank" rel="noopener">
|
302 |
<span class="btn btn-gold btn-inner-wrap">
|
303 |
-
<?php _e('Upgrade to Premium', '
|
304 |
</span>
|
305 |
</a>
|
306 |
-
<p><?php printf(__('Your current license for %1$s:', '
|
307 |
<?php endif; ?>
|
308 |
-
<div class="license-details-block
|
309 |
<?php if( $this->is_premium ): ?>
|
310 |
<a data-action="deactivate" href="#"
|
311 |
class="btn btn-default btn-small license-delete-button wcl-control-btn">
|
312 |
-
<?php _e('Delete Key', '
|
313 |
</a>
|
314 |
<a data-action="sync" href="#"
|
315 |
class="btn btn-default btn-small license-synchronization-button wcl-control-btn">
|
316 |
-
<?php _e('Synchronization', '
|
317 |
</a>
|
318 |
<?php endif; ?>
|
319 |
<h3>
|
@@ -327,24 +327,24 @@ class License extends PageBase {
|
|
327 |
</h3>
|
328 |
<?php if( $this->is_premium ): ?>
|
329 |
<div class="license-key-identity">
|
330 |
-
<code
|
331 |
</div>
|
332 |
<?php endif; ?>
|
333 |
<div class="license-key-description">
|
334 |
<?php if( !$this->is_premium ): ?>
|
335 |
-
<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.', '
|
336 |
<?php else: ?>
|
337 |
-
<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.', '
|
338 |
<?php endif; ?>
|
339 |
<?php if( $this->is_premium && $this->premium_has_subscription ): ?>
|
340 |
<p class="activate-trial-hint">
|
341 |
-
<?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>', '
|
342 |
</p>
|
343 |
<?php endif; ?>
|
344 |
|
345 |
<?php if( $this->get_license_type() == 'trial' ): ?>
|
346 |
<p class="activate-error-hint">
|
347 |
-
<?php printf(__('Your license has expired, please extend the license to get updates and support.', '
|
348 |
</p>
|
349 |
<?php endif; ?>
|
350 |
</div>
|
@@ -352,30 +352,30 @@ class License extends PageBase {
|
|
352 |
<tr>
|
353 |
<!--<td class="license-param license-param-domain">
|
354 |
<span class="license-value"><?php echo esc_attr($_SERVER['SERVER_NAME']); ?></span>
|
355 |
-
<span class="license-value-name"><?php _e('domain', '
|
356 |
</td>-->
|
357 |
<td class="license-param license-param-days">
|
358 |
-
<span class="license-value"
|
359 |
-
<span class="license-value-name"><?php _e('plan', '
|
360 |
</td>
|
361 |
<?php if( $this->is_premium ) : ?>
|
362 |
<td class="license-param license-param-sites">
|
363 |
<span class="license-value">
|
364 |
<?php echo esc_attr($this->premium_license->get_count_active_sites()); ?>
|
365 |
-
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Templates_105\Pages;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
82 |
|
83 |
/**
|
84 |
* @since 2.0.7
|
85 |
+
* @var \WBCR\Factory_452\Premium\Provider
|
86 |
*/
|
87 |
protected $premium;
|
88 |
|
100 |
|
101 |
/**
|
102 |
* @since 2.0.7
|
103 |
+
* @var \WBCR\Factory_452\Premium\Interfaces\License
|
104 |
*/
|
105 |
protected $premium_license;
|
106 |
|
109 |
|
110 |
/**
|
111 |
* {@inheritdoc}
|
112 |
+
* @param \Wbcr_Factory452_Plugin $plugin
|
113 |
*/
|
114 |
+
public function __construct(\Wbcr_Factory452_Plugin $plugin)
|
115 |
{
|
116 |
$this->plugin = $plugin;
|
117 |
|
138 |
{
|
139 |
parent::assets($scripts, $styles);
|
140 |
|
141 |
+
$this->styles->add(FACTORY_TEMPLATES_105_URL . '/assets/css/license-manager.css');
|
142 |
+
$this->scripts->add(FACTORY_TEMPLATES_105_URL . '/assets/js/clearfy-license-manager.js');
|
143 |
}
|
144 |
|
145 |
/**
|
149 |
*/
|
150 |
public function ajax_handler()
|
151 |
{
|
152 |
+
wbcr_factory_templates_105_check_license($this->plugin);
|
153 |
}
|
154 |
|
155 |
/**
|
159 |
{
|
160 |
?>
|
161 |
<div id="wcl-license-wrapper"
|
162 |
+
data-loader="<?php echo FACTORY_TEMPLATES_105_URL . '/assets/img/loader.gif'; ?>"
|
163 |
data-plugin-name="<?php echo esc_attr($this->plugin_name); ?>"
|
164 |
data-nonce="<?php echo wp_create_nonce("clearfy_activate_license_for_{$this->plugin_name}") ?>">
|
165 |
<?php $this->show_license_form(); ?>
|
265 |
if( $this->is_premium ):
|
266 |
?>
|
267 |
<p style="margin-top: 10px;">
|
268 |
+
<?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_templates_105'), $this->plugin->get_support()->get_pricing_url(true, 'license_page')); ?>
|
269 |
</p>
|
270 |
<?php else: ?>
|
271 |
<p style="margin-top: 10px;">
|
272 |
+
<?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_templates_105'), $this->plugin->get_support()->get_contacts_url(true, 'license_page')) ?>
|
273 |
</p>
|
274 |
<?php endif;
|
275 |
}
|
281 |
{
|
282 |
?>
|
283 |
<div id="license-manager"
|
284 |
+
class="factory-bootstrap-453 onp-page-wrap <?php echo $this->get_license_type() ?>-license-manager-content">
|
285 |
<div>
|
286 |
+
<h3><?php printf(__('Activate %s', 'wbcr_factory_templates_105'), $this->plan_name) ?></h3>
|
287 |
<?php echo $this->get_plan_description() ?>
|
288 |
</div>
|
289 |
<br>
|
290 |
<?php if( is_wp_error($notice) ) : ?>
|
291 |
+
<div class="license-message <?php echo $this->get_license_type() ?>-license-message">
|
292 |
<div class="alert <?php echo esc_attr($notice->get_error_code()); ?>">
|
293 |
+
<h4 class="alert-heading"><?php _e($notice->get_error_message(), 'wbcr_factory_templates_105') ?></h4>
|
294 |
</div>
|
295 |
</div>
|
296 |
<?php endif; ?>
|
300 |
<a href="<?php echo $this->plugin->get_support()->get_pricing_url(true, 'license_page'); ?>"
|
301 |
class="purchase-premium" target="_blank" rel="noopener">
|
302 |
<span class="btn btn-gold btn-inner-wrap">
|
303 |
+
<?php _e('Upgrade to Premium', 'wbcr_factory_templates_105') ?>
|
304 |
</span>
|
305 |
</a>
|
306 |
+
<p><?php printf(__('Your current license for %1$s:', 'wbcr_factory_templates_105'), $this->plugin->getPluginTitle()) ?></p>
|
307 |
<?php endif; ?>
|
308 |
+
<div class="license-details-block <?php echo $this->get_license_type() ?>-details-block">
|
309 |
<?php if( $this->is_premium ): ?>
|
310 |
<a data-action="deactivate" href="#"
|
311 |
class="btn btn-default btn-small license-delete-button wcl-control-btn">
|
312 |
+
<?php _e('Delete Key', 'wbcr_factory_templates_105') ?>
|
313 |
</a>
|
314 |
<a data-action="sync" href="#"
|
315 |
class="btn btn-default btn-small license-synchronization-button wcl-control-btn">
|
316 |
+
<?php _e('Synchronization', 'wbcr_factory_templates_105') ?>
|
317 |
</a>
|
318 |
<?php endif; ?>
|
319 |
<h3>
|
327 |
</h3>
|
328 |
<?php if( $this->is_premium ): ?>
|
329 |
<div class="license-key-identity">
|
330 |
+
<code><?php echo esc_attr($this->get_hidden_license_key()) ?></code>
|
331 |
</div>
|
332 |
<?php endif; ?>
|
333 |
<div class="license-key-description">
|
334 |
<?php if( !$this->is_premium ): ?>
|
335 |
+
<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_templates_105') ?></p>
|
336 |
<?php else: ?>
|
337 |
+
<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_templates_105') ?></p>
|
338 |
<?php endif; ?>
|
339 |
<?php if( $this->is_premium && $this->premium_has_subscription ): ?>
|
340 |
<p class="activate-trial-hint">
|
341 |
+
<?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_templates_105') ?>
|
342 |
</p>
|
343 |
<?php endif; ?>
|
344 |
|
345 |
<?php if( $this->get_license_type() == 'trial' ): ?>
|
346 |
<p class="activate-error-hint">
|
347 |
+
<?php printf(__('Your license has expired, please extend the license to get updates and support.', 'wbcr_factory_templates_105'), '') ?>
|
348 |
</p>
|
349 |
<?php endif; ?>
|
350 |
</div>
|
352 |
<tr>
|
353 |
<!--<td class="license-param license-param-domain">
|
354 |
<span class="license-value"><?php echo esc_attr($_SERVER['SERVER_NAME']); ?></span>
|
355 |
+
<span class="license-value-name"><?php _e('domain', 'wbcr_factory_templates_105') ?></span>
|
356 |
</td>-->
|
357 |
<td class="license-param license-param-days">
|
358 |
+
<span class="license-value"><?php echo $this->get_plan() ?></span>
|
359 |
+
<span class="license-value-name"><?php _e('plan', 'wbcr_factory_templates_105') ?></span>
|
360 |
</td>
|
361 |
<?php if( $this->is_premium ) : ?>
|
362 |
<td class="license-param license-param-sites">
|
363 |
<span class="license-value">
|
364 |
<?php echo esc_attr($this->premium_license->get_count_active_sites()); ?>
|
|