Version Description
- Fix adding account
- WP 6.0 compatibility
- Minor fixes
Download this release
Release Info
Developer | webtemyk |
Plugin | Instagram Slider Widget |
Version | 2.0.4 |
Comparing to | |
See all releases |
Code changes from version 2.0.3 to 2.0.4
- admin/class-page-logger.php +11 -11
- admin/class-page.php +10 -10
- admin/class-wis-activation.php +2 -2
- admin/pages/feeds.php +271 -271
- admin/pages/license.php +2 -2
- admin/pages/manual.php +1 -0
- admin/pages/profiles.php +4 -4
- admin/pages/widgets.php +1 -1
- admin/views/page-license.php +2 -2
- admin/views/page-showcase-license.php +2 -2
- components/facebook/includes/class-facebook-profiles.php +3 -3
- components/instagram/includes/class-instagram-feed.php +1214 -1214
- components/instagram/includes/class-instagram-profiles.php +8 -8
- components/youtube/load.php +1 -1
- includes/class-plugin.php +3 -3
- instaram_slider.php +9 -9
- 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_130-ru_RU.mo → wbcr_factory_adverts_135-ru_RU.mo} +0 -0
- libs/factory/adverts/langs/{wbcr_factory_adverts_130-ru_RU.po → wbcr_factory_adverts_135-ru_RU.po} +0 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.datetimepicker.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.form-metabox.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.tab.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.wp-editor.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.color-and-opacity.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.color.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.dropdown-and-colors.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.fonts.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.list.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.pattern.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.radio-colors.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/plugin.gradient-picker.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/plugin.paddings-editor.min.css +1 -1
- libs/factory/bootstrap/assets/js-min/bootstrap.accordion.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/bootstrap.collapse.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/bootstrap.datetimepicker.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/bootstrap.modal.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.color-and-opacity.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.color.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.dropdown-and-colors.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.dropdown.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.fonts.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.gradient.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.integer.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.list.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.pattern.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/holder.more-link.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/plugin.gradient-picker.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/plugin.iris.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/plugin.paddings-editor.min.js +1 -1
- 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 +17 -17
- libs/factory/core/includes/class-factory-notices.php +5 -5
- libs/factory/core/includes/class-factory-options.php +2 -2
- libs/factory/core/includes/class-factory-plugin-abstract.php +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_453-ru_RU.mo → wbcr_factory_458-ru_RU.mo} +0 -0
- libs/factory/core/langs/{wbcr_factory_453-ru_RU.po → wbcr_factory_458-ru_RU.po} +0 -0
- libs/factory/forms/boot.php +95 -95
- libs/factory/forms/controls/checkbox.php +4 -4
- libs/factory/forms/controls/color-and-opacity.php +4 -4
- libs/factory/forms/controls/color.php +2 -2
- libs/factory/forms/controls/customs/html.php +2 -2
- libs/factory/forms/controls/customs/separator.php +2 -2
- libs/factory/forms/controls/datepicker-range.php +4 -4
- libs/factory/forms/controls/dropdown-and-colors.php +6 -6
- libs/factory/forms/controls/dropdown.php +5 -5
- libs/factory/forms/controls/font.php +11 -11
- libs/factory/forms/controls/google-font.php +8 -8
- libs/factory/forms/controls/gradient.php +4 -4
- libs/factory/forms/controls/hidden.php +2 -2
- libs/factory/forms/controls/holders/accordion-item.php +2 -2
- libs/factory/forms/controls/holders/accordion.php +2 -2
- libs/factory/forms/controls/holders/columns.php +2 -2
- libs/factory/forms/controls/holders/control-group-item.php +2 -2
- libs/factory/forms/controls/holders/control-group.php +3 -3
- libs/factory/forms/controls/holders/div.php +2 -2
- libs/factory/forms/controls/holders/form-group.php +2 -2
- libs/factory/forms/controls/holders/more-link.php +2 -2
- libs/factory/forms/controls/holders/tab-item.php +2 -2
- libs/factory/forms/controls/holders/tab.php +4 -4
- libs/factory/forms/controls/integer.php +2 -2
- libs/factory/forms/controls/list.php +4 -4
- libs/factory/forms/controls/multiple-textbox.php +3 -3
- libs/factory/forms/controls/paddings-editor.php +3 -3
- libs/factory/forms/controls/pattern.php +9 -9
- libs/factory/forms/controls/radio-colors.php +2 -2
- libs/factory/forms/controls/radio.php +2 -2
- libs/factory/forms/controls/textarea.php +2 -2
- libs/factory/forms/controls/textbox.php +2 -2
- libs/factory/forms/controls/url.php +3 -3
- libs/factory/forms/controls/wp-editor.php +3 -3
- libs/factory/forms/includes/complex-control.class.php +4 -4
- libs/factory/forms/includes/control-holder.class.php +5 -5
- libs/factory/forms/includes/control.class.php +5 -5
- libs/factory/forms/includes/custom-element.class.php +2 -2
- libs/factory/forms/includes/form-element.class.php +7 -7
- libs/factory/forms/includes/form-layout.class.php +5 -5
- libs/factory/forms/includes/form.class.php +39 -39
- libs/factory/forms/includes/holder.class.php +6 -6
- libs/factory/forms/includes/html-builder.class.php +2 -2
- libs/factory/forms/includes/providers/meta-value-provider.class.php +2 -2
- libs/factory/forms/includes/providers/options-value-provider.class.php +3 -3
- libs/factory/forms/includes/providers/value-provider.interface.php +2 -2
- libs/factory/forms/langs/{wbcr_factory_forms_450-ru_RU.mo → wbcr_factory_forms_455-ru_RU.mo} +0 -0
- libs/factory/forms/langs/{wbcr_factory_forms_450-ru_RU.po → wbcr_factory_forms_455-ru_RU.po} +0 -0
- libs/factory/forms/layouts/bootstrap-3/bootstrap-3.php +7 -7
- libs/factory/freemius/boot.php +18 -18
- libs/factory/freemius/includes/class-freemius-api.php +7 -7
- libs/factory/freemius/includes/entities/class-freemius-entity.php +1 -1
- libs/factory/freemius/includes/entities/class-freemius-license.php +2 -2
- libs/factory/freemius/includes/entities/class-freemius-plugin.php +1 -1
- libs/factory/freemius/includes/entities/class-freemius-scope.php +1 -1
- libs/factory/freemius/includes/entities/class-freemius-site.php +1 -1
- libs/factory/freemius/includes/entities/class-freemius-user.php +1 -1
- libs/factory/freemius/includes/licensing/class-freemius-provider.php +18 -18
- libs/factory/freemius/includes/updates/class-freemius-repository.php +7 -7
- libs/factory/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 +4 -12
- libs/factory/logger/langs/{wbcr_factory_logger_118-ru_RU.mo → wbcr_factory_logger_123-ru_RU.mo} +0 -0
- libs/factory/logger/langs/{wbcr_factory_logger_118-ru_RU.po → wbcr_factory_logger_123-ru_RU.po} +0 -0
- libs/factory/logger/pages/class-logger-admin-page.php +21 -20
- libs/factory/logger/pages/class-logger-impressive-lite.php +19 -18
- libs/factory/logger/pages/class-logger-impressive-page.php +20 -19
- 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_452-fr_FR.mo → wbcr_factory_pages_457-fr_FR.mo} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_452-fr_FR.po → wbcr_factory_pages_457-fr_FR.po} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_452-ru_RU.mo → wbcr_factory_pages_457-ru_RU.mo} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_452-ru_RU.po → wbcr_factory_pages_457-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 +26 -26
- 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 +33 -33
- libs/factory/templates/pages/class-page-more-features.php +24 -24
- libs/factory/templates/pages/class-page-setup.php +18 -18
- libs/factory/templates/pages/class-pages-components.php +19 -19
- libs/factory/templates/pages/setup-parts/class-step-custom.php +7 -7
- libs/factory/templates/pages/setup-parts/class-step-form.php +12 -12
- libs/factory/templates/pages/setup-parts/class-step.php +5 -5
- libs/factory/templates/pages/templates/impressive-lite/assets/css/impressive-lite.page.template.css +14 -14
admin/class-page-logger.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
use WBCR\
|
4 |
|
5 |
/**
|
6 |
* Class of plugin page. Must be registered in file admin/class-prefix-page.php
|
@@ -17,7 +17,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
17 |
exit;
|
18 |
}
|
19 |
|
20 |
-
class WIS_Page_Logger extends
|
21 |
|
22 |
/**
|
23 |
* Name of the template to get content of. It will be based on plugins /admin/views/ dir.
|
@@ -163,19 +163,19 @@ class WIS_Page_Logger extends Wbcr_FactoryLogger118_Lite {
|
|
163 |
$page_url = $args[0];
|
164 |
}
|
165 |
|
166 |
-
$page_url = apply_filters( '
|
167 |
|
168 |
?>
|
169 |
<div class="wbcr-factory-sidebar-widget">
|
170 |
<p>
|
171 |
-
<strong><?php _e( 'Do you want the plugin to improved and update?', '
|
172 |
</p>
|
173 |
-
<p><?php _e( 'Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', '
|
174 |
-
<p><?php _e( 'And also write your ideas on how to extend or improve the plugin.', '
|
175 |
<p>
|
176 |
<i class="wbcr-factory-icon-5stars"></i>
|
177 |
<a href="<?php echo $page_url; ?>" title="Go rate us" target="_blank">
|
178 |
-
<strong><?php _e( 'Go rate us and push ideas', '
|
179 |
</a>
|
180 |
</p>
|
181 |
</div>
|
@@ -195,19 +195,19 @@ class WIS_Page_Logger extends Wbcr_FactoryLogger118_Lite {
|
|
195 |
|
196 |
?>
|
197 |
<div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
|
198 |
-
<p><strong><?php _e( 'Having Issues?', '
|
199 |
<div class="wbcr-clr-support-widget-body">
|
200 |
<p>
|
201 |
-
<?php _e( 'We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', '
|
202 |
</p>
|
203 |
<ul>
|
204 |
<li><span class="dashicons dashicons-sos"></span>
|
205 |
<a href="<?php echo $free_support_url; ?>" target="_blank"
|
206 |
-
rel="noopener"><?php _e( 'Get starting free support', '
|
207 |
</li>
|
208 |
<li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
|
209 |
<span class="dashicons dashicons-warning"></span>
|
210 |
-
<?php printf( __( 'If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', '
|
211 |
</li>
|
212 |
</ul>
|
213 |
</div>
|
1 |
<?php
|
2 |
|
3 |
+
use WBCR\Factory_Templates_110\ImpressiveLite;
|
4 |
|
5 |
/**
|
6 |
* Class of plugin page. Must be registered in file admin/class-prefix-page.php
|
17 |
exit;
|
18 |
}
|
19 |
|
20 |
+
class WIS_Page_Logger extends Wbcr_FactoryLogger123_Lite {
|
21 |
|
22 |
/**
|
23 |
* Name of the template to get content of. It will be based on plugins /admin/views/ dir.
|
163 |
$page_url = $args[0];
|
164 |
}
|
165 |
|
166 |
+
$page_url = apply_filters( 'wbcr_factory_pages_457_implite_rating_widget_url', $page_url, $this->plugin->getPluginName(), $this->getResultId() );
|
167 |
|
168 |
?>
|
169 |
<div class="wbcr-factory-sidebar-widget">
|
170 |
<p>
|
171 |
+
<strong><?php _e( 'Do you want the plugin to improved and update?', 'wbcr_factory_templates_110' ); ?></strong>
|
172 |
</p>
|
173 |
+
<p><?php _e( 'Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', 'wbcr_factory_templates_110' ); ?></p>
|
174 |
+
<p><?php _e( 'And also write your ideas on how to extend or improve the plugin.', 'wbcr_factory_templates_110' ); ?></p>
|
175 |
<p>
|
176 |
<i class="wbcr-factory-icon-5stars"></i>
|
177 |
<a href="<?php echo $page_url; ?>" title="Go rate us" target="_blank">
|
178 |
+
<strong><?php _e( 'Go rate us and push ideas', 'wbcr_factory_templates_110' ); ?></strong>
|
179 |
</a>
|
180 |
</p>
|
181 |
</div>
|
195 |
|
196 |
?>
|
197 |
<div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
|
198 |
+
<p><strong><?php _e( 'Having Issues?', 'wbcr_factory_templates_110' ); ?></strong></p>
|
199 |
<div class="wbcr-clr-support-widget-body">
|
200 |
<p>
|
201 |
+
<?php _e( 'We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', 'wbcr_factory_templates_110' ); ?>
|
202 |
</p>
|
203 |
<ul>
|
204 |
<li><span class="dashicons dashicons-sos"></span>
|
205 |
<a href="<?php echo $free_support_url; ?>" target="_blank"
|
206 |
+
rel="noopener"><?php _e( 'Get starting free support', 'wbcr_factory_templates_110' ); ?></a>
|
207 |
</li>
|
208 |
<li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
|
209 |
<span class="dashicons dashicons-warning"></span>
|
210 |
+
<?php printf( __( 'If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', 'wbcr_factory_templates_110' ), $hot_support_url ); ?>
|
211 |
</li>
|
212 |
</ul>
|
213 |
</div>
|
admin/class-page.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
use WBCR\
|
4 |
|
5 |
/**
|
6 |
* Class of plugin page. Must be registered in file admin/class-prefix-page.php
|
@@ -216,19 +216,19 @@ class WIS_Page extends ImpressiveLite {
|
|
216 |
$page_url = $args[0];
|
217 |
}
|
218 |
|
219 |
-
$page_url = apply_filters( '
|
220 |
|
221 |
?>
|
222 |
<div class="wbcr-factory-sidebar-widget">
|
223 |
<p>
|
224 |
-
<strong><?php _e( 'Do you want the plugin to improved and update?', '
|
225 |
</p>
|
226 |
-
<p><?php _e( 'Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', '
|
227 |
-
<p><?php _e( 'And also write your ideas on how to extend or improve the plugin.', '
|
228 |
<p>
|
229 |
<i class="wbcr-factory-icon-5stars"></i>
|
230 |
<a href="<?php echo $page_url; ?>" title="Go rate us" target="_blank">
|
231 |
-
<strong><?php _e( 'Go rate us and push ideas', '
|
232 |
</a>
|
233 |
</p>
|
234 |
</div>
|
@@ -248,19 +248,19 @@ class WIS_Page extends ImpressiveLite {
|
|
248 |
|
249 |
?>
|
250 |
<div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
|
251 |
-
<p><strong><?php _e( 'Having Issues?', '
|
252 |
<div class="wbcr-clr-support-widget-body">
|
253 |
<p>
|
254 |
-
<?php _e( 'We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', '
|
255 |
</p>
|
256 |
<ul>
|
257 |
<li><span class="dashicons dashicons-sos"></span>
|
258 |
<a href="<?php echo $free_support_url; ?>" target="_blank"
|
259 |
-
rel="noopener"><?php _e( 'Get starting free support', '
|
260 |
</li>
|
261 |
<li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
|
262 |
<span class="dashicons dashicons-warning"></span>
|
263 |
-
<?php printf( __( 'If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', '
|
264 |
</li>
|
265 |
</ul>
|
266 |
</div>
|
1 |
<?php
|
2 |
|
3 |
+
use WBCR\Factory_Templates_110\ImpressiveLite;
|
4 |
|
5 |
/**
|
6 |
* Class of plugin page. Must be registered in file admin/class-prefix-page.php
|
216 |
$page_url = $args[0];
|
217 |
}
|
218 |
|
219 |
+
$page_url = apply_filters( 'wbcr_factory_pages_457_implite_rating_widget_url', $page_url, $this->plugin->getPluginName(), $this->getResultId() );
|
220 |
|
221 |
?>
|
222 |
<div class="wbcr-factory-sidebar-widget">
|
223 |
<p>
|
224 |
+
<strong><?php _e( 'Do you want the plugin to improved and update?', 'wbcr_factory_templates_110' ); ?></strong>
|
225 |
</p>
|
226 |
+
<p><?php _e( 'Help the author, leave a review on wordpress.org. Thanks to feedback, I will know that the plugin is really useful to you and is needed.', 'wbcr_factory_templates_110' ); ?></p>
|
227 |
+
<p><?php _e( 'And also write your ideas on how to extend or improve the plugin.', 'wbcr_factory_templates_110' ); ?></p>
|
228 |
<p>
|
229 |
<i class="wbcr-factory-icon-5stars"></i>
|
230 |
<a href="<?php echo $page_url; ?>" title="Go rate us" target="_blank">
|
231 |
+
<strong><?php _e( 'Go rate us and push ideas', 'wbcr_factory_templates_110' ); ?></strong>
|
232 |
</a>
|
233 |
</p>
|
234 |
</div>
|
248 |
|
249 |
?>
|
250 |
<div id="wbcr-clr-support-widget" class="wbcr-factory-sidebar-widget">
|
251 |
+
<p><strong><?php _e( 'Having Issues?', 'wbcr_factory_templates_110' ); ?></strong></p>
|
252 |
<div class="wbcr-clr-support-widget-body">
|
253 |
<p>
|
254 |
+
<?php _e( 'We provide free support for this plugin. If you are pushed with a problem, just create a new ticket. We will definitely help you!', 'wbcr_factory_templates_110' ); ?>
|
255 |
</p>
|
256 |
<ul>
|
257 |
<li><span class="dashicons dashicons-sos"></span>
|
258 |
<a href="<?php echo $free_support_url; ?>" target="_blank"
|
259 |
+
rel="noopener"><?php _e( 'Get starting free support', 'wbcr_factory_templates_110' ); ?></a>
|
260 |
</li>
|
261 |
<li style="margin-top: 15px;background: #fff4f1;padding: 10px;color: #a58074;">
|
262 |
<span class="dashicons dashicons-warning"></span>
|
263 |
+
<?php printf( __( 'If you find a php error or a vulnerability in plugin, you can <a href="%s" target="_blank" rel="noopener">create ticket</a> in hot support that we responded instantly.', 'wbcr_factory_templates_110' ), $hot_support_url ); ?>
|
264 |
</li>
|
265 |
</ul>
|
266 |
</div>
|
admin/class-wis-activation.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*
|
5 |
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
* @copyright (c) 02.12.2018, Webcraftic
|
7 |
-
* @see
|
8 |
*
|
9 |
* @version 1.0.1
|
10 |
*/
|
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
class WIS_Activation extends
|
18 |
|
19 |
/**
|
20 |
* Method is executed during the activation of the plugin.
|
4 |
*
|
5 |
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
* @copyright (c) 02.12.2018, Webcraftic
|
7 |
+
* @see Wbcr_Factory458_Activator
|
8 |
*
|
9 |
* @version 1.0.1
|
10 |
*/
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
class WIS_Activation extends Wbcr_Factory458_Activator {
|
18 |
|
19 |
/**
|
20 |
* Method is executed during the activation of the plugin.
|
admin/pages/feeds.php
CHANGED
@@ -1,271 +1,271 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// Exit if accessed directly
|
4 |
-
|
5 |
-
|
6 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
-
exit;
|
8 |
-
}
|
9 |
-
|
10 |
-
/**
|
11 |
-
* The page Settings.
|
12 |
-
*
|
13 |
-
* @since 1.0.0
|
14 |
-
*/
|
15 |
-
class WIS_FeedsPage extends WIS_Page {
|
16 |
-
|
17 |
-
/**
|
18 |
-
* Тип страницы
|
19 |
-
*
|
20 |
-
* @var string
|
21 |
-
*/
|
22 |
-
public $type = 'page';
|
23 |
-
|
24 |
-
/**
|
25 |
-
* The id of the page in the admin menu.
|
26 |
-
*
|
27 |
-
* @var string
|
28 |
-
*/
|
29 |
-
public $id;
|
30 |
-
|
31 |
-
/**
|
32 |
-
* @var string
|
33 |
-
*/
|
34 |
-
public $template_name = 'feeds';
|
35 |
-
|
36 |
-
/**
|
37 |
-
* @var string
|
38 |
-
*/
|
39 |
-
public $page_menu_dashicon = 'dashicons-slides';
|
40 |
-
|
41 |
-
/**
|
42 |
-
* Заголовок страницы, также использует в меню, как название закладки
|
43 |
-
*
|
44 |
-
* @var bool
|
45 |
-
*/
|
46 |
-
public $show_page_title = true;
|
47 |
-
|
48 |
-
/**
|
49 |
-
* @var bool
|
50 |
-
*/
|
51 |
-
public $show_right_sidebar = true;
|
52 |
-
|
53 |
-
/**
|
54 |
-
* @var int
|
55 |
-
*/
|
56 |
-
public $page_menu_position = 15;
|
57 |
-
|
58 |
-
/**
|
59 |
-
* @param WIS_Plugin $plugin
|
60 |
-
*/
|
61 |
-
public function __construct( $plugin ) {
|
62 |
-
$this->id = 'feeds';
|
63 |
-
$this->page_title = __( 'Social Slider Feeds', 'instagram-slider-widget' );
|
64 |
-
$this->menu_title = __( 'Social Slider Feeds', 'instagram-slider-widget' );
|
65 |
-
$this->menu_sub_title = __( 'Feeds', 'instagram-slider-widget' );
|
66 |
-
$this->menu_tab_title = __( 'Feeds', 'instagram-slider-widget' );
|
67 |
-
$this->menu_icon = '~/admin/assets/img/wis.png';
|
68 |
-
$this->capabilitiy = 'manage_options';
|
69 |
-
|
70 |
-
parent::__construct( $plugin );
|
71 |
-
|
72 |
-
$this->plugin = $plugin;
|
73 |
-
}
|
74 |
-
|
75 |
-
public function assets( $scripts, $styles ) {
|
76 |
-
parent::assets( $scripts, $styles );
|
77 |
-
|
78 |
-
//$this->styles->required = [];
|
79 |
-
$this->styles->add( WIS_PLUGIN_URL . '/admin/assets/css/feeds.css', [], 'wis-feeds-style', WIS_PLUGIN_VERSION );
|
80 |
-
//$this->styles->add( WIS_PLUGIN_URL . "/admin/assets/css/spectre.css", [], 'wis-feeds-forms', WIS_PLUGIN_VERSION );
|
81 |
-
$this->scripts->add( WIS_PLUGIN_URL . '/admin/assets/js/feeds.js', [ 'jquery' ], 'wis-feeds-script', WIS_PLUGIN_VERSION );
|
82 |
-
$this->scripts->localize( 'wis_feeds', [
|
83 |
-
'add_account_nonce' => wp_create_nonce( 'addAccountByToken' ),
|
84 |
-
'wis_nonce' => wp_create_nonce( 'addAccountByToken' ),
|
85 |
-
'remove_account' => __( 'Are you sure want to delete this feed?', 'instagram-slider-widget' ),
|
86 |
-
'nonce' => wp_create_nonce( 'wis_nonce' ),
|
87 |
-
'modal_close_confirm' => __( "You haven't finished adding the feed. Are you sure you want to close the window?", 'instagram-slider-widget' ),
|
88 |
-
'hide_show_fields' => $this->get_hideShow_fields(),
|
89 |
-
] );
|
90 |
-
}
|
91 |
-
|
92 |
-
/**
|
93 |
-
* @inerhitDoc
|
94 |
-
*/
|
95 |
-
public function showPageContent() {
|
96 |
-
if ( isset( $_GET['action'] ) && isset( $_GET['social'] ) ) {
|
97 |
-
$social = sanitize_text_field( $_GET['social'] );
|
98 |
-
|
99 |
-
switch ( sanitize_text_field( $_GET['action'] ) ) {
|
100 |
-
case 'add':
|
101 |
-
$this->edit_action( $social );
|
102 |
-
|
103 |
-
return;
|
104 |
-
case 'edit':
|
105 |
-
if ( isset( $_GET['feed'] ) ) {
|
106 |
-
$this->edit_action( $social, $_GET['feed'] );
|
107 |
-
}
|
108 |
-
|
109 |
-
return;
|
110 |
-
case 'delete':
|
111 |
-
if ( isset( $_GET['feed'] ) ) {
|
112 |
-
$this->delete_action( $social, $_GET['feed'] );
|
113 |
-
}
|
114 |
-
|
115 |
-
return;
|
116 |
-
default:
|
117 |
-
unset( $_GET['action'] );
|
118 |
-
$this->showPageContent();
|
119 |
-
|
120 |
-
return;
|
121 |
-
}
|
122 |
-
}
|
123 |
-
|
124 |
-
$socials = [
|
125 |
-
'instagram' => [
|
126 |
-
'title' => __( 'Instagram feeds', 'instagram-slider-widget' ),
|
127 |
-
'description' => __( 'Manage Instagram feeds', 'instagram-slider-widget' ),
|
128 |
-
'content' => $this->instagram(),
|
129 |
-
],
|
130 |
-
'facebook' => [
|
131 |
-
'title' => __( 'Facebook feeds', 'instagram-slider-widget' ),
|
132 |
-
'description' => __( 'Manage Facebook feeds', 'instagram-slider-widget' ),
|
133 |
-
'content' => $this->facebook(),
|
134 |
-
],
|
135 |
-
'youtube' => [
|
136 |
-
'title' => __( 'Youtube feeds', 'instagram-slider-widget' ),
|
137 |
-
'description' => __( 'Manage Youtube feeds', 'instagram-slider-widget' ),
|
138 |
-
'content' => $this->youtube(),
|
139 |
-
],
|
140 |
-
];
|
141 |
-
|
142 |
-
$data = [
|
143 |
-
'socials' => $socials,
|
144 |
-
];
|
145 |
-
|
146 |
-
echo $this->render( $this->template_name, $data ); // @codingStandardsIgnoreLine
|
147 |
-
}
|
148 |
-
|
149 |
-
/**
|
150 |
-
* Логика на вкладке Инстаграма
|
151 |
-
*
|
152 |
-
* @return string
|
153 |
-
*/
|
154 |
-
public function instagram() {
|
155 |
-
$instagram = new WIS_Feeds( 'instagram' );
|
156 |
-
$data = [
|
157 |
-
'social' => 'instagram',
|
158 |
-
'feeds' => $instagram->feeds,
|
159 |
-
];
|
160 |
-
$result = $this->render( WIG_COMPONENT_VIEWS_DIR . '/feeds', $data );
|
161 |
-
|
162 |
-
return $result;
|
163 |
-
}
|
164 |
-
|
165 |
-
/**
|
166 |
-
* Логика на вкладке Facebook
|
167 |
-
*
|
168 |
-
* @return string
|
169 |
-
*/
|
170 |
-
public function facebook() {
|
171 |
-
$facebook = new WIS_Feeds( 'facebook' );
|
172 |
-
$data = [
|
173 |
-
'social' => 'facebook',
|
174 |
-
'feeds' => $facebook->feeds,
|
175 |
-
];
|
176 |
-
$result = $this->render( WFB_COMPONENT_VIEWS_DIR . '/feeds', $data );
|
177 |
-
|
178 |
-
return $result;
|
179 |
-
}
|
180 |
-
|
181 |
-
/**
|
182 |
-
* Логика на вкладке Youtube
|
183 |
-
*
|
184 |
-
* @return string
|
185 |
-
*/
|
186 |
-
public function youtube() {
|
187 |
-
$youtube = new WIS_Feeds( 'youtube' );
|
188 |
-
$data = [
|
189 |
-
'social' => 'youtube',
|
190 |
-
'feeds' => $youtube->feeds,
|
191 |
-
];
|
192 |
-
$result = $this->render( WYT_COMPONENT_VIEWS_DIR . '/feeds', $data );
|
193 |
-
|
194 |
-
return $result;
|
195 |
-
}
|
196 |
-
|
197 |
-
/**
|
198 |
-
* @param $social
|
199 |
-
* @param array $data
|
200 |
-
*
|
201 |
-
* @return WIS_Facebook_Feed|WIS_Instagram_Feed|WIS_Youtube_Feed|null
|
202 |
-
*/
|
203 |
-
private function getSocialClass( $social, $data = [] ) {
|
204 |
-
switch ( $social ) {
|
205 |
-
case 'instagram':
|
206 |
-
return new WIS_Instagram_Feed( $data );
|
207 |
-
case 'facebook':
|
208 |
-
return new WIS_Facebook_Feed( $data );
|
209 |
-
case 'youtube':
|
210 |
-
return new WIS_Youtube_Feed( $data );
|
211 |
-
default:
|
212 |
-
return null;
|
213 |
-
}
|
214 |
-
|
215 |
-
}
|
216 |
-
|
217 |
-
public function edit_action( $social, $feed_id = 0 ) {
|
218 |
-
$feeds = new WIS_Feeds( $social );
|
219 |
-
|
220 |
-
// ADD/EDIT Action
|
221 |
-
if ( isset( $_POST['wis-feed-save-action'] ) ) {
|
222 |
-
unset( $_POST['wis-feed-save-action'] );
|
223 |
-
|
224 |
-
$feed = $this->getSocialClass( $social, $_POST );
|
225 |
-
|
226 |
-
if ( $feed_id ) {
|
227 |
-
$feeds->update_feed( $feed_id, $feed );
|
228 |
-
//$_SERVER['REQUEST_URI'] = remove_query_arg( 'action' );
|
229 |
-
//$_SERVER['REQUEST_URI'] = remove_query_arg( 'feed' );
|
230 |
-
} else {
|
231 |
-
$feeds->add_feed( $feed );
|
232 |
-
$_SERVER['REQUEST_URI'] = remove_query_arg( 'action' );
|
233 |
-
}
|
234 |
-
|
235 |
-
//wp_redirect( $_SERVER['REQUEST_URI'] );
|
236 |
-
}
|
237 |
-
|
238 |
-
// FORM
|
239 |
-
$this->styles->required = [];
|
240 |
-
$this->styles->add( WIS_PLUGIN_URL . '/admin/assets/css/spectre.css', [], 'wis-feeds-forms', WIS_PLUGIN_VERSION );
|
241 |
-
|
242 |
-
if ( $feed_id ) {
|
243 |
-
$feed = $feeds->get_feed( $feed_id );
|
244 |
-
} else {
|
245 |
-
$feed = $this->getSocialClass( $social );
|
246 |
-
}
|
247 |
-
|
248 |
-
$feed->form( $feed_id );
|
249 |
-
}
|
250 |
-
|
251 |
-
public function delete_action( $social, $feed_id = 0 ) {
|
252 |
-
$feeds = new WIS_Feeds( $social );
|
253 |
-
|
254 |
-
if ( $feed_id ) {
|
255 |
-
$feeds->delete_feed( $feed_id );
|
256 |
-
}
|
257 |
-
|
258 |
-
$_SERVER['REQUEST_URI'] = remove_query_arg( 'action' );
|
259 |
-
$_SERVER['REQUEST_URI'] = remove_query_arg( 'feed' );
|
260 |
-
wp_safe_redirect( $_SERVER['REQUEST_URI'] );
|
261 |
-
}
|
262 |
-
|
263 |
-
public function get_hideShow_fields() {
|
264 |
-
return [
|
265 |
-
'account',
|
266 |
-
'account_business',
|
267 |
-
'username',
|
268 |
-
'hashtag',
|
269 |
-
];
|
270 |
-
}
|
271 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// Exit if accessed directly
|
4 |
+
|
5 |
+
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
/**
|
11 |
+
* The page Settings.
|
12 |
+
*
|
13 |
+
* @since 1.0.0
|
14 |
+
*/
|
15 |
+
class WIS_FeedsPage extends WIS_Page {
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Тип страницы
|
19 |
+
*
|
20 |
+
* @var string
|
21 |
+
*/
|
22 |
+
public $type = 'page';
|
23 |
+
|
24 |
+
/**
|
25 |
+
* The id of the page in the admin menu.
|
26 |
+
*
|
27 |
+
* @var string
|
28 |
+
*/
|
29 |
+
public $id;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
public $template_name = 'feeds';
|
35 |
+
|
36 |
+
/**
|
37 |
+
* @var string
|
38 |
+
*/
|
39 |
+
public $page_menu_dashicon = 'dashicons-slides';
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Заголовок страницы, также использует в меню, как название закладки
|
43 |
+
*
|
44 |
+
* @var bool
|
45 |
+
*/
|
46 |
+
public $show_page_title = true;
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @var bool
|
50 |
+
*/
|
51 |
+
public $show_right_sidebar = true;
|
52 |
+
|
53 |
+
/**
|
54 |
+
* @var int
|
55 |
+
*/
|
56 |
+
public $page_menu_position = 15;
|
57 |
+
|
58 |
+
/**
|
59 |
+
* @param WIS_Plugin $plugin
|
60 |
+
*/
|
61 |
+
public function __construct( $plugin ) {
|
62 |
+
$this->id = 'feeds';
|
63 |
+
$this->page_title = __( 'Social Slider Feeds', 'instagram-slider-widget' );
|
64 |
+
$this->menu_title = __( 'Social Slider Feeds', 'instagram-slider-widget' );
|
65 |
+
$this->menu_sub_title = __( 'Feeds', 'instagram-slider-widget' );
|
66 |
+
$this->menu_tab_title = __( 'Feeds', 'instagram-slider-widget' );
|
67 |
+
$this->menu_icon = '~/admin/assets/img/wis.png';
|
68 |
+
$this->capabilitiy = 'manage_options';
|
69 |
+
|
70 |
+
parent::__construct( $plugin );
|
71 |
+
|
72 |
+
$this->plugin = $plugin;
|
73 |
+
}
|
74 |
+
|
75 |
+
public function assets( $scripts, $styles ) {
|
76 |
+
parent::assets( $scripts, $styles );
|
77 |
+
|
78 |
+
//$this->styles->required = [];
|
79 |
+
$this->styles->add( WIS_PLUGIN_URL . '/admin/assets/css/feeds.css', [], 'wis-feeds-style', WIS_PLUGIN_VERSION );
|
80 |
+
//$this->styles->add( WIS_PLUGIN_URL . "/admin/assets/css/spectre.css", [], 'wis-feeds-forms', WIS_PLUGIN_VERSION );
|
81 |
+
$this->scripts->add( WIS_PLUGIN_URL . '/admin/assets/js/feeds.js', [ 'jquery' ], 'wis-feeds-script', WIS_PLUGIN_VERSION );
|
82 |
+
$this->scripts->localize( 'wis_feeds', [
|
83 |
+
'add_account_nonce' => wp_create_nonce( 'addAccountByToken' ),
|
84 |
+
'wis_nonce' => wp_create_nonce( 'addAccountByToken' ),
|
85 |
+
'remove_account' => __( 'Are you sure want to delete this feed?', 'instagram-slider-widget' ),
|
86 |
+
'nonce' => wp_create_nonce( 'wis_nonce' ),
|
87 |
+
'modal_close_confirm' => __( "You haven't finished adding the feed. Are you sure you want to close the window?", 'instagram-slider-widget' ),
|
88 |
+
'hide_show_fields' => $this->get_hideShow_fields(),
|
89 |
+
] );
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* @inerhitDoc
|
94 |
+
*/
|
95 |
+
public function showPageContent() {
|
96 |
+
if ( isset( $_GET['action'] ) && isset( $_GET['social'] ) ) {
|
97 |
+
$social = sanitize_text_field( $_GET['social'] );
|
98 |
+
|
99 |
+
switch ( sanitize_text_field( $_GET['action'] ) ) {
|
100 |
+
case 'add':
|
101 |
+
$this->edit_action( $social );
|
102 |
+
|
103 |
+
return;
|
104 |
+
case 'edit':
|
105 |
+
if ( isset( $_GET['feed'] ) ) {
|
106 |
+
$this->edit_action( $social, $_GET['feed'] );
|
107 |
+
}
|
108 |
+
|
109 |
+
return;
|
110 |
+
case 'delete':
|
111 |
+
if ( isset( $_GET['feed'] ) ) {
|
112 |
+
$this->delete_action( $social, $_GET['feed'] );
|
113 |
+
}
|
114 |
+
|
115 |
+
return;
|
116 |
+
default:
|
117 |
+
unset( $_GET['action'] );
|
118 |
+
$this->showPageContent();
|
119 |
+
|
120 |
+
return;
|
121 |
+
}
|
122 |
+
}
|
123 |
+
|
124 |
+
$socials = [
|
125 |
+
'instagram' => [
|
126 |
+
'title' => __( 'Instagram feeds', 'instagram-slider-widget' ),
|
127 |
+
'description' => __( 'Manage Instagram feeds', 'instagram-slider-widget' ),
|
128 |
+
'content' => $this->instagram(),
|
129 |
+
],
|
130 |
+
'facebook' => [
|
131 |
+
'title' => __( 'Facebook feeds', 'instagram-slider-widget' ),
|
132 |
+
'description' => __( 'Manage Facebook feeds', 'instagram-slider-widget' ),
|
133 |
+
'content' => $this->facebook(),
|
134 |
+
],
|
135 |
+
'youtube' => [
|
136 |
+
'title' => __( 'Youtube feeds', 'instagram-slider-widget' ),
|
137 |
+
'description' => __( 'Manage Youtube feeds', 'instagram-slider-widget' ),
|
138 |
+
'content' => $this->youtube(),
|
139 |
+
],
|
140 |
+
];
|
141 |
+
|
142 |
+
$data = [
|
143 |
+
'socials' => $socials,
|
144 |
+
];
|
145 |
+
|
146 |
+
echo $this->render( $this->template_name, $data ); // @codingStandardsIgnoreLine
|
147 |
+
}
|
148 |
+
|
149 |
+
/**
|
150 |
+
* Логика на вкладке Инстаграма
|
151 |
+
*
|
152 |
+
* @return string
|
153 |
+
*/
|
154 |
+
public function instagram() {
|
155 |
+
$instagram = new WIS_Feeds( 'instagram' );
|
156 |
+
$data = [
|
157 |
+
'social' => 'instagram',
|
158 |
+
'feeds' => $instagram->feeds,
|
159 |
+
];
|
160 |
+
$result = $this->render( WIG_COMPONENT_VIEWS_DIR . '/feeds', $data );
|
161 |
+
|
162 |
+
return $result;
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* Логика на вкладке Facebook
|
167 |
+
*
|
168 |
+
* @return string
|
169 |
+
*/
|
170 |
+
public function facebook() {
|
171 |
+
$facebook = new WIS_Feeds( 'facebook' );
|
172 |
+
$data = [
|
173 |
+
'social' => 'facebook',
|
174 |
+
'feeds' => $facebook->feeds,
|
175 |
+
];
|
176 |
+
$result = $this->render( WFB_COMPONENT_VIEWS_DIR . '/feeds', $data );
|
177 |
+
|
178 |
+
return $result;
|
179 |
+
}
|
180 |
+
|
181 |
+
/**
|
182 |
+
* Логика на вкладке Youtube
|
183 |
+
*
|
184 |
+
* @return string
|
185 |
+
*/
|
186 |
+
public function youtube() {
|
187 |
+
$youtube = new WIS_Feeds( 'youtube' );
|
188 |
+
$data = [
|
189 |
+
'social' => 'youtube',
|
190 |
+
'feeds' => $youtube->feeds,
|
191 |
+
];
|
192 |
+
$result = $this->render( WYT_COMPONENT_VIEWS_DIR . '/feeds', $data );
|
193 |
+
|
194 |
+
return $result;
|
195 |
+
}
|
196 |
+
|
197 |
+
/**
|
198 |
+
* @param $social
|
199 |
+
* @param array $data
|
200 |
+
*
|
201 |
+
* @return WIS_Facebook_Feed|WIS_Instagram_Feed|WIS_Youtube_Feed|null
|
202 |
+
*/
|
203 |
+
private function getSocialClass( $social, $data = [] ) {
|
204 |
+
switch ( $social ) {
|
205 |
+
case 'instagram':
|
206 |
+
return new WIS_Instagram_Feed( $data );
|
207 |
+
case 'facebook':
|
208 |
+
return new WIS_Facebook_Feed( $data );
|
209 |
+
case 'youtube':
|
210 |
+
return new WIS_Youtube_Feed( $data );
|
211 |
+
default:
|
212 |
+
return null;
|
213 |
+
}
|
214 |
+
|
215 |
+
}
|
216 |
+
|
217 |
+
public function edit_action( $social, $feed_id = 0 ) {
|
218 |
+
$feeds = new WIS_Feeds( $social );
|
219 |
+
|
220 |
+
// ADD/EDIT Action
|
221 |
+
if ( isset( $_POST['wis-feed-save-action'] ) ) {
|
222 |
+
unset( $_POST['wis-feed-save-action'] );
|
223 |
+
|
224 |
+
$feed = $this->getSocialClass( $social, $_POST );
|
225 |
+
|
226 |
+
if ( $feed_id ) {
|
227 |
+
$feeds->update_feed( $feed_id, $feed );
|
228 |
+
//$_SERVER['REQUEST_URI'] = esc_url(remove_query_arg( 'action' ));
|
229 |
+
//$_SERVER['REQUEST_URI'] = esc_url(remove_query_arg( 'feed' ));
|
230 |
+
} else {
|
231 |
+
$feeds->add_feed( $feed );
|
232 |
+
$_SERVER['REQUEST_URI'] = esc_url(remove_query_arg( 'action' ));
|
233 |
+
}
|
234 |
+
|
235 |
+
//wp_redirect( $_SERVER['REQUEST_URI'] );
|
236 |
+
}
|
237 |
+
|
238 |
+
// FORM
|
239 |
+
$this->styles->required = [];
|
240 |
+
$this->styles->add( WIS_PLUGIN_URL . '/admin/assets/css/spectre.css', [], 'wis-feeds-forms', WIS_PLUGIN_VERSION );
|
241 |
+
|
242 |
+
if ( $feed_id ) {
|
243 |
+
$feed = $feeds->get_feed( $feed_id );
|
244 |
+
} else {
|
245 |
+
$feed = $this->getSocialClass( $social );
|
246 |
+
}
|
247 |
+
|
248 |
+
$feed->form( $feed_id );
|
249 |
+
}
|
250 |
+
|
251 |
+
public function delete_action( $social, $feed_id = 0 ) {
|
252 |
+
$feeds = new WIS_Feeds( $social );
|
253 |
+
|
254 |
+
if ( $feed_id ) {
|
255 |
+
$feeds->delete_feed( $feed_id );
|
256 |
+
}
|
257 |
+
|
258 |
+
$_SERVER['REQUEST_URI'] = esc_url(remove_query_arg( 'action' ));
|
259 |
+
$_SERVER['REQUEST_URI'] = esc_url(remove_query_arg( 'feed' ));
|
260 |
+
wp_safe_redirect( $_SERVER['REQUEST_URI'] );
|
261 |
+
}
|
262 |
+
|
263 |
+
public function get_hideShow_fields() {
|
264 |
+
return [
|
265 |
+
'account',
|
266 |
+
'account_business',
|
267 |
+
'username',
|
268 |
+
'hashtag',
|
269 |
+
];
|
270 |
+
}
|
271 |
+
}
|
admin/pages/license.php
CHANGED
@@ -54,7 +54,7 @@ class WIS_LicensePage extends WIS_Page {
|
|
54 |
|
55 |
/**
|
56 |
* @since 2.0.7
|
57 |
-
* @var \WBCR\
|
58 |
*/
|
59 |
protected $premium;
|
60 |
|
@@ -72,7 +72,7 @@ class WIS_LicensePage extends WIS_Page {
|
|
72 |
|
73 |
/**
|
74 |
* @since 2.0.7
|
75 |
-
* @var \WBCR\
|
76 |
*/
|
77 |
protected $premium_license;
|
78 |
|
54 |
|
55 |
/**
|
56 |
* @since 2.0.7
|
57 |
+
* @var \WBCR\Factory_458\Premium\Provider
|
58 |
*/
|
59 |
protected $premium;
|
60 |
|
72 |
|
73 |
/**
|
74 |
* @since 2.0.7
|
75 |
+
* @var \WBCR\Factory_458\Premium\Interfaces\License
|
76 |
*/
|
77 |
protected $premium_license;
|
78 |
|
admin/pages/manual.php
CHANGED
@@ -37,6 +37,7 @@ class Manual extends WIS_Page {
|
|
37 |
public function __construct( $plugin ) {
|
38 |
$this->internal = true;
|
39 |
$this->id = "manual";
|
|
|
40 |
$this->menu_target = "feeds-" . $plugin->getPluginName();
|
41 |
$this->page_title = __( 'How to get Youtube API key', 'instagram-slider-widget' );
|
42 |
$this->template_name = "manual";
|
37 |
public function __construct( $plugin ) {
|
38 |
$this->internal = true;
|
39 |
$this->id = "manual";
|
40 |
+
$this->show_menu_tab = false;
|
41 |
$this->menu_target = "feeds-" . $plugin->getPluginName();
|
42 |
$this->page_title = __( 'How to get Youtube API key', 'instagram-slider-widget' );
|
43 |
$this->template_name = "manual";
|
admin/pages/profiles.php
CHANGED
@@ -220,10 +220,10 @@ class WIS_ProfilesPage extends WIS_Page {
|
|
220 |
break;
|
221 |
}
|
222 |
|
223 |
-
$_SERVER['REQUEST_URI'] = remove_query_arg( 'action' );
|
224 |
-
$_SERVER['REQUEST_URI'] = remove_query_arg( 'account' );
|
225 |
-
$_SERVER['REQUEST_URI'] = remove_query_arg( 'social' );
|
226 |
-
$_SERVER['REQUEST_URI'] = remove_query_arg( 'business' );
|
227 |
wp_redirect( $_SERVER['REQUEST_URI'] );
|
228 |
}
|
229 |
|
220 |
break;
|
221 |
}
|
222 |
|
223 |
+
$_SERVER['REQUEST_URI'] = esc_url(remove_query_arg( 'action' ));
|
224 |
+
$_SERVER['REQUEST_URI'] = esc_url(remove_query_arg( 'account' ));
|
225 |
+
$_SERVER['REQUEST_URI'] = esc_url(remove_query_arg( 'social' ));
|
226 |
+
$_SERVER['REQUEST_URI'] = esc_url(remove_query_arg( 'business' ));
|
227 |
wp_redirect( $_SERVER['REQUEST_URI'] );
|
228 |
}
|
229 |
|
admin/pages/widgets.php
CHANGED
@@ -151,7 +151,7 @@ class WIS_WidgetsPage extends WIS_Page {
|
|
151 |
update_option( 'widget_jr_insta_slider', $insta_widgets );
|
152 |
}
|
153 |
|
154 |
-
$_SERVER['REQUEST_URI'] = remove_query_arg( 'do' );
|
155 |
wp_redirect( $_SERVER['REQUEST_URI'] );
|
156 |
}
|
157 |
|
151 |
update_option( 'widget_jr_insta_slider', $insta_widgets );
|
152 |
}
|
153 |
|
154 |
+
$_SERVER['REQUEST_URI'] = esc_url(remove_query_arg( 'do' ));
|
155 |
wp_redirect( $_SERVER['REQUEST_URI'] );
|
156 |
}
|
157 |
|
admin/views/page-license.php
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
<div class="wrap">
|
2 |
-
<div class="factory-bootstrap-
|
3 |
<?php wp_nonce_field( 'license' ); ?>
|
4 |
<div id="wis-license-wrapper"
|
5 |
data-loader="<?php echo WIS_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
|
6 |
data-plugin="<?php echo get_class( $this->plugin ) ?>">
|
7 |
|
8 |
-
<div class="factory-bootstrap-
|
9 |
id="license-manager">
|
10 |
<div>
|
11 |
<h3><?php printf( __( 'Activate %s', 'instagram-slider-widget' ), $this->plan_name ) ?></h3>
|
1 |
<div class="wrap">
|
2 |
+
<div class="factory-bootstrap-459 factory-fontawesome-000">
|
3 |
<?php wp_nonce_field( 'license' ); ?>
|
4 |
<div id="wis-license-wrapper"
|
5 |
data-loader="<?php echo WIS_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
|
6 |
data-plugin="<?php echo get_class( $this->plugin ) ?>">
|
7 |
|
8 |
+
<div class="factory-bootstrap-459 onp-page-wrap <?php echo $this->get_license_type() ?>-license-manager-content"
|
9 |
id="license-manager">
|
10 |
<div>
|
11 |
<h3><?php printf( __( 'Activate %s', 'instagram-slider-widget' ), $this->plan_name ) ?></h3>
|
admin/views/page-showcase-license.php
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
<div class="wrap">
|
2 |
-
<div class="factory-bootstrap-
|
3 |
<?php wp_nonce_field( 'shopifeed_check_license' ); ?>
|
4 |
<div id="wis-license-wrapper"
|
5 |
data-loader="<?php echo WIS_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
|
6 |
data-plugin="<?php echo get_class( $this->plugin ) ?>">
|
7 |
|
8 |
-
<div class="factory-bootstrap-
|
9 |
id="license-manager">
|
10 |
<div>
|
11 |
<h3><?php printf( __( 'Activate %s', 'instagram-slider-widget' ), $this->plan_name ) ?></h3>
|
1 |
<div class="wrap">
|
2 |
+
<div class="factory-bootstrap-459 factory-fontawesome-000">
|
3 |
<?php wp_nonce_field( 'shopifeed_check_license' ); ?>
|
4 |
<div id="wis-license-wrapper"
|
5 |
data-loader="<?php echo WIS_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
|
6 |
data-plugin="<?php echo get_class( $this->plugin ) ?>">
|
7 |
|
8 |
+
<div class="factory-bootstrap-459 onp-page-wrap <?php echo $this->get_license_type() ?>-license-manager-content"
|
9 |
id="license-manager">
|
10 |
<div>
|
11 |
<h3><?php printf( __( 'Activate %s', 'instagram-slider-widget' ), $this->plan_name ) ?></h3>
|
components/facebook/includes/class-facebook-profiles.php
CHANGED
@@ -77,7 +77,7 @@ class WIS_Facebook_Profiles extends WIS_Profiles {
|
|
77 |
$connected_profiles = [];
|
78 |
|
79 |
$url = WFB_FACEBOOK_SELF_URL . "me/accounts";
|
80 |
-
$response = wp_remote_get( add_query_arg( $args, $url ) );
|
81 |
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
82 |
$pages = json_decode( wp_remote_retrieve_body( $response ), true );
|
83 |
foreach ( $pages['data'] as $profile ) {
|
@@ -106,12 +106,12 @@ class WIS_Facebook_Profiles extends WIS_Profiles {
|
|
106 |
public function content() {
|
107 |
if ( isset( $_GET['tab'] ) && 'facebook' === $_GET['tab'] ) {
|
108 |
if ( isset( $_GET['token_error'] ) ) {
|
109 |
-
$_SERVER['REQUEST_URI'] = str_replace( '#_', '', remove_query_arg( 'token_error' ) );
|
110 |
} else {
|
111 |
if ( isset( $_GET['access_token'] ) ) {
|
112 |
$token = $_GET['access_token'];
|
113 |
$choose_account_html = $this->update_profiles( $token );
|
114 |
-
$_SERVER['REQUEST_URI'] = remove_query_arg( 'access_token' );
|
115 |
?>
|
116 |
<div id="wis_accounts_modal" class="wis_accounts_modal">
|
117 |
<div class="wis_modal_header">
|
77 |
$connected_profiles = [];
|
78 |
|
79 |
$url = WFB_FACEBOOK_SELF_URL . "me/accounts";
|
80 |
+
$response = wp_remote_get( esc_url_raw(add_query_arg( $args, $url )) );
|
81 |
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
82 |
$pages = json_decode( wp_remote_retrieve_body( $response ), true );
|
83 |
foreach ( $pages['data'] as $profile ) {
|
106 |
public function content() {
|
107 |
if ( isset( $_GET['tab'] ) && 'facebook' === $_GET['tab'] ) {
|
108 |
if ( isset( $_GET['token_error'] ) ) {
|
109 |
+
$_SERVER['REQUEST_URI'] = str_replace( '#_', '', esc_url(remove_query_arg( 'token_error' )) );
|
110 |
} else {
|
111 |
if ( isset( $_GET['access_token'] ) ) {
|
112 |
$token = $_GET['access_token'];
|
113 |
$choose_account_html = $this->update_profiles( $token );
|
114 |
+
$_SERVER['REQUEST_URI'] = esc_url(remove_query_arg( 'access_token' ));
|
115 |
?>
|
116 |
<div id="wis_accounts_modal" class="wis_accounts_modal">
|
117 |
<div class="wis_modal_header">
|
components/instagram/includes/class-instagram-feed.php
CHANGED
@@ -1,1214 +1,1214 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
4 |
-
exit;
|
5 |
-
}
|
6 |
-
|
7 |
-
/**
|
8 |
-
* @property int|string id
|
9 |
-
* @property int|string title
|
10 |
-
* @property int|string search_for
|
11 |
-
* @property int|string account
|
12 |
-
* @property int|string account_business
|
13 |
-
* @property int|string username
|
14 |
-
* @property int|string hashtag
|
15 |
-
* @property int|string blocked_users
|
16 |
-
* @property int|string blocked_words
|
17 |
-
* @property int|string allowed_words
|
18 |
-
* @property int|string attachment
|
19 |
-
* @property int|string template
|
20 |
-
* @property int|string images_link
|
21 |
-
* @property int|string custom_url
|
22 |
-
* @property int|string orderby
|
23 |
-
* @property int|string images_number
|
24 |
-
* @property int|string columns
|
25 |
-
* @property int|string refresh_hour
|
26 |
-
* @property int|string slick_img_size
|
27 |
-
* @property int|string image_size
|
28 |
-
* @property int|string image_link_rel
|
29 |
-
* @property int|string image_link_class
|
30 |
-
* @property int|string no_pin
|
31 |
-
* @property int|string controls
|
32 |
-
* @property int|string animation
|
33 |
-
* @property int|string caption_words
|
34 |
-
* @property int|string shopifeed_phone
|
35 |
-
* @property int|string shopifeed_color
|
36 |
-
* @property int|string shopifeed_columns
|
37 |
-
* @property int|string slidespeed
|
38 |
-
* @property string description
|
39 |
-
* @property int|string support_author
|
40 |
-
* @property int|string gutter
|
41 |
-
* @property int|string masonry_image_width
|
42 |
-
* @property int|string slick_slides_to_show
|
43 |
-
* @property int|string slick_sliding_speed
|
44 |
-
* @property int|string enable_control_buttons
|
45 |
-
* @property int|string keep_ratio
|
46 |
-
* @property int|string enable_ad
|
47 |
-
* @property int|string enable_icons
|
48 |
-
* @property int|string slick_slides_padding
|
49 |
-
* @property int|string show_feed_header
|
50 |
-
* @property int|string enable_stories
|
51 |
-
* @property int|string highlight_offset
|
52 |
-
* @property int|string highlight_pattern
|
53 |
-
* @property int|string masonry_lite_cols
|
54 |
-
* @property int|string masonry_lite_gap
|
55 |
-
* @property int|string m_template
|
56 |
-
* @property int|string m_images_number
|
57 |
-
* @property int|string m_columns
|
58 |
-
* @property int|string m_shopifeed_phone
|
59 |
-
* @property int|string m_shopifeed_color
|
60 |
-
* @property int|string m_shopifeed_columns
|
61 |
-
* @property int|string m_controls
|
62 |
-
* @property int|string m_animation
|
63 |
-
* @property int|string m_slidespeed
|
64 |
-
* @property string m_description
|
65 |
-
* @property int|string m_caption_words
|
66 |
-
* @property int|string m_enable_control_buttons
|
67 |
-
* @property int|string m_show_feed_header
|
68 |
-
* @property int|string m_enable_stories
|
69 |
-
* @property int|string m_keep_ratio
|
70 |
-
* @property int|string m_slick_img_size
|
71 |
-
* @property int|string m_slick_slides_to_show
|
72 |
-
* @property int|string m_slick_sliding_speed
|
73 |
-
* @property int|string m_slick_slides_padding
|
74 |
-
* @property int|string m_gutter
|
75 |
-
* @property int|string m_masonry_image_width
|
76 |
-
* @property int|string m_masonry_lite_cols
|
77 |
-
* @property int|string m_masonry_lite_gap
|
78 |
-
* @property int|string m_highlight_offset
|
79 |
-
* @property int|string m_highlight_pattern
|
80 |
-
* @property int|string m_enable_ad
|
81 |
-
* @property int|string m_enable_icons
|
82 |
-
* @property int|string m_orderby
|
83 |
-
* @property int|string m_images_link
|
84 |
-
* @property int|string m_blocked_words
|
85 |
-
* @property int|string m_allowed_words
|
86 |
-
* @property int|string m_powered_by_link
|
87 |
-
*/
|
88 |
-
class WIS_Instagram_Feed extends WIS_Feed {
|
89 |
-
|
90 |
-
public $social = 'instagram';
|
91 |
-
|
92 |
-
/**
|
93 |
-
* @var string
|
94 |
-
*/
|
95 |
-
protected $component_dir = WIG_COMPONENT_DIR;
|
96 |
-
|
97 |
-
/**
|
98 |
-
* @var WIS_Instagram_Profiles
|
99 |
-
*/
|
100 |
-
public $profiles;
|
101 |
-
|
102 |
-
const USERNAME_URL = 'https://www.instagram.com/{username}/';
|
103 |
-
const TAG_URL = 'https://www.instagram.com/explore/tags/{tag}/?__a=1';
|
104 |
-
const USERS_SELF_URL = 'https://graph.instagram.com/me';
|
105 |
-
const USERS_SELF_MEDIA_URL = 'https://graph.instagram.com/';
|
106 |
-
const USERS_SELF_URL_NEW = 'https://graph.facebook.com/';
|
107 |
-
|
108 |
-
/**
|
109 |
-
* Instagram feed constructor.
|
110 |
-
*/
|
111 |
-
public function __construct( $feed = [] ) {
|
112 |
-
parent::__construct( $feed );
|
113 |
-
|
114 |
-
$this->profiles = new WIS_Instagram_Profiles();
|
115 |
-
}
|
116 |
-
|
117 |
-
/**
|
118 |
-
* Enqueue public-facing Scripts and style sheet.
|
119 |
-
*/
|
120 |
-
public function widget_scripts_enqueue() {
|
121 |
-
wp_enqueue_style( 'jr-insta-styles' );
|
122 |
-
wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'font-awesome' );
|
123 |
-
wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'instag-slider' );
|
124 |
-
wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'wis-header' );
|
125 |
-
|
126 |
-
$ajax = json_encode( [
|
127 |
-
'url' => admin_url( 'admin-ajax.php' ),
|
128 |
-
'nonce' => wp_create_nonce( 'addAccountByToken' ),
|
129 |
-
] );
|
130 |
-
wp_add_inline_script( WIS_Plugin::app()->getPrefix() . 'jr-insta', "var ajax = $ajax;" );
|
131 |
-
|
132 |
-
wp_enqueue_script( WIS_Plugin::app()->getPrefix() . 'jquery-pllexi-slider' );
|
133 |
-
}
|
134 |
-
|
135 |
-
protected function setDefaults() {
|
136 |
-
$this->profiles = new WIS_Instagram_Profiles();
|
137 |
-
|
138 |
-
$this->templates = apply_filters( 'wis/sliders', [
|
139 |
-
'slider' => 'Slider - Normal',
|
140 |
-
'slider-overlay' => 'Slider - Overlay Text',
|
141 |
-
'thumbs' => 'Thumbnails',
|
142 |
-
'thumbs-no-border' => 'Thumbnails - Without Border',
|
143 |
-
] );
|
144 |
-
|
145 |
-
$this->linkto = apply_filters( 'wis/options/link_to', [
|
146 |
-
'image_link' => 'Instagram Image',
|
147 |
-
'image_url' => 'Image URL',
|
148 |
-
'custom_url' => 'Custom Link',
|
149 |
-
'none' => 'None',
|
150 |
-
] );
|
151 |
-
|
152 |
-
$this->defaults = [
|
153 |
-
'id' => null,
|
154 |
-
'title' => __( 'Social Slider', 'instagram-slider-widget' ),
|
155 |
-
'search_for' => 'account',
|
156 |
-
'account' => '',
|
157 |
-
'account_business' => '',
|
158 |
-
'username' => '',
|
159 |
-
'hashtag' => '',
|
160 |
-
'blocked_users' => '',
|
161 |
-
'blocked_words' => '',
|
162 |
-
'allowed_words' => '',
|
163 |
-
'attachment' => 0,
|
164 |
-
'template' => 'slider',
|
165 |
-
'images_link' => 'image_link',
|
166 |
-
'custom_url' => '',
|
167 |
-
'orderby' => 'rand',
|
168 |
-
'images_number' => 20,
|
169 |
-
'columns' => 4,
|
170 |
-
'refresh_hour' => 5,
|
171 |
-
'slick_img_size' => 300,
|
172 |
-
'image_size' => 'standard',
|
173 |
-
'image_link_rel' => '',
|
174 |
-
'image_link_class' => '',
|
175 |
-
'no_pin' => 0,
|
176 |
-
'controls' => 'prev_next',
|
177 |
-
'animation' => 'slide',
|
178 |
-
'caption_words' => 20,
|
179 |
-
'shopifeed_phone' => '',
|
180 |
-
'shopifeed_color' => '#DA004A',
|
181 |
-
'shopifeed_columns' => 3,
|
182 |
-
'slidespeed' => 7000,
|
183 |
-
'description' => [],
|
184 |
-
'support_author' => 0,
|
185 |
-
'gutter' => 0,
|
186 |
-
'masonry_image_width' => 200,
|
187 |
-
'slick_slides_to_show' => 3,
|
188 |
-
'slick_sliding_speed' => 5000,
|
189 |
-
'enable_control_buttons' => 0,
|
190 |
-
'keep_ratio' => 0,
|
191 |
-
'enable_ad' => 0,
|
192 |
-
'enable_icons' => 0,
|
193 |
-
'slick_slides_padding' => 0,
|
194 |
-
'show_feed_header' => 0,
|
195 |
-
'enable_stories' => 0,
|
196 |
-
'highlight_offset' => 1,
|
197 |
-
'highlight_pattern' => 6,
|
198 |
-
'masonry_lite_cols' => 4,
|
199 |
-
'masonry_lite_gap' => 10,
|
200 |
-
|
201 |
-
'm_template' => 'slider',
|
202 |
-
'm_images_number' => 20,
|
203 |
-
'm_columns' => 4,
|
204 |
-
'm_shopifeed_phone' => '',
|
205 |
-
'm_shopifeed_color' => '#DA004A',
|
206 |
-
'm_shopifeed_columns' => 3,
|
207 |
-
'm_controls' => 'prev_next',
|
208 |
-
'm_animation' => 'slide',
|
209 |
-
'm_slidespeed' => 7000,
|
210 |
-
'm_description' => [],
|
211 |
-
'm_caption_words' => 20,
|
212 |
-
'm_enable_control_buttons' => 0,
|
213 |
-
'm_show_feed_header' => 0,
|
214 |
-
'm_enable_stories' => 0,
|
215 |
-
'm_keep_ratio' => 0,
|
216 |
-
'm_slick_img_size' => 300,
|
217 |
-
'm_slick_slides_to_show' => 3,
|
218 |
-
'm_slick_sliding_speed' => 5000,
|
219 |
-
'm_slick_slides_padding' => 0,
|
220 |
-
'm_gutter' => 0,
|
221 |
-
'm_masonry_image_width' => 200,
|
222 |
-
'm_highlight_offset' => 1,
|
223 |
-
'm_highlight_pattern' => 6,
|
224 |
-
'm_enable_ad' => 0,
|
225 |
-
'm_enable_icons' => 0,
|
226 |
-
'm_orderby' => 'rand',
|
227 |
-
'm_images_link' => 'image_link',
|
228 |
-
'm_blocked_words' => '',
|
229 |
-
'm_allowed_words' => '',
|
230 |
-
'm_powered_by_link' => '',
|
231 |
-
'm_masonry_lite_cols' => 2,
|
232 |
-
'm_masonry_lite_gap' => 5,
|
233 |
-
];
|
234 |
-
}
|
235 |
-
|
236 |
-
/**
|
237 |
-
* @return array
|
238 |
-
*/
|
239 |
-
public function getTemplates() {
|
240 |
-
return apply_filters( 'wis/sliders', $this->templates );
|
241 |
-
}
|
242 |
-
|
243 |
-
/**
|
244 |
-
* @return array
|
245 |
-
*/
|
246 |
-
public function getLinkto() {
|
247 |
-
return apply_filters( 'wis/options/link_to', $this->linkto );
|
248 |
-
}
|
249 |
-
|
250 |
-
/**
|
251 |
-
* @inerhitDoc
|
252 |
-
*/
|
253 |
-
public function form( $feed_id = 0 ) {
|
254 |
-
$feeds = new WIS_Feeds( $this->social );
|
255 |
-
$accounts = $this->getAccounts();
|
256 |
-
$accounts_business = $this->getAccountsBusiness();
|
257 |
-
|
258 |
-
if ( count( $accounts ) ) {
|
259 |
-
$s_for = 'account';
|
260 |
-
} elseif ( count( $accounts_business ) ) {
|
261 |
-
$s_for = 'account_business';
|
262 |
-
} else {
|
263 |
-
$s_for = 'username';
|
264 |
-
}
|
265 |
-
$this->updateDefaults( 'search_for', $s_for );
|
266 |
-
|
267 |
-
$args = [
|
268 |
-
'_this' => $this,
|
269 |
-
'is_update' => (bool) $feed_id,
|
270 |
-
'add_link' => WIS_Page::instance()->getActionUrl( 'add' ),
|
271 |
-
'feeds' => $feeds->feeds,
|
272 |
-
'instance' => $this->instance,
|
273 |
-
'accounts' => $accounts,
|
274 |
-
'accounts_business' => $accounts_business,
|
275 |
-
'sliders' => $this->getTemplates(),
|
276 |
-
'options_linkto' => $this->getLinkto(),
|
277 |
-
];
|
278 |
-
echo WIS_Page::instance()->render( WIG_COMPONENT_VIEWS_DIR . '/form-feed', $args ); // phpcs:ignore
|
279 |
-
}
|
280 |
-
|
281 |
-
/**
|
282 |
-
* Selected array function echoes selected if in array
|
283 |
-
*
|
284 |
-
* @param array $haystack The array to search in
|
285 |
-
* @param string $current The string value to search in array;
|
286 |
-
*/
|
287 |
-
public function selected( $haystack, $current ) {
|
288 |
-
|
289 |
-
if ( is_array( $haystack ) && in_array( $current, $haystack ) ) {
|
290 |
-
selected( 1, 1, true );
|
291 |
-
}
|
292 |
-
}
|
293 |
-
|
294 |
-
private function getAccounts() {
|
295 |
-
$accounts = WIS_Plugin::app()->getPopulateOption( WIG_PROFILES_OPTION, [] );
|
296 |
-
if ( ! is_array( $accounts ) ) {
|
297 |
-
$accounts = [];
|
298 |
-
}
|
299 |
-
|
300 |
-
return $accounts;
|
301 |
-
}
|
302 |
-
|
303 |
-
private function getAccountsBusiness() {
|
304 |
-
$accounts_business = WIS_Plugin::app()->getPopulateOption( WIG_BUSINESS_PROFILES_OPTION, [] );
|
305 |
-
if ( ! is_array( $accounts_business ) ) {
|
306 |
-
$accounts_business = [];
|
307 |
-
}
|
308 |
-
|
309 |
-
return $accounts_business;
|
310 |
-
}
|
311 |
-
|
312 |
-
/**
|
313 |
-
* Display feed
|
314 |
-
*
|
315 |
-
* @param bool $return Return result or echo
|
316 |
-
*
|
317 |
-
* @return string|bool
|
318 |
-
*/
|
319 |
-
public function display( $return = false ) {
|
320 |
-
$data = $this->display_images();
|
321 |
-
|
322 |
-
if ( $return ) {
|
323 |
-
return $data;
|
324 |
-
} else {
|
325 |
-
echo $data; // @codingStandardsIgnoreLine
|
326 |
-
}
|
327 |
-
|
328 |
-
return true;
|
329 |
-
}
|
330 |
-
|
331 |
-
/**
|
332 |
-
* Stores the fetched data from instagram in WordPress DB using transients
|
333 |
-
*
|
334 |
-
* @param $search_for
|
335 |
-
* @param $cache_hours
|
336 |
-
* @param $nr_images
|
337 |
-
*
|
338 |
-
* @return array|string of localy saved instagram data
|
339 |
-
*/
|
340 |
-
public function feed_query( $search_for, $cache_hours, $nr_images ) {
|
341 |
-
//$nr_images = $nr_images <= 12 ? $nr_images : 12;
|
342 |
-
if ( isset( $search_for['account'] ) && ! empty( $search_for['account'] ) ) {
|
343 |
-
$search = 'account';
|
344 |
-
$search_string = $search_for['account'];
|
345 |
-
} elseif ( isset( $search_for['account_business'] ) && ! empty( $search_for['account_business'] ) ) {
|
346 |
-
$search = 'account_business';
|
347 |
-
$search_string = $search_for['account_business'];
|
348 |
-
} elseif ( isset( $search_for['username'] ) && ! empty( $search_for['username'] ) ) {
|
349 |
-
$search = 'user';
|
350 |
-
$search_string = $search_for['username'];
|
351 |
-
} elseif ( isset( $search_for['hashtag'] ) && ! empty( $search_for['hashtag'] ) ) {
|
352 |
-
$search = 'hashtag';
|
353 |
-
$search_string = $search_for['hashtag'];
|
354 |
-
$blocked_users = isset( $search_for['blocked_users'] ) && ! empty( $search_for['blocked_users'] ) ? str_replace( '@', '', $search_for['blocked_users'] ) : false;
|
355 |
-
$blocked_users_array = $blocked_users ? $this->get_ids_from_usernames( $blocked_users ) : [];
|
356 |
-
} else {
|
357 |
-
return __( 'Nothing to search for', 'instagram-slider-widget' );
|
358 |
-
}
|
359 |
-
|
360 |
-
$blocked_users = isset( $blocked_users ) ? $blocked_users : '';
|
361 |
-
$blocked_words = isset( $search_for['blocked_words'] ) && ! empty( $search_for['blocked_words'] ) ? $search_for['blocked_words'] : '';
|
362 |
-
$allowed_words = isset( $search_for['allowed_words'] ) && ! empty( $search_for['allowed_words'] ) ? $search_for['allowed_words'] : '';
|
363 |
-
|
364 |
-
//песочница
|
365 |
-
if ( isset( $_GET['access_token'] ) && isset( $_GET['id'] ) ) {
|
366 |
-
$search = 'account';
|
367 |
-
$search_string = htmlspecialchars( $_GET['access_token'] );
|
368 |
-
}
|
369 |
-
|
370 |
-
$feed_id = $this->instance['id'];
|
371 |
-
$opt_name = "jr_insta_{$feed_id}_" . md5( $search . '_' . $search_string );
|
372 |
-
$instaData = get_transient( $opt_name );
|
373 |
-
$old_opts = get_option( $opt_name, [] );
|
374 |
-
$new_opts = [
|
375 |
-
'search' => $search,
|
376 |
-
'search_string' => $search_string,
|
377 |
-
'blocked_users' => $blocked_users,
|
378 |
-
'cache_hours' => $cache_hours,
|
379 |
-
'nr_images' => $nr_images,
|
380 |
-
];
|
381 |
-
|
382 |
-
if ( true === $this->trigger_refresh_data( $instaData, $old_opts, $new_opts ) ) {
|
383 |
-
$instaData = [];
|
384 |
-
|
385 |
-
if ( 'account' == $search || 'account_business' == $search ) {
|
386 |
-
$is_business_api = 'account_business' == $search ? true : false;
|
387 |
-
$nr_images = ! WIS_Plugin::app()->is_premium() && $nr_images > 20 ? 20 : $nr_images;
|
388 |
-
//песочница
|
389 |
-
if ( isset( $_GET['access_token'] ) && isset( $_GET['id'] ) ) {
|
390 |
-
if ( isset( $_COOKIE['wis-demo-account-data'] ) ) {
|
391 |
-
$account = json_decode( stripslashes( $_COOKIE['wis-demo-account-data'] ), true );
|
392 |
-
} else {
|
393 |
-
$account = $this->get_user_by_token( $_GET['access_token'] );
|
394 |
-
}
|
395 |
-
} else {
|
396 |
-
$account = $this->getAccountById( $search_string, $is_business_api );
|
397 |
-
}
|
398 |
-
|
399 |
-
if ( $is_business_api ) {
|
400 |
-
if ( ! isset( $_GET['access_token'] ) && ! isset( $_GET['id'] ) ) {
|
401 |
-
//Обновляем данные профиля: подписчики, количество постов
|
402 |
-
$this->profiles->update_account_profiles( $account['token'], true, $account['username'] );
|
403 |
-
}
|
404 |
-
|
405 |
-
$args = [
|
406 |
-
'access_token' => $account['token'],
|
407 |
-
'fields' => 'id,username,caption,comments_count,like_count,media_type,media_url,permalink,timestamp,children{media_url,media_type},owner,thumbnail_url',
|
408 |
-
'limit' => 50,
|
409 |
-
];
|
410 |
-
|
411 |
-
$url = WFB_FACEBOOK_SELF_URL . $account['id'] . '/media';
|
412 |
-
$response = wp_remote_get( add_query_arg( $args, $url ) );
|
413 |
-
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
414 |
-
$media = json_decode( wp_remote_retrieve_body( $response ), true );
|
415 |
-
$results = $media['data'];
|
416 |
-
|
417 |
-
$stories_url = WFB_FACEBOOK_SELF_URL . $account['id'] . '/stories';
|
418 |
-
$url = add_query_arg( [
|
419 |
-
'access_token' => $account['token'],
|
420 |
-
'fields' => 'media_type,media_url,permalink,timestamp',
|
421 |
-
], $stories_url );
|
422 |
-
$stories_response = wp_remote_get( $url );
|
423 |
-
if ( 200 == wp_remote_retrieve_response_code( $stories_response ) ) {
|
424 |
-
$stories = json_decode( wp_remote_retrieve_body( $stories_response ), true );
|
425 |
-
$results['stories'] = $stories['data'];
|
426 |
-
}
|
427 |
-
$results = apply_filters( 'wis/images/count', $results, $media, $nr_images, true );
|
428 |
-
$next_max_id = null;
|
429 |
-
if ( ! empty( $media['pagination'] ) ) {
|
430 |
-
$next_max_id = $media['pagination']['next_max_id'];
|
431 |
-
}
|
432 |
-
if ( ! count( $results ) ) {
|
433 |
-
return [ 'error' => __( 'There are no publications in this account yet', 'instagram-slider-widget' ) ];
|
434 |
-
}
|
435 |
-
} else {
|
436 |
-
if ( $instaData ) {
|
437 |
-
$results = $instaData;
|
438 |
-
}
|
439 |
-
}
|
440 |
-
} else {
|
441 |
-
if ( ! isset( $_GET['access_token'] ) ) {
|
442 |
-
//Обновляем данные профиля: подписчики, количество постов
|
443 |
-
$this->profiles->update_account_profiles( $account['token'] );
|
444 |
-
}
|
445 |
-
|
446 |
-
$args = [
|
447 |
-
'fields' => 'id,username,media{id,username,caption,media_type,media_url,permalink,thumbnail_url,timestamp,children{id,media_type,media_url,thumbnail_url}}',
|
448 |
-
'limit' => 50,
|
449 |
-
'access_token' => $account['token'],
|
450 |
-
];
|
451 |
-
$url =
|
452 |
-
$response = wp_remote_get( add_query_arg( $args, $url ) );
|
453 |
-
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
454 |
-
$media = json_decode( wp_remote_retrieve_body( $response ), true );
|
455 |
-
$results = $media['media']['data'];
|
456 |
-
$results = apply_filters( 'wis/images/count', $results, $media, $nr_images, false );
|
457 |
-
if ( ! is_array( $results ) || ! count( $results ) ) {
|
458 |
-
return [ 'error' => __( 'There are no publications in this account yet', 'instagram-slider-widget' ) ];
|
459 |
-
}
|
460 |
-
} else {
|
461 |
-
if ( $instaData ) {
|
462 |
-
$results = $instaData;
|
463 |
-
}
|
464 |
-
}
|
465 |
-
}
|
466 |
-
} else { //hashtag
|
467 |
-
$account = $this->getAccountForHashtag();
|
468 |
-
//$account = false;
|
469 |
-
if ( $account ) {
|
470 |
-
$args = [
|
471 |
-
'access_token' => $account['token'],
|
472 |
-
'user_id' => $account['id'],
|
473 |
-
'q' => $search_string,
|
474 |
-
];
|
475 |
-
$url = WFB_FACEBOOK_SELF_URL . 'ig_hashtag_search';
|
476 |
-
$response = wp_remote_get( add_query_arg( $args, $url ) );
|
477 |
-
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
478 |
-
$media = json_decode( wp_remote_retrieve_body( $response ), true );
|
479 |
-
$args = [
|
480 |
-
'access_token' => $account['token'],
|
481 |
-
'user_id' => $account['id'],
|
482 |
-
//,timestamp
|
483 |
-
'fields' => 'id,caption,media_type,media_url,comments_count,like_count,permalink,children{media_type,media_url}',
|
484 |
-
'limit' => 50,
|
485 |
-
];
|
486 |
-
$url = WFB_FACEBOOK_SELF_URL . $media['data'][0]['id'] . '/recent_media';
|
487 |
-
$response = wp_remote_get( add_query_arg( $args, $url ) );
|
488 |
-
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
489 |
-
$media = json_decode( wp_remote_retrieve_body( $response ), true );
|
490 |
-
$media['hashtag'] = true;
|
491 |
-
$results = $media;
|
492 |
-
|
493 |
-
}
|
494 |
-
}
|
495 |
-
} else {
|
496 |
-
$url = str_replace( '{tag}', urlencode( trim( $search_string ) ), self::TAG_URL );
|
497 |
-
$response = wp_remote_get( $url, [
|
498 |
-
'sslverify' => false,
|
499 |
-
'timeout' => 60,
|
500 |
-
] );
|
501 |
-
$results = json_decode( $response['body'], true );
|
502 |
-
$hashtag_response_status = $response['response']['code'];
|
503 |
-
}
|
504 |
-
}
|
505 |
-
|
506 |
-
if ( isset( $results ) && is_array( $results ) ) {
|
507 |
-
if ( 'user' == $search ) {
|
508 |
-
$entry_data = isset( $results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges'] ) ? $results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges'] : [];
|
509 |
-
} elseif ( 'account' == $search || 'account_business' == $search ) {
|
510 |
-
$entry_data = $results;
|
511 |
-
} elseif ( 'hashtag' == $search ) {
|
512 |
-
if ( isset( $results['hashtag'] ) ) {
|
513 |
-
$entry_data = $results['data'];
|
514 |
-
} else {
|
515 |
-
$entry_data = isset( $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] ) ? $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] : [];
|
516 |
-
}
|
517 |
-
}
|
518 |
-
|
519 |
-
if ( empty( $entry_data ) ) {
|
520 |
-
return [ 'error' => __( 'No images found', 'instagram-slider-widget' ) ];
|
521 |
-
}
|
522 |
-
|
523 |
-
$i = 0;
|
524 |
-
foreach ( $entry_data as $current => $result ) {
|
525 |
-
if ( ! isset( $result['caption'] ) ) {
|
526 |
-
$result['caption'] = '';
|
527 |
-
}
|
528 |
-
|
529 |
-
if ( $i >= $nr_images ) {
|
530 |
-
if ( isset( $entry_data['stories'] ) ) {
|
531 |
-
$instaData['stories'] = $entry_data['stories'];
|
532 |
-
}
|
533 |
-
break;
|
534 |
-
} else {
|
535 |
-
$i ++;
|
536 |
-
}
|
537 |
-
|
538 |
-
if ( 'hashtag' == $search ) {
|
539 |
-
|
540 |
-
//TODO: Доделать черный список с новым API
|
541 |
-
//Чёрный список не работает, так как API не отдает имя пользователя, который создал пост
|
542 |
-
if ( isset( $results['hashtag'] ) ) {
|
543 |
-
$result['fbapi'] = true;
|
544 |
-
if ( isset( $result['media_type'] ) && 'VIDEO' === $result['media_type'] ) {
|
545 |
-
//$nr_images++;
|
546 |
-
continue;
|
547 |
-
}
|
548 |
-
} else {
|
549 |
-
$result = $result['node'];
|
550 |
-
if ( in_array( $result['owner']['id'], $blocked_users_array ) ) {
|
551 |
-
$nr_images ++;
|
552 |
-
continue;
|
553 |
-
}
|
554 |
-
}
|
555 |
-
}
|
556 |
-
|
557 |
-
if ( 'account' == $search ) {
|
558 |
-
$image_data = $this->to_media_model_from_account( $result );
|
559 |
-
} elseif ( 'account_business' == $search ) {
|
560 |
-
$image_data = $this->to_media_model_from_account_business( $result );
|
561 |
-
} elseif ( 'hashtag' == $search && $results['hashtag'] ) {
|
562 |
-
$image_data = $this->to_media_model_from_hashtag( $result );
|
563 |
-
}
|
564 |
-
|
565 |
-
if ( $this->is_blocked_by_word( $blocked_words, $image_data['caption'] ) ) {
|
566 |
-
$nr_images ++;
|
567 |
-
continue;
|
568 |
-
}
|
569 |
-
|
570 |
-
if ( ! $this->is_allowed_by_word( $allowed_words, $image_data['caption'] ) ) {
|
571 |
-
$nr_images ++;
|
572 |
-
continue;
|
573 |
-
}
|
574 |
-
|
575 |
-
$instaData[] = $image_data;
|
576 |
-
} // end -> foreach
|
577 |
-
} elseif ( isset( $hashtag_response_status ) && 429 == $hashtag_response_status && is_user_logged_in() && 'hashtag' === $search ) {
|
578 |
-
return [ 'error' => __( "Can't receive images by hashtag. Please connect a business account and try again.", 'instagram-slider-widget' ) ];
|
579 |
-
}
|
580 |
-
|
581 |
-
update_option( $opt_name, $new_opts );
|
582 |
-
|
583 |
-
$insta_imgs_cache = 'insta_imgs_cache';
|
584 |
-
if ( is_array( $instaData ) && ! empty( $instaData ) ) {
|
585 |
-
set_transient( $opt_name, $instaData, $cache_hours * 60 * 60 );
|
586 |
-
WIS_Plugin::app()->updateoption( $insta_imgs_cache, $instaData );
|
587 |
-
} else {
|
588 |
-
$instaData = WIS_Plugin::app()->getOption( $insta_imgs_cache, [] );
|
589 |
-
WIS_Plugin::app()->logger->error( 'Feed query failed! Try reconnecting your account in the plugin settings.' );
|
590 |
-
}
|
591 |
-
}
|
592 |
-
|
593 |
-
return $instaData;
|
594 |
-
}
|
595 |
-
|
596 |
-
/**
|
597 |
-
* Runs the query for images and returns the html
|
598 |
-
*
|
599 |
-
* @return string
|
600 |
-
*/
|
601 |
-
public function display_images() {
|
602 |
-
$this->widget_scripts_enqueue();
|
603 |
-
|
604 |
-
$feed_id = $this->id;
|
605 |
-
$searchfor = $this->search_for;
|
606 |
-
$account = $this->account;
|
607 |
-
$account_business = $this->account_business;
|
608 |
-
$username = $this->username;
|
609 |
-
$hashtag = $this->hashtag;
|
610 |
-
$refresh_hour = $this->refresh_hour;
|
611 |
-
$template = $this->get( 'template' );
|
612 |
-
$images_number = $this->get( 'images_number' );
|
613 |
-
$blocked_words = $this->get( 'blocked_words' );
|
614 |
-
$allowed_words = $this->get( 'allowed_words' );
|
615 |
-
$blocked_users = $this->get( 'blocked_users' );
|
616 |
-
$enable_ad = $this->get( 'enable_ad' );
|
617 |
-
$orderby = $this->get( 'orderby' );
|
618 |
-
|
619 |
-
if ( 'hashtag' === $searchfor ) {
|
620 |
-
$search_for['hashtag'] = $hashtag;
|
621 |
-
} elseif ( 'account' === $searchfor ) {
|
622 |
-
$search_for['account'] = $account;
|
623 |
-
} elseif ( 'account_business' === $searchfor ) {
|
624 |
-
$search_for['account_business'] = $account_business;
|
625 |
-
} else {
|
626 |
-
$search_for['username'] = $username;
|
627 |
-
}
|
628 |
-
$search_for['blocked_users'] = $blocked_users;
|
629 |
-
$search_for['blocked_words'] = $blocked_words;
|
630 |
-
$search_for['allowed_words'] = $allowed_words;
|
631 |
-
|
632 |
-
$args = $this->getAdaptiveInstance();
|
633 |
-
//WIS_Plugin::app()->logger->info( "Feed options: " . json_encode( $args ) );
|
634 |
-
|
635 |
-
$is_business = ( 'account_business' === $searchfor );
|
636 |
-
if ( $is_business ) {
|
637 |
-
$accounts = $this->getAccountsBusiness();
|
638 |
-
} else {
|
639 |
-
$accounts = $this->getAccounts();
|
640 |
-
}
|
641 |
-
|
642 |
-
if ( $template == 'slick_slider' || $template == 'masonry_lite' || $template == 'masonry' || $template == 'highlight' || $template == 'showcase' ) {
|
643 |
-
if ( defined( 'WISP_PLUGIN_ACTIVE' ) && WISP_PLUGIN_ACTIVE == true ) {
|
644 |
-
return apply_filters( 'wis/pro/display_images', '', $args, $this );
|
645 |
-
}
|
646 |
-
}
|
647 |
-
|
648 |
-
$output = '';
|
649 |
-
//WIS_Plugin::app()->logger->info( "Feed query: " . json_encode( [ $search_for, $refresh_hour, $images_number ] ) );
|
650 |
-
$images_data = $this->feed_query( $search_for, $refresh_hour, $images_number );
|
651 |
-
//WIS_Plugin::app()->logger->info( "Feed images: " . json_encode( $images_data ) );
|
652 |
-
|
653 |
-
if ( isset( $images_data['error'] ) ) {
|
654 |
-
return $images_data['error'];
|
655 |
-
}
|
656 |
-
|
657 |
-
if ( $args['show_feed_header'] && $is_business ) {
|
658 |
-
$account_data = $accounts[ $images_data[0]['username'] ] ?? [];
|
659 |
-
//WIS_Plugin::app()->logger->info( "Account data: " . json_encode( $account_data ) );
|
660 |
-
|
661 |
-
if ( WIS_Plugin::app()->is_premium() ) {
|
662 |
-
$output .= WIS_Premium::app()->display_header_with_stories( $account, $account_data, $images_data['stories'], $args['enable_stories'] );
|
663 |
-
} else {
|
664 |
-
$output .= $this->render_template( 'templates/feed_header', $account_data );
|
665 |
-
}
|
666 |
-
}
|
667 |
-
|
668 |
-
if ( ! empty( $args['description'] ) && ! is_array( $args['description'] ) ) {
|
669 |
-
$args['description'] = explode( ',', $args['description'] );
|
670 |
-
}
|
671 |
-
|
672 |
-
if ( isset( $images_data['stories'] ) ) {
|
673 |
-
unset( $images_data['stories'] );
|
674 |
-
}
|
675 |
-
|
676 |
-
if ( 'rand' == $orderby ) {
|
677 |
-
shuffle( $images_data );
|
678 |
-
} else {
|
679 |
-
$orderby = explode( '-', $orderby );
|
680 |
-
if ( 'date' == $orderby[0] ) {
|
681 |
-
$func = 'sort_timestamp_' . $orderby[1];
|
682 |
-
} else {
|
683 |
-
$func = $is_business ? 'sort_popularity_' . $orderby[1] : 'sort_timestamp_' . $orderby[1];
|
684 |
-
}
|
685 |
-
|
686 |
-
usort( $images_data, [ $this, $func ] );
|
687 |
-
}
|
688 |
-
|
689 |
-
foreach ( $images_data as $key => &$image_data ) {
|
690 |
-
if ( 'stories' === $key ) {
|
691 |
-
continue;
|
692 |
-
}
|
693 |
-
|
694 |
-
$images_link = $args['images_link'];
|
695 |
-
if ( 'image_link' == $images_link || 'popup' == $images_link ) {
|
696 |
-
$image_data['link_to'] = $image_data['link'] ?? '';
|
697 |
-
} elseif ( 'user_url' == $images_link ) {
|
698 |
-
$image_data['link_to'] = 'https://www.instagram.com/' . $username . '/';
|
699 |
-
} elseif ( 'image_url' == $images_link ) {
|
700 |
-
$image_data['link_to'] = $image_data['url'];
|
701 |
-
} elseif ( 'custom_url' == $images_link ) {
|
702 |
-
$image_data['link_to'] = $args['custom_url'];
|
703 |
-
}
|
704 |
-
|
705 |
-
$image_data['caption'] = wp_trim_words( $image_data['caption'], $args['caption_words'], '' );
|
706 |
-
}
|
707 |
-
|
708 |
-
$template_args = [
|
709 |
-
'template_args' => $args,
|
710 |
-
'images' => $images_data,
|
711 |
-
'feed_id' => $feed_id,
|
712 |
-
];
|
713 |
-
|
714 |
-
$output .= $this->render_template( "templates/{$template}", $template_args );
|
715 |
-
|
716 |
-
if ( $enable_ad && ! defined( 'WISP_PLUGIN_ACTIVE' ) ) {
|
717 |
-
$output .= '
|
718 |
-
<div class="wis-template-ad" style="font-size: 1.0rem; margin-top: 2%; text-align: center; color: rgba(22,22,22,0.72);" >
|
719 |
-
<a target="_blank" style="color: rgba(22,22,22,0.72); text-decoration: none" href="https://cm-wp.com/instagram-slider-widget/" >
|
720 |
-
Powered by Social Slider Feed
|
721 |
-
</a >
|
722 |
-
</div >
|
723 |
-
';
|
724 |
-
}
|
725 |
-
|
726 |
-
return $output;
|
727 |
-
|
728 |
-
}
|
729 |
-
|
730 |
-
/**
|
731 |
-
* Sanitize 4-byte UTF8 chars; no full utf8mb4 support in drupal7+mysql stack.
|
732 |
-
* This solution runs in O(n) time BUT assumes that all incoming input is
|
733 |
-
* strictly UTF8.
|
734 |
-
*
|
735 |
-
* @param string $input The input to be sanitised
|
736 |
-
*
|
737 |
-
* @return string sanitized input
|
738 |
-
*/
|
739 |
-
private function sanitize( $input ) {
|
740 |
-
|
741 |
-
if ( ! empty( $input ) ) {
|
742 |
-
$utf8_2byte = 0xC0; /*1100 0000*/
|
743 |
-
$utf8_2byte_bmask = 0xE0; /*1110 0000*/
|
744 |
-
$utf8_3byte = 0xE0; /*1110 0000*/
|
745 |
-
$utf8_3byte_bmask = 0XF0; /*1111 0000*/
|
746 |
-
$utf8_4byte = 0xF0; /*1111 0000*/
|
747 |
-
$utf8_4byte_bmask = 0xF8; /*1111 1000*/
|
748 |
-
|
749 |
-
$sanitized = '';
|
750 |
-
$len = strlen( $input );
|
751 |
-
for ( $i = 0; $i < $len; ++ $i ) {
|
752 |
-
|
753 |
-
$mb_char = $input[ $i ]; // Potentially a multibyte sequence
|
754 |
-
$byte = ord( $mb_char );
|
755 |
-
|
756 |
-
if ( ( $byte & $utf8_2byte_bmask ) == $utf8_2byte ) {
|
757 |
-
$mb_char .= $input[ ++ $i ];
|
758 |
-
} elseif ( ( $byte & $utf8_3byte_bmask ) == $utf8_3byte ) {
|
759 |
-
$mb_char .= $input[ ++ $i ];
|
760 |
-
$mb_char .= $input[ ++ $i ];
|
761 |
-
} elseif ( ( $byte & $utf8_4byte_bmask ) == $utf8_4byte ) {
|
762 |
-
// Replace with ? to avoid MySQL exception
|
763 |
-
$mb_char = '';
|
764 |
-
$i += 3;
|
765 |
-
}
|
766 |
-
|
767 |
-
$sanitized .= $mb_char;
|
768 |
-
}
|
769 |
-
|
770 |
-
$input = $sanitized;
|
771 |
-
}
|
772 |
-
|
773 |
-
return $input;
|
774 |
-
}
|
775 |
-
|
776 |
-
/**
|
777 |
-
* Get data from instagram by username
|
778 |
-
*
|
779 |
-
* @param string $username
|
780 |
-
*
|
781 |
-
* @return array
|
782 |
-
*/
|
783 |
-
private function get_data_by_username( $username ) {
|
784 |
-
|
785 |
-
$url = str_replace( '{username}', urlencode( trim( $username ) ), self::USERNAME_URL );
|
786 |
-
$response = wp_remote_get( $url, [
|
787 |
-
'sslverify' => false,
|
788 |
-
'timeout' => 60,
|
789 |
-
] );
|
790 |
-
|
791 |
-
if ( strstr( $response['body'], '-cx-PRIVATE-Page__main' ) ) {
|
792 |
-
return [ 'error' => __( 'Account not found or for this account there are restrictions on Instagram by age', 'instagram-slider-widget' ) ];
|
793 |
-
}
|
794 |
-
|
795 |
-
$json = str_replace( 'window._sharedData = ', '', strstr( $response['body'], 'window._sharedData = ' ) );
|
796 |
-
|
797 |
-
// Compatibility for version of php where strstr() doesnt accept third parameter
|
798 |
-
if ( version_compare( PHP_VERSION, '5.3.0', '>=' ) ) {
|
799 |
-
$json = strstr( $json, '</script>', true );
|
800 |
-
} else {
|
801 |
-
$json = substr( $json, 0, strpos( $json, '</script>' ) );
|
802 |
-
}
|
803 |
-
$json = rtrim( $json, ';' );
|
804 |
-
|
805 |
-
// Function json_last_error() is not available before PHP * 5.3.0 version
|
806 |
-
if ( function_exists( 'json_last_error' ) ) {
|
807 |
-
|
808 |
-
( $results = json_decode( $json, true ) ) && json_last_error() == JSON_ERROR_NONE;
|
809 |
-
|
810 |
-
} else {
|
811 |
-
$results = json_decode( $json, true );
|
812 |
-
}
|
813 |
-
|
814 |
-
return $results;
|
815 |
-
}
|
816 |
-
|
817 |
-
/**
|
818 |
-
* Get Instagram Ids from Usernames into array
|
819 |
-
*
|
820 |
-
* @param string $usernames Comma separated string with instagram users
|
821 |
-
*
|
822 |
-
* @return array An array with instagram ids
|
823 |
-
*/
|
824 |
-
private function get_ids_from_usernames( $usernames ) {
|
825 |
-
|
826 |
-
$users = explode( ',', trim( $usernames ) );
|
827 |
-
$user_ids = (array) get_transient( 'jr_insta_user_ids' );
|
828 |
-
$return_ids = [];
|
829 |
-
|
830 |
-
if ( is_array( $users ) && ! empty( $users ) ) {
|
831 |
-
|
832 |
-
foreach ( $users as $user ) {
|
833 |
-
|
834 |
-
if ( isset( $user_ids[ $user ] ) ) {
|
835 |
-
continue;
|
836 |
-
}
|
837 |
-
|
838 |
-
$results = $this->get_data_by_username( $user );
|
839 |
-
if ( $results && is_array( $results ) ) {
|
840 |
-
|
841 |
-
$results = $results['entry_data']['ProfilePage']['0']['graphql']['user'];
|
842 |
-
$user_id = isset( $results['id'] ) ? $results['id'] : false;
|
843 |
-
|
844 |
-
if ( $user_id ) {
|
845 |
-
|
846 |
-
$user_ids[ $user ] = $user_id;
|
847 |
-
|
848 |
-
set_transient( 'jr_insta_user_ids', $user_ids );
|
849 |
-
}
|
850 |
-
}
|
851 |
-
}
|
852 |
-
}
|
853 |
-
|
854 |
-
foreach ( $users as $user ) {
|
855 |
-
if ( isset( $user_ids[ $user ] ) ) {
|
856 |
-
$return_ids[] = $user_ids[ $user ];
|
857 |
-
}
|
858 |
-
}
|
859 |
-
|
860 |
-
return $return_ids;
|
861 |
-
}
|
862 |
-
|
863 |
-
public function get_user_by_token( $token ) {
|
864 |
-
$args = [
|
865 |
-
'fields' => 'id,media_count,username',
|
866 |
-
'access_token' => $token,
|
867 |
-
];
|
868 |
-
|
869 |
-
$url = WIG_USERS_SELF_URL;
|
870 |
-
$url = add_query_arg( $args, $url );
|
871 |
-
$response = wp_remote_get( $url );
|
872 |
-
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
873 |
-
$user = json_decode( wp_remote_retrieve_body( $response ), true );
|
874 |
-
$user['token'] = $token;
|
875 |
-
|
876 |
-
return $user;
|
877 |
-
}
|
878 |
-
|
879 |
-
return false;
|
880 |
-
}
|
881 |
-
|
882 |
-
/**
|
883 |
-
* Get Account data by USERNAME from option in wp_options
|
884 |
-
*
|
885 |
-
* @param string $name
|
886 |
-
* @param bool $is_business
|
887 |
-
*
|
888 |
-
* @return array
|
889 |
-
*/
|
890 |
-
public function getAccountById( $name, $is_business = false ) {
|
891 |
-
if ( $is_business ) {
|
892 |
-
$token = WIS_Plugin::app()->getOption( WIG_BUSINESS_PROFILES_OPTION );
|
893 |
-
} else {
|
894 |
-
$token = WIS_Plugin::app()->getOption( WIG_PROFILES_OPTION );
|
895 |
-
}
|
896 |
-
|
897 |
-
return $token[ $name ];
|
898 |
-
}
|
899 |
-
|
900 |
-
/**
|
901 |
-
* Get first Account data from option in wp_options
|
902 |
-
*
|
903 |
-
* @return bool|array
|
904 |
-
*/
|
905 |
-
public function getAccountForHashtag() {
|
906 |
-
$token = WIS_Plugin::app()->getOption( WIG_BUSINESS_PROFILES_OPTION, false );
|
907 |
-
if ( $token && is_array( $token ) && ! empty( $token ) ) {
|
908 |
-
return array_shift( $token );
|
909 |
-
} else {
|
910 |
-
return false;
|
911 |
-
}
|
912 |
-
}
|
913 |
-
|
914 |
-
/**
|
915 |
-
* Media Model from account
|
916 |
-
*
|
917 |
-
* @param array $media From API
|
918 |
-
*
|
919 |
-
* @return array To plugin format
|
920 |
-
*/
|
921 |
-
public function to_media_model_from_account( $media ) {
|
922 |
-
|
923 |
-
$m = [];
|
924 |
-
switch ( $media['media_type'] ) {
|
925 |
-
case 'IMAGE':
|
926 |
-
$m['type'] = 'GraphImage';
|
927 |
-
$m['image'] = $media['media_url'];
|
928 |
-
break;
|
929 |
-
case 'VIDEO':
|
930 |
-
$m['type'] = 'GraphVideo';
|
931 |
-
$m['video'] = $media['media_url'];
|
932 |
-
$m['thumbnail'] = $media['thumbnail_url'];
|
933 |
-
$m['image'] = $media['thumbnail_url'];
|
934 |
-
break;
|
935 |
-
case 'CAROUSEL_ALBUM':
|
936 |
-
$m['type'] = 'GraphSidecar';
|
937 |
-
$res = [];
|
938 |
-
foreach ( $media['children']['data'] as $v ) {
|
939 |
-
$type = 'images';
|
940 |
-
$t['standard_resolution']['url'] = $v['media_url'];
|
941 |
-
$size = getimagesize( $v['media_url'] );
|
942 |
-
if ( is_array( $size ) ) {
|
943 |
-
$t['standard_resolution']['height'] = $size[1];
|
944 |
-
$t['standard_resolution']['width'] = $size[0];
|
945 |
-
} else {
|
946 |
-
$type = 'videos';
|
947 |
-
}
|
948 |
-
$res[][ $type ] = $t;
|
949 |
-
|
950 |
-
}
|
951 |
-
$m['sidecar_media'] = $res;
|
952 |
-
$m['image'] = $media['media_url'];
|
953 |
-
break;
|
954 |
-
}
|
955 |
-
|
956 |
-
$m['id'] = $media['id'];
|
957 |
-
$m['username'] = $media['username'];
|
958 |
-
$m['caption'] = $this->sanitize( $media['caption'] );
|
959 |
-
$m['link'] = $media['permalink'];
|
960 |
-
$m['timestamp'] = strtotime( $media['timestamp'] );
|
961 |
-
$m['url'] = $media['media_url'];
|
962 |
-
|
963 |
-
if ( 'VIDEO' == $media['media_type'] ) {
|
964 |
-
$size = getimagesize( $media['thumbnail_url'] );
|
965 |
-
} else {
|
966 |
-
$size = getimagesize( $media['media_url'] );
|
967 |
-
}
|
968 |
-
if ( is_array( $size ) ) {
|
969 |
-
$m['height'] = $size[1];
|
970 |
-
$m['width'] = $size[0];
|
971 |
-
}
|
972 |
-
|
973 |
-
$m['popularity'] = 0;
|
974 |
-
|
975 |
-
return $m;
|
976 |
-
}
|
977 |
-
|
978 |
-
/**
|
979 |
-
* Media Model from account
|
980 |
-
*
|
981 |
-
* @param array $media From API
|
982 |
-
*
|
983 |
-
* @return array To plugin format
|
984 |
-
*/
|
985 |
-
public function to_media_model_from_account_business( $media ) {
|
986 |
-
|
987 |
-
$m = [];
|
988 |
-
switch ( $media['media_type'] ) {
|
989 |
-
case 'IMAGE':
|
990 |
-
$m['type'] = 'GraphImage';
|
991 |
-
$m['image'] = $media['media_url'];
|
992 |
-
break;
|
993 |
-
case 'VIDEO':
|
994 |
-
$m['type'] = 'GraphVideo';
|
995 |
-
$m['video'] = $media['media_url'];
|
996 |
-
$m['thumbnail'] = $media['thumbnail_url'];
|
997 |
-
$m['image'] = $media['thumbnail_url'];
|
998 |
-
break;
|
999 |
-
case 'CAROUSEL_ALBUM':
|
1000 |
-
$m['type'] = 'GraphSidecar';
|
1001 |
-
$res = [];
|
1002 |
-
foreach ( $media['children']['data'] as $v ) {
|
1003 |
-
$type = 'images';
|
1004 |
-
$t['standard_resolution']['url'] = $v['media_url'];
|
1005 |
-
$size = getimagesize( $v['media_url'] );
|
1006 |
-
if ( is_array( $size ) ) {
|
1007 |
-
$t['standard_resolution']['height'] = $size[1];
|
1008 |
-
$t['standard_resolution']['width'] = $size[0];
|
1009 |
-
} else {
|
1010 |
-
$type = 'videos';
|
1011 |
-
}
|
1012 |
-
$res[][ $type ] = $t;
|
1013 |
-
}
|
1014 |
-
$m['sidecar_media'] = $res;
|
1015 |
-
$m['image'] = $media['media_url'];
|
1016 |
-
break;
|
1017 |
-
}
|
1018 |
-
|
1019 |
-
$m['id'] = $media['id'];
|
1020 |
-
$m['username'] = $media['username'];
|
1021 |
-
$m['caption'] = $this->sanitize( $media['caption'] );
|
1022 |
-
$m['link'] = $media['permalink'];
|
1023 |
-
$m['user_id'] = $media['owner']['id'];
|
1024 |
-
$m['timestamp'] = strtotime( $media['timestamp'] );
|
1025 |
-
$m['url'] = $media['media_url'];
|
1026 |
-
$m['comments'] = $media['comments_count'];
|
1027 |
-
$m['likes'] = $media['like_count'];
|
1028 |
-
|
1029 |
-
if ( 'VIDEO' == $media['media_type'] ) {
|
1030 |
-
$size = getimagesize( $media['thumbnail_url'] );
|
1031 |
-
} else {
|
1032 |
-
$size = getimagesize( $media['media_url'] );
|
1033 |
-
}
|
1034 |
-
if ( is_array( $size ) ) {
|
1035 |
-
$m['height'] = $size[1];
|
1036 |
-
$m['width'] = $size[0];
|
1037 |
-
}
|
1038 |
-
|
1039 |
-
if ( isset( $m['comments'] ) && isset( $m['likes'] ) ) {
|
1040 |
-
$m['popularity'] = (int) ( $m['comments'] ) + ( $m['likes'] );
|
1041 |
-
}
|
1042 |
-
|
1043 |
-
return $m;
|
1044 |
-
}
|
1045 |
-
|
1046 |
-
/**
|
1047 |
-
* Media Model from hashtag
|
1048 |
-
*
|
1049 |
-
* @param array $media From API
|
1050 |
-
*
|
1051 |
-
* @return array To plugin format
|
1052 |
-
*/
|
1053 |
-
public function to_media_model_from_hashtag( $media ) {
|
1054 |
-
|
1055 |
-
$m = [];
|
1056 |
-
if ( isset( $media['fbapi'] ) ) {
|
1057 |
-
$value = $media;
|
1058 |
-
switch ( $value['media_type'] ) {
|
1059 |
-
case 'IMAGE':
|
1060 |
-
$m['type'] = 'GraphImage';
|
1061 |
-
$m['image'] = $value['media_url'];
|
1062 |
-
break;
|
1063 |
-
case 'VIDEO':
|
1064 |
-
$m['type'] = 'GraphVideo';
|
1065 |
-
$m['video'] = $value['media_url'];
|
1066 |
-
$m['thumbnail'] = $value['thumbnail_url'];
|
1067 |
-
$m['image'] = $value['thumbnail_url'];
|
1068 |
-
break;
|
1069 |
-
case 'CAROUSEL_ALBUM':
|
1070 |
-
$m['type'] = 'GraphSidecar';
|
1071 |
-
$res = [];
|
1072 |
-
foreach ( $value['children']['data'] as $v ) {
|
1073 |
-
$t['standard_resolution']['url'] = $v['media_url'];
|
1074 |
-
$res[]['images'] = $t;
|
1075 |
-
}
|
1076 |
-
$m['sidecar_media'] = $res;
|
1077 |
-
$m['image'] = $value['children']['data'][0]['media_url'];
|
1078 |
-
break;
|
1079 |
-
}
|
1080 |
-
|
1081 |
-
$media_url = isset( $value['media_url'] ) ? $value['media_url'] : $value['children']['data'][0]['media_url'];
|
1082 |
-
|
1083 |
-
$m['id'] = $value['id'];
|
1084 |
-
$m['caption'] = $this->sanitize( $value['caption'] );
|
1085 |
-
$m['link'] = $value['permalink'];
|
1086 |
-
$m['comment_count'] = $value['comments_count'];
|
1087 |
-
$m['url'] = $media_url;
|
1088 |
-
$m['likes_count'] = $value['like_count'];
|
1089 |
-
|
1090 |
-
$m['sizes']['thumbnail'] = $media_url;
|
1091 |
-
$m['sizes']['low'] = $media_url;
|
1092 |
-
$m['sizes']['standard'] = $media_url;
|
1093 |
-
$m['sizes']['full'] = $media_url;
|
1094 |
-
|
1095 |
-
if ( 'VIDEO' == $media['media_type'] ) {
|
1096 |
-
$size = getimagesize( $value['thumbnail_url'] );
|
1097 |
-
} else {
|
1098 |
-
$size = getimagesize( $media_url );
|
1099 |
-
}
|
1100 |
-
if ( is_array( $size ) ) {
|
1101 |
-
$m['height'] = $size[1];
|
1102 |
-
$m['width'] = $size[0];
|
1103 |
-
}
|
1104 |
-
|
1105 |
-
$m['popularity'] = (int) ( $m['comment_count'] ) + ( $m['likes_count'] );
|
1106 |
-
} else {
|
1107 |
-
$value = $media;
|
1108 |
-
$m['type'] = $value['__typename'];
|
1109 |
-
$m['id'] = $value['id'];
|
1110 |
-
$m['code'] = $value['shortcode'];
|
1111 |
-
$m['link'] = 'https://www.instagram.com/p/' . $value['shortcode'] . '/';
|
1112 |
-
$m['user_id'] = $value['owner']['id'];
|
1113 |
-
|
1114 |
-
$m['caption'] = isset( $value['edge_media_to_caption']['edges'][0]['node']['text'] ) ? $value['edge_media_to_caption']['edges'][0]['node']['text'] : '';
|
1115 |
-
|
1116 |
-
$m['timestamp'] = $value['taken_at_timestamp'];
|
1117 |
-
$m['url'] = $value['display_url'];
|
1118 |
-
$m['likes_count'] = $value['edge_liked_by']['count'];
|
1119 |
-
$m['comment_count'] = $value['edge_media_to_comment']['count'];
|
1120 |
-
$m['sizes'] = $this->get_thumbnail_urls( $value['thumbnail_resources'] );
|
1121 |
-
$m['image'] = $value['thumbnail_src'];
|
1122 |
-
|
1123 |
-
if ( isset( $m['comment_count'] ) && isset( $m['likes_count'] ) ) {
|
1124 |
-
$m['popularity'] = (int) ( $m['comment_count'] ) + ( $m['likes_count'] );
|
1125 |
-
}
|
1126 |
-
}
|
1127 |
-
|
1128 |
-
return $m;
|
1129 |
-
}
|
1130 |
-
|
1131 |
-
/**
|
1132 |
-
* This post is blocked by words?
|
1133 |
-
*
|
1134 |
-
* @param string $words
|
1135 |
-
* @param string $text
|
1136 |
-
*
|
1137 |
-
* @return bool
|
1138 |
-
*/
|
1139 |
-
public function is_blocked_by_word( $words, $text ) {
|
1140 |
-
if ( empty( $words ) || empty( $text ) ) {
|
1141 |
-
return false;
|
1142 |
-
}
|
1143 |
-
$words_array = explode( ',', $words );
|
1144 |
-
foreach ( $words_array as $word ) {
|
1145 |
-
$pos = stripos( $text, trim( $word ) );
|
1146 |
-
if ( $pos !== false ) {
|
1147 |
-
return true;
|
1148 |
-
}
|
1149 |
-
}
|
1150 |
-
|
1151 |
-
return false;
|
1152 |
-
}
|
1153 |
-
|
1154 |
-
/**
|
1155 |
-
* This post is allowed by words?
|
1156 |
-
*
|
1157 |
-
* @param string $words
|
1158 |
-
* @param string $text
|
1159 |
-
*
|
1160 |
-
* @return bool
|
1161 |
-
*/
|
1162 |
-
public function is_allowed_by_word( $words, $text ) {
|
1163 |
-
if ( empty( $words ) ) {
|
1164 |
-
return true;
|
1165 |
-
}
|
1166 |
-
if ( empty( $text ) ) {
|
1167 |
-
return false;
|
1168 |
-
}
|
1169 |
-
|
1170 |
-
$words_array = explode( ',', $words );
|
1171 |
-
foreach ( $words_array as $word ) {
|
1172 |
-
if ( strripos( $text, $word ) !== false ) {
|
1173 |
-
return true;
|
1174 |
-
}
|
1175 |
-
}
|
1176 |
-
|
1177 |
-
return false;
|
1178 |
-
}
|
1179 |
-
|
1180 |
-
/**
|
1181 |
-
* Sort Function for timestamp Ascending
|
1182 |
-
*/
|
1183 |
-
public function sort_timestamp_ASC( $a, $b ) {
|
1184 |
-
$a = $a['timestamp'] ?? 0;
|
1185 |
-
$b = $b['timestamp'] ?? 0;
|
1186 |
-
|
1187 |
-
return $a > $b;
|
1188 |
-
}
|
1189 |
-
|
1190 |
-
/**
|
1191 |
-
* Sort Function for timestamp Descending
|
1192 |
-
*/
|
1193 |
-
public function sort_timestamp_DESC( $a, $b ) {
|
1194 |
-
$a = $a['timestamp'] ?? 0;
|
1195 |
-
$b = $b['timestamp'] ?? 0;
|
1196 |
-
|
1197 |
-
return $a < $b;
|
1198 |
-
}
|
1199 |
-
|
1200 |
-
/**
|
1201 |
-
* Sort Function for popularity Ascending
|
1202 |
-
*/
|
1203 |
-
public function sort_popularity_ASC( $a, $b ) {
|
1204 |
-
return $a['popularity'] > $b['popularity'];
|
1205 |
-
}
|
1206 |
-
|
1207 |
-
/**
|
1208 |
-
* Sort Function for popularity Descending
|
1209 |
-
*/
|
1210 |
-
public function sort_popularity_DESC( $a, $b ) {
|
1211 |
-
return $a['popularity'] < $b['popularity'];
|
1212 |
-
}
|
1213 |
-
|
1214 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
4 |
+
exit;
|
5 |
+
}
|
6 |
+
|
7 |
+
/**
|
8 |
+
* @property int|string id
|
9 |
+
* @property int|string title
|
10 |
+
* @property int|string search_for
|
11 |
+
* @property int|string account
|
12 |
+
* @property int|string account_business
|
13 |
+
* @property int|string username
|
14 |
+
* @property int|string hashtag
|
15 |
+
* @property int|string blocked_users
|
16 |
+
* @property int|string blocked_words
|
17 |
+
* @property int|string allowed_words
|
18 |
+
* @property int|string attachment
|
19 |
+
* @property int|string template
|
20 |
+
* @property int|string images_link
|
21 |
+
* @property int|string custom_url
|
22 |
+
* @property int|string orderby
|
23 |
+
* @property int|string images_number
|
24 |
+
* @property int|string columns
|
25 |
+
* @property int|string refresh_hour
|
26 |
+
* @property int|string slick_img_size
|
27 |
+
* @property int|string image_size
|
28 |
+
* @property int|string image_link_rel
|
29 |
+
* @property int|string image_link_class
|
30 |
+
* @property int|string no_pin
|
31 |
+
* @property int|string controls
|
32 |
+
* @property int|string animation
|
33 |
+
* @property int|string caption_words
|
34 |
+
* @property int|string shopifeed_phone
|
35 |
+
* @property int|string shopifeed_color
|
36 |
+
* @property int|string shopifeed_columns
|
37 |
+
* @property int|string slidespeed
|
38 |
+
* @property string description
|
39 |
+
* @property int|string support_author
|
40 |
+
* @property int|string gutter
|
41 |
+
* @property int|string masonry_image_width
|
42 |
+
* @property int|string slick_slides_to_show
|
43 |
+
* @property int|string slick_sliding_speed
|
44 |
+
* @property int|string enable_control_buttons
|
45 |
+
* @property int|string keep_ratio
|
46 |
+
* @property int|string enable_ad
|
47 |
+
* @property int|string enable_icons
|
48 |
+
* @property int|string slick_slides_padding
|
49 |
+
* @property int|string show_feed_header
|
50 |
+
* @property int|string enable_stories
|
51 |
+
* @property int|string highlight_offset
|
52 |
+
* @property int|string highlight_pattern
|
53 |
+
* @property int|string masonry_lite_cols
|
54 |
+
* @property int|string masonry_lite_gap
|
55 |
+
* @property int|string m_template
|
56 |
+
* @property int|string m_images_number
|
57 |
+
* @property int|string m_columns
|
58 |
+
* @property int|string m_shopifeed_phone
|
59 |
+
* @property int|string m_shopifeed_color
|
60 |
+
* @property int|string m_shopifeed_columns
|
61 |
+
* @property int|string m_controls
|
62 |
+
* @property int|string m_animation
|
63 |
+
* @property int|string m_slidespeed
|
64 |
+
* @property string m_description
|
65 |
+
* @property int|string m_caption_words
|
66 |
+
* @property int|string m_enable_control_buttons
|
67 |
+
* @property int|string m_show_feed_header
|
68 |
+
* @property int|string m_enable_stories
|
69 |
+
* @property int|string m_keep_ratio
|
70 |
+
* @property int|string m_slick_img_size
|
71 |
+
* @property int|string m_slick_slides_to_show
|
72 |
+
* @property int|string m_slick_sliding_speed
|
73 |
+
* @property int|string m_slick_slides_padding
|
74 |
+
* @property int|string m_gutter
|
75 |
+
* @property int|string m_masonry_image_width
|
76 |
+
* @property int|string m_masonry_lite_cols
|
77 |
+
* @property int|string m_masonry_lite_gap
|
78 |
+
* @property int|string m_highlight_offset
|
79 |
+
* @property int|string m_highlight_pattern
|
80 |
+
* @property int|string m_enable_ad
|
81 |
+
* @property int|string m_enable_icons
|
82 |
+
* @property int|string m_orderby
|
83 |
+
* @property int|string m_images_link
|
84 |
+
* @property int|string m_blocked_words
|
85 |
+
* @property int|string m_allowed_words
|
86 |
+
* @property int|string m_powered_by_link
|
87 |
+
*/
|
88 |
+
class WIS_Instagram_Feed extends WIS_Feed {
|
89 |
+
|
90 |
+
public $social = 'instagram';
|
91 |
+
|
92 |
+
/**
|
93 |
+
* @var string
|
94 |
+
*/
|
95 |
+
protected $component_dir = WIG_COMPONENT_DIR;
|
96 |
+
|
97 |
+
/**
|
98 |
+
* @var WIS_Instagram_Profiles
|
99 |
+
*/
|
100 |
+
public $profiles;
|
101 |
+
|
102 |
+
const USERNAME_URL = 'https://www.instagram.com/{username}/';
|
103 |
+
const TAG_URL = 'https://www.instagram.com/explore/tags/{tag}/?__a=1';
|
104 |
+
const USERS_SELF_URL = 'https://graph.instagram.com/me';
|
105 |
+
const USERS_SELF_MEDIA_URL = 'https://graph.instagram.com/';
|
106 |
+
const USERS_SELF_URL_NEW = 'https://graph.facebook.com/';
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Instagram feed constructor.
|
110 |
+
*/
|
111 |
+
public function __construct( $feed = [] ) {
|
112 |
+
parent::__construct( $feed );
|
113 |
+
|
114 |
+
$this->profiles = new WIS_Instagram_Profiles();
|
115 |
+
}
|
116 |
+
|
117 |
+
/**
|
118 |
+
* Enqueue public-facing Scripts and style sheet.
|
119 |
+
*/
|
120 |
+
public function widget_scripts_enqueue() {
|
121 |
+
wp_enqueue_style( 'jr-insta-styles' );
|
122 |
+
wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'font-awesome' );
|
123 |
+
wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'instag-slider' );
|
124 |
+
wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'wis-header' );
|
125 |
+
|
126 |
+
$ajax = json_encode( [
|
127 |
+
'url' => admin_url( 'admin-ajax.php' ),
|
128 |
+
'nonce' => wp_create_nonce( 'addAccountByToken' ),
|
129 |
+
] );
|
130 |
+
wp_add_inline_script( WIS_Plugin::app()->getPrefix() . 'jr-insta', "var ajax = $ajax;" );
|
131 |
+
|
132 |
+
wp_enqueue_script( WIS_Plugin::app()->getPrefix() . 'jquery-pllexi-slider' );
|
133 |
+
}
|
134 |
+
|
135 |
+
protected function setDefaults() {
|
136 |
+
$this->profiles = new WIS_Instagram_Profiles();
|
137 |
+
|
138 |
+
$this->templates = apply_filters( 'wis/sliders', [
|
139 |
+
'slider' => 'Slider - Normal',
|
140 |
+
'slider-overlay' => 'Slider - Overlay Text',
|
141 |
+
'thumbs' => 'Thumbnails',
|
142 |
+
'thumbs-no-border' => 'Thumbnails - Without Border',
|
143 |
+
] );
|
144 |
+
|
145 |
+
$this->linkto = apply_filters( 'wis/options/link_to', [
|
146 |
+
'image_link' => 'Instagram Image',
|
147 |
+
'image_url' => 'Image URL',
|
148 |
+
'custom_url' => 'Custom Link',
|
149 |
+
'none' => 'None',
|
150 |
+
] );
|
151 |
+
|
152 |
+
$this->defaults = [
|
153 |
+
'id' => null,
|
154 |
+
'title' => __( 'Social Slider', 'instagram-slider-widget' ),
|
155 |
+
'search_for' => 'account',
|
156 |
+
'account' => '',
|
157 |
+
'account_business' => '',
|
158 |
+
'username' => '',
|
159 |
+
'hashtag' => '',
|
160 |
+
'blocked_users' => '',
|
161 |
+
'blocked_words' => '',
|
162 |
+
'allowed_words' => '',
|
163 |
+
'attachment' => 0,
|
164 |
+
'template' => 'slider',
|
165 |
+
'images_link' => 'image_link',
|
166 |
+
'custom_url' => '',
|
167 |
+
'orderby' => 'rand',
|
168 |
+
'images_number' => 20,
|
169 |
+
'columns' => 4,
|
170 |
+
'refresh_hour' => 5,
|
171 |
+
'slick_img_size' => 300,
|
172 |
+
'image_size' => 'standard',
|
173 |
+
'image_link_rel' => '',
|
174 |
+
'image_link_class' => '',
|
175 |
+
'no_pin' => 0,
|
176 |
+
'controls' => 'prev_next',
|
177 |
+
'animation' => 'slide',
|
178 |
+
'caption_words' => 20,
|
179 |
+
'shopifeed_phone' => '',
|
180 |
+
'shopifeed_color' => '#DA004A',
|
181 |
+
'shopifeed_columns' => 3,
|
182 |
+
'slidespeed' => 7000,
|
183 |
+
'description' => [],
|
184 |
+
'support_author' => 0,
|
185 |
+
'gutter' => 0,
|
186 |
+
'masonry_image_width' => 200,
|
187 |
+
'slick_slides_to_show' => 3,
|
188 |
+
'slick_sliding_speed' => 5000,
|
189 |
+
'enable_control_buttons' => 0,
|
190 |
+
'keep_ratio' => 0,
|
191 |
+
'enable_ad' => 0,
|
192 |
+
'enable_icons' => 0,
|
193 |
+
'slick_slides_padding' => 0,
|
194 |
+
'show_feed_header' => 0,
|
195 |
+
'enable_stories' => 0,
|
196 |
+
'highlight_offset' => 1,
|
197 |
+
'highlight_pattern' => 6,
|
198 |
+
'masonry_lite_cols' => 4,
|
199 |
+
'masonry_lite_gap' => 10,
|
200 |
+
|
201 |
+
'm_template' => 'slider',
|
202 |
+
'm_images_number' => 20,
|
203 |
+
'm_columns' => 4,
|
204 |
+
'm_shopifeed_phone' => '',
|
205 |
+
'm_shopifeed_color' => '#DA004A',
|
206 |
+
'm_shopifeed_columns' => 3,
|
207 |
+
'm_controls' => 'prev_next',
|
208 |
+
'm_animation' => 'slide',
|
209 |
+
'm_slidespeed' => 7000,
|
210 |
+
'm_description' => [],
|
211 |
+
'm_caption_words' => 20,
|
212 |
+
'm_enable_control_buttons' => 0,
|
213 |
+
'm_show_feed_header' => 0,
|
214 |
+
'm_enable_stories' => 0,
|
215 |
+
'm_keep_ratio' => 0,
|
216 |
+
'm_slick_img_size' => 300,
|
217 |
+
'm_slick_slides_to_show' => 3,
|
218 |
+
'm_slick_sliding_speed' => 5000,
|
219 |
+
'm_slick_slides_padding' => 0,
|
220 |
+
'm_gutter' => 0,
|
221 |
+
'm_masonry_image_width' => 200,
|
222 |
+
'm_highlight_offset' => 1,
|
223 |
+
'm_highlight_pattern' => 6,
|
224 |
+
'm_enable_ad' => 0,
|
225 |
+
'm_enable_icons' => 0,
|
226 |
+
'm_orderby' => 'rand',
|
227 |
+
'm_images_link' => 'image_link',
|
228 |
+
'm_blocked_words' => '',
|
229 |
+
'm_allowed_words' => '',
|
230 |
+
'm_powered_by_link' => '',
|
231 |
+
'm_masonry_lite_cols' => 2,
|
232 |
+
'm_masonry_lite_gap' => 5,
|
233 |
+
];
|
234 |
+
}
|
235 |
+
|
236 |
+
/**
|
237 |
+
* @return array
|
238 |
+
*/
|
239 |
+
public function getTemplates() {
|
240 |
+
return apply_filters( 'wis/sliders', $this->templates );
|
241 |
+
}
|
242 |
+
|
243 |
+
/**
|
244 |
+
* @return array
|
245 |
+
*/
|
246 |
+
public function getLinkto() {
|
247 |
+
return apply_filters( 'wis/options/link_to', $this->linkto );
|
248 |
+
}
|
249 |
+
|
250 |
+
/**
|
251 |
+
* @inerhitDoc
|
252 |
+
*/
|
253 |
+
public function form( $feed_id = 0 ) {
|
254 |
+
$feeds = new WIS_Feeds( $this->social );
|
255 |
+
$accounts = $this->getAccounts();
|
256 |
+
$accounts_business = $this->getAccountsBusiness();
|
257 |
+
|
258 |
+
if ( count( $accounts ) ) {
|
259 |
+
$s_for = 'account';
|
260 |
+
} elseif ( count( $accounts_business ) ) {
|
261 |
+
$s_for = 'account_business';
|
262 |
+
} else {
|
263 |
+
$s_for = 'username';
|
264 |
+
}
|
265 |
+
$this->updateDefaults( 'search_for', $s_for );
|
266 |
+
|
267 |
+
$args = [
|
268 |
+
'_this' => $this,
|
269 |
+
'is_update' => (bool) $feed_id,
|
270 |
+
'add_link' => WIS_Page::instance()->getActionUrl( 'add' ),
|
271 |
+
'feeds' => $feeds->feeds,
|
272 |
+
'instance' => $this->instance,
|
273 |
+
'accounts' => $accounts,
|
274 |
+
'accounts_business' => $accounts_business,
|
275 |
+
'sliders' => $this->getTemplates(),
|
276 |
+
'options_linkto' => $this->getLinkto(),
|
277 |
+
];
|
278 |
+
echo WIS_Page::instance()->render( WIG_COMPONENT_VIEWS_DIR . '/form-feed', $args ); // phpcs:ignore
|
279 |
+
}
|
280 |
+
|
281 |
+
/**
|
282 |
+
* Selected array function echoes selected if in array
|
283 |
+
*
|
284 |
+
* @param array $haystack The array to search in
|
285 |
+
* @param string $current The string value to search in array;
|
286 |
+
*/
|
287 |
+
public function selected( $haystack, $current ) {
|
288 |
+
|
289 |
+
if ( is_array( $haystack ) && in_array( $current, $haystack ) ) {
|
290 |
+
selected( 1, 1, true );
|
291 |
+
}
|
292 |
+
}
|
293 |
+
|
294 |
+
private function getAccounts() {
|
295 |
+
$accounts = WIS_Plugin::app()->getPopulateOption( WIG_PROFILES_OPTION, [] );
|
296 |
+
if ( ! is_array( $accounts ) ) {
|
297 |
+
$accounts = [];
|
298 |
+
}
|
299 |
+
|
300 |
+
return $accounts;
|
301 |
+
}
|
302 |
+
|
303 |
+
private function getAccountsBusiness() {
|
304 |
+
$accounts_business = WIS_Plugin::app()->getPopulateOption( WIG_BUSINESS_PROFILES_OPTION, [] );
|
305 |
+
if ( ! is_array( $accounts_business ) ) {
|
306 |
+
$accounts_business = [];
|
307 |
+
}
|
308 |
+
|
309 |
+
return $accounts_business;
|
310 |
+
}
|
311 |
+
|
312 |
+
/**
|
313 |
+
* Display feed
|
314 |
+
*
|
315 |
+
* @param bool $return Return result or echo
|
316 |
+
*
|
317 |
+
* @return string|bool
|
318 |
+
*/
|
319 |
+
public function display( $return = false ) {
|
320 |
+
$data = $this->display_images();
|
321 |
+
|
322 |
+
if ( $return ) {
|
323 |
+
return $data;
|
324 |
+
} else {
|
325 |
+
echo $data; // @codingStandardsIgnoreLine
|
326 |
+
}
|
327 |
+
|
328 |
+
return true;
|
329 |
+
}
|
330 |
+
|
331 |
+
/**
|
332 |
+
* Stores the fetched data from instagram in WordPress DB using transients
|
333 |
+
*
|
334 |
+
* @param $search_for
|
335 |
+
* @param $cache_hours
|
336 |
+
* @param $nr_images
|
337 |
+
*
|
338 |
+
* @return array|string of localy saved instagram data
|
339 |
+
*/
|
340 |
+
public function feed_query( $search_for, $cache_hours, $nr_images ) {
|
341 |
+
//$nr_images = $nr_images <= 12 ? $nr_images : 12;
|
342 |
+
if ( isset( $search_for['account'] ) && ! empty( $search_for['account'] ) ) {
|
343 |
+
$search = 'account';
|
344 |
+
$search_string = $search_for['account'];
|
345 |
+
} elseif ( isset( $search_for['account_business'] ) && ! empty( $search_for['account_business'] ) ) {
|
346 |
+
$search = 'account_business';
|
347 |
+
$search_string = $search_for['account_business'];
|
348 |
+
} elseif ( isset( $search_for['username'] ) && ! empty( $search_for['username'] ) ) {
|
349 |
+
$search = 'user';
|
350 |
+
$search_string = $search_for['username'];
|
351 |
+
} elseif ( isset( $search_for['hashtag'] ) && ! empty( $search_for['hashtag'] ) ) {
|
352 |
+
$search = 'hashtag';
|
353 |
+
$search_string = $search_for['hashtag'];
|
354 |
+
$blocked_users = isset( $search_for['blocked_users'] ) && ! empty( $search_for['blocked_users'] ) ? str_replace( '@', '', $search_for['blocked_users'] ) : false;
|
355 |
+
$blocked_users_array = $blocked_users ? $this->get_ids_from_usernames( $blocked_users ) : [];
|
356 |
+
} else {
|
357 |
+
return __( 'Nothing to search for', 'instagram-slider-widget' );
|
358 |
+
}
|
359 |
+
|
360 |
+
$blocked_users = isset( $blocked_users ) ? $blocked_users : '';
|
361 |
+
$blocked_words = isset( $search_for['blocked_words'] ) && ! empty( $search_for['blocked_words'] ) ? $search_for['blocked_words'] : '';
|
362 |
+
$allowed_words = isset( $search_for['allowed_words'] ) && ! empty( $search_for['allowed_words'] ) ? $search_for['allowed_words'] : '';
|
363 |
+
|
364 |
+
//песочница
|
365 |
+
if ( isset( $_GET['access_token'] ) && isset( $_GET['id'] ) ) {
|
366 |
+
$search = 'account';
|
367 |
+
$search_string = htmlspecialchars( $_GET['access_token'] );
|
368 |
+
}
|
369 |
+
|
370 |
+
$feed_id = $this->instance['id'];
|
371 |
+
$opt_name = "jr_insta_{$feed_id}_" . md5( $search . '_' . $search_string );
|
372 |
+
$instaData = get_transient( $opt_name );
|
373 |
+
$old_opts = get_option( $opt_name, [] );
|
374 |
+
$new_opts = [
|
375 |
+
'search' => $search,
|
376 |
+
'search_string' => $search_string,
|
377 |
+
'blocked_users' => $blocked_users,
|
378 |
+
'cache_hours' => $cache_hours,
|
379 |
+
'nr_images' => $nr_images,
|
380 |
+
];
|
381 |
+
|
382 |
+
if ( true === $this->trigger_refresh_data( $instaData, $old_opts, $new_opts ) ) {
|
383 |
+
$instaData = [];
|
384 |
+
|
385 |
+
if ( 'account' == $search || 'account_business' == $search ) {
|
386 |
+
$is_business_api = 'account_business' == $search ? true : false;
|
387 |
+
$nr_images = ! WIS_Plugin::app()->is_premium() && $nr_images > 20 ? 20 : $nr_images;
|
388 |
+
//песочница
|
389 |
+
if ( isset( $_GET['access_token'] ) && isset( $_GET['id'] ) ) {
|
390 |
+
if ( isset( $_COOKIE['wis-demo-account-data'] ) ) {
|
391 |
+
$account = json_decode( stripslashes( $_COOKIE['wis-demo-account-data'] ), true );
|
392 |
+
} else {
|
393 |
+
$account = $this->get_user_by_token( $_GET['access_token'] );
|
394 |
+
}
|
395 |
+
} else {
|
396 |
+
$account = $this->getAccountById( $search_string, $is_business_api );
|
397 |
+
}
|
398 |
+
|
399 |
+
if ( $is_business_api ) {
|
400 |
+
if ( ! isset( $_GET['access_token'] ) && ! isset( $_GET['id'] ) ) {
|
401 |
+
//Обновляем данные профиля: подписчики, количество постов
|
402 |
+
$this->profiles->update_account_profiles( $account['token'], true, $account['username'] );
|
403 |
+
}
|
404 |
+
|
405 |
+
$args = [
|
406 |
+
'access_token' => $account['token'],
|
407 |
+
'fields' => 'id,username,caption,comments_count,like_count,media_type,media_url,permalink,timestamp,children{media_url,media_type},owner,thumbnail_url',
|
408 |
+
'limit' => 50,
|
409 |
+
];
|
410 |
+
|
411 |
+
$url = WFB_FACEBOOK_SELF_URL . $account['id'] . '/media';
|
412 |
+
$response = wp_remote_get( esc_url(add_query_arg( $args, $url )) );
|
413 |
+
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
414 |
+
$media = json_decode( wp_remote_retrieve_body( $response ), true );
|
415 |
+
$results = $media['data'];
|
416 |
+
|
417 |
+
$stories_url = WFB_FACEBOOK_SELF_URL . $account['id'] . '/stories';
|
418 |
+
$url = add_query_arg( [
|
419 |
+
'access_token' => $account['token'],
|
420 |
+
'fields' => 'media_type,media_url,permalink,timestamp',
|
421 |
+
], $stories_url );
|
422 |
+
$stories_response = wp_remote_get( $url );
|
423 |
+
if ( 200 == wp_remote_retrieve_response_code( $stories_response ) ) {
|
424 |
+
$stories = json_decode( wp_remote_retrieve_body( $stories_response ), true );
|
425 |
+
$results['stories'] = $stories['data'];
|
426 |
+
}
|
427 |
+
$results = apply_filters( 'wis/images/count', $results, $media, $nr_images, true );
|
428 |
+
$next_max_id = null;
|
429 |
+
if ( ! empty( $media['pagination'] ) ) {
|
430 |
+
$next_max_id = $media['pagination']['next_max_id'];
|
431 |
+
}
|
432 |
+
if ( ! count( $results ) ) {
|
433 |
+
return [ 'error' => __( 'There are no publications in this account yet', 'instagram-slider-widget' ) ];
|
434 |
+
}
|
435 |
+
} else {
|
436 |
+
if ( $instaData ) {
|
437 |
+
$results = $instaData;
|
438 |
+
}
|
439 |
+
}
|
440 |
+
} else {
|
441 |
+
if ( ! isset( $_GET['access_token'] ) ) {
|
442 |
+
//Обновляем данные профиля: подписчики, количество постов
|
443 |
+
$this->profiles->update_account_profiles( $account['token'] );
|
444 |
+
}
|
445 |
+
|
446 |
+
$args = [
|
447 |
+
'fields' => 'id,username,media{id,username,caption,media_type,media_url,permalink,thumbnail_url,timestamp,children{id,media_type,media_url,thumbnail_url}}',
|
448 |
+
'limit' => 50,
|
449 |
+
'access_token' => $account['token'],
|
450 |
+
];
|
451 |
+
$url = WIG_USERS_SELF_MEDIA_URL . $account['id'];
|
452 |
+
$response = wp_remote_get( esc_url(add_query_arg( $args, $url )) );
|
453 |
+
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
454 |
+
$media = json_decode( wp_remote_retrieve_body( $response ), true );
|
455 |
+
$results = $media['media']['data'];
|
456 |
+
$results = apply_filters( 'wis/images/count', $results, $media, $nr_images, false );
|
457 |
+
if ( ! is_array( $results ) || ! count( $results ) ) {
|
458 |
+
return [ 'error' => __( 'There are no publications in this account yet', 'instagram-slider-widget' ) ];
|
459 |
+
}
|
460 |
+
} else {
|
461 |
+
if ( $instaData ) {
|
462 |
+
$results = $instaData;
|
463 |
+
}
|
464 |
+
}
|
465 |
+
}
|
466 |
+
} else { //hashtag
|
467 |
+
$account = $this->getAccountForHashtag();
|
468 |
+
//$account = false;
|
469 |
+
if ( $account ) {
|
470 |
+
$args = [
|
471 |
+
'access_token' => $account['token'],
|
472 |
+
'user_id' => $account['id'],
|
473 |
+
'q' => $search_string,
|
474 |
+
];
|
475 |
+
$url = WFB_FACEBOOK_SELF_URL . 'ig_hashtag_search';
|
476 |
+
$response = wp_remote_get( esc_url(add_query_arg( $args, $url )) );
|
477 |
+
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
478 |
+
$media = json_decode( wp_remote_retrieve_body( $response ), true );
|
479 |
+
$args = [
|
480 |
+
'access_token' => $account['token'],
|
481 |
+
'user_id' => $account['id'],
|
482 |
+
//,timestamp
|
483 |
+
'fields' => 'id,caption,media_type,media_url,comments_count,like_count,permalink,children{media_type,media_url}',
|
484 |
+
'limit' => 50,
|
485 |
+
];
|
486 |
+
$url = WFB_FACEBOOK_SELF_URL . $media['data'][0]['id'] . '/recent_media';
|
487 |
+
$response = wp_remote_get( esc_url(add_query_arg( $args, $url )) );
|
488 |
+
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
489 |
+
$media = json_decode( wp_remote_retrieve_body( $response ), true );
|
490 |
+
$media['hashtag'] = true;
|
491 |
+
$results = $media;
|
492 |
+
|
493 |
+
}
|
494 |
+
}
|
495 |
+
} else {
|
496 |
+
$url = str_replace( '{tag}', urlencode( trim( $search_string ) ), self::TAG_URL );
|
497 |
+
$response = wp_remote_get( $url, [
|
498 |
+
'sslverify' => false,
|
499 |
+
'timeout' => 60,
|
500 |
+
] );
|
501 |
+
$results = json_decode( $response['body'], true );
|
502 |
+
$hashtag_response_status = $response['response']['code'];
|
503 |
+
}
|
504 |
+
}
|
505 |
+
|
506 |
+
if ( isset( $results ) && is_array( $results ) ) {
|
507 |
+
if ( 'user' == $search ) {
|
508 |
+
$entry_data = isset( $results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges'] ) ? $results['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges'] : [];
|
509 |
+
} elseif ( 'account' == $search || 'account_business' == $search ) {
|
510 |
+
$entry_data = $results;
|
511 |
+
} elseif ( 'hashtag' == $search ) {
|
512 |
+
if ( isset( $results['hashtag'] ) ) {
|
513 |
+
$entry_data = $results['data'];
|
514 |
+
} else {
|
515 |
+
$entry_data = isset( $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] ) ? $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] : [];
|
516 |
+
}
|
517 |
+
}
|
518 |
+
|
519 |
+
if ( empty( $entry_data ) ) {
|
520 |
+
return [ 'error' => __( 'No images found', 'instagram-slider-widget' ) ];
|
521 |
+
}
|
522 |
+
|
523 |
+
$i = 0;
|
524 |
+
foreach ( $entry_data as $current => $result ) {
|
525 |
+
if ( ! isset( $result['caption'] ) ) {
|
526 |
+
$result['caption'] = '';
|
527 |
+
}
|
528 |
+
|
529 |
+
if ( $i >= $nr_images ) {
|
530 |
+
if ( isset( $entry_data['stories'] ) ) {
|
531 |
+
$instaData['stories'] = $entry_data['stories'];
|
532 |
+
}
|
533 |
+
break;
|
534 |
+
} else {
|
535 |
+
$i ++;
|
536 |
+
}
|
537 |
+
|
538 |
+
if ( 'hashtag' == $search ) {
|
539 |
+
|
540 |
+
//TODO: Доделать черный список с новым API
|
541 |
+
//Чёрный список не работает, так как API не отдает имя пользователя, который создал пост
|
542 |
+
if ( isset( $results['hashtag'] ) ) {
|
543 |
+
$result['fbapi'] = true;
|
544 |
+
if ( isset( $result['media_type'] ) && 'VIDEO' === $result['media_type'] ) {
|
545 |
+
//$nr_images++;
|
546 |
+
continue;
|
547 |
+
}
|
548 |
+
} else {
|
549 |
+
$result = $result['node'];
|
550 |
+
if ( in_array( $result['owner']['id'], $blocked_users_array ) ) {
|
551 |
+
$nr_images ++;
|
552 |
+
continue;
|
553 |
+
}
|
554 |
+
}
|
555 |
+
}
|
556 |
+
|
557 |
+
if ( 'account' == $search ) {
|
558 |
+
$image_data = $this->to_media_model_from_account( $result );
|
559 |
+
} elseif ( 'account_business' == $search ) {
|
560 |
+
$image_data = $this->to_media_model_from_account_business( $result );
|
561 |
+
} elseif ( 'hashtag' == $search && $results['hashtag'] ) {
|
562 |
+
$image_data = $this->to_media_model_from_hashtag( $result );
|
563 |
+
}
|
564 |
+
|
565 |
+
if ( $this->is_blocked_by_word( $blocked_words, $image_data['caption'] ) ) {
|
566 |
+
$nr_images ++;
|
567 |
+
continue;
|
568 |
+
}
|
569 |
+
|
570 |
+
if ( ! $this->is_allowed_by_word( $allowed_words, $image_data['caption'] ) ) {
|
571 |
+
$nr_images ++;
|
572 |
+
continue;
|
573 |
+
}
|
574 |
+
|
575 |
+
$instaData[] = $image_data;
|
576 |
+
} // end -> foreach
|
577 |
+
} elseif ( isset( $hashtag_response_status ) && 429 == $hashtag_response_status && is_user_logged_in() && 'hashtag' === $search ) {
|
578 |
+
return [ 'error' => __( "Can't receive images by hashtag. Please connect a business account and try again.", 'instagram-slider-widget' ) ];
|
579 |
+
}
|
580 |
+
|
581 |
+
update_option( $opt_name, $new_opts );
|
582 |
+
|
583 |
+
$insta_imgs_cache = 'insta_imgs_cache';
|
584 |
+
if ( is_array( $instaData ) && ! empty( $instaData ) ) {
|
585 |
+
set_transient( $opt_name, $instaData, $cache_hours * 60 * 60 );
|
586 |
+
WIS_Plugin::app()->updateoption( $insta_imgs_cache, $instaData );
|
587 |
+
} else {
|
588 |
+
$instaData = WIS_Plugin::app()->getOption( $insta_imgs_cache, [] );
|
589 |
+
WIS_Plugin::app()->logger->error( 'Feed query failed! Try reconnecting your account in the plugin settings.' );
|
590 |
+
}
|
591 |
+
}
|
592 |
+
|
593 |
+
return $instaData;
|
594 |
+
}
|
595 |
+
|
596 |
+
/**
|
597 |
+
* Runs the query for images and returns the html
|
598 |
+
*
|
599 |
+
* @return string
|
600 |
+
*/
|
601 |
+
public function display_images() {
|
602 |
+
$this->widget_scripts_enqueue();
|
603 |
+
|
604 |
+
$feed_id = $this->id;
|
605 |
+
$searchfor = $this->search_for;
|
606 |
+
$account = $this->account;
|
607 |
+
$account_business = $this->account_business;
|
608 |
+
$username = $this->username;
|
609 |
+
$hashtag = $this->hashtag;
|
610 |
+
$refresh_hour = $this->refresh_hour;
|
611 |
+
$template = $this->get( 'template' );
|
612 |
+
$images_number = $this->get( 'images_number' );
|
613 |
+
$blocked_words = $this->get( 'blocked_words' );
|
614 |
+
$allowed_words = $this->get( 'allowed_words' );
|
615 |
+
$blocked_users = $this->get( 'blocked_users' );
|
616 |
+
$enable_ad = $this->get( 'enable_ad' );
|
617 |
+
$orderby = $this->get( 'orderby' );
|
618 |
+
|
619 |
+
if ( 'hashtag' === $searchfor ) {
|
620 |
+
$search_for['hashtag'] = $hashtag;
|
621 |
+
} elseif ( 'account' === $searchfor ) {
|
622 |
+
$search_for['account'] = $account;
|
623 |
+
} elseif ( 'account_business' === $searchfor ) {
|
624 |
+
$search_for['account_business'] = $account_business;
|
625 |
+
} else {
|
626 |
+
$search_for['username'] = $username;
|
627 |
+
}
|
628 |
+
$search_for['blocked_users'] = $blocked_users;
|
629 |
+
$search_for['blocked_words'] = $blocked_words;
|
630 |
+
$search_for['allowed_words'] = $allowed_words;
|
631 |
+
|
632 |
+
$args = $this->getAdaptiveInstance();
|
633 |
+
//WIS_Plugin::app()->logger->info( "Feed options: " . json_encode( $args ) );
|
634 |
+
|
635 |
+
$is_business = ( 'account_business' === $searchfor );
|
636 |
+
if ( $is_business ) {
|
637 |
+
$accounts = $this->getAccountsBusiness();
|
638 |
+
} else {
|
639 |
+
$accounts = $this->getAccounts();
|
640 |
+
}
|
641 |
+
|
642 |
+
if ( $template == 'slick_slider' || $template == 'masonry_lite' || $template == 'masonry' || $template == 'highlight' || $template == 'showcase' ) {
|
643 |
+
if ( defined( 'WISP_PLUGIN_ACTIVE' ) && WISP_PLUGIN_ACTIVE == true ) {
|
644 |
+
return apply_filters( 'wis/pro/display_images', '', $args, $this );
|
645 |
+
}
|
646 |
+
}
|
647 |
+
|
648 |
+
$output = '';
|
649 |
+
//WIS_Plugin::app()->logger->info( "Feed query: " . json_encode( [ $search_for, $refresh_hour, $images_number ] ) );
|
650 |
+
$images_data = $this->feed_query( $search_for, $refresh_hour, $images_number );
|
651 |
+
//WIS_Plugin::app()->logger->info( "Feed images: " . json_encode( $images_data ) );
|
652 |
+
|
653 |
+
if ( isset( $images_data['error'] ) ) {
|
654 |
+
return $images_data['error'];
|
655 |
+
}
|
656 |
+
|
657 |
+
if ( $args['show_feed_header'] && $is_business ) {
|
658 |
+
$account_data = $accounts[ $images_data[0]['username'] ] ?? [];
|
659 |
+
//WIS_Plugin::app()->logger->info( "Account data: " . json_encode( $account_data ) );
|
660 |
+
|
661 |
+
if ( WIS_Plugin::app()->is_premium() ) {
|
662 |
+
$output .= WIS_Premium::app()->display_header_with_stories( $account, $account_data, $images_data['stories'], $args['enable_stories'] );
|
663 |
+
} else {
|
664 |
+
$output .= $this->render_template( 'templates/feed_header', $account_data );
|
665 |
+
}
|
666 |
+
}
|
667 |
+
|
668 |
+
if ( ! empty( $args['description'] ) && ! is_array( $args['description'] ) ) {
|
669 |
+
$args['description'] = explode( ',', $args['description'] );
|
670 |
+
}
|
671 |
+
|
672 |
+
if ( isset( $images_data['stories'] ) ) {
|
673 |
+
unset( $images_data['stories'] );
|
674 |
+
}
|
675 |
+
|
676 |
+
if ( 'rand' == $orderby ) {
|
677 |
+
shuffle( $images_data );
|
678 |
+
} else {
|
679 |
+
$orderby = explode( '-', $orderby );
|
680 |
+
if ( 'date' == $orderby[0] ) {
|
681 |
+
$func = 'sort_timestamp_' . $orderby[1];
|
682 |
+
} else {
|
683 |
+
$func = $is_business ? 'sort_popularity_' . $orderby[1] : 'sort_timestamp_' . $orderby[1];
|
684 |
+
}
|
685 |
+
|
686 |
+
usort( $images_data, [ $this, $func ] );
|
687 |
+
}
|
688 |
+
|
689 |
+
foreach ( $images_data as $key => &$image_data ) {
|
690 |
+
if ( 'stories' === $key ) {
|
691 |
+
continue;
|
692 |
+
}
|
693 |
+
|
694 |
+
$images_link = $args['images_link'];
|
695 |
+
if ( 'image_link' == $images_link || 'popup' == $images_link ) {
|
696 |
+
$image_data['link_to'] = $image_data['link'] ?? '';
|
697 |
+
} elseif ( 'user_url' == $images_link ) {
|
698 |
+
$image_data['link_to'] = 'https://www.instagram.com/' . $username . '/';
|
699 |
+
} elseif ( 'image_url' == $images_link ) {
|
700 |
+
$image_data['link_to'] = $image_data['url'];
|
701 |
+
} elseif ( 'custom_url' == $images_link ) {
|
702 |
+
$image_data['link_to'] = $args['custom_url'];
|
703 |
+
}
|
704 |
+
|
705 |
+
$image_data['caption'] = wp_trim_words( $image_data['caption'], $args['caption_words'], '' );
|
706 |
+
}
|
707 |
+
|
708 |
+
$template_args = [
|
709 |
+
'template_args' => $args,
|
710 |
+
'images' => $images_data,
|
711 |
+
'feed_id' => $feed_id,
|
712 |
+
];
|
713 |
+
|
714 |
+
$output .= $this->render_template( "templates/{$template}", $template_args );
|
715 |
+
|
716 |
+
if ( $enable_ad && ! defined( 'WISP_PLUGIN_ACTIVE' ) ) {
|
717 |
+
$output .= '
|
718 |
+
<div class="wis-template-ad" style="font-size: 1.0rem; margin-top: 2%; text-align: center; color: rgba(22,22,22,0.72);" >
|
719 |
+
<a target="_blank" style="color: rgba(22,22,22,0.72); text-decoration: none" href="https://cm-wp.com/instagram-slider-widget/" >
|
720 |
+
Powered by Social Slider Feed
|
721 |
+
</a >
|
722 |
+
</div >
|
723 |
+
';
|
724 |
+
}
|
725 |
+
|
726 |
+
return $output;
|
727 |
+
|
728 |
+
}
|
729 |
+
|
730 |
+
/**
|
731 |
+
* Sanitize 4-byte UTF8 chars; no full utf8mb4 support in drupal7+mysql stack.
|
732 |
+
* This solution runs in O(n) time BUT assumes that all incoming input is
|
733 |
+
* strictly UTF8.
|
734 |
+
*
|
735 |
+
* @param string $input The input to be sanitised
|
736 |
+
*
|
737 |
+
* @return string sanitized input
|
738 |
+
*/
|
739 |
+
private function sanitize( $input ) {
|
740 |
+
|
741 |
+
if ( ! empty( $input ) ) {
|
742 |
+
$utf8_2byte = 0xC0; /*1100 0000*/
|
743 |
+
$utf8_2byte_bmask = 0xE0; /*1110 0000*/
|
744 |
+
$utf8_3byte = 0xE0; /*1110 0000*/
|
745 |
+
$utf8_3byte_bmask = 0XF0; /*1111 0000*/
|
746 |
+
$utf8_4byte = 0xF0; /*1111 0000*/
|
747 |
+
$utf8_4byte_bmask = 0xF8; /*1111 1000*/
|
748 |
+
|
749 |
+
$sanitized = '';
|
750 |
+
$len = strlen( $input );
|
751 |
+
for ( $i = 0; $i < $len; ++ $i ) {
|
752 |
+
|
753 |
+
$mb_char = $input[ $i ]; // Potentially a multibyte sequence
|
754 |
+
$byte = ord( $mb_char );
|
755 |
+
|
756 |
+
if ( ( $byte & $utf8_2byte_bmask ) == $utf8_2byte ) {
|
757 |
+
$mb_char .= $input[ ++ $i ];
|
758 |
+
} elseif ( ( $byte & $utf8_3byte_bmask ) == $utf8_3byte ) {
|
759 |
+
$mb_char .= $input[ ++ $i ];
|
760 |
+
$mb_char .= $input[ ++ $i ];
|
761 |
+
} elseif ( ( $byte & $utf8_4byte_bmask ) == $utf8_4byte ) {
|
762 |
+
// Replace with ? to avoid MySQL exception
|
763 |
+
$mb_char = '';
|
764 |
+
$i += 3;
|
765 |
+
}
|
766 |
+
|
767 |
+
$sanitized .= $mb_char;
|
768 |
+
}
|
769 |
+
|
770 |
+
$input = $sanitized;
|
771 |
+
}
|
772 |
+
|
773 |
+
return $input;
|
774 |
+
}
|
775 |
+
|
776 |
+
/**
|
777 |
+
* Get data from instagram by username
|
778 |
+
*
|
779 |
+
* @param string $username
|
780 |
+
*
|
781 |
+
* @return array
|
782 |
+
*/
|
783 |
+
private function get_data_by_username( $username ) {
|
784 |
+
|
785 |
+
$url = str_replace( '{username}', urlencode( trim( $username ) ), self::USERNAME_URL );
|
786 |
+
$response = wp_remote_get( $url, [
|
787 |
+
'sslverify' => false,
|
788 |
+
'timeout' => 60,
|
789 |
+
] );
|
790 |
+
|
791 |
+
if ( strstr( $response['body'], '-cx-PRIVATE-Page__main' ) ) {
|
792 |
+
return [ 'error' => __( 'Account not found or for this account there are restrictions on Instagram by age', 'instagram-slider-widget' ) ];
|
793 |
+
}
|
794 |
+
|
795 |
+
$json = str_replace( 'window._sharedData = ', '', strstr( $response['body'], 'window._sharedData = ' ) );
|
796 |
+
|
797 |
+
// Compatibility for version of php where strstr() doesnt accept third parameter
|
798 |
+
if ( version_compare( PHP_VERSION, '5.3.0', '>=' ) ) {
|
799 |
+
$json = strstr( $json, '</script>', true );
|
800 |
+
} else {
|
801 |
+
$json = substr( $json, 0, strpos( $json, '</script>' ) );
|
802 |
+
}
|
803 |
+
$json = rtrim( $json, ';' );
|
804 |
+
|
805 |
+
// Function json_last_error() is not available before PHP * 5.3.0 version
|
806 |
+
if ( function_exists( 'json_last_error' ) ) {
|
807 |
+
|
808 |
+
( $results = json_decode( $json, true ) ) && json_last_error() == JSON_ERROR_NONE;
|
809 |
+
|
810 |
+
} else {
|
811 |
+
$results = json_decode( $json, true );
|
812 |
+
}
|
813 |
+
|
814 |
+
return $results;
|
815 |
+
}
|
816 |
+
|
817 |
+
/**
|
818 |
+
* Get Instagram Ids from Usernames into array
|
819 |
+
*
|
820 |
+
* @param string $usernames Comma separated string with instagram users
|
821 |
+
*
|
822 |
+
* @return array An array with instagram ids
|
823 |
+
*/
|
824 |
+
private function get_ids_from_usernames( $usernames ) {
|
825 |
+
|
826 |
+
$users = explode( ',', trim( $usernames ) );
|
827 |
+
$user_ids = (array) get_transient( 'jr_insta_user_ids' );
|
828 |
+
$return_ids = [];
|
829 |
+
|
830 |
+
if ( is_array( $users ) && ! empty( $users ) ) {
|
831 |
+
|
832 |
+
foreach ( $users as $user ) {
|
833 |
+
|
834 |
+
if ( isset( $user_ids[ $user ] ) ) {
|
835 |
+
continue;
|
836 |
+
}
|
837 |
+
|
838 |
+
$results = $this->get_data_by_username( $user );
|
839 |
+
if ( $results && is_array( $results ) ) {
|
840 |
+
|
841 |
+
$results = $results['entry_data']['ProfilePage']['0']['graphql']['user'];
|
842 |
+
$user_id = isset( $results['id'] ) ? $results['id'] : false;
|
843 |
+
|
844 |
+
if ( $user_id ) {
|
845 |
+
|
846 |
+
$user_ids[ $user ] = $user_id;
|
847 |
+
|
848 |
+
set_transient( 'jr_insta_user_ids', $user_ids );
|
849 |
+
}
|
850 |
+
}
|
851 |
+
}
|
852 |
+
}
|
853 |
+
|
854 |
+
foreach ( $users as $user ) {
|
855 |
+
if ( isset( $user_ids[ $user ] ) ) {
|
856 |
+
$return_ids[] = $user_ids[ $user ];
|
857 |
+
}
|
858 |
+
}
|
859 |
+
|
860 |
+
return $return_ids;
|
861 |
+
}
|
862 |
+
|
863 |
+
public function get_user_by_token( $token ) {
|
864 |
+
$args = [
|
865 |
+
'fields' => 'id,media_count,username',
|
866 |
+
'access_token' => $token,
|
867 |
+
];
|
868 |
+
|
869 |
+
$url = WIG_USERS_SELF_URL;
|
870 |
+
$url = esc_url(add_query_arg( $args, $url ));
|
871 |
+
$response = wp_remote_get( $url );
|
872 |
+
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
873 |
+
$user = json_decode( wp_remote_retrieve_body( $response ), true );
|
874 |
+
$user['token'] = $token;
|
875 |
+
|
876 |
+
return $user;
|
877 |
+
}
|
878 |
+
|
879 |
+
return false;
|
880 |
+
}
|
881 |
+
|
882 |
+
/**
|
883 |
+
* Get Account data by USERNAME from option in wp_options
|
884 |
+
*
|
885 |
+
* @param string $name
|
886 |
+
* @param bool $is_business
|
887 |
+
*
|
888 |
+
* @return array
|
889 |
+
*/
|
890 |
+
public function getAccountById( $name, $is_business = false ) {
|
891 |
+
if ( $is_business ) {
|
892 |
+
$token = WIS_Plugin::app()->getOption( WIG_BUSINESS_PROFILES_OPTION );
|
893 |
+
} else {
|
894 |
+
$token = WIS_Plugin::app()->getOption( WIG_PROFILES_OPTION );
|
895 |
+
}
|
896 |
+
|
897 |
+
return $token[ $name ];
|
898 |
+
}
|
899 |
+
|
900 |
+
/**
|
901 |
+
* Get first Account data from option in wp_options
|
902 |
+
*
|
903 |
+
* @return bool|array
|
904 |
+
*/
|
905 |
+
public function getAccountForHashtag() {
|
906 |
+
$token = WIS_Plugin::app()->getOption( WIG_BUSINESS_PROFILES_OPTION, false );
|
907 |
+
if ( $token && is_array( $token ) && ! empty( $token ) ) {
|
908 |
+
return array_shift( $token );
|
909 |
+
} else {
|
910 |
+
return false;
|
911 |
+
}
|
912 |
+
}
|
913 |
+
|
914 |
+
/**
|
915 |
+
* Media Model from account
|
916 |
+
*
|
917 |
+
* @param array $media From API
|
918 |
+
*
|
919 |
+
* @return array To plugin format
|
920 |
+
*/
|
921 |
+
public function to_media_model_from_account( $media ) {
|
922 |
+
|
923 |
+
$m = [];
|
924 |
+
switch ( $media['media_type'] ) {
|
925 |
+
case 'IMAGE':
|
926 |
+
$m['type'] = 'GraphImage';
|
927 |
+
$m['image'] = $media['media_url'];
|
928 |
+
break;
|
929 |
+
case 'VIDEO':
|
930 |
+
$m['type'] = 'GraphVideo';
|
931 |
+
$m['video'] = $media['media_url'];
|
932 |
+
$m['thumbnail'] = $media['thumbnail_url'];
|
933 |
+
$m['image'] = $media['thumbnail_url'];
|
934 |
+
break;
|
935 |
+
case 'CAROUSEL_ALBUM':
|
936 |
+
$m['type'] = 'GraphSidecar';
|
937 |
+
$res = [];
|
938 |
+
foreach ( $media['children']['data'] as $v ) {
|
939 |
+
$type = 'images';
|
940 |
+
$t['standard_resolution']['url'] = $v['media_url'];
|
941 |
+
$size = getimagesize( $v['media_url'] );
|
942 |
+
if ( is_array( $size ) ) {
|
943 |
+
$t['standard_resolution']['height'] = $size[1];
|
944 |
+
$t['standard_resolution']['width'] = $size[0];
|
945 |
+
} else {
|
946 |
+
$type = 'videos';
|
947 |
+
}
|
948 |
+
$res[][ $type ] = $t;
|
949 |
+
|
950 |
+
}
|
951 |
+
$m['sidecar_media'] = $res;
|
952 |
+
$m['image'] = $media['media_url'];
|
953 |
+
break;
|
954 |
+
}
|
955 |
+
|
956 |
+
$m['id'] = $media['id'];
|
957 |
+
$m['username'] = $media['username'];
|
958 |
+
$m['caption'] = $this->sanitize( $media['caption'] );
|
959 |
+
$m['link'] = $media['permalink'];
|
960 |
+
$m['timestamp'] = strtotime( $media['timestamp'] );
|
961 |
+
$m['url'] = $media['media_url'];
|
962 |
+
|
963 |
+
if ( 'VIDEO' == $media['media_type'] ) {
|
964 |
+
$size = getimagesize( $media['thumbnail_url'] );
|
965 |
+
} else {
|
966 |
+
$size = getimagesize( $media['media_url'] );
|
967 |
+
}
|
968 |
+
if ( is_array( $size ) ) {
|
969 |
+
$m['height'] = $size[1];
|
970 |
+
$m['width'] = $size[0];
|
971 |
+
}
|
972 |
+
|
973 |
+
$m['popularity'] = 0;
|
974 |
+
|
975 |
+
return $m;
|
976 |
+
}
|
977 |
+
|
978 |
+
/**
|
979 |
+
* Media Model from account
|
980 |
+
*
|
981 |
+
* @param array $media From API
|
982 |
+
*
|
983 |
+
* @return array To plugin format
|
984 |
+
*/
|
985 |
+
public function to_media_model_from_account_business( $media ) {
|
986 |
+
|
987 |
+
$m = [];
|
988 |
+
switch ( $media['media_type'] ) {
|
989 |
+
case 'IMAGE':
|
990 |
+
$m['type'] = 'GraphImage';
|
991 |
+
$m['image'] = $media['media_url'];
|
992 |
+
break;
|
993 |
+
case 'VIDEO':
|
994 |
+
$m['type'] = 'GraphVideo';
|
995 |
+
$m['video'] = $media['media_url'];
|
996 |
+
$m['thumbnail'] = $media['thumbnail_url'];
|
997 |
+
$m['image'] = $media['thumbnail_url'];
|
998 |
+
break;
|
999 |
+
case 'CAROUSEL_ALBUM':
|
1000 |
+
$m['type'] = 'GraphSidecar';
|
1001 |
+
$res = [];
|
1002 |
+
foreach ( $media['children']['data'] as $v ) {
|
1003 |
+
$type = 'images';
|
1004 |
+
$t['standard_resolution']['url'] = $v['media_url'];
|
1005 |
+
$size = getimagesize( $v['media_url'] );
|
1006 |
+
if ( is_array( $size ) ) {
|
1007 |
+
$t['standard_resolution']['height'] = $size[1];
|
1008 |
+
$t['standard_resolution']['width'] = $size[0];
|
1009 |
+
} else {
|
1010 |
+
$type = 'videos';
|
1011 |
+
}
|
1012 |
+
$res[][ $type ] = $t;
|
1013 |
+
}
|
1014 |
+
$m['sidecar_media'] = $res;
|
1015 |
+
$m['image'] = $media['media_url'];
|
1016 |
+
break;
|
1017 |
+
}
|
1018 |
+
|
1019 |
+
$m['id'] = $media['id'];
|
1020 |
+
$m['username'] = $media['username'];
|
1021 |
+
$m['caption'] = $this->sanitize( $media['caption'] );
|
1022 |
+
$m['link'] = $media['permalink'];
|
1023 |
+
$m['user_id'] = $media['owner']['id'];
|
1024 |
+
$m['timestamp'] = strtotime( $media['timestamp'] );
|
1025 |
+
$m['url'] = $media['media_url'];
|
1026 |
+
$m['comments'] = $media['comments_count'];
|
1027 |
+
$m['likes'] = $media['like_count'];
|
1028 |
+
|
1029 |
+
if ( 'VIDEO' == $media['media_type'] ) {
|
1030 |
+
$size = getimagesize( $media['thumbnail_url'] );
|
1031 |
+
} else {
|
1032 |
+
$size = getimagesize( $media['media_url'] );
|
1033 |
+
}
|
1034 |
+
if ( is_array( $size ) ) {
|
1035 |
+
$m['height'] = $size[1];
|
1036 |
+
$m['width'] = $size[0];
|
1037 |
+
}
|
1038 |
+
|
1039 |
+
if ( isset( $m['comments'] ) && isset( $m['likes'] ) ) {
|
1040 |
+
$m['popularity'] = (int) ( $m['comments'] ) + ( $m['likes'] );
|
1041 |
+
}
|
1042 |
+
|
1043 |
+
return $m;
|
1044 |
+
}
|
1045 |
+
|
1046 |
+
/**
|
1047 |
+
* Media Model from hashtag
|
1048 |
+
*
|
1049 |
+
* @param array $media From API
|
1050 |
+
*
|
1051 |
+
* @return array To plugin format
|
1052 |
+
*/
|
1053 |
+
public function to_media_model_from_hashtag( $media ) {
|
1054 |
+
|
1055 |
+
$m = [];
|
1056 |
+
if ( isset( $media['fbapi'] ) ) {
|
1057 |
+
$value = $media;
|
1058 |
+
switch ( $value['media_type'] ) {
|
1059 |
+
case 'IMAGE':
|
1060 |
+
$m['type'] = 'GraphImage';
|
1061 |
+
$m['image'] = $value['media_url'];
|
1062 |
+
break;
|
1063 |
+
case 'VIDEO':
|
1064 |
+
$m['type'] = 'GraphVideo';
|
1065 |
+
$m['video'] = $value['media_url'];
|
1066 |
+
$m['thumbnail'] = $value['thumbnail_url'];
|
1067 |
+
$m['image'] = $value['thumbnail_url'];
|
1068 |
+
break;
|
1069 |
+
case 'CAROUSEL_ALBUM':
|
1070 |
+
$m['type'] = 'GraphSidecar';
|
1071 |
+
$res = [];
|
1072 |
+
foreach ( $value['children']['data'] as $v ) {
|
1073 |
+
$t['standard_resolution']['url'] = $v['media_url'];
|
1074 |
+
$res[]['images'] = $t;
|
1075 |
+
}
|
1076 |
+
$m['sidecar_media'] = $res;
|
1077 |
+
$m['image'] = $value['children']['data'][0]['media_url'];
|
1078 |
+
break;
|
1079 |
+
}
|
1080 |
+
|
1081 |
+
$media_url = isset( $value['media_url'] ) ? $value['media_url'] : $value['children']['data'][0]['media_url'];
|
1082 |
+
|
1083 |
+
$m['id'] = $value['id'];
|
1084 |
+
$m['caption'] = $this->sanitize( $value['caption'] );
|
1085 |
+
$m['link'] = $value['permalink'];
|
1086 |
+
$m['comment_count'] = $value['comments_count'];
|
1087 |
+
$m['url'] = $media_url;
|
1088 |
+
$m['likes_count'] = $value['like_count'];
|
1089 |
+
|
1090 |
+
$m['sizes']['thumbnail'] = $media_url;
|
1091 |
+
$m['sizes']['low'] = $media_url;
|
1092 |
+
$m['sizes']['standard'] = $media_url;
|
1093 |
+
$m['sizes']['full'] = $media_url;
|
1094 |
+
|
1095 |
+
if ( 'VIDEO' == $media['media_type'] ) {
|
1096 |
+
$size = getimagesize( $value['thumbnail_url'] );
|
1097 |
+
} else {
|
1098 |
+
$size = getimagesize( $media_url );
|
1099 |
+
}
|
1100 |
+
if ( is_array( $size ) ) {
|
1101 |
+
$m['height'] = $size[1];
|
1102 |
+
$m['width'] = $size[0];
|
1103 |
+
}
|
1104 |
+
|
1105 |
+
$m['popularity'] = (int) ( $m['comment_count'] ) + ( $m['likes_count'] );
|
1106 |
+
} else {
|
1107 |
+
$value = $media;
|
1108 |
+
$m['type'] = $value['__typename'];
|
1109 |
+
$m['id'] = $value['id'];
|
1110 |
+
$m['code'] = $value['shortcode'];
|
1111 |
+
$m['link'] = 'https://www.instagram.com/p/' . $value['shortcode'] . '/';
|
1112 |
+
$m['user_id'] = $value['owner']['id'];
|
1113 |
+
|
1114 |
+
$m['caption'] = isset( $value['edge_media_to_caption']['edges'][0]['node']['text'] ) ? $value['edge_media_to_caption']['edges'][0]['node']['text'] : '';
|
1115 |
+
|
1116 |
+
$m['timestamp'] = $value['taken_at_timestamp'];
|
1117 |
+
$m['url'] = $value['display_url'];
|
1118 |
+
$m['likes_count'] = $value['edge_liked_by']['count'];
|
1119 |
+
$m['comment_count'] = $value['edge_media_to_comment']['count'];
|
1120 |
+
$m['sizes'] = $this->get_thumbnail_urls( $value['thumbnail_resources'] );
|
1121 |
+
$m['image'] = $value['thumbnail_src'];
|
1122 |
+
|
1123 |
+
if ( isset( $m['comment_count'] ) && isset( $m['likes_count'] ) ) {
|
1124 |
+
$m['popularity'] = (int) ( $m['comment_count'] ) + ( $m['likes_count'] );
|
1125 |
+
}
|
1126 |
+
}
|
1127 |
+
|
1128 |
+
return $m;
|
1129 |
+
}
|
1130 |
+
|
1131 |
+
/**
|
1132 |
+
* This post is blocked by words?
|
1133 |
+
*
|
1134 |
+
* @param string $words
|
1135 |
+
* @param string $text
|
1136 |
+
*
|
1137 |
+
* @return bool
|
1138 |
+
*/
|
1139 |
+
public function is_blocked_by_word( $words, $text ) {
|
1140 |
+
if ( empty( $words ) || empty( $text ) ) {
|
1141 |
+
return false;
|
1142 |
+
}
|
1143 |
+
$words_array = explode( ',', $words );
|
1144 |
+
foreach ( $words_array as $word ) {
|
1145 |
+
$pos = stripos( $text, trim( $word ) );
|
1146 |
+
if ( $pos !== false ) {
|
1147 |
+
return true;
|
1148 |
+
}
|
1149 |
+
}
|
1150 |
+
|
1151 |
+
return false;
|
1152 |
+
}
|
1153 |
+
|
1154 |
+
/**
|
1155 |
+
* This post is allowed by words?
|
1156 |
+
*
|
1157 |
+
* @param string $words
|
1158 |
+
* @param string $text
|
1159 |
+
*
|
1160 |
+
* @return bool
|
1161 |
+
*/
|
1162 |
+
public function is_allowed_by_word( $words, $text ) {
|
1163 |
+
if ( empty( $words ) ) {
|
1164 |
+
return true;
|
1165 |
+
}
|
1166 |
+
if ( empty( $text ) ) {
|
1167 |
+
return false;
|
1168 |
+
}
|
1169 |
+
|
1170 |
+
$words_array = explode( ',', $words );
|
1171 |
+
foreach ( $words_array as $word ) {
|
1172 |
+
if ( strripos( $text, $word ) !== false ) {
|
1173 |
+
return true;
|
1174 |
+
}
|
1175 |
+
}
|
1176 |
+
|
1177 |
+
return false;
|
1178 |
+
}
|
1179 |
+
|
1180 |
+
/**
|
1181 |
+
* Sort Function for timestamp Ascending
|
1182 |
+
*/
|
1183 |
+
public function sort_timestamp_ASC( $a, $b ) {
|
1184 |
+
$a = $a['timestamp'] ?? 0;
|
1185 |
+
$b = $b['timestamp'] ?? 0;
|
1186 |
+
|
1187 |
+
return $a > $b;
|
1188 |
+
}
|
1189 |
+
|
1190 |
+
/**
|
1191 |
+
* Sort Function for timestamp Descending
|
1192 |
+
*/
|
1193 |
+
public function sort_timestamp_DESC( $a, $b ) {
|
1194 |
+
$a = $a['timestamp'] ?? 0;
|
1195 |
+
$b = $b['timestamp'] ?? 0;
|
1196 |
+
|
1197 |
+
return $a < $b;
|
1198 |
+
}
|
1199 |
+
|
1200 |
+
/**
|
1201 |
+
* Sort Function for popularity Ascending
|
1202 |
+
*/
|
1203 |
+
public function sort_popularity_ASC( $a, $b ) {
|
1204 |
+
return $a['popularity'] > $b['popularity'];
|
1205 |
+
}
|
1206 |
+
|
1207 |
+
/**
|
1208 |
+
* Sort Function for popularity Descending
|
1209 |
+
*/
|
1210 |
+
public function sort_popularity_DESC( $a, $b ) {
|
1211 |
+
return $a['popularity'] < $b['popularity'];
|
1212 |
+
}
|
1213 |
+
|
1214 |
+
}
|
components/instagram/includes/class-instagram-profiles.php
CHANGED
@@ -88,7 +88,7 @@ class WIS_Instagram_Profiles extends WIS_Profiles {
|
|
88 |
'limit' => 200,
|
89 |
];
|
90 |
$url = WFB_FACEBOOK_SELF_URL . "me/accounts";
|
91 |
-
$response = wp_remote_get( add_query_arg( $args, $url ) );
|
92 |
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
93 |
$pages = json_decode( wp_remote_retrieve_body( $response ), true );
|
94 |
//$username = $result['data'][0]['name'];
|
@@ -101,7 +101,7 @@ class WIS_Instagram_Profiles extends WIS_Profiles {
|
|
101 |
'access_token' => $token,
|
102 |
];
|
103 |
$url = WFB_FACEBOOK_SELF_URL . $r['instagram_business_account']['id'];
|
104 |
-
$response = wp_remote_get( add_query_arg( $args, $url ) );
|
105 |
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
106 |
$result = json_decode( wp_remote_retrieve_body( $response ), true );
|
107 |
$result['token'] = $token;
|
@@ -143,7 +143,7 @@ class WIS_Instagram_Profiles extends WIS_Profiles {
|
|
143 |
];
|
144 |
|
145 |
$url = WIG_USERS_SELF_URL;
|
146 |
-
$url = add_query_arg( $args, $url );
|
147 |
$response = wp_remote_get( $url );
|
148 |
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
149 |
$user = json_decode( wp_remote_retrieve_body( $response ), true );
|
@@ -187,7 +187,7 @@ class WIS_Instagram_Profiles extends WIS_Profiles {
|
|
187 |
];
|
188 |
|
189 |
$url = WIG_USERS_SELF_MEDIA_URL . 'refresh_access_token';
|
190 |
-
$url = add_query_arg( $args, $url );
|
191 |
$response = wp_remote_get( $url );
|
192 |
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
193 |
$new = json_decode( wp_remote_retrieve_body( $response ), true );
|
@@ -210,12 +210,12 @@ class WIS_Instagram_Profiles extends WIS_Profiles {
|
|
210 |
if ( isset( $_GET['token_error'] ) ) {
|
211 |
$token_error = wp_strip_all_tags( $_GET['token_error'] );
|
212 |
echo '<div class="notice notice-error"><p>' . $token_error . '</p></div>';
|
213 |
-
$_SERVER['REQUEST_URI'] = str_replace( '#_', '', remove_query_arg( 'token_error' ) );
|
214 |
} else {
|
215 |
if ( isset( $_GET['access_token'] ) ) {
|
216 |
$token = $_GET['access_token'];
|
217 |
$result = $this->update_account_profiles( $token, true );
|
218 |
-
$_SERVER['REQUEST_URI'] = remove_query_arg( 'access_token' );
|
219 |
?>
|
220 |
<div id="wis_accounts_modal" class="wis_accounts_modal">
|
221 |
<div class="wis_modal_header">
|
@@ -234,12 +234,12 @@ class WIS_Instagram_Profiles extends WIS_Profiles {
|
|
234 |
if ( isset( $_GET['token_error'] ) ) {
|
235 |
$token_error = wp_strip_all_tags( $_GET['token_error'] );
|
236 |
echo '<div class="notice notice-error"><p>' . $token_error . '</p></div>';
|
237 |
-
$_SERVER['REQUEST_URI'] = str_replace( '#_', '', remove_query_arg( 'token_error' ) );
|
238 |
} else {
|
239 |
if ( isset( $_GET['access_token'] ) ) {
|
240 |
$token = $_GET['access_token'];
|
241 |
$result = $this->update_account_profiles( $token );
|
242 |
-
$_SERVER['REQUEST_URI'] = str_replace( '#_', '', remove_query_arg( 'access_token' ) );
|
243 |
}
|
244 |
}
|
245 |
}
|
88 |
'limit' => 200,
|
89 |
];
|
90 |
$url = WFB_FACEBOOK_SELF_URL . "me/accounts";
|
91 |
+
$response = wp_remote_get( esc_url(add_query_arg( $args, $url )) );
|
92 |
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
93 |
$pages = json_decode( wp_remote_retrieve_body( $response ), true );
|
94 |
//$username = $result['data'][0]['name'];
|
101 |
'access_token' => $token,
|
102 |
];
|
103 |
$url = WFB_FACEBOOK_SELF_URL . $r['instagram_business_account']['id'];
|
104 |
+
$response = wp_remote_get( esc_url(add_query_arg( $args, $url )) );
|
105 |
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
106 |
$result = json_decode( wp_remote_retrieve_body( $response ), true );
|
107 |
$result['token'] = $token;
|
143 |
];
|
144 |
|
145 |
$url = WIG_USERS_SELF_URL;
|
146 |
+
$url = esc_url(add_query_arg( $args, $url ));
|
147 |
$response = wp_remote_get( $url );
|
148 |
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
149 |
$user = json_decode( wp_remote_retrieve_body( $response ), true );
|
187 |
];
|
188 |
|
189 |
$url = WIG_USERS_SELF_MEDIA_URL . 'refresh_access_token';
|
190 |
+
$url = esc_url(add_query_arg( $args, $url ));
|
191 |
$response = wp_remote_get( $url );
|
192 |
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
193 |
$new = json_decode( wp_remote_retrieve_body( $response ), true );
|
210 |
if ( isset( $_GET['token_error'] ) ) {
|
211 |
$token_error = wp_strip_all_tags( $_GET['token_error'] );
|
212 |
echo '<div class="notice notice-error"><p>' . $token_error . '</p></div>';
|
213 |
+
$_SERVER['REQUEST_URI'] = str_replace( '#_', '', esc_url(remove_query_arg( 'token_error' )) );
|
214 |
} else {
|
215 |
if ( isset( $_GET['access_token'] ) ) {
|
216 |
$token = $_GET['access_token'];
|
217 |
$result = $this->update_account_profiles( $token, true );
|
218 |
+
$_SERVER['REQUEST_URI'] = esc_url(remove_query_arg( 'access_token' ));
|
219 |
?>
|
220 |
<div id="wis_accounts_modal" class="wis_accounts_modal">
|
221 |
<div class="wis_modal_header">
|
234 |
if ( isset( $_GET['token_error'] ) ) {
|
235 |
$token_error = wp_strip_all_tags( $_GET['token_error'] );
|
236 |
echo '<div class="notice notice-error"><p>' . $token_error . '</p></div>';
|
237 |
+
$_SERVER['REQUEST_URI'] = str_replace( '#_', '', esc_url(remove_query_arg( 'token_error' )) );
|
238 |
} else {
|
239 |
if ( isset( $_GET['access_token'] ) ) {
|
240 |
$token = $_GET['access_token'];
|
241 |
$result = $this->update_account_profiles( $token );
|
242 |
+
$_SERVER['REQUEST_URI'] = str_replace( '#_', '', esc_url(remove_query_arg( 'access_token' )) );
|
243 |
}
|
244 |
}
|
245 |
}
|
components/youtube/load.php
CHANGED
@@ -12,7 +12,7 @@ define( 'WYT_COMPONENT_VIEWS_DIR', WYT_COMPONENT_DIR . '/html_templates' );
|
|
12 |
define( 'WYT_ACCOUNT_OPTION_NAME', 'youtube_account' );
|
13 |
define( 'WYT_API_KEY_OPTION_NAME', 'yt_api_key' );
|
14 |
|
15 |
-
|
16 |
require_once WYT_COMPONENT_DIR . '/includes/helpers.php';
|
17 |
require_once WYT_COMPONENT_DIR . '/includes/Api/load.php';
|
18 |
require_once WYT_COMPONENT_DIR . "/includes/class-youtube-feed.php";
|
12 |
define( 'WYT_ACCOUNT_OPTION_NAME', 'youtube_account' );
|
13 |
define( 'WYT_API_KEY_OPTION_NAME', 'yt_api_key' );
|
14 |
|
15 |
+
require_once WYT_COMPONENT_DIR . '/includes/functions.php';
|
16 |
require_once WYT_COMPONENT_DIR . '/includes/helpers.php';
|
17 |
require_once WYT_COMPONENT_DIR . '/includes/Api/load.php';
|
18 |
require_once WYT_COMPONENT_DIR . "/includes/class-youtube-feed.php";
|
includes/class-plugin.php
CHANGED
@@ -13,11 +13,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
* @copyright (c) 2019 Webraftic Ltd
|
14 |
* @version 1.0
|
15 |
*/
|
16 |
-
class WIS_Plugin extends \
|
17 |
|
18 |
/**
|
19 |
* @see self::app()
|
20 |
-
* @var \
|
21 |
*/
|
22 |
private static $app;
|
23 |
|
@@ -35,7 +35,7 @@ class WIS_Plugin extends \Wbcr_Factory453_Plugin {
|
|
35 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
36 |
* классам.
|
37 |
*
|
38 |
-
* @return \
|
39 |
*/
|
40 |
public static function app() {
|
41 |
return self::$app;
|
13 |
* @copyright (c) 2019 Webraftic Ltd
|
14 |
* @version 1.0
|
15 |
*/
|
16 |
+
class WIS_Plugin extends \Wbcr_Factory458_Plugin {
|
17 |
|
18 |
/**
|
19 |
* @see self::app()
|
20 |
+
* @var \Wbcr_Factory458_Plugin
|
21 |
*/
|
22 |
private static $app;
|
23 |
|
35 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
36 |
* классам.
|
37 |
*
|
38 |
+
* @return \Wbcr_Factory458_Plugin
|
39 |
*/
|
40 |
public static function app() {
|
41 |
return self::$app;
|
instaram_slider.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/*
|
3 |
Plugin Name: Social Slider Feed
|
4 |
Plugin URI: https://cm-wp.com/instagram-slider-widget
|
5 |
-
Version: 2.0.
|
6 |
Description: Shows Instagram, Facebook and YouTube responsive feeds in widgets, posts, pages, or anywhere else using shortcodes
|
7 |
Author: creativemotion
|
8 |
Author URI: https://cm-wp.com/
|
@@ -80,19 +80,19 @@ $plugin_info = [
|
|
80 |
'subscribe_settings' => [ 'group_id' => '105407119' ],
|
81 |
|
82 |
'load_factory_modules' => [
|
83 |
-
[ 'libs/factory/bootstrap', '
|
84 |
-
[ 'libs/factory/forms', '
|
85 |
-
[ 'libs/factory/pages', '
|
86 |
-
[ 'libs/factory/freemius', '
|
87 |
-
[ 'libs/factory/adverts', '
|
88 |
-
[ 'libs/factory/templates', '
|
89 |
-
[ 'libs/factory/logger', '
|
90 |
],
|
91 |
];
|
92 |
|
93 |
global $wis_compatibility;
|
94 |
|
95 |
-
$wis_compatibility = new
|
96 |
'plugin_already_activate' => defined( 'WIS_PLUGIN_ACTIVE' ),
|
97 |
'required_php_version' => '7.0',
|
98 |
'required_wp_version' => '4.8.0',
|
2 |
/*
|
3 |
Plugin Name: Social Slider Feed
|
4 |
Plugin URI: https://cm-wp.com/instagram-slider-widget
|
5 |
+
Version: 2.0.4
|
6 |
Description: Shows Instagram, Facebook and YouTube responsive feeds in widgets, posts, pages, or anywhere else using shortcodes
|
7 |
Author: creativemotion
|
8 |
Author URI: https://cm-wp.com/
|
80 |
'subscribe_settings' => [ 'group_id' => '105407119' ],
|
81 |
|
82 |
'load_factory_modules' => [
|
83 |
+
[ 'libs/factory/bootstrap', 'factory_bootstrap_459', 'admin' ],
|
84 |
+
[ 'libs/factory/forms', 'factory_forms_455', 'admin' ],
|
85 |
+
[ 'libs/factory/pages', 'factory_pages_457', 'admin' ],
|
86 |
+
[ 'libs/factory/freemius', 'factory_freemius_145', 'all' ],
|
87 |
+
[ 'libs/factory/adverts', 'factory_adverts_135', 'admin' ],
|
88 |
+
[ 'libs/factory/templates', 'factory_templates_110', 'admin' ],
|
89 |
+
[ 'libs/factory/logger', 'factory_logger_123', 'all' ],
|
90 |
],
|
91 |
];
|
92 |
|
93 |
global $wis_compatibility;
|
94 |
|
95 |
+
$wis_compatibility = new Wbcr_Factory458_Requirements( __FILE__, array_merge( $plugin_info, [
|
96 |
'plugin_already_activate' => defined( 'WIS_PLUGIN_ACTIVE' ),
|
97 |
'required_php_version' => '7.0',
|
98 |
'required_wp_version' => '4.8.0',
|
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_135\Base;
|
4 |
|
5 |
/**
|
6 |
* Factory Adverts
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( defined('FACTORY_ADVERTS_135_LOADED') || (defined('FACTORY_ADVERTS_BLOCK') && FACTORY_ADVERTS_BLOCK) ) {
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
# Устанавливаем константу, что модуль уже загружен
|
28 |
+
define('FACTORY_ADVERTS_135_LOADED', true);
|
29 |
|
30 |
# Устанавливаем версию модуля
|
31 |
+
define('FACTORY_ADVERTS_135_VERSION', '1.3.5');
|
32 |
|
33 |
# Регистрируем тектовый домен, для интернализации интерфейса модуля
|
34 |
+
load_plugin_textdomain('wbcr_factory_adverts_135', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
35 |
|
36 |
# Устанавливаем директорию модуля
|
37 |
+
define('FACTORY_ADVERTS_135_DIR', dirname(__FILE__));
|
38 |
|
39 |
# Устанавливаем url модуля
|
40 |
+
define('FACTORY_ADVERTS_135_URL', plugins_url(null, __FILE__));
|
41 |
|
42 |
+
require_once(FACTORY_ADVERTS_135_DIR . '/includes/class-rest-request.php');
|
43 |
+
require_once(FACTORY_ADVERTS_135_DIR . '/includes/class-base.php');
|
44 |
|
45 |
/**
|
46 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
47 |
*/
|
48 |
+
add_action('wbcr_factory_adverts_135_plugin_created', function ($plugin) {
|
49 |
+
$plugin->set_adverts_manager("WBCR\Factory_Adverts_135\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_135;
|
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_Factory458_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_135\Creative_Motion_API
|
57 |
*/
|
58 |
private $api;
|
59 |
|
82 |
*
|
83 |
* @since 1.0.0 Added
|
84 |
*
|
85 |
+
* @param \Wbcr_Factory458_Plugin $plugin
|
86 |
*/
|
87 |
+
public function __construct( \Wbcr_Factory458_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_135_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_135;
|
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_Factory458_Plugin
|
39 |
*/
|
40 |
private $plugin;
|
41 |
|
46 |
*
|
47 |
* @since 1.0.0 Added
|
48 |
*
|
49 |
+
* @param \Wbcr_Factory458_Plugin $plugin
|
50 |
* @param string $content
|
51 |
*/
|
52 |
+
public function __construct( \Wbcr_Factory458_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_135;
|
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_Factory458_Plugin
|
69 |
*/
|
70 |
private $plugin;
|
71 |
|
75 |
*
|
76 |
* Variable initialization.
|
77 |
*
|
78 |
+
* @param \Wbcr_Factory458_Plugin $plugin_name
|
79 |
* @since 1.0.0 Added
|
80 |
*
|
81 |
*/
|
82 |
+
public function __construct(\Wbcr_Factory458_Plugin $plugin)
|
83 |
{
|
84 |
$this->plugin = $plugin;
|
85 |
}
|
libs/factory/adverts/langs/{wbcr_factory_adverts_130-ru_RU.mo → wbcr_factory_adverts_135-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/adverts/langs/{wbcr_factory_adverts_130-ru_RU.po → wbcr_factory_adverts_135-ru_RU.po}
RENAMED
File without changes
|
libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .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-459 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-459 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-459 .factory-accordion-item{display:none}.factory-bootstrap-459 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-459 .factory-accordion>h3.active:hover{cursor:default}
|
libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#e1a948;border-color:#d39323}
|
libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
|
libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-454 article,.factory-bootstrap-454 aside,.factory-bootstrap-454 details,.factory-bootstrap-454 figcaption,.factory-bootstrap-454 figure,.factory-bootstrap-454 footer,.factory-bootstrap-454 header,.factory-bootstrap-454 hgroup,.factory-bootstrap-454 main,.factory-bootstrap-454 nav,.factory-bootstrap-454 section,.factory-bootstrap-454 summary{display:block}.factory-bootstrap-454 audio,.factory-bootstrap-454 canvas,.factory-bootstrap-454 video{display:inline-block}.factory-bootstrap-454 audio:not([controls]){display:none;height:0}.factory-bootstrap-454 [hidden],.factory-bootstrap-454 template{display:none}.factory-bootstrap-454 body{margin:0}.factory-bootstrap-454 a{background:0 0}.factory-bootstrap-454 a:focus{outline:thin dotted}.factory-bootstrap-454 a:active,.factory-bootstrap-454 a:hover{outline:0}.factory-bootstrap-454 h1{margin:.67em 0}.factory-bootstrap-454 b,.factory-bootstrap-454 strong{font-weight:700}.factory-bootstrap-454 dfn{font-style:italic}.factory-bootstrap-454 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-454 mark{color:#000;background:#ff0}.factory-bootstrap-454 code,.factory-bootstrap-454 kbd,.factory-bootstrap-454 pre,.factory-bootstrap-454 samp{font-size:1em}.factory-bootstrap-454 pre{white-space:pre-wrap}.factory-bootstrap-454 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-454 sub,.factory-bootstrap-454 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-454 sup{top:-.5em}.factory-bootstrap-454 sub{bottom:-.25em}.factory-bootstrap-454 img{border:0}.factory-bootstrap-454 svg:not(:root){overflow:hidden}.factory-bootstrap-454 figure{margin:0}.factory-bootstrap-454 button,.factory-bootstrap-454 input,.factory-bootstrap-454 select,.factory-bootstrap-454 textarea{margin:0}.factory-bootstrap-454 button,.factory-bootstrap-454 select{text-transform:none}.factory-bootstrap-454 select{padding-right:4px!important}.factory-bootstrap-454 button,.factory-bootstrap-454 input[type=reset],.factory-bootstrap-454 input[type=submit],html .factory-bootstrap-454 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-454 button[disabled],html .factory-bootstrap-454 input[disabled]{cursor:default}.factory-bootstrap-454 input[type=checkbox],.factory-bootstrap-454 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-454 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-454 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-454 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-454 button::-moz-focus-inner,.factory-bootstrap-454 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-454 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-454 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-454 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-454 a,.factory-bootstrap-454 a:visited{text-decoration:underline}.factory-bootstrap-454 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-454 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-454 a[href^="javascript:"]:after,.factory-bootstrap-454 a[href^="#"]:after{content:""}.factory-bootstrap-454 blockquote,.factory-bootstrap-454 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-454 thead{display:table-header-group}.factory-bootstrap-454 img,.factory-bootstrap-454 tr{page-break-inside:avoid}.factory-bootstrap-454 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-454 h2,.factory-bootstrap-454 h3,.factory-bootstrap-454 p{orphans:3;widows:3}.factory-bootstrap-454 h2,.factory-bootstrap-454 h3{page-break-after:avoid}.factory-bootstrap-454 select{background:#fff!important}.factory-bootstrap-454 .navbar{display:none}.factory-bootstrap-454 .table td,.factory-bootstrap-454 .table th{background-color:#fff!important}.factory-bootstrap-454 .btn>.caret,.factory-bootstrap-454 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-454 .label{border:1px solid #000}.factory-bootstrap-454 .table{border-collapse:collapse!important}.factory-bootstrap-454 .table-bordered td,.factory-bootstrap-454 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-454 *,.factory-bootstrap-454 :after,.factory-bootstrap-454 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-454{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-454 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-454 button,.factory-bootstrap-454 input,.factory-bootstrap-454 select,.factory-bootstrap-454 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-454 img{vertical-align:middle}.factory-bootstrap-454 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-454 .img-rounded{border-radius:6px}.factory-bootstrap-454 .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-454 .img-circle{border-radius:50%}.factory-bootstrap-454 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-454 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-454 .h1,.factory-bootstrap-454 .h2,.factory-bootstrap-454 .h3,.factory-bootstrap-454 .h4,.factory-bootstrap-454 .h5,.factory-bootstrap-454 .h6,.factory-bootstrap-454 h1,.factory-bootstrap-454 h2,.factory-bootstrap-454 h3,.factory-bootstrap-454 h4,.factory-bootstrap-454 h5,.factory-bootstrap-454 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-454 .h1 .small,.factory-bootstrap-454 .h1 small,.factory-bootstrap-454 .h2 .small,.factory-bootstrap-454 .h2 small,.factory-bootstrap-454 .h3 .small,.factory-bootstrap-454 .h3 small,.factory-bootstrap-454 .h4 .small,.factory-bootstrap-454 .h4 small,.factory-bootstrap-454 .h5 .small,.factory-bootstrap-454 .h5 small,.factory-bootstrap-454 .h6 .small,.factory-bootstrap-454 .h6 small,.factory-bootstrap-454 h1 .small,.factory-bootstrap-454 h1 small,.factory-bootstrap-454 h2 .small,.factory-bootstrap-454 h2 small,.factory-bootstrap-454 h3 .small,.factory-bootstrap-454 h3 small,.factory-bootstrap-454 h4 .small,.factory-bootstrap-454 h4 small,.factory-bootstrap-454 h5 .small,.factory-bootstrap-454 h5 small,.factory-bootstrap-454 h6 .small,.factory-bootstrap-454 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-454 h1,.factory-bootstrap-454 h2,.factory-bootstrap-454 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-454 h1 .small,.factory-bootstrap-454 h1 small,.factory-bootstrap-454 h2 .small,.factory-bootstrap-454 h2 small,.factory-bootstrap-454 h3 .small,.factory-bootstrap-454 h3 small{font-size:65%}.factory-bootstrap-454 h4,.factory-bootstrap-454 h5,.factory-bootstrap-454 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-454 h4 .small,.factory-bootstrap-454 h4 small,.factory-bootstrap-454 h5 .small,.factory-bootstrap-454 h5 small,.factory-bootstrap-454 h6 .small,.factory-bootstrap-454 h6 small{font-size:75%}.factory-bootstrap-454 .h1,.factory-bootstrap-454 h1{font-size:36px}.factory-bootstrap-454 .h2,.factory-bootstrap-454 h2{font-size:30px}.factory-bootstrap-454 .h3,.factory-bootstrap-454 h3{font-size:24px}.factory-bootstrap-454 .h4,.factory-bootstrap-454 h4{font-size:18px}.factory-bootstrap-454 .h5,.factory-bootstrap-454 h5{font-size:14px}.factory-bootstrap-454 .h6,.factory-bootstrap-454 h6{font-size:12px}.factory-bootstrap-454 p{margin:0 0 10px}.factory-bootstrap-454 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-454 .small,.factory-bootstrap-454 small{font-size:85%}.factory-bootstrap-454 cite{font-style:normal}.factory-bootstrap-454 .text-muted{color:#999}.factory-bootstrap-454 .text-primary{color:#428bca}.factory-bootstrap-454 .text-primary:hover{color:#3071a9}.factory-bootstrap-454 .text-warning{color:#8a6d3b}.factory-bootstrap-454 .text-warning:hover{color:#66512c}.factory-bootstrap-454 .text-danger{color:#a94442}.factory-bootstrap-454 .text-danger:hover{color:#843534}.factory-bootstrap-454 .text-success{color:#3c763d}.factory-bootstrap-454 .text-success:hover{color:#2b542c}.factory-bootstrap-454 .text-info{color:#31708f}.factory-bootstrap-454 .text-info:hover{color:#245269}.factory-bootstrap-454 .text-left{text-align:left}.factory-bootstrap-454 .text-right{text-align:right}.factory-bootstrap-454 .text-center{text-align:center}.factory-bootstrap-454 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-454 ol,.factory-bootstrap-454 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-454 ol ol,.factory-bootstrap-454 ol ul,.factory-bootstrap-454 ul ol,.factory-bootstrap-454 ul ul{margin-bottom:0}.factory-bootstrap-454 .list-inline,.factory-bootstrap-454 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-454 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-454 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-454 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-454 dd,.factory-bootstrap-454 dt{line-height:1.428571429}.factory-bootstrap-454 dt{font-weight:700}.factory-bootstrap-454 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-454 abbr[data-original-title],.factory-bootstrap-454 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-454 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-454 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-454 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-454 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-454 blockquote .small,.factory-bootstrap-454 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-454 blockquote .small:before,.factory-bootstrap-454 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-454 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-454 blockquote.pull-right .small,.factory-bootstrap-454 blockquote.pull-right p,.factory-bootstrap-454 blockquote.pull-right small{text-align:right}.factory-bootstrap-454 blockquote.pull-right .small:before,.factory-bootstrap-454 blockquote.pull-right small:before{content:''}.factory-bootstrap-454 blockquote.pull-right .small:after,.factory-bootstrap-454 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-454 blockquote:after,.factory-bootstrap-454 blockquote:before{content:""}.factory-bootstrap-454 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-454 code,.factory-bootstrap-454 kbd,.factory-bootstrap-454 pre,.factory-bootstrap-454 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-454 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-454 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-454 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-454 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-454 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-454 .container:after,.factory-bootstrap-454 .container:before{display:table;content:" "}.factory-bootstrap-454 .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-454 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-454 .row:after,.factory-bootstrap-454 .row:before{display:table;content:" "}.factory-bootstrap-454 .row:after{clear:both}.factory-bootstrap-454 .col-lg-1,.factory-bootstrap-454 .col-lg-10,.factory-bootstrap-454 .col-lg-11,.factory-bootstrap-454 .col-lg-12,.factory-bootstrap-454 .col-lg-2,.factory-bootstrap-454 .col-lg-3,.factory-bootstrap-454 .col-lg-4,.factory-bootstrap-454 .col-lg-5,.factory-bootstrap-454 .col-lg-6,.factory-bootstrap-454 .col-lg-7,.factory-bootstrap-454 .col-lg-8,.factory-bootstrap-454 .col-lg-9,.factory-bootstrap-454 .col-md-1,.factory-bootstrap-454 .col-md-10,.factory-bootstrap-454 .col-md-11,.factory-bootstrap-454 .col-md-12,.factory-bootstrap-454 .col-md-2,.factory-bootstrap-454 .col-md-3,.factory-bootstrap-454 .col-md-4,.factory-bootstrap-454 .col-md-5,.factory-bootstrap-454 .col-md-6,.factory-bootstrap-454 .col-md-7,.factory-bootstrap-454 .col-md-8,.factory-bootstrap-454 .col-md-9,.factory-bootstrap-454 .col-sm-1,.factory-bootstrap-454 .col-sm-10,.factory-bootstrap-454 .col-sm-11,.factory-bootstrap-454 .col-sm-12,.factory-bootstrap-454 .col-sm-2,.factory-bootstrap-454 .col-sm-3,.factory-bootstrap-454 .col-sm-4,.factory-bootstrap-454 .col-sm-5,.factory-bootstrap-454 .col-sm-6,.factory-bootstrap-454 .col-sm-7,.factory-bootstrap-454 .col-sm-8,.factory-bootstrap-454 .col-sm-9,.factory-bootstrap-454 .col-xs-1,.factory-bootstrap-454 .col-xs-10,.factory-bootstrap-454 .col-xs-11,.factory-bootstrap-454 .col-xs-12,.factory-bootstrap-454 .col-xs-2,.factory-bootstrap-454 .col-xs-3,.factory-bootstrap-454 .col-xs-4,.factory-bootstrap-454 .col-xs-5,.factory-bootstrap-454 .col-xs-6,.factory-bootstrap-454 .col-xs-7,.factory-bootstrap-454 .col-xs-8,.factory-bootstrap-454 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-454 .col-xs-1,.factory-bootstrap-454 .col-xs-10,.factory-bootstrap-454 .col-xs-11,.factory-bootstrap-454 .col-xs-12,.factory-bootstrap-454 .col-xs-2,.factory-bootstrap-454 .col-xs-3,.factory-bootstrap-454 .col-xs-4,.factory-bootstrap-454 .col-xs-5,.factory-bootstrap-454 .col-xs-6,.factory-bootstrap-454 .col-xs-7,.factory-bootstrap-454 .col-xs-8,.factory-bootstrap-454 .col-xs-9{float:left}.factory-bootstrap-454 .col-xs-12{width:100%}.factory-bootstrap-454 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-454 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-454 .col-xs-9{width:75%}.factory-bootstrap-454 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-454 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-454 .col-xs-6{width:50%}.factory-bootstrap-454 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-454 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-454 .col-xs-3{width:25%}.factory-bootstrap-454 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-454 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-454 .col-xs-pull-12{right:100%}.factory-bootstrap-454 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-454 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-454 .col-xs-pull-9{right:75%}.factory-bootstrap-454 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-454 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-454 .col-xs-pull-6{right:50%}.factory-bootstrap-454 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-454 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-454 .col-xs-pull-3{right:25%}.factory-bootstrap-454 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-454 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-454 .col-xs-pull-0{right:0}.factory-bootstrap-454 .col-xs-push-12{left:100%}.factory-bootstrap-454 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-454 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-454 .col-xs-push-9{left:75%}.factory-bootstrap-454 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-454 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-454 .col-xs-push-6{left:50%}.factory-bootstrap-454 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-454 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-454 .col-xs-push-3{left:25%}.factory-bootstrap-454 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-454 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-454 .col-xs-push-0{left:0}.factory-bootstrap-454 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-454 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-454 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-454 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-454 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-454 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-454 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-454 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-454 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-454 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-454 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-454 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-454 .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-454 table{max-width:100%;background-color:transparent}.factory-bootstrap-454 th{text-align:left}.factory-bootstrap-454 .table{width:100%;margin-bottom:20px}.factory-bootstrap-454 .table>tbody>tr>td,.factory-bootstrap-454 .table>tbody>tr>th,.factory-bootstrap-454 .table>tfoot>tr>td,.factory-bootstrap-454 .table>tfoot>tr>th,.factory-bootstrap-454 .table>thead>tr>td,.factory-bootstrap-454 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-454 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-454 .table>caption+thead>tr:first-child>td,.factory-bootstrap-454 .table>caption+thead>tr:first-child>th,.factory-bootstrap-454 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-454 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-454 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-454 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-454 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-454 .table .table{background-color:#fff}.factory-bootstrap-454 .table-condensed>tbody>tr>td,.factory-bootstrap-454 .table-condensed>tbody>tr>th,.factory-bootstrap-454 .table-condensed>tfoot>tr>td,.factory-bootstrap-454 .table-condensed>tfoot>tr>th,.factory-bootstrap-454 .table-condensed>thead>tr>td,.factory-bootstrap-454 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-454 .table-bordered,.factory-bootstrap-454 .table-bordered>tbody>tr>td,.factory-bootstrap-454 .table-bordered>tbody>tr>th,.factory-bootstrap-454 .table-bordered>tfoot>tr>td,.factory-bootstrap-454 .table-bordered>tfoot>tr>th,.factory-bootstrap-454 .table-bordered>thead>tr>td,.factory-bootstrap-454 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-454 .table-bordered>thead>tr>td,.factory-bootstrap-454 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-454 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-454 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-454 .table-hover>tbody>tr:hover>td,.factory-bootstrap-454 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-454 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-454 table td[class*=col-],.factory-bootstrap-454 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-454 .table>tbody>.active>td,.factory-bootstrap-454 .table>tbody>.active>th,.factory-bootstrap-454 .table>tbody>tr>.active,.factory-bootstrap-454 .table>tfoot>.active>td,.factory-bootstrap-454 .table>tfoot>.active>th,.factory-bootstrap-454 .table>tfoot>tr>.active,.factory-bootstrap-454 .table>thead>.active>td,.factory-bootstrap-454 .table>thead>.active>th,.factory-bootstrap-454 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-454 .table-hover>tbody>.active:hover>td,.factory-bootstrap-454 .table-hover>tbody>.active:hover>th,.factory-bootstrap-454 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-454 .table>tbody>.success>td,.factory-bootstrap-454 .table>tbody>.success>th,.factory-bootstrap-454 .table>tbody>tr>.success,.factory-bootstrap-454 .table>tfoot>.success>td,.factory-bootstrap-454 .table>tfoot>.success>th,.factory-bootstrap-454 .table>tfoot>tr>.success,.factory-bootstrap-454 .table>thead>.success>td,.factory-bootstrap-454 .table>thead>.success>th,.factory-bootstrap-454 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-454 .table-hover>tbody>.success:hover>td,.factory-bootstrap-454 .table-hover>tbody>.success:hover>th,.factory-bootstrap-454 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-454 .table>tbody>.danger>td,.factory-bootstrap-454 .table>tbody>.danger>th,.factory-bootstrap-454 .table>tbody>tr>.danger,.factory-bootstrap-454 .table>tfoot>.danger>td,.factory-bootstrap-454 .table>tfoot>.danger>th,.factory-bootstrap-454 .table>tfoot>tr>.danger,.factory-bootstrap-454 .table>thead>.danger>td,.factory-bootstrap-454 .table>thead>.danger>th,.factory-bootstrap-454 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-454 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-454 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-454 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-454 .table>tbody>.warning>td,.factory-bootstrap-454 .table>tbody>.warning>th,.factory-bootstrap-454 .table>tbody>tr>.warning,.factory-bootstrap-454 .table>tfoot>.warning>td,.factory-bootstrap-454 .table>tfoot>.warning>th,.factory-bootstrap-454 .table>tfoot>tr>.warning,.factory-bootstrap-454 .table>thead>.warning>td,.factory-bootstrap-454 .table>thead>.warning>th,.factory-bootstrap-454 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-454 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-454 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-454 .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-454 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-454 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-454 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-454 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-454 input[type=checkbox],.factory-bootstrap-454 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-454 input[type=file]{display:block}.factory-bootstrap-454 select[multiple],.factory-bootstrap-454 select[size]{height:auto}.factory-bootstrap-454 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-454 input[type=checkbox]:focus,.factory-bootstrap-454 input[type=file]:focus,.factory-bootstrap-454 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-454 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-454 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-454 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-454 .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-454 .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-454 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-454 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-454 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-454 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-454 .form-control[disabled],.factory-bootstrap-454 .form-control[readonly],.factory-bootstrap-454 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-454 textarea.form-control{height:auto}.factory-bootstrap-454 .form-group{margin-bottom:15px}.factory-bootstrap-454 .checkbox,.factory-bootstrap-454 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-454 .checkbox label,.factory-bootstrap-454 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-454 .checkbox input[type=checkbox],.factory-bootstrap-454 .checkbox-inline input[type=checkbox],.factory-bootstrap-454 .radio input[type=radio],.factory-bootstrap-454 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-454 .checkbox+.checkbox,.factory-bootstrap-454 .radio+.radio{margin-top:-5px}.factory-bootstrap-454 .checkbox-inline,.factory-bootstrap-454 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-454 .checkbox-inline+.checkbox-inline,.factory-bootstrap-454 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-454 .checkbox-inline[disabled],.factory-bootstrap-454 .checkbox[disabled],.factory-bootstrap-454 .radio-inline[disabled],.factory-bootstrap-454 .radio[disabled],.factory-bootstrap-454 fieldset[disabled] .checkbox,.factory-bootstrap-454 fieldset[disabled] .checkbox-inline,.factory-bootstrap-454 fieldset[disabled] .radio,.factory-bootstrap-454 fieldset[disabled] .radio-inline,.factory-bootstrap-454 fieldset[disabled] input[type=checkbox],.factory-bootstrap-454 fieldset[disabled] input[type=radio],.factory-bootstrap-454 input[type=checkbox][disabled],.factory-bootstrap-454 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-454 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-454 textarea.input-sm{height:auto}.factory-bootstrap-454 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-454 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-454 textarea.input-lg{height:auto}.factory-bootstrap-454 .has-warning .checkbox,.factory-bootstrap-454 .has-warning .checkbox-inline,.factory-bootstrap-454 .has-warning .control-label,.factory-bootstrap-454 .has-warning .help-block,.factory-bootstrap-454 .has-warning .radio,.factory-bootstrap-454 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-454 .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-454 .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-454 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-454 .has-error .checkbox,.factory-bootstrap-454 .has-error .checkbox-inline,.factory-bootstrap-454 .has-error .control-label,.factory-bootstrap-454 .has-error .help-block,.factory-bootstrap-454 .has-error .radio,.factory-bootstrap-454 .has-error .radio-inline{color:#a94442}.factory-bootstrap-454 .controls{display:block}.factory-bootstrap-454 .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-454 .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-454 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-454 .has-success .checkbox,.factory-bootstrap-454 .has-success .checkbox-inline,.factory-bootstrap-454 .has-success .control-label,.factory-bootstrap-454 .has-success .help-block,.factory-bootstrap-454 .has-success .radio,.factory-bootstrap-454 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-454 .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-454 .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-454 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-454 .form-control-static{margin-bottom:0}.factory-bootstrap-454 .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-454 .form-horizontal .checkbox,.factory-bootstrap-454 .form-horizontal .checkbox-inline,.factory-bootstrap-454 .form-horizontal .control-label,.factory-bootstrap-454 .form-horizontal .radio,.factory-bootstrap-454 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-454 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-454 .form-horizontal .checkbox,.factory-bootstrap-454 .form-horizontal .radio{min-height:27px}.factory-bootstrap-454 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-454 .form-horizontal .form-group:after,.factory-bootstrap-454 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-454 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-454 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-454 .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-454 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-454 .btn{text-decoration:none}.factory-bootstrap-454 .btn:focus,.factory-bootstrap-454 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-454 .btn.disabled,.factory-bootstrap-454 .btn[disabled],.factory-bootstrap-454 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-454 .btn-default.active,.factory-bootstrap-454 .btn-default:active,.factory-bootstrap-454 .btn-default:focus,.factory-bootstrap-454 .btn-default:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-454 .btn-default.active,.factory-bootstrap-454 .btn-default:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-454 .btn-default.disabled,.factory-bootstrap-454 .btn-default.disabled.active,.factory-bootstrap-454 .btn-default.disabled:active,.factory-bootstrap-454 .btn-default.disabled:focus,.factory-bootstrap-454 .btn-default.disabled:hover,.factory-bootstrap-454 .btn-default[disabled],.factory-bootstrap-454 .btn-default[disabled].active,.factory-bootstrap-454 .btn-default[disabled]:active,.factory-bootstrap-454 .btn-default[disabled]:focus,.factory-bootstrap-454 .btn-default[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-default,.factory-bootstrap-454 fieldset[disabled] .btn-default.active,.factory-bootstrap-454 fieldset[disabled] .btn-default:active,.factory-bootstrap-454 fieldset[disabled] .btn-default:focus,.factory-bootstrap-454 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-454 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-454 .btn-primary.active,.factory-bootstrap-454 .btn-primary:active,.factory-bootstrap-454 .btn-primary:focus,.factory-bootstrap-454 .btn-primary:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-454 .btn-primary.active,.factory-bootstrap-454 .btn-primary:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-454 .btn-primary.disabled,.factory-bootstrap-454 .btn-primary.disabled.active,.factory-bootstrap-454 .btn-primary.disabled:active,.factory-bootstrap-454 .btn-primary.disabled:focus,.factory-bootstrap-454 .btn-primary.disabled:hover,.factory-bootstrap-454 .btn-primary[disabled],.factory-bootstrap-454 .btn-primary[disabled].active,.factory-bootstrap-454 .btn-primary[disabled]:active,.factory-bootstrap-454 .btn-primary[disabled]:focus,.factory-bootstrap-454 .btn-primary[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-primary,.factory-bootstrap-454 fieldset[disabled] .btn-primary.active,.factory-bootstrap-454 fieldset[disabled] .btn-primary:active,.factory-bootstrap-454 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-454 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-454 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-454 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-454 .btn-warning.active,.factory-bootstrap-454 .btn-warning:active,.factory-bootstrap-454 .btn-warning:focus,.factory-bootstrap-454 .btn-warning:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-454 .btn-warning.active,.factory-bootstrap-454 .btn-warning:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-454 .btn-warning.disabled,.factory-bootstrap-454 .btn-warning.disabled.active,.factory-bootstrap-454 .btn-warning.disabled:active,.factory-bootstrap-454 .btn-warning.disabled:focus,.factory-bootstrap-454 .btn-warning.disabled:hover,.factory-bootstrap-454 .btn-warning[disabled],.factory-bootstrap-454 .btn-warning[disabled].active,.factory-bootstrap-454 .btn-warning[disabled]:active,.factory-bootstrap-454 .btn-warning[disabled]:focus,.factory-bootstrap-454 .btn-warning[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-warning,.factory-bootstrap-454 fieldset[disabled] .btn-warning.active,.factory-bootstrap-454 fieldset[disabled] .btn-warning:active,.factory-bootstrap-454 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-454 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-454 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-454 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-454 .btn-success.active,.factory-bootstrap-454 .btn-success:active,.factory-bootstrap-454 .btn-success:focus,.factory-bootstrap-454 .btn-success:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-454 .btn-success.active,.factory-bootstrap-454 .btn-success:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-454 .btn-success.disabled,.factory-bootstrap-454 .btn-success.disabled.active,.factory-bootstrap-454 .btn-success.disabled:active,.factory-bootstrap-454 .btn-success.disabled:focus,.factory-bootstrap-454 .btn-success.disabled:hover,.factory-bootstrap-454 .btn-success[disabled],.factory-bootstrap-454 .btn-success[disabled].active,.factory-bootstrap-454 .btn-success[disabled]:active,.factory-bootstrap-454 .btn-success[disabled]:focus,.factory-bootstrap-454 .btn-success[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-success,.factory-bootstrap-454 fieldset[disabled] .btn-success.active,.factory-bootstrap-454 fieldset[disabled] .btn-success:active,.factory-bootstrap-454 fieldset[disabled] .btn-success:focus,.factory-bootstrap-454 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-454 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-454 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-454 .btn-info.active,.factory-bootstrap-454 .btn-info:active,.factory-bootstrap-454 .btn-info:focus,.factory-bootstrap-454 .btn-info:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-454 .btn-info.active,.factory-bootstrap-454 .btn-info:active,.factory-bootstrap-454 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-454 .btn-info.disabled,.factory-bootstrap-454 .btn-info.disabled.active,.factory-bootstrap-454 .btn-info.disabled:active,.factory-bootstrap-454 .btn-info.disabled:focus,.factory-bootstrap-454 .btn-info.disabled:hover,.factory-bootstrap-454 .btn-info[disabled],.factory-bootstrap-454 .btn-info[disabled].active,.factory-bootstrap-454 .btn-info[disabled]:active,.factory-bootstrap-454 .btn-info[disabled]:focus,.factory-bootstrap-454 .btn-info[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-info,.factory-bootstrap-454 fieldset[disabled] .btn-info.active,.factory-bootstrap-454 fieldset[disabled] .btn-info:active,.factory-bootstrap-454 fieldset[disabled] .btn-info:focus,.factory-bootstrap-454 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-454 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-454 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-454 .btn-link,.factory-bootstrap-454 .btn-link:active,.factory-bootstrap-454 .btn-link[disabled],.factory-bootstrap-454 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-454 .btn-link,.factory-bootstrap-454 .btn-link:active,.factory-bootstrap-454 .btn-link:focus,.factory-bootstrap-454 .btn-link:hover{border-color:transparent}.factory-bootstrap-454 .btn-link:focus,.factory-bootstrap-454 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-454 .btn-link[disabled]:focus,.factory-bootstrap-454 .btn-link[disabled]:hover,.factory-bootstrap-454 fieldset[disabled] .btn-link:focus,.factory-bootstrap-454 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-454 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-454 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-454 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-454 input[type=button].btn-block,.factory-bootstrap-454 input[type=reset].btn-block,.factory-bootstrap-454 input[type=submit].btn-block{width:100%}.factory-bootstrap-454 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-454 .fade.in{opacity:1}.factory-bootstrap-454 .collapse{display:none}.factory-bootstrap-454 .collapse.in{display:block}.factory-bootstrap-454 .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-454 .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-454 .glyphicon:empty{width:1em}.factory-bootstrap-454 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-454 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-454 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-454 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-454 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-454 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-454 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-454 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-454 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-454 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-454 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-454 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-454 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-454 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-454 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-454 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-454 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-454 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-454 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-454 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-454 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-454 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-454 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-454 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-454 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-454 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-454 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-454 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-454 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-454 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-454 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-454 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-454 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-454 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-454 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-454 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-454 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-454 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-454 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-454 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-454 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-454 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-454 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-454 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-454 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-454 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-454 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-454 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-454 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-454 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-454 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-454 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-454 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-454 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-454 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-454 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-454 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-454 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-454 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-454 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-454 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-454 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-454 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-454 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-454 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-454 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-454 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-454 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-454 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-454 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-454 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-454 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-454 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-454 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-454 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-454 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-454 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-454 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-454 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-454 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-454 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-454 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-454 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-454 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-454 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-454 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-454 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-454 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-454 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-454 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-454 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-454 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-454 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-454 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-454 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-454 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-454 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-454 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-454 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-454 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-454 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-454 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-454 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-454 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-454 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-454 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-454 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-454 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-454 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-454 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-454 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-454 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-454 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-454 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-454 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-454 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-454 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-454 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-454 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-454 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-454 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-454 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-454 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-454 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-454 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-454 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-454 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-454 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-454 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-454 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-454 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-454 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-454 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-454 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-454 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-454 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-454 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-454 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-454 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-454 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-454 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-454 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-454 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-454 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-454 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-454 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-454 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-454 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-454 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-454 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-454 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-454 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-454 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-454 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-454 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-454 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-454 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-454 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-454 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-454 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-454 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-454 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-454 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-454 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-454 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-454 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-454 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-454 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-454 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-454 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-454 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-454 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-454 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-454 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-454 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-454 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-454 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-454 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-454 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-454 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-454 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-454 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-454 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-454 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-454 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-454 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-454 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-454 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-454 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-454 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-454 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-454 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-454 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-454 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-454 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-454 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-454 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-454 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-454 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-454 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-454 .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-454 .dropdown{position:relative}.factory-bootstrap-454 .dropdown-toggle:focus{outline:0}.factory-bootstrap-454 .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-454 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-454 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-454 .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-454 .dropdown-menu>li>a:focus,.factory-bootstrap-454 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-454 .dropdown-menu>.active>a,.factory-bootstrap-454 .dropdown-menu>.active>a:focus,.factory-bootstrap-454 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-454 .dropdown-menu>.disabled>a,.factory-bootstrap-454 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-454 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-454 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-454 .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-454 .open>.dropdown-menu{display:block}.factory-bootstrap-454 .open>a{outline:0}.factory-bootstrap-454 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-454 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-454 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-454 .dropup .caret,.factory-bootstrap-454 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-454 .dropup .dropdown-menu,.factory-bootstrap-454 .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-454 .btn-group,.factory-bootstrap-454 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-454 .btn-group-vertical>.btn,.factory-bootstrap-454 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-454 .btn-group-vertical>.btn.active,.factory-bootstrap-454 .btn-group-vertical>.btn:active,.factory-bootstrap-454 .btn-group-vertical>.btn:focus,.factory-bootstrap-454 .btn-group-vertical>.btn:hover,.factory-bootstrap-454 .btn-group>.btn.active,.factory-bootstrap-454 .btn-group>.btn:active,.factory-bootstrap-454 .btn-group>.btn:focus,.factory-bootstrap-454 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-454 .btn-group-vertical>.btn:focus,.factory-bootstrap-454 .btn-group>.btn:focus{outline:0}.factory-bootstrap-454 .btn-group .btn+.btn,.factory-bootstrap-454 .btn-group .btn+.btn-group,.factory-bootstrap-454 .btn-group .btn-group+.btn,.factory-bootstrap-454 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-454 .btn-toolbar:after,.factory-bootstrap-454 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-454 .btn-toolbar:after{clear:both}.factory-bootstrap-454 .btn-toolbar .btn-group{float:left}.factory-bootstrap-454 .btn-toolbar>.btn+.btn,.factory-bootstrap-454 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-454 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-454 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-454 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-454 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-454 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-454 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-454 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .btn-group>.btn-group{float:left}.factory-bootstrap-454 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-454 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-454 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-454 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .btn-group .dropdown-toggle:active,.factory-bootstrap-454 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-454 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-454 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-454 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-454 .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-454 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-454 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-454 .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-454 .btn .caret{margin-left:0}.factory-bootstrap-454 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-454 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-454 .btn-group-vertical>.btn,.factory-bootstrap-454 .btn-group-vertical>.btn-group,.factory-bootstrap-454 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-454 .btn-group-vertical>.btn-group:after,.factory-bootstrap-454 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-454 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-454 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-454 .btn-group-vertical>.btn+.btn,.factory-bootstrap-454 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-454 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-454 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-454 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-454 .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-454 .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-454 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-454 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-454 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-454 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-454 .btn-group-justified>.btn,.factory-bootstrap-454 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-454 .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-454 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-454 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-454 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-454 .input-group-lg>.form-control,.factory-bootstrap-454 .input-group-lg>.input-group-addon,.factory-bootstrap-454 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-454 select.input-group-lg>.form-control,.factory-bootstrap-454 select.input-group-lg>.input-group-addon,.factory-bootstrap-454 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-454 textarea.input-group-lg>.form-control,.factory-bootstrap-454 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-454 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-454 .input-group-sm>.form-control,.factory-bootstrap-454 .input-group-sm>.input-group-addon,.factory-bootstrap-454 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-454 select.input-group-sm>.form-control,.factory-bootstrap-454 select.input-group-sm>.input-group-addon,.factory-bootstrap-454 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-454 textarea.input-group-sm>.form-control,.factory-bootstrap-454 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-454 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-454 .input-group .form-control,.factory-bootstrap-454 .input-group-addon,.factory-bootstrap-454 .input-group-btn{display:table-cell}.factory-bootstrap-454 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-454 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-454 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-454 .input-group-addon,.factory-bootstrap-454 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-454 .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-454 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-454 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-454 .input-group-addon input[type=checkbox],.factory-bootstrap-454 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-454 .input-group .form-control:first-child,.factory-bootstrap-454 .input-group-addon:first-child,.factory-bootstrap-454 .input-group-btn:first-child>.btn,.factory-bootstrap-454 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-454 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-454 .input-group-addon:first-child{border-right:0}.factory-bootstrap-454 .input-group .form-control:last-child,.factory-bootstrap-454 .input-group-addon:last-child,.factory-bootstrap-454 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-454 .input-group-btn:last-child>.btn,.factory-bootstrap-454 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .input-group-addon:last-child{border-left:0}.factory-bootstrap-454 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-454 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-454 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-454 .input-group-btn>.btn{position:relative}.factory-bootstrap-454 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-454 .input-group-btn>.btn:active,.factory-bootstrap-454 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-454 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-454 .nav:after,.factory-bootstrap-454 .nav:before{display:table;content:" "}.factory-bootstrap-454 .nav:after{clear:both}.factory-bootstrap-454 .nav>li{position:relative;display:block}.factory-bootstrap-454 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-454 .nav>li>a:focus,.factory-bootstrap-454 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-454 .nav>li.disabled>a{color:#999}.factory-bootstrap-454 .nav>li.disabled>a:focus,.factory-bootstrap-454 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-454 .nav .open>a,.factory-bootstrap-454 .nav .open>a:focus,.factory-bootstrap-454 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-454 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-454 .nav>li>a>img{max-width:none}.factory-bootstrap-454 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-454 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-454 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-454 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-454 .nav-tabs>li.active>a,.factory-bootstrap-454 .nav-tabs>li.active>a:focus,.factory-bootstrap-454 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-454 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-454 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-454 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-454 .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-454 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-454 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-454 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-454 .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-454 .nav-pills>li{float:left}.factory-bootstrap-454 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-454 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-454 .nav-pills>li.active>a,.factory-bootstrap-454 .nav-pills>li.active>a:focus,.factory-bootstrap-454 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-454 .nav-stacked>li{float:none}.factory-bootstrap-454 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-454 .nav-justified{width:100%}.factory-bootstrap-454 .nav-justified>li{float:none}.factory-bootstrap-454 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-454 .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-454 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-454 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-454 .nav-tabs-justified>.active>a,.factory-bootstrap-454 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-454 .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-454 .tab-content>.tab-pane{display:none}.factory-bootstrap-454 .tab-content>.active{display:block}.factory-bootstrap-454 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-454 .navbar:after,.factory-bootstrap-454 .navbar:before{display:table;content:" "}.factory-bootstrap-454 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-454 .navbar-header:after,.factory-bootstrap-454 .navbar-header:before{display:table;content:" "}.factory-bootstrap-454 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-454 .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-454 .navbar-collapse:after,.factory-bootstrap-454 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-454 .navbar-collapse:after{clear:both}.factory-bootstrap-454 .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-454 .container>.navbar-collapse,.factory-bootstrap-454 .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-454 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-454 .navbar-fixed-bottom,.factory-bootstrap-454 .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-454 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-454 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-454 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-454 .navbar-brand:focus,.factory-bootstrap-454 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-454 .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-454 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-454 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-454 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-454 .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-454 .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-454 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-454 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-454 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-454 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-454 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-454 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-454 .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-454 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-454 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-454 .navbar-default .navbar-brand:focus,.factory-bootstrap-454 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-454 .navbar-default .navbar-nav>li>a,.factory-bootstrap-454 .navbar-default .navbar-text{color:#777}.factory-bootstrap-454 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-454 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-454 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-454 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-454 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-454 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-454 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-454 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-454 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-454 .navbar-default .navbar-toggle:focus,.factory-bootstrap-454 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-454 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-454 .navbar-default .navbar-collapse,.factory-bootstrap-454 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-454 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-454 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-454 .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-454 .navbar-default .navbar-link{color:#777}.factory-bootstrap-454 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-454 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-454 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-454 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-454 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-454 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-454 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-454 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-454 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-454 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-454 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-454 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-454 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-454 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-454 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-454 .navbar-inverse .navbar-collapse,.factory-bootstrap-454 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-454 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-454 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-454 .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-454 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-454 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-454 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-454 .breadcrumb>li{display:inline-block}.factory-bootstrap-454 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-454 .breadcrumb>.active{color:#999}.factory-bootstrap-454 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-454 .pagination>li{display:inline}.factory-bootstrap-454 .pagination>li>a,.factory-bootstrap-454 .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-454 .pagination>li:first-child>a,.factory-bootstrap-454 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-454 .pagination>li:last-child>a,.factory-bootstrap-454 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-454 .pagination>li>a:focus,.factory-bootstrap-454 .pagination>li>a:hover,.factory-bootstrap-454 .pagination>li>span:focus,.factory-bootstrap-454 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-454 .pagination>.active>a,.factory-bootstrap-454 .pagination>.active>a:focus,.factory-bootstrap-454 .pagination>.active>a:hover,.factory-bootstrap-454 .pagination>.active>span,.factory-bootstrap-454 .pagination>.active>span:focus,.factory-bootstrap-454 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-454 .pagination>.disabled>a,.factory-bootstrap-454 .pagination>.disabled>a:focus,.factory-bootstrap-454 .pagination>.disabled>a:hover,.factory-bootstrap-454 .pagination>.disabled>span,.factory-bootstrap-454 .pagination>.disabled>span:focus,.factory-bootstrap-454 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-454 .pagination-lg>li>a,.factory-bootstrap-454 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-454 .pagination-lg>li:first-child>a,.factory-bootstrap-454 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-454 .pagination-lg>li:last-child>a,.factory-bootstrap-454 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-454 .pagination-sm>li>a,.factory-bootstrap-454 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-454 .pagination-sm>li:first-child>a,.factory-bootstrap-454 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-454 .pagination-sm>li:last-child>a,.factory-bootstrap-454 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-454 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-454 .pager:after,.factory-bootstrap-454 .pager:before{display:table;content:" "}.factory-bootstrap-454 .pager:after{clear:both}.factory-bootstrap-454 .pager li{display:inline}.factory-bootstrap-454 .pager li>a,.factory-bootstrap-454 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-454 .pager li>a:focus,.factory-bootstrap-454 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-454 .pager .next>a,.factory-bootstrap-454 .pager .next>span{float:right}.factory-bootstrap-454 .pager .previous>a,.factory-bootstrap-454 .pager .previous>span{float:left}.factory-bootstrap-454 .pager .disabled>a,.factory-bootstrap-454 .pager .disabled>a:focus,.factory-bootstrap-454 .pager .disabled>a:hover,.factory-bootstrap-454 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-454 .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-454 .label[href]:focus,.factory-bootstrap-454 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-454 .label:empty{display:none}.factory-bootstrap-454 .btn .label{position:relative;top:-1px}.factory-bootstrap-454 .label-default{background-color:#999}.factory-bootstrap-454 .label-default[href]:focus,.factory-bootstrap-454 .label-default[href]:hover{background-color:gray}.factory-bootstrap-454 .label-primary{background-color:#428bca}.factory-bootstrap-454 .label-primary[href]:focus,.factory-bootstrap-454 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-454 .label-success{background-color:#5cb85c}.factory-bootstrap-454 .label-success[href]:focus,.factory-bootstrap-454 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-454 .label-info{background-color:#5bc0de}.factory-bootstrap-454 .label-info[href]:focus,.factory-bootstrap-454 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-454 .label-warning{background-color:#f0ad4e}.factory-bootstrap-454 .label-warning[href]:focus,.factory-bootstrap-454 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-454 .label-danger{background-color:#d9534f}.factory-bootstrap-454 .label-danger[href]:focus,.factory-bootstrap-454 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-454 .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-454 .badge:empty{display:none}.factory-bootstrap-454 .btn .badge{position:relative;top:-1px}.factory-bootstrap-454 a.badge:focus,.factory-bootstrap-454 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-454 .nav-pills>.active>a>.badge,.factory-bootstrap-454 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-454 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-454 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-454 .jumbotron .h1,.factory-bootstrap-454 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-454 .jumbotron p{line-height:1.4}.factory-bootstrap-454 .container .jumbotron{border-radius:6px}.factory-bootstrap-454 .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-454 .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-454 .thumbnail a>img,.factory-bootstrap-454 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-454 a.thumbnail.active,.factory-bootstrap-454 a.thumbnail:focus,.factory-bootstrap-454 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-454 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-454 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-454 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-454 .alert .alert-link{font-weight:700}.factory-bootstrap-454 .alert>p,.factory-bootstrap-454 .alert>ul{margin-bottom:0}.factory-bootstrap-454 .alert>p+p{margin-top:5px}.factory-bootstrap-454 .alert-dismissable{padding-right:35px}.factory-bootstrap-454 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-454 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-454 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-454 .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-454 .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-454 .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-454 .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-454 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-454 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-454 .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-454 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-454 .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-454 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-454 .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-454 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-454 .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-454 .media,.factory-bootstrap-454 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-454 .media,.factory-bootstrap-454 .media .media{margin-top:15px}.factory-bootstrap-454 .media:first-child{margin-top:0}.factory-bootstrap-454 .media-object{display:block}.factory-bootstrap-454 .media-heading{margin:0 0 5px}.factory-bootstrap-454 .media>.pull-left{margin-right:10px}.factory-bootstrap-454 .media>.pull-right{margin-left:10px}.factory-bootstrap-454 .media-list{padding-left:0;list-style:none}.factory-bootstrap-454 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-454 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-454 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-454 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-454 .list-group-item>.badge{float:right}.factory-bootstrap-454 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-454 a.list-group-item{color:#555}.factory-bootstrap-454 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-454 a.list-group-item:focus,.factory-bootstrap-454 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-454 a.list-group-item.active,.factory-bootstrap-454 a.list-group-item.active:focus,.factory-bootstrap-454 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-454 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-454 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-454 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-454 a.list-group-item.active .list-group-item-text,.factory-bootstrap-454 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-454 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-454 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-454 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-454 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-454 .panel-body{padding:15px}.factory-bootstrap-454 .panel-body:after,.factory-bootstrap-454 .panel-body:before{display:table;content:" "}.factory-bootstrap-454 .panel-body:after{clear:both}.factory-bootstrap-454 .panel>.list-group{margin-bottom:0}.factory-bootstrap-454 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-454 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-454 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-454 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-454 .panel>.table,.factory-bootstrap-454 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-454 .panel>.panel-body+.table,.factory-bootstrap-454 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-454 .panel>.table>tbody:first-child td,.factory-bootstrap-454 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-454 .panel>.table-bordered,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-454 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-454 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-454 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-454 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-454 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-454 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-454 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-454 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-454 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-454 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-454 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-454 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-454 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-454 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-454 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-454 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-454 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-454 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-454 .panel-title>a{color:inherit}.factory-bootstrap-454 .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-454 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-454 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-454 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-454 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-454 .panel-group .panel-footer{border-top:0}.factory-bootstrap-454 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-454 .panel-default{border-color:#ddd}.factory-bootstrap-454 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-454 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-454 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-454 .panel-primary{border-color:#428bca}.factory-bootstrap-454 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-454 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-454 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-454 .panel-success{border-color:#d6e9c6}.factory-bootstrap-454 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-454 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-454 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-454 .panel-warning{border-color:#faebcc}.factory-bootstrap-454 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-454 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-454 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-454 .panel-danger{border-color:#ebccd1}.factory-bootstrap-454 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-454 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-454 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-454 .panel-info{border-color:#bce8f1}.factory-bootstrap-454 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-454 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-454 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-454 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-454 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-454 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-454 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-454 .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-454 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-454 .close:focus,.factory-bootstrap-454 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-454 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-454 .modal-open{overflow:hidden}.factory-bootstrap-454 .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-454 .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-454 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-454 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-454 .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-454 .modal-backdrop,.factory-bootstrap-454-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-454 .modal-backdrop.fade,.factory-bootstrap-454-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-454 .modal-backdrop.in,.factory-bootstrap-454-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-454 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-454 .modal-header .close{margin-top:-2px}.factory-bootstrap-454 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-454 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-454 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-454 .modal-footer:after,.factory-bootstrap-454 .modal-footer:before{display:table;content:" "}.factory-bootstrap-454 .modal-footer:after{clear:both}.factory-bootstrap-454 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-454 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-454 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-454 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-454 .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-454 .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-454 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-454 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-454 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-454 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-454 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-454 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-454 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-454 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-454 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-454 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-454 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-454 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-454 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-454 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-454 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-454 .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-454 .popover.top{margin-top:-10px}.factory-bootstrap-454 .popover.right{margin-left:10px}.factory-bootstrap-454 .popover.bottom{margin-top:10px}.factory-bootstrap-454 .popover.left{margin-left:-10px}.factory-bootstrap-454 .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-454 .popover-content{padding:9px 14px}.factory-bootstrap-454 .popover .arrow,.factory-bootstrap-454 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-454 .popover .arrow{border-width:11px}.factory-bootstrap-454 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-454 .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-454 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-454 .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-454 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-454 .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-454 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-454 .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-454 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-454 .carousel{position:relative}.factory-bootstrap-454 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-454 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-454 .carousel-inner>.item>a>img,.factory-bootstrap-454 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-454 .carousel-inner>.active,.factory-bootstrap-454 .carousel-inner>.next,.factory-bootstrap-454 .carousel-inner>.prev{display:block}.factory-bootstrap-454 .carousel-inner>.active{left:0}.factory-bootstrap-454 .carousel-inner>.next,.factory-bootstrap-454 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-454 .carousel-inner>.next{left:100%}.factory-bootstrap-454 .carousel-inner>.prev{left:-100%}.factory-bootstrap-454 .carousel-inner>.next.left,.factory-bootstrap-454 .carousel-inner>.prev.right{left:0}.factory-bootstrap-454 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-454 .carousel-inner>.active.right{left:100%}.factory-bootstrap-454 .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-454 .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-454 .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-454 .carousel-control:focus,.factory-bootstrap-454 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-454 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-454 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-454 .carousel-control .icon-next,.factory-bootstrap-454 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-454 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-454 .carousel-control .icon-prev{left:50%}.factory-bootstrap-454 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-454 .carousel-control .icon-next{right:50%}.factory-bootstrap-454 .carousel-control .icon-next,.factory-bootstrap-454 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-454 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-454 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-454 .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-454 .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-454 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-454 .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-454 .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-454 .clearfix:after,.factory-bootstrap-454 .clearfix:before{display:table;content:" "}.factory-bootstrap-454 .clearfix:after{clear:both}.factory-bootstrap-454 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-454 .pull-right{float:right!important}.factory-bootstrap-454 .pull-left{float:left!important}.factory-bootstrap-454 .hide{display:none!important}.factory-bootstrap-454 .show{display:block!important}.factory-bootstrap-454 .invisible{visibility:hidden}.factory-bootstrap-454 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-454 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-454 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-454 .visible-lg,.factory-bootstrap-454 .visible-md,.factory-bootstrap-454 .visible-sm,.factory-bootstrap-454 .visible-xs,.factory-bootstrap-454 td.visible-lg,.factory-bootstrap-454 td.visible-md,.factory-bootstrap-454 td.visible-sm,.factory-bootstrap-454 td.visible-xs,.factory-bootstrap-454 th.visible-lg,.factory-bootstrap-454 th.visible-md,.factory-bootstrap-454 th.visible-sm,.factory-bootstrap-454 th.visible-xs,.factory-bootstrap-454 tr.visible-lg,.factory-bootstrap-454 tr.visible-md,.factory-bootstrap-454 tr.visible-sm,.factory-bootstrap-454 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-454 .hidden-xs{display:block!important}.factory-bootstrap-454 table.hidden-xs{display:table}.factory-bootstrap-454 tr.hidden-xs{display:table-row!important}.factory-bootstrap-454 td.hidden-xs,.factory-bootstrap-454 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-454 .hidden-sm{display:block!important}.factory-bootstrap-454 table.hidden-sm{display:table}.factory-bootstrap-454 tr.hidden-sm{display:table-row!important}.factory-bootstrap-454 td.hidden-sm,.factory-bootstrap-454 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-454 .hidden-md{display:block!important}.factory-bootstrap-454 table.hidden-md{display:table}.factory-bootstrap-454 tr.hidden-md{display:table-row!important}.factory-bootstrap-454 td.hidden-md,.factory-bootstrap-454 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-454 .hidden-lg{display:block!important}.factory-bootstrap-454 table.hidden-lg{display:table}.factory-bootstrap-454 tr.hidden-lg{display:table-row!important}.factory-bootstrap-454 td.hidden-lg,.factory-bootstrap-454 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-454 .hidden-lg.hidden-xs,.factory-bootstrap-454 td.hidden-lg.hidden-xs,.factory-bootstrap-454 th.hidden-lg.hidden-xs,.factory-bootstrap-454 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-454 .hidden-lg.hidden-sm,.factory-bootstrap-454 td.hidden-lg.hidden-sm,.factory-bootstrap-454 th.hidden-lg.hidden-sm,.factory-bootstrap-454 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-454 .hidden-lg.hidden-md,.factory-bootstrap-454 td.hidden-lg.hidden-md,.factory-bootstrap-454 th.hidden-lg.hidden-md,.factory-bootstrap-454 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-454 .hidden-lg,.factory-bootstrap-454 td.hidden-lg,.factory-bootstrap-454 th.hidden-lg,.factory-bootstrap-454 tr.hidden-lg{display:none!important}}.factory-bootstrap-454 .visible-print,.factory-bootstrap-454 td.visible-print,.factory-bootstrap-454 th.visible-print,.factory-bootstrap-454 tr.visible-print{display:none!important}@media print{.factory-bootstrap-454 .visible-print{display:block!important}.factory-bootstrap-454 table.visible-print{display:table}.factory-bootstrap-454 tr.visible-print{display:table-row!important}.factory-bootstrap-454 td.visible-print,.factory-bootstrap-454 th.visible-print{display:table-cell!important}.factory-bootstrap-454 .hidden-print,.factory-bootstrap-454 td.hidden-print,.factory-bootstrap-454 th.hidden-print,.factory-bootstrap-454 tr.hidden-print{display:none!important}}.factory-bootstrap-454 .btn-danger,.factory-bootstrap-454 .btn-default,.factory-bootstrap-454 .btn-info,.factory-bootstrap-454 .btn-primary,.factory-bootstrap-454 .btn-success,.factory-bootstrap-454 .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-454 .btn-danger.active,.factory-bootstrap-454 .btn-danger:active,.factory-bootstrap-454 .btn-default.active,.factory-bootstrap-454 .btn-default:active,.factory-bootstrap-454 .btn-info.active,.factory-bootstrap-454 .btn-info:active,.factory-bootstrap-454 .btn-primary.active,.factory-bootstrap-454 .btn-primary:active,.factory-bootstrap-454 .btn-success.active,.factory-bootstrap-454 .btn-success:active,.factory-bootstrap-454 .btn-warning.active,.factory-bootstrap-454 .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-454 .btn.active,.factory-bootstrap-454 .btn:active{background-image:none}.factory-bootstrap-454 .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-454 .btn-default.active,.factory-bootstrap-454 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-454 .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-454 .btn-gold:focus,.factory-bootstrap-454 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-454 .btn-gold.active,.factory-bootstrap-454 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-454 .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-454 .btn-primary:focus,.factory-bootstrap-454 .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-454 .btn-primary.active,.factory-bootstrap-454 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-454 .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-454 .btn-success:focus,.factory-bootstrap-454 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-454 .btn-success.active,.factory-bootstrap-454 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-454 .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-454 .btn-warning:focus,.factory-bootstrap-454 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-454 .btn-warning.active,.factory-bootstrap-454 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-454 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-454 .btn-danger.active,.factory-bootstrap-454 .btn-danger:active,.factory-bootstrap-454 .btn-danger:focus,.factory-bootstrap-454 .btn-danger:hover,.factory-bootstrap-454 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-454 .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-454 .btn-info:focus,.factory-bootstrap-454 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-454 .btn-info.active,.factory-bootstrap-454 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-454 .img-thumbnail,.factory-bootstrap-454 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-454 .dropdown-menu>li>a:focus,.factory-bootstrap-454 .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-454 .dropdown-menu>.active>a,.factory-bootstrap-454 .dropdown-menu>.active>a:focus,.factory-bootstrap-454 .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-454 .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-454 .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-454 .navbar-brand,.factory-bootstrap-454 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-454 .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-454 .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-454 .navbar-inverse .navbar-brand,.factory-bootstrap-454 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-454 .navbar-fixed-bottom,.factory-bootstrap-454 .navbar-fixed-top,.factory-bootstrap-454 .navbar-static-top{border-radius:0}.factory-bootstrap-454 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-454 .alert .actions{padding-top:10px}.factory-bootstrap-454 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-454 .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-454 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-454 .alert-normal,.factory-bootstrap-454 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-454 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-454 .alert-danger a:not(.btn),.factory-bootstrap-454 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-454 .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-454 .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-454 .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-454 .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-454 .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-454 .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-454 .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-454 .list-group-item.active,.factory-bootstrap-454 .list-group-item.active:focus,.factory-bootstrap-454 .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-454 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-454 .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-454 .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-454 .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-454 .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-454 .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-454 .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-454 .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-454 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-454 .factory-hidden{display:none}.factory-bootstrap-454 .factory-ajax-loader{width:25px;height:25px;background:url(../assets/images/loader-sm-tr.gif)}.factory-control-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:5px;padding:4px 10px 3px;max-width:500px;display:inline-block}.factory-control-error i{margin:0 7px 0 1px}
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 article,.factory-bootstrap-459 aside,.factory-bootstrap-459 details,.factory-bootstrap-459 figcaption,.factory-bootstrap-459 figure,.factory-bootstrap-459 footer,.factory-bootstrap-459 header,.factory-bootstrap-459 hgroup,.factory-bootstrap-459 main,.factory-bootstrap-459 nav,.factory-bootstrap-459 section,.factory-bootstrap-459 summary{display:block}.factory-bootstrap-459 audio,.factory-bootstrap-459 canvas,.factory-bootstrap-459 video{display:inline-block}.factory-bootstrap-459 audio:not([controls]){display:none;height:0}.factory-bootstrap-459 [hidden],.factory-bootstrap-459 template{display:none}.factory-bootstrap-459 body{margin:0}.factory-bootstrap-459 a{background:0 0}.factory-bootstrap-459 a:focus{outline:thin dotted}.factory-bootstrap-459 a:active,.factory-bootstrap-459 a:hover{outline:0}.factory-bootstrap-459 h1{margin:.67em 0}.factory-bootstrap-459 b,.factory-bootstrap-459 strong{font-weight:700}.factory-bootstrap-459 dfn{font-style:italic}.factory-bootstrap-459 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-459 mark{color:#000;background:#ff0}.factory-bootstrap-459 code,.factory-bootstrap-459 kbd,.factory-bootstrap-459 pre,.factory-bootstrap-459 samp{font-size:1em}.factory-bootstrap-459 pre{white-space:pre-wrap}.factory-bootstrap-459 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-459 sub,.factory-bootstrap-459 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-459 sup{top:-.5em}.factory-bootstrap-459 sub{bottom:-.25em}.factory-bootstrap-459 img{border:0}.factory-bootstrap-459 svg:not(:root){overflow:hidden}.factory-bootstrap-459 figure{margin:0}.factory-bootstrap-459 button,.factory-bootstrap-459 input,.factory-bootstrap-459 select,.factory-bootstrap-459 textarea{margin:0}.factory-bootstrap-459 button,.factory-bootstrap-459 select{text-transform:none}.factory-bootstrap-459 select{padding-right:4px!important}.factory-bootstrap-459 button,.factory-bootstrap-459 input[type=reset],.factory-bootstrap-459 input[type=submit],html .factory-bootstrap-459 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-459 button[disabled],html .factory-bootstrap-459 input[disabled]{cursor:default}.factory-bootstrap-459 input[type=checkbox],.factory-bootstrap-459 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-459 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-459 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-459 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-459 button::-moz-focus-inner,.factory-bootstrap-459 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-459 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-459 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-459 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-459 a,.factory-bootstrap-459 a:visited{text-decoration:underline}.factory-bootstrap-459 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-459 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-459 a[href^="javascript:"]:after,.factory-bootstrap-459 a[href^="#"]:after{content:""}.factory-bootstrap-459 blockquote,.factory-bootstrap-459 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-459 thead{display:table-header-group}.factory-bootstrap-459 img,.factory-bootstrap-459 tr{page-break-inside:avoid}.factory-bootstrap-459 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-459 h2,.factory-bootstrap-459 h3,.factory-bootstrap-459 p{orphans:3;widows:3}.factory-bootstrap-459 h2,.factory-bootstrap-459 h3{page-break-after:avoid}.factory-bootstrap-459 select{background:#fff!important}.factory-bootstrap-459 .navbar{display:none}.factory-bootstrap-459 .table td,.factory-bootstrap-459 .table th{background-color:#fff!important}.factory-bootstrap-459 .btn>.caret,.factory-bootstrap-459 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-459 .label{border:1px solid #000}.factory-bootstrap-459 .table{border-collapse:collapse!important}.factory-bootstrap-459 .table-bordered td,.factory-bootstrap-459 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-459 *,.factory-bootstrap-459 :after,.factory-bootstrap-459 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-459{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-459 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-459 button,.factory-bootstrap-459 input,.factory-bootstrap-459 select,.factory-bootstrap-459 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-459 img{vertical-align:middle}.factory-bootstrap-459 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-459 .img-rounded{border-radius:6px}.factory-bootstrap-459 .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-459 .img-circle{border-radius:50%}.factory-bootstrap-459 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-459 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-459 .h1,.factory-bootstrap-459 .h2,.factory-bootstrap-459 .h3,.factory-bootstrap-459 .h4,.factory-bootstrap-459 .h5,.factory-bootstrap-459 .h6,.factory-bootstrap-459 h1,.factory-bootstrap-459 h2,.factory-bootstrap-459 h3,.factory-bootstrap-459 h4,.factory-bootstrap-459 h5,.factory-bootstrap-459 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-459 .h1 .small,.factory-bootstrap-459 .h1 small,.factory-bootstrap-459 .h2 .small,.factory-bootstrap-459 .h2 small,.factory-bootstrap-459 .h3 .small,.factory-bootstrap-459 .h3 small,.factory-bootstrap-459 .h4 .small,.factory-bootstrap-459 .h4 small,.factory-bootstrap-459 .h5 .small,.factory-bootstrap-459 .h5 small,.factory-bootstrap-459 .h6 .small,.factory-bootstrap-459 .h6 small,.factory-bootstrap-459 h1 .small,.factory-bootstrap-459 h1 small,.factory-bootstrap-459 h2 .small,.factory-bootstrap-459 h2 small,.factory-bootstrap-459 h3 .small,.factory-bootstrap-459 h3 small,.factory-bootstrap-459 h4 .small,.factory-bootstrap-459 h4 small,.factory-bootstrap-459 h5 .small,.factory-bootstrap-459 h5 small,.factory-bootstrap-459 h6 .small,.factory-bootstrap-459 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-459 h1,.factory-bootstrap-459 h2,.factory-bootstrap-459 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-459 h1 .small,.factory-bootstrap-459 h1 small,.factory-bootstrap-459 h2 .small,.factory-bootstrap-459 h2 small,.factory-bootstrap-459 h3 .small,.factory-bootstrap-459 h3 small{font-size:65%}.factory-bootstrap-459 h4,.factory-bootstrap-459 h5,.factory-bootstrap-459 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-459 h4 .small,.factory-bootstrap-459 h4 small,.factory-bootstrap-459 h5 .small,.factory-bootstrap-459 h5 small,.factory-bootstrap-459 h6 .small,.factory-bootstrap-459 h6 small{font-size:75%}.factory-bootstrap-459 .h1,.factory-bootstrap-459 h1{font-size:36px}.factory-bootstrap-459 .h2,.factory-bootstrap-459 h2{font-size:30px}.factory-bootstrap-459 .h3,.factory-bootstrap-459 h3{font-size:24px}.factory-bootstrap-459 .h4,.factory-bootstrap-459 h4{font-size:18px}.factory-bootstrap-459 .h5,.factory-bootstrap-459 h5{font-size:14px}.factory-bootstrap-459 .h6,.factory-bootstrap-459 h6{font-size:12px}.factory-bootstrap-459 p{margin:0 0 10px}.factory-bootstrap-459 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-459 .small,.factory-bootstrap-459 small{font-size:85%}.factory-bootstrap-459 cite{font-style:normal}.factory-bootstrap-459 .text-muted{color:#999}.factory-bootstrap-459 .text-primary{color:#428bca}.factory-bootstrap-459 .text-primary:hover{color:#3071a9}.factory-bootstrap-459 .text-warning{color:#8a6d3b}.factory-bootstrap-459 .text-warning:hover{color:#66512c}.factory-bootstrap-459 .text-danger{color:#a94442}.factory-bootstrap-459 .text-danger:hover{color:#843534}.factory-bootstrap-459 .text-success{color:#3c763d}.factory-bootstrap-459 .text-success:hover{color:#2b542c}.factory-bootstrap-459 .text-info{color:#31708f}.factory-bootstrap-459 .text-info:hover{color:#245269}.factory-bootstrap-459 .text-left{text-align:left}.factory-bootstrap-459 .text-right{text-align:right}.factory-bootstrap-459 .text-center{text-align:center}.factory-bootstrap-459 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-459 ol,.factory-bootstrap-459 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-459 ol ol,.factory-bootstrap-459 ol ul,.factory-bootstrap-459 ul ol,.factory-bootstrap-459 ul ul{margin-bottom:0}.factory-bootstrap-459 .list-inline,.factory-bootstrap-459 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-459 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-459 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-459 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-459 dd,.factory-bootstrap-459 dt{line-height:1.428571429}.factory-bootstrap-459 dt{font-weight:700}.factory-bootstrap-459 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-459 abbr[data-original-title],.factory-bootstrap-459 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-459 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-459 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-459 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-459 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-459 blockquote .small,.factory-bootstrap-459 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-459 blockquote .small:before,.factory-bootstrap-459 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-459 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-459 blockquote.pull-right .small,.factory-bootstrap-459 blockquote.pull-right p,.factory-bootstrap-459 blockquote.pull-right small{text-align:right}.factory-bootstrap-459 blockquote.pull-right .small:before,.factory-bootstrap-459 blockquote.pull-right small:before{content:''}.factory-bootstrap-459 blockquote.pull-right .small:after,.factory-bootstrap-459 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-459 blockquote:after,.factory-bootstrap-459 blockquote:before{content:""}.factory-bootstrap-459 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-459 code,.factory-bootstrap-459 kbd,.factory-bootstrap-459 pre,.factory-bootstrap-459 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-459 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-459 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-459 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-459 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-459 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-459 .container:after,.factory-bootstrap-459 .container:before{display:table;content:" "}.factory-bootstrap-459 .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-459 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-459 .row:after,.factory-bootstrap-459 .row:before{display:table;content:" "}.factory-bootstrap-459 .row:after{clear:both}.factory-bootstrap-459 .col-lg-1,.factory-bootstrap-459 .col-lg-10,.factory-bootstrap-459 .col-lg-11,.factory-bootstrap-459 .col-lg-12,.factory-bootstrap-459 .col-lg-2,.factory-bootstrap-459 .col-lg-3,.factory-bootstrap-459 .col-lg-4,.factory-bootstrap-459 .col-lg-5,.factory-bootstrap-459 .col-lg-6,.factory-bootstrap-459 .col-lg-7,.factory-bootstrap-459 .col-lg-8,.factory-bootstrap-459 .col-lg-9,.factory-bootstrap-459 .col-md-1,.factory-bootstrap-459 .col-md-10,.factory-bootstrap-459 .col-md-11,.factory-bootstrap-459 .col-md-12,.factory-bootstrap-459 .col-md-2,.factory-bootstrap-459 .col-md-3,.factory-bootstrap-459 .col-md-4,.factory-bootstrap-459 .col-md-5,.factory-bootstrap-459 .col-md-6,.factory-bootstrap-459 .col-md-7,.factory-bootstrap-459 .col-md-8,.factory-bootstrap-459 .col-md-9,.factory-bootstrap-459 .col-sm-1,.factory-bootstrap-459 .col-sm-10,.factory-bootstrap-459 .col-sm-11,.factory-bootstrap-459 .col-sm-12,.factory-bootstrap-459 .col-sm-2,.factory-bootstrap-459 .col-sm-3,.factory-bootstrap-459 .col-sm-4,.factory-bootstrap-459 .col-sm-5,.factory-bootstrap-459 .col-sm-6,.factory-bootstrap-459 .col-sm-7,.factory-bootstrap-459 .col-sm-8,.factory-bootstrap-459 .col-sm-9,.factory-bootstrap-459 .col-xs-1,.factory-bootstrap-459 .col-xs-10,.factory-bootstrap-459 .col-xs-11,.factory-bootstrap-459 .col-xs-12,.factory-bootstrap-459 .col-xs-2,.factory-bootstrap-459 .col-xs-3,.factory-bootstrap-459 .col-xs-4,.factory-bootstrap-459 .col-xs-5,.factory-bootstrap-459 .col-xs-6,.factory-bootstrap-459 .col-xs-7,.factory-bootstrap-459 .col-xs-8,.factory-bootstrap-459 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-459 .col-xs-1,.factory-bootstrap-459 .col-xs-10,.factory-bootstrap-459 .col-xs-11,.factory-bootstrap-459 .col-xs-12,.factory-bootstrap-459 .col-xs-2,.factory-bootstrap-459 .col-xs-3,.factory-bootstrap-459 .col-xs-4,.factory-bootstrap-459 .col-xs-5,.factory-bootstrap-459 .col-xs-6,.factory-bootstrap-459 .col-xs-7,.factory-bootstrap-459 .col-xs-8,.factory-bootstrap-459 .col-xs-9{float:left}.factory-bootstrap-459 .col-xs-12{width:100%}.factory-bootstrap-459 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-459 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-459 .col-xs-9{width:75%}.factory-bootstrap-459 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-459 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-459 .col-xs-6{width:50%}.factory-bootstrap-459 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-459 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-459 .col-xs-3{width:25%}.factory-bootstrap-459 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-459 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-459 .col-xs-pull-12{right:100%}.factory-bootstrap-459 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-459 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-459 .col-xs-pull-9{right:75%}.factory-bootstrap-459 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-459 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-459 .col-xs-pull-6{right:50%}.factory-bootstrap-459 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-459 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-459 .col-xs-pull-3{right:25%}.factory-bootstrap-459 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-459 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-459 .col-xs-pull-0{right:0}.factory-bootstrap-459 .col-xs-push-12{left:100%}.factory-bootstrap-459 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-459 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-459 .col-xs-push-9{left:75%}.factory-bootstrap-459 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-459 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-459 .col-xs-push-6{left:50%}.factory-bootstrap-459 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-459 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-459 .col-xs-push-3{left:25%}.factory-bootstrap-459 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-459 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-459 .col-xs-push-0{left:0}.factory-bootstrap-459 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-459 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-459 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-459 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-459 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-459 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-459 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-459 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-459 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-459 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-459 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-459 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-459 .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-459 table{max-width:100%;background-color:transparent}.factory-bootstrap-459 th{text-align:left}.factory-bootstrap-459 .table{width:100%;margin-bottom:20px}.factory-bootstrap-459 .table>tbody>tr>td,.factory-bootstrap-459 .table>tbody>tr>th,.factory-bootstrap-459 .table>tfoot>tr>td,.factory-bootstrap-459 .table>tfoot>tr>th,.factory-bootstrap-459 .table>thead>tr>td,.factory-bootstrap-459 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-459 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-459 .table>caption+thead>tr:first-child>td,.factory-bootstrap-459 .table>caption+thead>tr:first-child>th,.factory-bootstrap-459 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-459 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-459 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-459 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-459 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-459 .table .table{background-color:#fff}.factory-bootstrap-459 .table-condensed>tbody>tr>td,.factory-bootstrap-459 .table-condensed>tbody>tr>th,.factory-bootstrap-459 .table-condensed>tfoot>tr>td,.factory-bootstrap-459 .table-condensed>tfoot>tr>th,.factory-bootstrap-459 .table-condensed>thead>tr>td,.factory-bootstrap-459 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-459 .table-bordered,.factory-bootstrap-459 .table-bordered>tbody>tr>td,.factory-bootstrap-459 .table-bordered>tbody>tr>th,.factory-bootstrap-459 .table-bordered>tfoot>tr>td,.factory-bootstrap-459 .table-bordered>tfoot>tr>th,.factory-bootstrap-459 .table-bordered>thead>tr>td,.factory-bootstrap-459 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-459 .table-bordered>thead>tr>td,.factory-bootstrap-459 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-459 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-459 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-459 .table-hover>tbody>tr:hover>td,.factory-bootstrap-459 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-459 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-459 table td[class*=col-],.factory-bootstrap-459 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-459 .table>tbody>.active>td,.factory-bootstrap-459 .table>tbody>.active>th,.factory-bootstrap-459 .table>tbody>tr>.active,.factory-bootstrap-459 .table>tfoot>.active>td,.factory-bootstrap-459 .table>tfoot>.active>th,.factory-bootstrap-459 .table>tfoot>tr>.active,.factory-bootstrap-459 .table>thead>.active>td,.factory-bootstrap-459 .table>thead>.active>th,.factory-bootstrap-459 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-459 .table-hover>tbody>.active:hover>td,.factory-bootstrap-459 .table-hover>tbody>.active:hover>th,.factory-bootstrap-459 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-459 .table>tbody>.success>td,.factory-bootstrap-459 .table>tbody>.success>th,.factory-bootstrap-459 .table>tbody>tr>.success,.factory-bootstrap-459 .table>tfoot>.success>td,.factory-bootstrap-459 .table>tfoot>.success>th,.factory-bootstrap-459 .table>tfoot>tr>.success,.factory-bootstrap-459 .table>thead>.success>td,.factory-bootstrap-459 .table>thead>.success>th,.factory-bootstrap-459 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-459 .table-hover>tbody>.success:hover>td,.factory-bootstrap-459 .table-hover>tbody>.success:hover>th,.factory-bootstrap-459 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-459 .table>tbody>.danger>td,.factory-bootstrap-459 .table>tbody>.danger>th,.factory-bootstrap-459 .table>tbody>tr>.danger,.factory-bootstrap-459 .table>tfoot>.danger>td,.factory-bootstrap-459 .table>tfoot>.danger>th,.factory-bootstrap-459 .table>tfoot>tr>.danger,.factory-bootstrap-459 .table>thead>.danger>td,.factory-bootstrap-459 .table>thead>.danger>th,.factory-bootstrap-459 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-459 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-459 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-459 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-459 .table>tbody>.warning>td,.factory-bootstrap-459 .table>tbody>.warning>th,.factory-bootstrap-459 .table>tbody>tr>.warning,.factory-bootstrap-459 .table>tfoot>.warning>td,.factory-bootstrap-459 .table>tfoot>.warning>th,.factory-bootstrap-459 .table>tfoot>tr>.warning,.factory-bootstrap-459 .table>thead>.warning>td,.factory-bootstrap-459 .table>thead>.warning>th,.factory-bootstrap-459 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-459 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-459 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-459 .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-459 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-459 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-459 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-459 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-459 input[type=checkbox],.factory-bootstrap-459 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-459 input[type=file]{display:block}.factory-bootstrap-459 select[multiple],.factory-bootstrap-459 select[size]{height:auto}.factory-bootstrap-459 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-459 input[type=checkbox]:focus,.factory-bootstrap-459 input[type=file]:focus,.factory-bootstrap-459 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-459 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-459 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-459 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-459 .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-459 .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-459 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-459 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-459 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-459 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-459 .form-control[disabled],.factory-bootstrap-459 .form-control[readonly],.factory-bootstrap-459 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-459 textarea.form-control{height:auto}.factory-bootstrap-459 .form-group{margin-bottom:15px}.factory-bootstrap-459 .checkbox,.factory-bootstrap-459 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-459 .checkbox label,.factory-bootstrap-459 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-459 .checkbox input[type=checkbox],.factory-bootstrap-459 .checkbox-inline input[type=checkbox],.factory-bootstrap-459 .radio input[type=radio],.factory-bootstrap-459 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-459 .checkbox+.checkbox,.factory-bootstrap-459 .radio+.radio{margin-top:-5px}.factory-bootstrap-459 .checkbox-inline,.factory-bootstrap-459 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-459 .checkbox-inline+.checkbox-inline,.factory-bootstrap-459 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-459 .checkbox-inline[disabled],.factory-bootstrap-459 .checkbox[disabled],.factory-bootstrap-459 .radio-inline[disabled],.factory-bootstrap-459 .radio[disabled],.factory-bootstrap-459 fieldset[disabled] .checkbox,.factory-bootstrap-459 fieldset[disabled] .checkbox-inline,.factory-bootstrap-459 fieldset[disabled] .radio,.factory-bootstrap-459 fieldset[disabled] .radio-inline,.factory-bootstrap-459 fieldset[disabled] input[type=checkbox],.factory-bootstrap-459 fieldset[disabled] input[type=radio],.factory-bootstrap-459 input[type=checkbox][disabled],.factory-bootstrap-459 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-459 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-459 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-459 textarea.input-sm{height:auto}.factory-bootstrap-459 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-459 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-459 textarea.input-lg{height:auto}.factory-bootstrap-459 .has-warning .checkbox,.factory-bootstrap-459 .has-warning .checkbox-inline,.factory-bootstrap-459 .has-warning .control-label,.factory-bootstrap-459 .has-warning .help-block,.factory-bootstrap-459 .has-warning .radio,.factory-bootstrap-459 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-459 .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-459 .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-459 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-459 .has-error .checkbox,.factory-bootstrap-459 .has-error .checkbox-inline,.factory-bootstrap-459 .has-error .control-label,.factory-bootstrap-459 .has-error .help-block,.factory-bootstrap-459 .has-error .radio,.factory-bootstrap-459 .has-error .radio-inline{color:#a94442}.factory-bootstrap-459 .controls{display:block}.factory-bootstrap-459 .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-459 .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-459 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-459 .has-success .checkbox,.factory-bootstrap-459 .has-success .checkbox-inline,.factory-bootstrap-459 .has-success .control-label,.factory-bootstrap-459 .has-success .help-block,.factory-bootstrap-459 .has-success .radio,.factory-bootstrap-459 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-459 .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-459 .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-459 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-459 .form-control-static{margin-bottom:0}.factory-bootstrap-459 .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-459 .form-horizontal .checkbox,.factory-bootstrap-459 .form-horizontal .checkbox-inline,.factory-bootstrap-459 .form-horizontal .control-label,.factory-bootstrap-459 .form-horizontal .radio,.factory-bootstrap-459 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-459 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-459 .form-horizontal .checkbox,.factory-bootstrap-459 .form-horizontal .radio{min-height:27px}.factory-bootstrap-459 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-459 .form-horizontal .form-group:after,.factory-bootstrap-459 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-459 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-459 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-459 .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-459 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-459 .btn{text-decoration:none}.factory-bootstrap-459 .btn:focus,.factory-bootstrap-459 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-459 .btn.disabled,.factory-bootstrap-459 .btn[disabled],.factory-bootstrap-459 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-459 .btn-default.active,.factory-bootstrap-459 .btn-default:active,.factory-bootstrap-459 .btn-default:focus,.factory-bootstrap-459 .btn-default:hover,.factory-bootstrap-459 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-459 .btn-default.active,.factory-bootstrap-459 .btn-default:active,.factory-bootstrap-459 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-459 .btn-default.disabled,.factory-bootstrap-459 .btn-default.disabled.active,.factory-bootstrap-459 .btn-default.disabled:active,.factory-bootstrap-459 .btn-default.disabled:focus,.factory-bootstrap-459 .btn-default.disabled:hover,.factory-bootstrap-459 .btn-default[disabled],.factory-bootstrap-459 .btn-default[disabled].active,.factory-bootstrap-459 .btn-default[disabled]:active,.factory-bootstrap-459 .btn-default[disabled]:focus,.factory-bootstrap-459 .btn-default[disabled]:hover,.factory-bootstrap-459 fieldset[disabled] .btn-default,.factory-bootstrap-459 fieldset[disabled] .btn-default.active,.factory-bootstrap-459 fieldset[disabled] .btn-default:active,.factory-bootstrap-459 fieldset[disabled] .btn-default:focus,.factory-bootstrap-459 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-459 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-459 .btn-primary.active,.factory-bootstrap-459 .btn-primary:active,.factory-bootstrap-459 .btn-primary:focus,.factory-bootstrap-459 .btn-primary:hover,.factory-bootstrap-459 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-459 .btn-primary.active,.factory-bootstrap-459 .btn-primary:active,.factory-bootstrap-459 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-459 .btn-primary.disabled,.factory-bootstrap-459 .btn-primary.disabled.active,.factory-bootstrap-459 .btn-primary.disabled:active,.factory-bootstrap-459 .btn-primary.disabled:focus,.factory-bootstrap-459 .btn-primary.disabled:hover,.factory-bootstrap-459 .btn-primary[disabled],.factory-bootstrap-459 .btn-primary[disabled].active,.factory-bootstrap-459 .btn-primary[disabled]:active,.factory-bootstrap-459 .btn-primary[disabled]:focus,.factory-bootstrap-459 .btn-primary[disabled]:hover,.factory-bootstrap-459 fieldset[disabled] .btn-primary,.factory-bootstrap-459 fieldset[disabled] .btn-primary.active,.factory-bootstrap-459 fieldset[disabled] .btn-primary:active,.factory-bootstrap-459 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-459 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-459 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-459 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-459 .btn-warning.active,.factory-bootstrap-459 .btn-warning:active,.factory-bootstrap-459 .btn-warning:focus,.factory-bootstrap-459 .btn-warning:hover,.factory-bootstrap-459 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-459 .btn-warning.active,.factory-bootstrap-459 .btn-warning:active,.factory-bootstrap-459 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-459 .btn-warning.disabled,.factory-bootstrap-459 .btn-warning.disabled.active,.factory-bootstrap-459 .btn-warning.disabled:active,.factory-bootstrap-459 .btn-warning.disabled:focus,.factory-bootstrap-459 .btn-warning.disabled:hover,.factory-bootstrap-459 .btn-warning[disabled],.factory-bootstrap-459 .btn-warning[disabled].active,.factory-bootstrap-459 .btn-warning[disabled]:active,.factory-bootstrap-459 .btn-warning[disabled]:focus,.factory-bootstrap-459 .btn-warning[disabled]:hover,.factory-bootstrap-459 fieldset[disabled] .btn-warning,.factory-bootstrap-459 fieldset[disabled] .btn-warning.active,.factory-bootstrap-459 fieldset[disabled] .btn-warning:active,.factory-bootstrap-459 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-459 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-459 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-459 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-459 .btn-success.active,.factory-bootstrap-459 .btn-success:active,.factory-bootstrap-459 .btn-success:focus,.factory-bootstrap-459 .btn-success:hover,.factory-bootstrap-459 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-459 .btn-success.active,.factory-bootstrap-459 .btn-success:active,.factory-bootstrap-459 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-459 .btn-success.disabled,.factory-bootstrap-459 .btn-success.disabled.active,.factory-bootstrap-459 .btn-success.disabled:active,.factory-bootstrap-459 .btn-success.disabled:focus,.factory-bootstrap-459 .btn-success.disabled:hover,.factory-bootstrap-459 .btn-success[disabled],.factory-bootstrap-459 .btn-success[disabled].active,.factory-bootstrap-459 .btn-success[disabled]:active,.factory-bootstrap-459 .btn-success[disabled]:focus,.factory-bootstrap-459 .btn-success[disabled]:hover,.factory-bootstrap-459 fieldset[disabled] .btn-success,.factory-bootstrap-459 fieldset[disabled] .btn-success.active,.factory-bootstrap-459 fieldset[disabled] .btn-success:active,.factory-bootstrap-459 fieldset[disabled] .btn-success:focus,.factory-bootstrap-459 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-459 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-459 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-459 .btn-info.active,.factory-bootstrap-459 .btn-info:active,.factory-bootstrap-459 .btn-info:focus,.factory-bootstrap-459 .btn-info:hover,.factory-bootstrap-459 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-459 .btn-info.active,.factory-bootstrap-459 .btn-info:active,.factory-bootstrap-459 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-459 .btn-info.disabled,.factory-bootstrap-459 .btn-info.disabled.active,.factory-bootstrap-459 .btn-info.disabled:active,.factory-bootstrap-459 .btn-info.disabled:focus,.factory-bootstrap-459 .btn-info.disabled:hover,.factory-bootstrap-459 .btn-info[disabled],.factory-bootstrap-459 .btn-info[disabled].active,.factory-bootstrap-459 .btn-info[disabled]:active,.factory-bootstrap-459 .btn-info[disabled]:focus,.factory-bootstrap-459 .btn-info[disabled]:hover,.factory-bootstrap-459 fieldset[disabled] .btn-info,.factory-bootstrap-459 fieldset[disabled] .btn-info.active,.factory-bootstrap-459 fieldset[disabled] .btn-info:active,.factory-bootstrap-459 fieldset[disabled] .btn-info:focus,.factory-bootstrap-459 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-459 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-459 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-459 .btn-link,.factory-bootstrap-459 .btn-link:active,.factory-bootstrap-459 .btn-link[disabled],.factory-bootstrap-459 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-459 .btn-link,.factory-bootstrap-459 .btn-link:active,.factory-bootstrap-459 .btn-link:focus,.factory-bootstrap-459 .btn-link:hover{border-color:transparent}.factory-bootstrap-459 .btn-link:focus,.factory-bootstrap-459 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-459 .btn-link[disabled]:focus,.factory-bootstrap-459 .btn-link[disabled]:hover,.factory-bootstrap-459 fieldset[disabled] .btn-link:focus,.factory-bootstrap-459 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-459 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-459 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-459 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-459 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-459 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-459 input[type=button].btn-block,.factory-bootstrap-459 input[type=reset].btn-block,.factory-bootstrap-459 input[type=submit].btn-block{width:100%}.factory-bootstrap-459 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-459 .fade.in{opacity:1}.factory-bootstrap-459 .collapse{display:none}.factory-bootstrap-459 .collapse.in{display:block}.factory-bootstrap-459 .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-459 .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-459 .glyphicon:empty{width:1em}.factory-bootstrap-459 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-459 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-459 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-459 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-459 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-459 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-459 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-459 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-459 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-459 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-459 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-459 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-459 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-459 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-459 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-459 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-459 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-459 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-459 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-459 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-459 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-459 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-459 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-459 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-459 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-459 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-459 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-459 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-459 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-459 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-459 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-459 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-459 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-459 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-459 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-459 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-459 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-459 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-459 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-459 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-459 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-459 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-459 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-459 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-459 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-459 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-459 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-459 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-459 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-459 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-459 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-459 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-459 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-459 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-459 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-459 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-459 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-459 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-459 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-459 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-459 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-459 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-459 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-459 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-459 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-459 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-459 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-459 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-459 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-459 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-459 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-459 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-459 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-459 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-459 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-459 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-459 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-459 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-459 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-459 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-459 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-459 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-459 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-459 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-459 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-459 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-459 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-459 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-459 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-459 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-459 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-459 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-459 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-459 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-459 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-459 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-459 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-459 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-459 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-459 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-459 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-459 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-459 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-459 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-459 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-459 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-459 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-459 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-459 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-459 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-459 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-459 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-459 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-459 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-459 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-459 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-459 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-459 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-459 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-459 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-459 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-459 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-459 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-459 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-459 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-459 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-459 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-459 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-459 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-459 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-459 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-459 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-459 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-459 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-459 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-459 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-459 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-459 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-459 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-459 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-459 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-459 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-459 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-459 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-459 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-459 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-459 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-459 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-459 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-459 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-459 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-459 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-459 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-459 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-459 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-459 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-459 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-459 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-459 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-459 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-459 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-459 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-459 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-459 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-459 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-459 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-459 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-459 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-459 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-459 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-459 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-459 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-459 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-459 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-459 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-459 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-459 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-459 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-459 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-459 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-459 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-459 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-459 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-459 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-459 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-459 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-459 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-459 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-459 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-459 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-459 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-459 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-459 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-459 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-459 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-459 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-459 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-459 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-459 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-459 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-459 .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-459 .dropdown{position:relative}.factory-bootstrap-459 .dropdown-toggle:focus{outline:0}.factory-bootstrap-459 .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-459 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-459 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-459 .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-459 .dropdown-menu>li>a:focus,.factory-bootstrap-459 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-459 .dropdown-menu>.active>a,.factory-bootstrap-459 .dropdown-menu>.active>a:focus,.factory-bootstrap-459 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-459 .dropdown-menu>.disabled>a,.factory-bootstrap-459 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-459 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-459 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-459 .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-459 .open>.dropdown-menu{display:block}.factory-bootstrap-459 .open>a{outline:0}.factory-bootstrap-459 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-459 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-459 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-459 .dropup .caret,.factory-bootstrap-459 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-459 .dropup .dropdown-menu,.factory-bootstrap-459 .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-459 .btn-group,.factory-bootstrap-459 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-459 .btn-group-vertical>.btn,.factory-bootstrap-459 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-459 .btn-group-vertical>.btn.active,.factory-bootstrap-459 .btn-group-vertical>.btn:active,.factory-bootstrap-459 .btn-group-vertical>.btn:focus,.factory-bootstrap-459 .btn-group-vertical>.btn:hover,.factory-bootstrap-459 .btn-group>.btn.active,.factory-bootstrap-459 .btn-group>.btn:active,.factory-bootstrap-459 .btn-group>.btn:focus,.factory-bootstrap-459 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-459 .btn-group-vertical>.btn:focus,.factory-bootstrap-459 .btn-group>.btn:focus{outline:0}.factory-bootstrap-459 .btn-group .btn+.btn,.factory-bootstrap-459 .btn-group .btn+.btn-group,.factory-bootstrap-459 .btn-group .btn-group+.btn,.factory-bootstrap-459 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-459 .btn-toolbar:after,.factory-bootstrap-459 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-459 .btn-toolbar:after{clear:both}.factory-bootstrap-459 .btn-toolbar .btn-group{float:left}.factory-bootstrap-459 .btn-toolbar>.btn+.btn,.factory-bootstrap-459 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-459 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-459 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-459 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-459 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-459 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-459 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-459 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .btn-group>.btn-group{float:left}.factory-bootstrap-459 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-459 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-459 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-459 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .btn-group .dropdown-toggle:active,.factory-bootstrap-459 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-459 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-459 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-459 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-459 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-459 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-459 .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-459 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-459 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-459 .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-459 .btn .caret{margin-left:0}.factory-bootstrap-459 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-459 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-459 .btn-group-vertical>.btn,.factory-bootstrap-459 .btn-group-vertical>.btn-group,.factory-bootstrap-459 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-459 .btn-group-vertical>.btn-group:after,.factory-bootstrap-459 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-459 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-459 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-459 .btn-group-vertical>.btn+.btn,.factory-bootstrap-459 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-459 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-459 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-459 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-459 .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-459 .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-459 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-459 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-459 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-459 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-459 .btn-group-justified>.btn,.factory-bootstrap-459 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-459 .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-459 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-459 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-459 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-459 .input-group-lg>.form-control,.factory-bootstrap-459 .input-group-lg>.input-group-addon,.factory-bootstrap-459 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-459 select.input-group-lg>.form-control,.factory-bootstrap-459 select.input-group-lg>.input-group-addon,.factory-bootstrap-459 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-459 textarea.input-group-lg>.form-control,.factory-bootstrap-459 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-459 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-459 .input-group-sm>.form-control,.factory-bootstrap-459 .input-group-sm>.input-group-addon,.factory-bootstrap-459 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-459 select.input-group-sm>.form-control,.factory-bootstrap-459 select.input-group-sm>.input-group-addon,.factory-bootstrap-459 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-459 textarea.input-group-sm>.form-control,.factory-bootstrap-459 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-459 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-459 .input-group .form-control,.factory-bootstrap-459 .input-group-addon,.factory-bootstrap-459 .input-group-btn{display:table-cell}.factory-bootstrap-459 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-459 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-459 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-459 .input-group-addon,.factory-bootstrap-459 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-459 .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-459 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-459 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-459 .input-group-addon input[type=checkbox],.factory-bootstrap-459 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-459 .input-group .form-control:first-child,.factory-bootstrap-459 .input-group-addon:first-child,.factory-bootstrap-459 .input-group-btn:first-child>.btn,.factory-bootstrap-459 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-459 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-459 .input-group-addon:first-child{border-right:0}.factory-bootstrap-459 .input-group .form-control:last-child,.factory-bootstrap-459 .input-group-addon:last-child,.factory-bootstrap-459 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-459 .input-group-btn:last-child>.btn,.factory-bootstrap-459 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .input-group-addon:last-child{border-left:0}.factory-bootstrap-459 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-459 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-459 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-459 .input-group-btn>.btn{position:relative}.factory-bootstrap-459 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-459 .input-group-btn>.btn:active,.factory-bootstrap-459 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-459 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-459 .nav:after,.factory-bootstrap-459 .nav:before{display:table;content:" "}.factory-bootstrap-459 .nav:after{clear:both}.factory-bootstrap-459 .nav>li{position:relative;display:block}.factory-bootstrap-459 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-459 .nav>li>a:focus,.factory-bootstrap-459 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-459 .nav>li.disabled>a{color:#999}.factory-bootstrap-459 .nav>li.disabled>a:focus,.factory-bootstrap-459 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-459 .nav .open>a,.factory-bootstrap-459 .nav .open>a:focus,.factory-bootstrap-459 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-459 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-459 .nav>li>a>img{max-width:none}.factory-bootstrap-459 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-459 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-459 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-459 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-459 .nav-tabs>li.active>a,.factory-bootstrap-459 .nav-tabs>li.active>a:focus,.factory-bootstrap-459 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-459 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-459 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-459 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-459 .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-459 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-459 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-459 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-459 .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-459 .nav-pills>li{float:left}.factory-bootstrap-459 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-459 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-459 .nav-pills>li.active>a,.factory-bootstrap-459 .nav-pills>li.active>a:focus,.factory-bootstrap-459 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-459 .nav-stacked>li{float:none}.factory-bootstrap-459 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-459 .nav-justified{width:100%}.factory-bootstrap-459 .nav-justified>li{float:none}.factory-bootstrap-459 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-459 .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-459 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-459 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-459 .nav-tabs-justified>.active>a,.factory-bootstrap-459 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-459 .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-459 .tab-content>.tab-pane{display:none}.factory-bootstrap-459 .tab-content>.active{display:block}.factory-bootstrap-459 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-459 .navbar:after,.factory-bootstrap-459 .navbar:before{display:table;content:" "}.factory-bootstrap-459 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-459 .navbar-header:after,.factory-bootstrap-459 .navbar-header:before{display:table;content:" "}.factory-bootstrap-459 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-459 .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-459 .navbar-collapse:after,.factory-bootstrap-459 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-459 .navbar-collapse:after{clear:both}.factory-bootstrap-459 .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-459 .container>.navbar-collapse,.factory-bootstrap-459 .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-459 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-459 .navbar-fixed-bottom,.factory-bootstrap-459 .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-459 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-459 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-459 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-459 .navbar-brand:focus,.factory-bootstrap-459 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-459 .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-459 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-459 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-459 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-459 .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-459 .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-459 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-459 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-459 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-459 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-459 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-459 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-459 .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-459 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-459 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-459 .navbar-default .navbar-brand:focus,.factory-bootstrap-459 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-459 .navbar-default .navbar-nav>li>a,.factory-bootstrap-459 .navbar-default .navbar-text{color:#777}.factory-bootstrap-459 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-459 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-459 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-459 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-459 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-459 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-459 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-459 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-459 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-459 .navbar-default .navbar-toggle:focus,.factory-bootstrap-459 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-459 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-459 .navbar-default .navbar-collapse,.factory-bootstrap-459 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-459 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-459 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-459 .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-459 .navbar-default .navbar-link{color:#777}.factory-bootstrap-459 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-459 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-459 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-459 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-459 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-459 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-459 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-459 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-459 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-459 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-459 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-459 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-459 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-459 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-459 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-459 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-459 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-459 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-459 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-459 .navbar-inverse .navbar-collapse,.factory-bootstrap-459 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-459 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-459 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-459 .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-459 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-459 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-459 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-459 .breadcrumb>li{display:inline-block}.factory-bootstrap-459 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-459 .breadcrumb>.active{color:#999}.factory-bootstrap-459 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-459 .pagination>li{display:inline}.factory-bootstrap-459 .pagination>li>a,.factory-bootstrap-459 .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-459 .pagination>li:first-child>a,.factory-bootstrap-459 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-459 .pagination>li:last-child>a,.factory-bootstrap-459 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-459 .pagination>li>a:focus,.factory-bootstrap-459 .pagination>li>a:hover,.factory-bootstrap-459 .pagination>li>span:focus,.factory-bootstrap-459 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-459 .pagination>.disabled>a,.factory-bootstrap-459 .pagination>.disabled>a:focus,.factory-bootstrap-459 .pagination>.disabled>a:hover,.factory-bootstrap-459 .pagination>.disabled>span,.factory-bootstrap-459 .pagination>.disabled>span:focus,.factory-bootstrap-459 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-459 .pagination-lg>li>a,.factory-bootstrap-459 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-459 .pagination-lg>li:first-child>a,.factory-bootstrap-459 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-459 .pagination-lg>li:last-child>a,.factory-bootstrap-459 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-459 .pagination-sm>li>a,.factory-bootstrap-459 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-459 .pagination-sm>li:first-child>a,.factory-bootstrap-459 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-459 .pagination-sm>li:last-child>a,.factory-bootstrap-459 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-459 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-459 .pager:after,.factory-bootstrap-459 .pager:before{display:table;content:" "}.factory-bootstrap-459 .pager:after{clear:both}.factory-bootstrap-459 .pager li{display:inline}.factory-bootstrap-459 .pager li>a,.factory-bootstrap-459 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-459 .pager li>a:focus,.factory-bootstrap-459 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-459 .pager .next>a,.factory-bootstrap-459 .pager .next>span{float:right}.factory-bootstrap-459 .pager .previous>a,.factory-bootstrap-459 .pager .previous>span{float:left}.factory-bootstrap-459 .pager .disabled>a,.factory-bootstrap-459 .pager .disabled>a:focus,.factory-bootstrap-459 .pager .disabled>a:hover,.factory-bootstrap-459 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-459 .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-459 .label[href]:focus,.factory-bootstrap-459 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-459 .label:empty{display:none}.factory-bootstrap-459 .btn .label{position:relative;top:-1px}.factory-bootstrap-459 .label-default{background-color:#999}.factory-bootstrap-459 .label-default[href]:focus,.factory-bootstrap-459 .label-default[href]:hover{background-color:gray}.factory-bootstrap-459 .label-primary{background-color:#428bca}.factory-bootstrap-459 .label-primary[href]:focus,.factory-bootstrap-459 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-459 .label-success{background-color:#5cb85c}.factory-bootstrap-459 .label-success[href]:focus,.factory-bootstrap-459 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-459 .label-info{background-color:#5bc0de}.factory-bootstrap-459 .label-info[href]:focus,.factory-bootstrap-459 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-459 .label-warning{background-color:#f0ad4e}.factory-bootstrap-459 .label-warning[href]:focus,.factory-bootstrap-459 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-459 .label-danger{background-color:#d9534f}.factory-bootstrap-459 .label-danger[href]:focus,.factory-bootstrap-459 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-459 .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-459 .badge:empty{display:none}.factory-bootstrap-459 .btn .badge{position:relative;top:-1px}.factory-bootstrap-459 a.badge:focus,.factory-bootstrap-459 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-459 .nav-pills>.active>a>.badge,.factory-bootstrap-459 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-459 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-459 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-459 .jumbotron .h1,.factory-bootstrap-459 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-459 .jumbotron p{line-height:1.4}.factory-bootstrap-459 .container .jumbotron{border-radius:6px}.factory-bootstrap-459 .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-459 .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-459 .thumbnail a>img,.factory-bootstrap-459 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-459 a.thumbnail.active,.factory-bootstrap-459 a.thumbnail:focus,.factory-bootstrap-459 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-459 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-459 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-459 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-459 .alert .alert-link{font-weight:700}.factory-bootstrap-459 .alert>p,.factory-bootstrap-459 .alert>ul{margin-bottom:0}.factory-bootstrap-459 .alert>p+p{margin-top:5px}.factory-bootstrap-459 .alert-dismissable{padding-right:35px}.factory-bootstrap-459 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-459 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-459 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-459 .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-459 .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-459 .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-459 .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-459 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-459 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-459 .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-459 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-459 .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-459 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-459 .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-459 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-459 .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-459 .media,.factory-bootstrap-459 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-459 .media,.factory-bootstrap-459 .media .media{margin-top:15px}.factory-bootstrap-459 .media:first-child{margin-top:0}.factory-bootstrap-459 .media-object{display:block}.factory-bootstrap-459 .media-heading{margin:0 0 5px}.factory-bootstrap-459 .media>.pull-left{margin-right:10px}.factory-bootstrap-459 .media>.pull-right{margin-left:10px}.factory-bootstrap-459 .media-list{padding-left:0;list-style:none}.factory-bootstrap-459 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-459 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-459 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-459 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-459 .list-group-item>.badge{float:right}.factory-bootstrap-459 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-459 a.list-group-item{color:#555}.factory-bootstrap-459 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-459 a.list-group-item:focus,.factory-bootstrap-459 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-459 a.list-group-item.active,.factory-bootstrap-459 a.list-group-item.active:focus,.factory-bootstrap-459 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-459 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-459 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-459 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-459 a.list-group-item.active .list-group-item-text,.factory-bootstrap-459 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-459 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-459 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-459 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-459 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-459 .panel-body{padding:15px}.factory-bootstrap-459 .panel-body:after,.factory-bootstrap-459 .panel-body:before{display:table;content:" "}.factory-bootstrap-459 .panel-body:after{clear:both}.factory-bootstrap-459 .panel>.list-group{margin-bottom:0}.factory-bootstrap-459 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-459 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-459 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-459 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-459 .panel>.table,.factory-bootstrap-459 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-459 .panel>.panel-body+.table,.factory-bootstrap-459 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-459 .panel>.table>tbody:first-child td,.factory-bootstrap-459 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-459 .panel>.table-bordered,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-459 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-459 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-459 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-459 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-459 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-459 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-459 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-459 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-459 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-459 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-459 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-459 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-459 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-459 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-459 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-459 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-459 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-459 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-459 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-459 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-459 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-459 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-459 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-459 .panel-title>a{color:inherit}.factory-bootstrap-459 .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-459 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-459 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-459 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-459 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-459 .panel-group .panel-footer{border-top:0}.factory-bootstrap-459 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-459 .panel-default{border-color:#ddd}.factory-bootstrap-459 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-459 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-459 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-459 .panel-primary{border-color:#428bca}.factory-bootstrap-459 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-459 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-459 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-459 .panel-success{border-color:#d6e9c6}.factory-bootstrap-459 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-459 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-459 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-459 .panel-warning{border-color:#faebcc}.factory-bootstrap-459 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-459 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-459 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-459 .panel-danger{border-color:#ebccd1}.factory-bootstrap-459 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-459 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-459 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-459 .panel-info{border-color:#bce8f1}.factory-bootstrap-459 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-459 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-459 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-459 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-459 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-459 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-459 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-459 .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-459 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-459 .close:focus,.factory-bootstrap-459 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-459 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-459 .modal-open{overflow:hidden}.factory-bootstrap-459 .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-459 .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-459 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-459 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-459 .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-459 .modal-backdrop,.factory-bootstrap-459-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-459 .modal-backdrop.fade,.factory-bootstrap-459-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-459 .modal-backdrop.in,.factory-bootstrap-459-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-459 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-459 .modal-header .close{margin-top:-2px}.factory-bootstrap-459 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-459 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-459 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-459 .modal-footer:after,.factory-bootstrap-459 .modal-footer:before{display:table;content:" "}.factory-bootstrap-459 .modal-footer:after{clear:both}.factory-bootstrap-459 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-459 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-459 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-459 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-459 .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-459 .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-459 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-459 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-459 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-459 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-459 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-459 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-459 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-459 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-459 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-459 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-459 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-459 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-459 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-459 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-459 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-459 .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-459 .popover.top{margin-top:-10px}.factory-bootstrap-459 .popover.right{margin-left:10px}.factory-bootstrap-459 .popover.bottom{margin-top:10px}.factory-bootstrap-459 .popover.left{margin-left:-10px}.factory-bootstrap-459 .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-459 .popover-content{padding:9px 14px}.factory-bootstrap-459 .popover .arrow,.factory-bootstrap-459 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-459 .popover .arrow{border-width:11px}.factory-bootstrap-459 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-459 .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-459 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-459 .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-459 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-459 .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-459 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-459 .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-459 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-459 .carousel{position:relative}.factory-bootstrap-459 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-459 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-459 .carousel-inner>.item>a>img,.factory-bootstrap-459 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-459 .carousel-inner>.active,.factory-bootstrap-459 .carousel-inner>.next,.factory-bootstrap-459 .carousel-inner>.prev{display:block}.factory-bootstrap-459 .carousel-inner>.active{left:0}.factory-bootstrap-459 .carousel-inner>.next,.factory-bootstrap-459 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-459 .carousel-inner>.next{left:100%}.factory-bootstrap-459 .carousel-inner>.prev{left:-100%}.factory-bootstrap-459 .carousel-inner>.next.left,.factory-bootstrap-459 .carousel-inner>.prev.right{left:0}.factory-bootstrap-459 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-459 .carousel-inner>.active.right{left:100%}.factory-bootstrap-459 .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-459 .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-459 .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-459 .carousel-control:focus,.factory-bootstrap-459 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-459 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-459 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-459 .carousel-control .icon-next,.factory-bootstrap-459 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-459 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-459 .carousel-control .icon-prev{left:50%}.factory-bootstrap-459 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-459 .carousel-control .icon-next{right:50%}.factory-bootstrap-459 .carousel-control .icon-next,.factory-bootstrap-459 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-459 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-459 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-459 .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-459 .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-459 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-459 .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-459 .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-459 .clearfix:after,.factory-bootstrap-459 .clearfix:before{display:table;content:" "}.factory-bootstrap-459 .clearfix:after{clear:both}.factory-bootstrap-459 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-459 .pull-right{float:right!important}.factory-bootstrap-459 .pull-left{float:left!important}.factory-bootstrap-459 .hide{display:none!important}.factory-bootstrap-459 .show{display:block!important}.factory-bootstrap-459 .invisible{visibility:hidden}.factory-bootstrap-459 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-459 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-459 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-459 .visible-lg,.factory-bootstrap-459 .visible-md,.factory-bootstrap-459 .visible-sm,.factory-bootstrap-459 .visible-xs,.factory-bootstrap-459 td.visible-lg,.factory-bootstrap-459 td.visible-md,.factory-bootstrap-459 td.visible-sm,.factory-bootstrap-459 td.visible-xs,.factory-bootstrap-459 th.visible-lg,.factory-bootstrap-459 th.visible-md,.factory-bootstrap-459 th.visible-sm,.factory-bootstrap-459 th.visible-xs,.factory-bootstrap-459 tr.visible-lg,.factory-bootstrap-459 tr.visible-md,.factory-bootstrap-459 tr.visible-sm,.factory-bootstrap-459 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-459 .hidden-xs{display:block!important}.factory-bootstrap-459 table.hidden-xs{display:table}.factory-bootstrap-459 tr.hidden-xs{display:table-row!important}.factory-bootstrap-459 td.hidden-xs,.factory-bootstrap-459 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-459 .hidden-sm{display:block!important}.factory-bootstrap-459 table.hidden-sm{display:table}.factory-bootstrap-459 tr.hidden-sm{display:table-row!important}.factory-bootstrap-459 td.hidden-sm,.factory-bootstrap-459 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-459 .hidden-md{display:block!important}.factory-bootstrap-459 table.hidden-md{display:table}.factory-bootstrap-459 tr.hidden-md{display:table-row!important}.factory-bootstrap-459 td.hidden-md,.factory-bootstrap-459 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-459 .hidden-lg{display:block!important}.factory-bootstrap-459 table.hidden-lg{display:table}.factory-bootstrap-459 tr.hidden-lg{display:table-row!important}.factory-bootstrap-459 td.hidden-lg,.factory-bootstrap-459 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-459 .hidden-lg.hidden-xs,.factory-bootstrap-459 td.hidden-lg.hidden-xs,.factory-bootstrap-459 th.hidden-lg.hidden-xs,.factory-bootstrap-459 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-459 .hidden-lg.hidden-sm,.factory-bootstrap-459 td.hidden-lg.hidden-sm,.factory-bootstrap-459 th.hidden-lg.hidden-sm,.factory-bootstrap-459 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-459 .hidden-lg.hidden-md,.factory-bootstrap-459 td.hidden-lg.hidden-md,.factory-bootstrap-459 th.hidden-lg.hidden-md,.factory-bootstrap-459 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-459 .hidden-lg,.factory-bootstrap-459 td.hidden-lg,.factory-bootstrap-459 th.hidden-lg,.factory-bootstrap-459 tr.hidden-lg{display:none!important}}.factory-bootstrap-459 .visible-print,.factory-bootstrap-459 td.visible-print,.factory-bootstrap-459 th.visible-print,.factory-bootstrap-459 tr.visible-print{display:none!important}@media print{.factory-bootstrap-459 .visible-print{display:block!important}.factory-bootstrap-459 table.visible-print{display:table}.factory-bootstrap-459 tr.visible-print{display:table-row!important}.factory-bootstrap-459 td.visible-print,.factory-bootstrap-459 th.visible-print{display:table-cell!important}.factory-bootstrap-459 .hidden-print,.factory-bootstrap-459 td.hidden-print,.factory-bootstrap-459 th.hidden-print,.factory-bootstrap-459 tr.hidden-print{display:none!important}}.factory-bootstrap-459 .btn-danger,.factory-bootstrap-459 .btn-default,.factory-bootstrap-459 .btn-info,.factory-bootstrap-459 .btn-primary,.factory-bootstrap-459 .btn-success,.factory-bootstrap-459 .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-459 .btn-danger.active,.factory-bootstrap-459 .btn-danger:active,.factory-bootstrap-459 .btn-default.active,.factory-bootstrap-459 .btn-default:active,.factory-bootstrap-459 .btn-info.active,.factory-bootstrap-459 .btn-info:active,.factory-bootstrap-459 .btn-primary.active,.factory-bootstrap-459 .btn-primary:active,.factory-bootstrap-459 .btn-success.active,.factory-bootstrap-459 .btn-success:active,.factory-bootstrap-459 .btn-warning.active,.factory-bootstrap-459 .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-459 .btn.active,.factory-bootstrap-459 .btn:active{background-image:none}.factory-bootstrap-459 .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-459 .btn-default.active,.factory-bootstrap-459 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-459 .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-459 .btn-gold:focus,.factory-bootstrap-459 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-459 .btn-gold.active,.factory-bootstrap-459 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .btn-primary.active,.factory-bootstrap-459 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-459 .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-459 .btn-success:focus,.factory-bootstrap-459 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-459 .btn-success.active,.factory-bootstrap-459 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-459 .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-459 .btn-warning:focus,.factory-bootstrap-459 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-459 .btn-warning.active,.factory-bootstrap-459 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-459 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-459 .btn-danger.active,.factory-bootstrap-459 .btn-danger:active,.factory-bootstrap-459 .btn-danger:focus,.factory-bootstrap-459 .btn-danger:hover,.factory-bootstrap-459 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-459 .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-459 .btn-info:focus,.factory-bootstrap-459 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-459 .btn-info.active,.factory-bootstrap-459 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-459 .img-thumbnail,.factory-bootstrap-459 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-459 .dropdown-menu>li>a:focus,.factory-bootstrap-459 .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-459 .dropdown-menu>.active>a,.factory-bootstrap-459 .dropdown-menu>.active>a:focus,.factory-bootstrap-459 .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-459 .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-459 .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-459 .navbar-brand,.factory-bootstrap-459 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-459 .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-459 .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-459 .navbar-inverse .navbar-brand,.factory-bootstrap-459 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-459 .navbar-fixed-bottom,.factory-bootstrap-459 .navbar-fixed-top,.factory-bootstrap-459 .navbar-static-top{border-radius:0}.factory-bootstrap-459 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-459 .alert .actions{padding-top:10px}.factory-bootstrap-459 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-459 .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-459 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-459 .alert-normal,.factory-bootstrap-459 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-459 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-459 .alert-danger a:not(.btn),.factory-bootstrap-459 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .list-group-item.active,.factory-bootstrap-459 .list-group-item.active:focus,.factory-bootstrap-459 .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-459 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-459 .factory-hidden{display:none}.factory-bootstrap-459 .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.datetimepicker.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:before{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);top:-7px;left:7px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.bottom:after{border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;top:-6px;left:8px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.top:before{border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);bottom:-7px;left:6px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.top:after{border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #fff;bottom:-6px;left:7px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-459 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-459 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-459 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-459 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-459 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=incrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Hours"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=incrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Increment Minutes"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=decrementHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Hours"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=decrementMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Decrement Minutes"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=showHours]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Hours"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=showMinutes]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Show Minutes"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=togglePeriod]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle AM/PM"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=clear]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Clear the picker"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .btn[data-action=today]::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Set the date to today"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .picker-switch::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Toggle Date and Time Screens"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th.prev::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Previous Month"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table th.next::after{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0;content:"Next Month"}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.today:before{content:'';display:inline-block;border:solid transparent;border-width:0 0 7px 7px;border-bottom-color:#337ab7;border-top-color:rgba(0,0,0,.2);position:absolute;bottom:4px;right:4px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td span{display:inline-block;width:54px;height:54px;line-height:54px;margin:2px 1.5px;cursor:pointer;border-radius:4px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-459 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-459 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-459 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-459 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-459 .sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}
|
libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#a3b745;border-color:#839237}
|
libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-459 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-459 .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-459 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-459 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-459 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-459 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-459 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-459 .factory-form-group legend+.control-group{margin-top:0}
|
libs/factory/bootstrap/assets/css-min/bootstrap.form-metabox.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-form-metabox{padding:15px 10px 10px}.factory-form-metabox .control-group:last-child{margin-bottom:0}#side-sortables .factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-form-metabox{padding:15px 10px 10px}.factory-form-metabox .control-group:last-child{margin-bottom:0}#side-sortables .factory-bootstrap-459 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-459 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-459 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-459 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-459 .form-group{float:none;width:auto;overflow:auto;margin-bottom:0;border-top:1px solid #f7f7f7;padding-top:15px;margin-top:15px}#side-sortables .factory-bootstrap-459 .form-group:first-child{border-top:0;padding-top:0;margin-top:0}
|
libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#04a4cc;border-color:#037c9a}
|
libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#e14d43;border-color:#d02a21}
|
libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#9ebaa0;border-color:#80a583}
|
libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
|
libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .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-459 .btn-primary:focus,.factory-bootstrap-459 .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-459 .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-459 .btn-primary:disabled,.factory-bootstrap-459 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-459 .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-459 .pagination>.active>a,.factory-bootstrap-459 .pagination>.active>a:focus,.factory-bootstrap-459 .pagination>.active>a:hover,.factory-bootstrap-459 .pagination>.active>span,.factory-bootstrap-459 .pagination>.active>span:focus,.factory-bootstrap-459 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
|
libs/factory/bootstrap/assets/css-min/bootstrap.tab.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-459 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-459 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-459 .nav-tabs a{text-decoration:none}.factory-bootstrap-459 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-459 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-459 .factory-align-vertical .factory-headers .nav-tabs{border-bottom:0;display:block;margin:0;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px}.factory-bootstrap-459 .factory-tab .factory-bodies{background-color:#fff;-webkit-border-radius:0 3px 3px;-moz-border-radius:0 3px 3px;border-radius:0 3px 3px;border:1px solid #DDD;padding:30px 15px 25px 10px}.factory-bootstrap-459 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-459 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-459 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-459 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-459 .factory-align-vertical .nav-tabs li a{margin-right:-1px;margin-bottom:0;position:relative;z-index:10;padding:10px 0 9px 15px;-webkit-border-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-bottom-right-radius:0;-moz-border-radius:3px;-moz-border-radius-topright:0;-moz-border-radius-bottomright:0;border-radius:3px;border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-459 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-459 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-459 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-459 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-459 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-459 .factory-align-vertical .control-group textarea{width:90%}
|
libs/factory/bootstrap/assets/css-min/bootstrap.wp-editor.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-459 .wp-editor-wrap .button,.factory-bootstrap-459 .wp-editor-wrap input,.factory-bootstrap-459 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-459 .switch-html,.factory-bootstrap-459 .switch-tmce{color:#777}.factory-bootstrap-459 .html-active .switch-html,.factory-bootstrap-459 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-459 .switch-html:hover,.factory-bootstrap-459 .switch-tmce:hover{color:#777}
|
libs/factory/bootstrap/assets/css-min/control.checkbox.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
#side-sortables .factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
#side-sortables .factory-bootstrap-459 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-459 .factory-checkbox-disabled button,.factory-bootstrap-459 .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-459 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-459 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-459 .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-459 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-459 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-and-opacity.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-459 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-459 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-459 .iris-picker{margin-top:10px}
|
libs/factory/bootstrap/assets/css-min/control.color.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-color{position:relative}.factory-bootstrap-459 .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-459 .factory-color .factory-background,.factory-bootstrap-459 .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-459 .factory-color .factory-background{z-index:2;border-radius:3px}
|
libs/factory/bootstrap/assets/css-min/control.dropdown-and-colors.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-459 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-459 .factory-dropdown-and-colors .factory-dropdown-wrap{min-width:200px;max-width:300px}
|
libs/factory/bootstrap/assets/css-min/control.dropdown.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-459 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-459 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .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-459 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-459 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-459 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-459 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
|
libs/factory/bootstrap/assets/css-min/control.fonts.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-459 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-459 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-459 .iris-picker{margin-top:10px}.factory-bootstrap-459 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-459 .factory-font .chosen-results{max-height:150px}
|
libs/factory/bootstrap/assets/css-min/control.list.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-459 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-459 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-459 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-459 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-459 .factory-list .factory-error-text,.factory-bootstrap-459 .factory-list-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;padding:10px 12px 12px;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:2px}.factory-bootstrap-459 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-459 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-459 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-459 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-459 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-459 .factory-checklist-way.factory-empty{font-style:italic;margin-top:7px}
|
libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-459 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-459 .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-459 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-459 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-459 .factory-mtextbox-add-item{display:block;margin-top:10px}
|
libs/factory/bootstrap/assets/css-min/control.pattern.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-459 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-459 .factory-pattern .factory-preview{width:100px;height:26px;background:transparent url(../assets/assets/images/color_picker_pattern.jpg) repeat;border:0;border-radius:3px;cursor:pointer;-moz-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid rgba(0,0,0,.34)!important;position:relative}.factory-bootstrap-459 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-459 .factory-pattern .factory-preview span{position:absolute;top:0;left:76px;background:#111;width:26px;height:26px;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0;z-index:99;border-bottom:2px solid #000}.factory-bootstrap-459 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-459 .factory-pattern .factory-preview span:after{content:'';width:0;height:0;border:transparent solid 5px;border-top-color:#96a6a6;position:absolute;top:10px;right:7px;z-index:1}.factory-bootstrap-459 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-459 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-459 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-459 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-459 .factory-pattern .factory-color,.factory-bootstrap-459 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-459 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-459 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-459 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-459 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-459 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-459 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-459 .factory-pattern .factory-patterns-item,.factory-bootstrap-459 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-459 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-459 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-459 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-459 .factory-pattern .factory-patterns-item:hover .factory-pattern-holder{width:64px;height:64px;top:-10px;left:-10px;border:1px solid #333;z-index:10}.factory-bootstrap-459 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-459 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-459 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-459 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-459 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-459 .factory-pattern .factory-change-color-btn{margin-left:5px}
|
libs/factory/bootstrap/assets/css-min/control.radio-colors.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-from-radio-label,.factory-bootstrap-459 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-459 .factory-from-radio-label{position:relative;width:30px;height:30px;border-radius:3px;background-color:#fff;border:1px solid rgba(0,0,0,.1)}.factory-bootstrap-459 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-459 .factory-from-radio-label>span{display:block;position:absolute;top:2px;left:2px;right:2px;bottom:2px;text-indent:-9999px;background-color:#fff}.factory-bootstrap-459 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-459 .factory-radio-color{opacity:0}
|
libs/factory/bootstrap/assets/css-min/holder.more-link.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-459 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-459 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-459 .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-459 .factory-tab .factory-more-link-hide:hover{color:#999}
|
libs/factory/bootstrap/assets/css-min/plugin.gradient-picker.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-459 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../assets/images/color_picker_pattern.jpg) repeat}.factory-bootstrap-459 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-459 .factory-point,.factory-bootstrap-459 .factory-point-color{position:absolute;width:10px;height:10px;border:0;font-size:0;border-radius:50% 50% 100% 100%;-moz-border-radius:50% 50% 100% 100%;-webkit-border-radius:50% 50% 100% 100%;cursor:pointer;overflow:hidden}.factory-bootstrap-459 .factory-point-color{border-radius:0}.factory-bootstrap-459 .factory-point{background:transparent url(../../assets/images/color_picker_pattern.jpg) repeat}.factory-bootstrap-459 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-459 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-459 .gradientPicker-iris-wrap{display:none;position:absolute;left:0;top:78px;width:212px;height:212px;background:#111;border:1px solid #222;border-radius:5px;-moz-border-radius:5px;-webkit-border-radius:5px;z-index:9999}.factory-bootstrap-459 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-459 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-459 .gradientPicker-pallets{padding:8px 0 3px;margin-bottom:10px;border-bottom:1px solid #323232;border-top:1px solid #323232;font-size:0;line-height:0;text-align:center}.factory-bootstrap-459 .factory-preset-gradient,.factory-bootstrap-459 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-459 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-459 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-459 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-459 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-459 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-459 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-459 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-459 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-459 .factory-color-picker-container .factory-color-hex{top:0;left:0;position:absolute;width:65px}
|
libs/factory/bootstrap/assets/css-min/plugin.paddings-editor.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-459 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-459 .factory-paddings-editor .factory-rectangle{width:120px;height:90px;border-radius:10px;background-color:#a6b6b6;overflow:hidden;cursor:pointer;-moz-box-sizing:content-box;box-sizing:content-box;position:absolute;top:0;left:0}.factory-bootstrap-459 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-459 .factory-paddings-editor .factory-side-center{width:30px;height:30px;border-radius:100%;background-color:#bac9c9;position:absolute;top:30px;left:45px;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-459 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-459 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-459 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-459 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-459 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-459 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-459 .factory-paddings-editor .factory-rectangle .factory-visible-value{color:#1b1f1f;background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-459 .factory-paddings-editor .factory-rectangle .factory-side.factory-active .factory-visible-value{background-color:rgba(255,255,255,.3);border-radius:3px;padding:2px;line-height:13px;display:inline-block}.factory-bootstrap-459 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-459 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-459 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-459 .factory-paddings-editor .factory-side-left,.factory-bootstrap-459 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-459 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-459 .factory-paddings-editor .factory-slider{padding-right:0;margin-top:7px}
|
libs/factory/bootstrap/assets/js-min/bootstrap.accordion.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a,b,c,d){"use strict";a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a,b,c,d){"use strict";a.fn.factoryBootstrap459_accordion=function(){return this.each(function(){var b=a(this),c=!1;a("."+b.attr("class")+" > div:first").show(),a("."+b.attr("class")+" > div:first").add("."+b.attr("class")+" > h3:first").addClass("active"),a("."+b.attr("class")+" > h3").on("click",function(){var d=a(this),e=d.next();return d.hasClass("active")||c||(c=!0,d.parent().children("div").slideUp(500),a("."+b.attr("class")+" > h3").removeClass("active"),d.addClass("active"),e.addClass("active").slideDown({duration:500,complete:function(){c=!1,b.trigger("shown.bs.accordion",[d])},progress:function(){b.trigger("progress.bs.accordion",[d])}})),!1})})},a(function(){a(".factory-bootstrap-459 .factory-accordion").factoryBootstrap459_accordion()})}(jQuery,window,document);
|
libs/factory/bootstrap/assets/js-min/bootstrap.collapse.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},a.fn.factoryBootstrap459_collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.factoryBootstrap459_collapse.Constructor=b,a(document).on("click.bs.collapse.data-api","[data-toggle=factory-collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=factory-collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.datetimepicker.min.js
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
!function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)module.exports=a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(){return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone},y=function(a){var c;return c=void 0===a||null===a?b():b.isDate(a)||b.isMoment(a)?b(a):x()?b.tz(a,j,d.useStrict,d.timeZone):b(a,j,d.useStrict),x()&&c.tz(d.timeZone),c},z=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==i.indexOf("Y");case"M":return-1!==i.indexOf("M");case"d":return-1!==i.toLowerCase().indexOf("d");case"h":case"H":return-1!==i.toLowerCase().indexOf("h");case"m":return-1!==i.indexOf("m");case"s":return-1!==i.indexOf("s");default:return!1}},A=function(){return z("h")||z("m")||z("s")},B=function(){return z("y")||z("M")||z("d")},C=function(){var b=a("<thead>").append(a("<tr>").append(a("<th>").addClass("prev").attr("data-action","previous").append(a("<span>").addClass(d.icons.previous))).append(a("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("<th>").addClass("next").attr("data-action","next").append(a("<span>").addClass(d.icons.next)))),c=a("<tbody>").append(a("<tr>").append(a("<td>").attr("colspan",d.calendarWeeks?"8":"7")));return[a("<div>").addClass("datepicker-days").append(a("<table>").addClass("table-condensed").append(b).append(a("<tbody>"))),a("<div>").addClass("datepicker-months").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-years").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-decades").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone()))]},D=function(){var b=a("<tr>"),c=a("<tr>"),e=a("<tr>");return z("h")&&(b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("<span>").addClass(d.icons.down))))),z("m")&&(z("h")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("<span>").addClass(d.icons.down))))),z("s")&&(z("m")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("<span>").addClass(d.icons.down))))),h||(b.append(a("<td>").addClass("separator")),c.append(a("<td>").append(a("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:d.tooltips.togglePeriod}))),e.append(a("<td>").addClass("separator"))),a("<div>").addClass("timepicker-picker").append(a("<table>").addClass("table-condensed").append([b,c,e]))},E=function(){var b=a("<div>").addClass("timepicker-hours").append(a("<table>").addClass("table-condensed")),c=a("<div>").addClass("timepicker-minutes").append(a("<table>").addClass("table-condensed")),d=a("<div>").addClass("timepicker-seconds").append(a("<table>").addClass("table-condensed")),e=[D()];return z("h")&&e.push(b),z("m")&&e.push(c),z("s")&&e.push(d),e},F=function(){var b=[];return d.showTodayButton&&b.push(a("<td>").append(a("<a>").attr({"data-action":"today",title:d.tooltips.today}).append(a("<span>").addClass(d.icons.today)))),!d.sideBySide&&B()&&A()&&b.push(a("<td>").append(a("<a>").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("<span>").addClass(d.icons.time)))),d.showClear&&b.push(a("<td>").append(a("<a>").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("<span>").addClass(d.icons.clear)))),d.showClose&&b.push(a("<td>").append(a("<a>").attr({"data-action":"close",title:d.tooltips.close}).append(a("<span>").addClass(d.icons.close)))),a("<table>").addClass("table-condensed").append(a("<tbody>").append(a("<tr>").append(b)))},G=function(){var b=a("<div>").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("<div>").addClass("datepicker").append(C()),e=a("<div>").addClass("timepicker").append(E()),f=a("<ul>").addClass("list-unstyled"),g=a("<li>").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(F());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),z("s")&&!h&&b.addClass("wider"),d.sideBySide&&B()&&A()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("<div>").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),B()&&f.append(a("<li>").addClass(d.collapse&&A()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("<li>").addClass(d.collapse&&B()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},H=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},I=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()<f.top?"top":"bottom"),"auto"===h&&(h=b.width()<f.left+o.outerWidth()/2&&f.left+o.outerWidth()>a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"static"===b.css("position")&&(b=b.parents().filter(function(){return"static"!==a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a non-static positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?b.outerHeight()-(b===c?0:e.top):"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},J=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},K=function(a){"y"===a&&(a="YYYY"),J({type:"dp.update",change:a,viewDate:f.clone()})},L=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},M=function(){var b=a("<tr>"),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a("<th>").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("<th>").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},N=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},P=function(a){return d.disabledHours[a.format("H")]===!0},Q=function(a){return d.enabledHours[a.format("H")]===!0},R=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&N(b))return!1;if(d.enabledDates&&"d"===c&&!O(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&P(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!Q(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},S=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("<span>").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},T=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),R(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),R(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){R(f.clone().month(b),"M")||a(this).addClass("disabled")})},U=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+='<span data-action="selectYear" class="year'+(c.isSame(e,"y")&&!m?" active":"")+(R(c,"y")?"":" disabled")+'">'+c.year()+"</span>",c.add(1,"y");a.find("td").html(h)},V=function(){var a,c=o.find(".datepicker-decades"),g=c.find("th"),h=b({y:f.year()-f.year()%100-1}),i=h.clone().add(100,"y"),j=h.clone(),k=!1,l=!1,m="";for(g.eq(0).find("span").attr("title",d.tooltips.prevCentury),g.eq(2).find("span").attr("title",d.tooltips.nextCentury),c.find(".disabled").removeClass("disabled"),(h.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(h,"y"))&&g.eq(0).addClass("disabled"),g.eq(1).text(h.year()+"-"+i.year()),(h.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(i,"y"))&&g.eq(2).addClass("disabled");!h.isAfter(i,"y");)a=h.year()+12,k=d.minDate&&d.minDate.isAfter(h,"y")&&d.minDate.year()<=a,l=d.maxDate&&d.maxDate.isAfter(h,"y")&&d.maxDate.year()<=a,m+='<span data-action="selectDecade" class="decade'+(e.isAfter(h)&&e.year()<=a?" active":"")+(R(h,"y")||k||l?"":" disabled")+'" data-selection="'+(h.year()+6)+'">'+(h.year()+1)+" - "+(h.year()+12)+"</span>",h.add(12,"y");m+="<span></span><span></span><span></span>",c.find("td").html(m),g.eq(1).text(j.year()+1+"-"+h.year())},W=function(){var b,c,g,h=o.find(".datepicker-days"),i=h.find("th"),j=[],k=[];if(B()){for(i.eq(0).find("span").attr("title",d.tooltips.prevMonth),i.eq(1).attr("title",d.tooltips.selectMonth),i.eq(2).find("span").attr("title",d.tooltips.nextMonth),h.find(".disabled").removeClass("disabled"),i.eq(1).text(f.format(d.dayViewHeaderFormat)),R(f.clone().subtract(1,"M"),"M")||i.eq(0).addClass("disabled"),R(f.clone().add(1,"M"),"M")||i.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),g=0;42>g;g++)0===b.weekday()&&(c=a("<tr>"),d.calendarWeeks&&c.append('<td class="cw">'+b.week()+"</td>"),j.push(c)),k=["day"],b.isBefore(f,"M")&&k.push("old"),b.isAfter(f,"M")&&k.push("new"),b.isSame(e,"d")&&!m&&k.push("active"),R(b,"d")||k.push("disabled"),b.isSame(y(),"d")&&k.push("today"),(0===b.day()||6===b.day())&&k.push("weekend"),J({type:"dp.classify",date:b,classNames:k}),c.append('<td data-action="selectDay" data-day="'+b.format("L")+'" class="'+k.join(" ")+'">'+b.date()+"</td>"),b.add(1,"d");h.find("tbody").empty().append(j),T(),U(),V()}},X=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("<tr>");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectHour" class="hour'+(R(c,"h")?"":" disabled")+'">'+c.format(h?"HH":"hh")+"</td>"),c.add(1,"h");b.empty().append(d)},Y=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a("<tr>"),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a("<tr>"),e.push(g)),g.append('<td data-action="selectMinute" class="minute'+(R(c,"m")?"":" disabled")+'">'+c.format("mm")+"</td>"),c.add(h,"m");b.empty().append(e)},Z=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("<tr>");f.isSame(c,"m");)c.second()%20===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectSecond" class="second'+(R(c,"s")?"":" disabled")+'">'+c.format("ss")+"</td>"),c.add(5,"s");b.empty().append(d)},$=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),R(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),X(),Y(),Z()},_=function(){o&&(W(),$())},aa=function(a){var b=m?null:e;if(!a)return m=!0,g.val(""),c.data("date",""),J({type:"dp.change",date:!1,oldDate:b}),void _();if(a=a.clone().locale(d.locale),x()&&a.tz(d.timeZone),1!==d.stepping)for(a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping).seconds(0);d.minDate&&a.isBefore(d.minDate);)a.add(d.stepping,"minutes");R(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,_(),J({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid?J({type:"dp.change",date:a,oldDate:b}):g.val(m?"":e.format(i)),J({type:"dp.error",date:a,oldDate:b}))},ba=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",I),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,J({type:"dp.hide",date:e.clone()}),g.blur(),f=e.clone(),l)):l},ca=function(){aa(null)},da=function(a){return void 0===d.parseInputDate?(!b.isMoment(a)||a instanceof Date)&&(a=y(a)):a=d.parseInputDate(a),a},ea={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),W(),K(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),W(),K(a)},pickerSwitch:function(){L(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(aa(e.clone().year(f.year()).month(f.month())),d.inline||ba()):(L(-1),W()),K("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),aa(c.date(parseInt(a(b.target).text(),10))),A()||d.keepOpen||d.inline||ba()},incrementHours:function(){var a=e.clone().add(1,"h");R(a,"h")&&aa(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");R(a,"m")&&aa(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");R(a,"s")&&aa(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");R(a,"h")&&aa(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");R(a,"m")&&aa(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");R(a,"s")&&aa(a)},togglePeriod:function(){aa(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),aa(e.clone().hours(c)),ea.showPicker.call(l)},selectMinute:function(b){aa(e.clone().minutes(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},selectSecond:function(b){aa(e.clone().seconds(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},clear:ca,today:function(){var a=y();R(a,"d")&&aa(a)},close:ba},fa=function(b){return a(b.currentTarget).is(".disabled")?!1:(ea[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ga=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?aa(da(g.val().trim())):m&&d.useCurrent&&(d.inline||g.is("input")&&0===g.val().trim().length)&&(b=y(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),aa(b)),o=G(),M(),S(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),_(),L(),a(window).on("resize",I),o.on("click","[data-action]",fa),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),I(),o.show(),d.focusOnShow&&!g.is(":focus")&&g.focus(),J({type:"dp.show"}),l)},ha=function(){return o?ba():ga()},ia=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ja=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ka=function(b){var c=a(b.target).val().trim(),d=c?da(c):null;return aa(d),b.stopImmediatePropagation(),!1},la=function(){g.on({change:ka,blur:d.debug?"":ba,keydown:ia,keyup:ja,focus:d.allowInputToggle?ga:""}),c.is("input")?g.on({focus:ga}):n&&(n.on("click",ha),n.on("mousedown",!1))},ma=function(){g.off({change:ka,blur:blur,keydown:ia,keyup:ja,focus:d.allowInputToggle?ba:""}),c.is("input")?g.off({focus:ga}):n&&(n.off("click",ha),n.off("mousedown",!1))},na=function(b){var c={};return a.each(b,function(){var a=da(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},oa=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},pa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,z("y")&&(p=2),z("M")&&(p=1),z("d")&&(p=0),k=Math.max(p,k),m||aa(e)};if(l.destroy=function(){ba(),ma(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=ha,l.show=ga,l.hide=ba,l.disable=function(){return ba(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return aa(null===a?null:da(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a string or boolean:false parameter "+a);return d.format=a,i&&pa(),l},l.timeZone=function(a){if(0===arguments.length)return d.timeZone;if("string"!=typeof a)throw new TypeError("newZone() expects a string parameter");return d.timeZone=a,l},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&pa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=na(b),d.enabledDates=!1,_(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=na(b),d.disabledDates=!1,_(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,_(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!R(e,"d");){if(e.add(1,"d"),31===b)throw"Tried 31 times to find a valid date";b++}aa(e)}return _(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&aa(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),_(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&aa(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),_(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&(a="now"===a||"moment"===a?y():y(a));var b=da(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!R(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&aa(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&pa(),o&&(ba(),ga()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(ba(),ga()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(ba(),ga()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(ba(),ga()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(ba(),ga()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),L(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(ba(),ga()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return _(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,_(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(ba(),ga()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(ba(),ga()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(ba(),ga()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ca(),l},l.keyBinds=function(a){return 0===arguments.length?d.keyBinds:(d.keyBinds=a,l)},l.getMoment=function(a){return y(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");
|
11 |
-
return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,_(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=oa(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=oa(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=da(a),K(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.length)g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").length?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=y(),f=e.clone(),a.extend(!0,d,H()),l.options(d),pa(),la(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?aa(da(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&aa(d.defaultDate),d.inline&&ga(),l};return a.fn.
|
8 |
*/
|
9 |
|
10 |
!function(a){"use strict";if("function"==typeof define&&define.amd)define(["jquery","moment"],a);else if("object"==typeof exports)module.exports=a(require("jquery"),require("moment"));else{if("undefined"==typeof jQuery)throw"bootstrap-datetimepicker requires jQuery to be loaded first";if("undefined"==typeof moment)throw"bootstrap-datetimepicker requires Moment.js to be loaded first";a(jQuery,moment)}}(function(a,b){"use strict";if(!b)throw new Error("bootstrap-datetimepicker requires Moment.js to be loaded first");var c=function(c,d){var e,f,g,h,i,j,k,l={},m=!0,n=!1,o=!1,p=0,q=[{clsName:"days",navFnc:"M",navStep:1},{clsName:"months",navFnc:"y",navStep:1},{clsName:"years",navFnc:"y",navStep:10},{clsName:"decades",navFnc:"y",navStep:100}],r=["days","months","years","decades"],s=["top","bottom","auto"],t=["left","right","auto"],u=["default","top","bottom"],v={up:38,38:"up",down:40,40:"down",left:37,37:"left",right:39,39:"right",tab:9,9:"tab",escape:27,27:"escape",enter:13,13:"enter",pageUp:33,33:"pageUp",pageDown:34,34:"pageDown",shift:16,16:"shift",control:17,17:"control",space:32,32:"space",t:84,84:"t","delete":46,46:"delete"},w={},x=function(){return void 0!==b.tz&&void 0!==d.timeZone&&null!==d.timeZone&&""!==d.timeZone},y=function(a){var c;return c=void 0===a||null===a?b():b.isDate(a)||b.isMoment(a)?b(a):x()?b.tz(a,j,d.useStrict,d.timeZone):b(a,j,d.useStrict),x()&&c.tz(d.timeZone),c},z=function(a){if("string"!=typeof a||a.length>1)throw new TypeError("isEnabled expects a single character string parameter");switch(a){case"y":return-1!==i.indexOf("Y");case"M":return-1!==i.indexOf("M");case"d":return-1!==i.toLowerCase().indexOf("d");case"h":case"H":return-1!==i.toLowerCase().indexOf("h");case"m":return-1!==i.indexOf("m");case"s":return-1!==i.indexOf("s");default:return!1}},A=function(){return z("h")||z("m")||z("s")},B=function(){return z("y")||z("M")||z("d")},C=function(){var b=a("<thead>").append(a("<tr>").append(a("<th>").addClass("prev").attr("data-action","previous").append(a("<span>").addClass(d.icons.previous))).append(a("<th>").addClass("picker-switch").attr("data-action","pickerSwitch").attr("colspan",d.calendarWeeks?"6":"5")).append(a("<th>").addClass("next").attr("data-action","next").append(a("<span>").addClass(d.icons.next)))),c=a("<tbody>").append(a("<tr>").append(a("<td>").attr("colspan",d.calendarWeeks?"8":"7")));return[a("<div>").addClass("datepicker-days").append(a("<table>").addClass("table-condensed").append(b).append(a("<tbody>"))),a("<div>").addClass("datepicker-months").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-years").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone())),a("<div>").addClass("datepicker-decades").append(a("<table>").addClass("table-condensed").append(b.clone()).append(c.clone()))]},D=function(){var b=a("<tr>"),c=a("<tr>"),e=a("<tr>");return z("h")&&(b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementHour}).addClass("btn").attr("data-action","incrementHours").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-hour").attr({"data-time-component":"hours",title:d.tooltips.pickHour}).attr("data-action","showHours"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementHour}).addClass("btn").attr("data-action","decrementHours").append(a("<span>").addClass(d.icons.down))))),z("m")&&(z("h")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementMinute}).addClass("btn").attr("data-action","incrementMinutes").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-minute").attr({"data-time-component":"minutes",title:d.tooltips.pickMinute}).attr("data-action","showMinutes"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementMinute}).addClass("btn").attr("data-action","decrementMinutes").append(a("<span>").addClass(d.icons.down))))),z("s")&&(z("m")&&(b.append(a("<td>").addClass("separator")),c.append(a("<td>").addClass("separator").html(":")),e.append(a("<td>").addClass("separator"))),b.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.incrementSecond}).addClass("btn").attr("data-action","incrementSeconds").append(a("<span>").addClass(d.icons.up)))),c.append(a("<td>").append(a("<span>").addClass("timepicker-second").attr({"data-time-component":"seconds",title:d.tooltips.pickSecond}).attr("data-action","showSeconds"))),e.append(a("<td>").append(a("<a>").attr({href:"#",tabindex:"-1",title:d.tooltips.decrementSecond}).addClass("btn").attr("data-action","decrementSeconds").append(a("<span>").addClass(d.icons.down))))),h||(b.append(a("<td>").addClass("separator")),c.append(a("<td>").append(a("<button>").addClass("btn btn-primary").attr({"data-action":"togglePeriod",tabindex:"-1",title:d.tooltips.togglePeriod}))),e.append(a("<td>").addClass("separator"))),a("<div>").addClass("timepicker-picker").append(a("<table>").addClass("table-condensed").append([b,c,e]))},E=function(){var b=a("<div>").addClass("timepicker-hours").append(a("<table>").addClass("table-condensed")),c=a("<div>").addClass("timepicker-minutes").append(a("<table>").addClass("table-condensed")),d=a("<div>").addClass("timepicker-seconds").append(a("<table>").addClass("table-condensed")),e=[D()];return z("h")&&e.push(b),z("m")&&e.push(c),z("s")&&e.push(d),e},F=function(){var b=[];return d.showTodayButton&&b.push(a("<td>").append(a("<a>").attr({"data-action":"today",title:d.tooltips.today}).append(a("<span>").addClass(d.icons.today)))),!d.sideBySide&&B()&&A()&&b.push(a("<td>").append(a("<a>").attr({"data-action":"togglePicker",title:d.tooltips.selectTime}).append(a("<span>").addClass(d.icons.time)))),d.showClear&&b.push(a("<td>").append(a("<a>").attr({"data-action":"clear",title:d.tooltips.clear}).append(a("<span>").addClass(d.icons.clear)))),d.showClose&&b.push(a("<td>").append(a("<a>").attr({"data-action":"close",title:d.tooltips.close}).append(a("<span>").addClass(d.icons.close)))),a("<table>").addClass("table-condensed").append(a("<tbody>").append(a("<tr>").append(b)))},G=function(){var b=a("<div>").addClass("bootstrap-datetimepicker-widget dropdown-menu"),c=a("<div>").addClass("datepicker").append(C()),e=a("<div>").addClass("timepicker").append(E()),f=a("<ul>").addClass("list-unstyled"),g=a("<li>").addClass("picker-switch"+(d.collapse?" accordion-toggle":"")).append(F());return d.inline&&b.removeClass("dropdown-menu"),h&&b.addClass("usetwentyfour"),z("s")&&!h&&b.addClass("wider"),d.sideBySide&&B()&&A()?(b.addClass("timepicker-sbs"),"top"===d.toolbarPlacement&&b.append(g),b.append(a("<div>").addClass("row").append(c.addClass("col-md-6")).append(e.addClass("col-md-6"))),"bottom"===d.toolbarPlacement&&b.append(g),b):("top"===d.toolbarPlacement&&f.append(g),B()&&f.append(a("<li>").addClass(d.collapse&&A()?"collapse in":"").append(c)),"default"===d.toolbarPlacement&&f.append(g),A()&&f.append(a("<li>").addClass(d.collapse&&B()?"collapse":"").append(e)),"bottom"===d.toolbarPlacement&&f.append(g),b.append(f))},H=function(){var b,e={};return b=c.is("input")||d.inline?c.data():c.find("input").data(),b.dateOptions&&b.dateOptions instanceof Object&&(e=a.extend(!0,e,b.dateOptions)),a.each(d,function(a){var c="date"+a.charAt(0).toUpperCase()+a.slice(1);void 0!==b[c]&&(e[a]=b[c])}),e},I=function(){var b,e=(n||c).position(),f=(n||c).offset(),g=d.widgetPositioning.vertical,h=d.widgetPositioning.horizontal;if(d.widgetParent)b=d.widgetParent.append(o);else if(c.is("input"))b=c.after(o).parent();else{if(d.inline)return void(b=c.append(o));b=c,c.children().first().after(o)}if("auto"===g&&(g=f.top+1.5*o.height()>=a(window).height()+a(window).scrollTop()&&o.height()+c.outerHeight()<f.top?"top":"bottom"),"auto"===h&&(h=b.width()<f.left+o.outerWidth()/2&&f.left+o.outerWidth()>a(window).width()?"right":"left"),"top"===g?o.addClass("top").removeClass("bottom"):o.addClass("bottom").removeClass("top"),"right"===h?o.addClass("pull-right"):o.removeClass("pull-right"),"static"===b.css("position")&&(b=b.parents().filter(function(){return"static"!==a(this).css("position")}).first()),0===b.length)throw new Error("datetimepicker component should be placed within a non-static positioned container");o.css({top:"top"===g?"auto":e.top+c.outerHeight(),bottom:"top"===g?b.outerHeight()-(b===c?0:e.top):"auto",left:"left"===h?b===c?0:e.left:"auto",right:"left"===h?"auto":b.outerWidth()-c.outerWidth()-(b===c?0:e.left)})},J=function(a){"dp.change"===a.type&&(a.date&&a.date.isSame(a.oldDate)||!a.date&&!a.oldDate)||c.trigger(a)},K=function(a){"y"===a&&(a="YYYY"),J({type:"dp.update",change:a,viewDate:f.clone()})},L=function(a){o&&(a&&(k=Math.max(p,Math.min(3,k+a))),o.find(".datepicker > div").hide().filter(".datepicker-"+q[k].clsName).show())},M=function(){var b=a("<tr>"),c=f.clone().startOf("w").startOf("d");for(d.calendarWeeks===!0&&b.append(a("<th>").addClass("cw").text("#"));c.isBefore(f.clone().endOf("w"));)b.append(a("<th>").addClass("dow").text(c.format("dd"))),c.add(1,"d");o.find(".datepicker-days thead").append(b)},N=function(a){return d.disabledDates[a.format("YYYY-MM-DD")]===!0},O=function(a){return d.enabledDates[a.format("YYYY-MM-DD")]===!0},P=function(a){return d.disabledHours[a.format("H")]===!0},Q=function(a){return d.enabledHours[a.format("H")]===!0},R=function(b,c){if(!b.isValid())return!1;if(d.disabledDates&&"d"===c&&N(b))return!1;if(d.enabledDates&&"d"===c&&!O(b))return!1;if(d.minDate&&b.isBefore(d.minDate,c))return!1;if(d.maxDate&&b.isAfter(d.maxDate,c))return!1;if(d.daysOfWeekDisabled&&"d"===c&&-1!==d.daysOfWeekDisabled.indexOf(b.day()))return!1;if(d.disabledHours&&("h"===c||"m"===c||"s"===c)&&P(b))return!1;if(d.enabledHours&&("h"===c||"m"===c||"s"===c)&&!Q(b))return!1;if(d.disabledTimeIntervals&&("h"===c||"m"===c||"s"===c)){var e=!1;if(a.each(d.disabledTimeIntervals,function(){return b.isBetween(this[0],this[1])?(e=!0,!1):void 0}),e)return!1}return!0},S=function(){for(var b=[],c=f.clone().startOf("y").startOf("d");c.isSame(f,"y");)b.push(a("<span>").attr("data-action","selectMonth").addClass("month").text(c.format("MMM"))),c.add(1,"M");o.find(".datepicker-months td").empty().append(b)},T=function(){var b=o.find(".datepicker-months"),c=b.find("th"),g=b.find("tbody").find("span");c.eq(0).find("span").attr("title",d.tooltips.prevYear),c.eq(1).attr("title",d.tooltips.selectYear),c.eq(2).find("span").attr("title",d.tooltips.nextYear),b.find(".disabled").removeClass("disabled"),R(f.clone().subtract(1,"y"),"y")||c.eq(0).addClass("disabled"),c.eq(1).text(f.year()),R(f.clone().add(1,"y"),"y")||c.eq(2).addClass("disabled"),g.removeClass("active"),e.isSame(f,"y")&&!m&&g.eq(e.month()).addClass("active"),g.each(function(b){R(f.clone().month(b),"M")||a(this).addClass("disabled")})},U=function(){var a=o.find(".datepicker-years"),b=a.find("th"),c=f.clone().subtract(5,"y"),g=f.clone().add(6,"y"),h="";for(b.eq(0).find("span").attr("title",d.tooltips.prevDecade),b.eq(1).attr("title",d.tooltips.selectDecade),b.eq(2).find("span").attr("title",d.tooltips.nextDecade),a.find(".disabled").removeClass("disabled"),d.minDate&&d.minDate.isAfter(c,"y")&&b.eq(0).addClass("disabled"),b.eq(1).text(c.year()+"-"+g.year()),d.maxDate&&d.maxDate.isBefore(g,"y")&&b.eq(2).addClass("disabled");!c.isAfter(g,"y");)h+='<span data-action="selectYear" class="year'+(c.isSame(e,"y")&&!m?" active":"")+(R(c,"y")?"":" disabled")+'">'+c.year()+"</span>",c.add(1,"y");a.find("td").html(h)},V=function(){var a,c=o.find(".datepicker-decades"),g=c.find("th"),h=b({y:f.year()-f.year()%100-1}),i=h.clone().add(100,"y"),j=h.clone(),k=!1,l=!1,m="";for(g.eq(0).find("span").attr("title",d.tooltips.prevCentury),g.eq(2).find("span").attr("title",d.tooltips.nextCentury),c.find(".disabled").removeClass("disabled"),(h.isSame(b({y:1900}))||d.minDate&&d.minDate.isAfter(h,"y"))&&g.eq(0).addClass("disabled"),g.eq(1).text(h.year()+"-"+i.year()),(h.isSame(b({y:2e3}))||d.maxDate&&d.maxDate.isBefore(i,"y"))&&g.eq(2).addClass("disabled");!h.isAfter(i,"y");)a=h.year()+12,k=d.minDate&&d.minDate.isAfter(h,"y")&&d.minDate.year()<=a,l=d.maxDate&&d.maxDate.isAfter(h,"y")&&d.maxDate.year()<=a,m+='<span data-action="selectDecade" class="decade'+(e.isAfter(h)&&e.year()<=a?" active":"")+(R(h,"y")||k||l?"":" disabled")+'" data-selection="'+(h.year()+6)+'">'+(h.year()+1)+" - "+(h.year()+12)+"</span>",h.add(12,"y");m+="<span></span><span></span><span></span>",c.find("td").html(m),g.eq(1).text(j.year()+1+"-"+h.year())},W=function(){var b,c,g,h=o.find(".datepicker-days"),i=h.find("th"),j=[],k=[];if(B()){for(i.eq(0).find("span").attr("title",d.tooltips.prevMonth),i.eq(1).attr("title",d.tooltips.selectMonth),i.eq(2).find("span").attr("title",d.tooltips.nextMonth),h.find(".disabled").removeClass("disabled"),i.eq(1).text(f.format(d.dayViewHeaderFormat)),R(f.clone().subtract(1,"M"),"M")||i.eq(0).addClass("disabled"),R(f.clone().add(1,"M"),"M")||i.eq(2).addClass("disabled"),b=f.clone().startOf("M").startOf("w").startOf("d"),g=0;42>g;g++)0===b.weekday()&&(c=a("<tr>"),d.calendarWeeks&&c.append('<td class="cw">'+b.week()+"</td>"),j.push(c)),k=["day"],b.isBefore(f,"M")&&k.push("old"),b.isAfter(f,"M")&&k.push("new"),b.isSame(e,"d")&&!m&&k.push("active"),R(b,"d")||k.push("disabled"),b.isSame(y(),"d")&&k.push("today"),(0===b.day()||6===b.day())&&k.push("weekend"),J({type:"dp.classify",date:b,classNames:k}),c.append('<td data-action="selectDay" data-day="'+b.format("L")+'" class="'+k.join(" ")+'">'+b.date()+"</td>"),b.add(1,"d");h.find("tbody").empty().append(j),T(),U(),V()}},X=function(){var b=o.find(".timepicker-hours table"),c=f.clone().startOf("d"),d=[],e=a("<tr>");for(f.hour()>11&&!h&&c.hour(12);c.isSame(f,"d")&&(h||f.hour()<12&&c.hour()<12||f.hour()>11);)c.hour()%4===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectHour" class="hour'+(R(c,"h")?"":" disabled")+'">'+c.format(h?"HH":"hh")+"</td>"),c.add(1,"h");b.empty().append(d)},Y=function(){for(var b=o.find(".timepicker-minutes table"),c=f.clone().startOf("h"),e=[],g=a("<tr>"),h=1===d.stepping?5:d.stepping;f.isSame(c,"h");)c.minute()%(4*h)===0&&(g=a("<tr>"),e.push(g)),g.append('<td data-action="selectMinute" class="minute'+(R(c,"m")?"":" disabled")+'">'+c.format("mm")+"</td>"),c.add(h,"m");b.empty().append(e)},Z=function(){for(var b=o.find(".timepicker-seconds table"),c=f.clone().startOf("m"),d=[],e=a("<tr>");f.isSame(c,"m");)c.second()%20===0&&(e=a("<tr>"),d.push(e)),e.append('<td data-action="selectSecond" class="second'+(R(c,"s")?"":" disabled")+'">'+c.format("ss")+"</td>"),c.add(5,"s");b.empty().append(d)},$=function(){var a,b,c=o.find(".timepicker span[data-time-component]");h||(a=o.find(".timepicker [data-action=togglePeriod]"),b=e.clone().add(e.hours()>=12?-12:12,"h"),a.text(e.format("A")),R(b,"h")?a.removeClass("disabled"):a.addClass("disabled")),c.filter("[data-time-component=hours]").text(e.format(h?"HH":"hh")),c.filter("[data-time-component=minutes]").text(e.format("mm")),c.filter("[data-time-component=seconds]").text(e.format("ss")),X(),Y(),Z()},_=function(){o&&(W(),$())},aa=function(a){var b=m?null:e;if(!a)return m=!0,g.val(""),c.data("date",""),J({type:"dp.change",date:!1,oldDate:b}),void _();if(a=a.clone().locale(d.locale),x()&&a.tz(d.timeZone),1!==d.stepping)for(a.minutes(Math.round(a.minutes()/d.stepping)*d.stepping).seconds(0);d.minDate&&a.isBefore(d.minDate);)a.add(d.stepping,"minutes");R(a)?(e=a,f=e.clone(),g.val(e.format(i)),c.data("date",e.format(i)),m=!1,_(),J({type:"dp.change",date:e.clone(),oldDate:b})):(d.keepInvalid?J({type:"dp.change",date:a,oldDate:b}):g.val(m?"":e.format(i)),J({type:"dp.error",date:a,oldDate:b}))},ba=function(){var b=!1;return o?(o.find(".collapse").each(function(){var c=a(this).data("collapse");return c&&c.transitioning?(b=!0,!1):!0}),b?l:(n&&n.hasClass("btn")&&n.toggleClass("active"),o.hide(),a(window).off("resize",I),o.off("click","[data-action]"),o.off("mousedown",!1),o.remove(),o=!1,J({type:"dp.hide",date:e.clone()}),g.blur(),f=e.clone(),l)):l},ca=function(){aa(null)},da=function(a){return void 0===d.parseInputDate?(!b.isMoment(a)||a instanceof Date)&&(a=y(a)):a=d.parseInputDate(a),a},ea={next:function(){var a=q[k].navFnc;f.add(q[k].navStep,a),W(),K(a)},previous:function(){var a=q[k].navFnc;f.subtract(q[k].navStep,a),W(),K(a)},pickerSwitch:function(){L(1)},selectMonth:function(b){var c=a(b.target).closest("tbody").find("span").index(a(b.target));f.month(c),k===p?(aa(e.clone().year(f.year()).month(f.month())),d.inline||ba()):(L(-1),W()),K("M")},selectYear:function(b){var c=parseInt(a(b.target).text(),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDecade:function(b){var c=parseInt(a(b.target).data("selection"),10)||0;f.year(c),k===p?(aa(e.clone().year(f.year())),d.inline||ba()):(L(-1),W()),K("YYYY")},selectDay:function(b){var c=f.clone();a(b.target).is(".old")&&c.subtract(1,"M"),a(b.target).is(".new")&&c.add(1,"M"),aa(c.date(parseInt(a(b.target).text(),10))),A()||d.keepOpen||d.inline||ba()},incrementHours:function(){var a=e.clone().add(1,"h");R(a,"h")&&aa(a)},incrementMinutes:function(){var a=e.clone().add(d.stepping,"m");R(a,"m")&&aa(a)},incrementSeconds:function(){var a=e.clone().add(1,"s");R(a,"s")&&aa(a)},decrementHours:function(){var a=e.clone().subtract(1,"h");R(a,"h")&&aa(a)},decrementMinutes:function(){var a=e.clone().subtract(d.stepping,"m");R(a,"m")&&aa(a)},decrementSeconds:function(){var a=e.clone().subtract(1,"s");R(a,"s")&&aa(a)},togglePeriod:function(){aa(e.clone().add(e.hours()>=12?-12:12,"h"))},togglePicker:function(b){var c,e=a(b.target),f=e.closest("ul"),g=f.find(".in"),h=f.find(".collapse:not(.in)");if(g&&g.length){if(c=g.data("collapse"),c&&c.transitioning)return;g.collapse?(g.collapse("hide"),h.collapse("show")):(g.removeClass("in"),h.addClass("in")),e.is("span")?e.toggleClass(d.icons.time+" "+d.icons.date):e.find("span").toggleClass(d.icons.time+" "+d.icons.date)}},showPicker:function(){o.find(".timepicker > div:not(.timepicker-picker)").hide(),o.find(".timepicker .timepicker-picker").show()},showHours:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-hours").show()},showMinutes:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-minutes").show()},showSeconds:function(){o.find(".timepicker .timepicker-picker").hide(),o.find(".timepicker .timepicker-seconds").show()},selectHour:function(b){var c=parseInt(a(b.target).text(),10);h||(e.hours()>=12?12!==c&&(c+=12):12===c&&(c=0)),aa(e.clone().hours(c)),ea.showPicker.call(l)},selectMinute:function(b){aa(e.clone().minutes(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},selectSecond:function(b){aa(e.clone().seconds(parseInt(a(b.target).text(),10))),ea.showPicker.call(l)},clear:ca,today:function(){var a=y();R(a,"d")&&aa(a)},close:ba},fa=function(b){return a(b.currentTarget).is(".disabled")?!1:(ea[a(b.currentTarget).data("action")].apply(l,arguments),!1)},ga=function(){var b,c={year:function(a){return a.month(0).date(1).hours(0).seconds(0).minutes(0)},month:function(a){return a.date(1).hours(0).seconds(0).minutes(0)},day:function(a){return a.hours(0).seconds(0).minutes(0)},hour:function(a){return a.seconds(0).minutes(0)},minute:function(a){return a.seconds(0)}};return g.prop("disabled")||!d.ignoreReadonly&&g.prop("readonly")||o?l:(void 0!==g.val()&&0!==g.val().trim().length?aa(da(g.val().trim())):m&&d.useCurrent&&(d.inline||g.is("input")&&0===g.val().trim().length)&&(b=y(),"string"==typeof d.useCurrent&&(b=c[d.useCurrent](b)),aa(b)),o=G(),M(),S(),o.find(".timepicker-hours").hide(),o.find(".timepicker-minutes").hide(),o.find(".timepicker-seconds").hide(),_(),L(),a(window).on("resize",I),o.on("click","[data-action]",fa),o.on("mousedown",!1),n&&n.hasClass("btn")&&n.toggleClass("active"),I(),o.show(),d.focusOnShow&&!g.is(":focus")&&g.focus(),J({type:"dp.show"}),l)},ha=function(){return o?ba():ga()},ia=function(a){var b,c,e,f,g=null,h=[],i={},j=a.which,k="p";w[j]=k;for(b in w)w.hasOwnProperty(b)&&w[b]===k&&(h.push(b),parseInt(b,10)!==j&&(i[b]=!0));for(b in d.keyBinds)if(d.keyBinds.hasOwnProperty(b)&&"function"==typeof d.keyBinds[b]&&(e=b.split(" "),e.length===h.length&&v[j]===e[e.length-1])){for(f=!0,c=e.length-2;c>=0;c--)if(!(v[e[c]]in i)){f=!1;break}if(f){g=d.keyBinds[b];break}}g&&(g.call(l,o),a.stopPropagation(),a.preventDefault())},ja=function(a){w[a.which]="r",a.stopPropagation(),a.preventDefault()},ka=function(b){var c=a(b.target).val().trim(),d=c?da(c):null;return aa(d),b.stopImmediatePropagation(),!1},la=function(){g.on({change:ka,blur:d.debug?"":ba,keydown:ia,keyup:ja,focus:d.allowInputToggle?ga:""}),c.is("input")?g.on({focus:ga}):n&&(n.on("click",ha),n.on("mousedown",!1))},ma=function(){g.off({change:ka,blur:blur,keydown:ia,keyup:ja,focus:d.allowInputToggle?ba:""}),c.is("input")?g.off({focus:ga}):n&&(n.off("click",ha),n.off("mousedown",!1))},na=function(b){var c={};return a.each(b,function(){var a=da(this);a.isValid()&&(c[a.format("YYYY-MM-DD")]=!0)}),Object.keys(c).length?c:!1},oa=function(b){var c={};return a.each(b,function(){c[this]=!0}),Object.keys(c).length?c:!1},pa=function(){var a=d.format||"L LT";i=a.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){var b=e.localeData().longDateFormat(a)||a;return b.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,function(a){return e.localeData().longDateFormat(a)||a})}),j=d.extraFormats?d.extraFormats.slice():[],j.indexOf(a)<0&&j.indexOf(i)<0&&j.push(i),h=i.toLowerCase().indexOf("a")<1&&i.replace(/\[.*?\]/g,"").indexOf("h")<1,z("y")&&(p=2),z("M")&&(p=1),z("d")&&(p=0),k=Math.max(p,k),m||aa(e)};if(l.destroy=function(){ba(),ma(),c.removeData("DateTimePicker"),c.removeData("date")},l.toggle=ha,l.show=ga,l.hide=ba,l.disable=function(){return ba(),n&&n.hasClass("btn")&&n.addClass("disabled"),g.prop("disabled",!0),l},l.enable=function(){return n&&n.hasClass("btn")&&n.removeClass("disabled"),g.prop("disabled",!1),l},l.ignoreReadonly=function(a){if(0===arguments.length)return d.ignoreReadonly;if("boolean"!=typeof a)throw new TypeError("ignoreReadonly () expects a boolean parameter");return d.ignoreReadonly=a,l},l.options=function(b){if(0===arguments.length)return a.extend(!0,{},d);if(!(b instanceof Object))throw new TypeError("options() options parameter should be an object");return a.extend(!0,d,b),a.each(d,function(a,b){if(void 0===l[a])throw new TypeError("option "+a+" is not recognized!");l[a](b)}),l},l.date=function(a){if(0===arguments.length)return m?null:e.clone();if(!(null===a||"string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("date() parameter must be one of [null, string, moment or Date]");return aa(null===a?null:da(a)),l},l.format=function(a){if(0===arguments.length)return d.format;if("string"!=typeof a&&("boolean"!=typeof a||a!==!1))throw new TypeError("format() expects a string or boolean:false parameter "+a);return d.format=a,i&&pa(),l},l.timeZone=function(a){if(0===arguments.length)return d.timeZone;if("string"!=typeof a)throw new TypeError("newZone() expects a string parameter");return d.timeZone=a,l},l.dayViewHeaderFormat=function(a){if(0===arguments.length)return d.dayViewHeaderFormat;if("string"!=typeof a)throw new TypeError("dayViewHeaderFormat() expects a string parameter");return d.dayViewHeaderFormat=a,l},l.extraFormats=function(a){if(0===arguments.length)return d.extraFormats;if(a!==!1&&!(a instanceof Array))throw new TypeError("extraFormats() expects an array or false parameter");return d.extraFormats=a,j&&pa(),l},l.disabledDates=function(b){if(0===arguments.length)return d.disabledDates?a.extend({},d.disabledDates):d.disabledDates;if(!b)return d.disabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledDates() expects an array parameter");return d.disabledDates=na(b),d.enabledDates=!1,_(),l},l.enabledDates=function(b){if(0===arguments.length)return d.enabledDates?a.extend({},d.enabledDates):d.enabledDates;if(!b)return d.enabledDates=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledDates() expects an array parameter");return d.enabledDates=na(b),d.disabledDates=!1,_(),l},l.daysOfWeekDisabled=function(a){if(0===arguments.length)return d.daysOfWeekDisabled.splice(0);if("boolean"==typeof a&&!a)return d.daysOfWeekDisabled=!1,_(),l;if(!(a instanceof Array))throw new TypeError("daysOfWeekDisabled() expects an array parameter");if(d.daysOfWeekDisabled=a.reduce(function(a,b){return b=parseInt(b,10),b>6||0>b||isNaN(b)?a:(-1===a.indexOf(b)&&a.push(b),a)},[]).sort(),d.useCurrent&&!d.keepInvalid){for(var b=0;!R(e,"d");){if(e.add(1,"d"),31===b)throw"Tried 31 times to find a valid date";b++}aa(e)}return _(),l},l.maxDate=function(a){if(0===arguments.length)return d.maxDate?d.maxDate.clone():d.maxDate;if("boolean"==typeof a&&a===!1)return d.maxDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("maxDate() Could not parse date parameter: "+a);if(d.minDate&&b.isBefore(d.minDate))throw new TypeError("maxDate() date parameter is before options.minDate: "+b.format(i));return d.maxDate=b,d.useCurrent&&!d.keepInvalid&&e.isAfter(a)&&aa(d.maxDate),f.isAfter(b)&&(f=b.clone().subtract(d.stepping,"m")),_(),l},l.minDate=function(a){if(0===arguments.length)return d.minDate?d.minDate.clone():d.minDate;if("boolean"==typeof a&&a===!1)return d.minDate=!1,_(),l;"string"==typeof a&&("now"===a||"moment"===a)&&(a=y());var b=da(a);if(!b.isValid())throw new TypeError("minDate() Could not parse date parameter: "+a);if(d.maxDate&&b.isAfter(d.maxDate))throw new TypeError("minDate() date parameter is after options.maxDate: "+b.format(i));return d.minDate=b,d.useCurrent&&!d.keepInvalid&&e.isBefore(a)&&aa(d.minDate),f.isBefore(b)&&(f=b.clone().add(d.stepping,"m")),_(),l},l.defaultDate=function(a){if(0===arguments.length)return d.defaultDate?d.defaultDate.clone():d.defaultDate;if(!a)return d.defaultDate=!1,l;"string"==typeof a&&(a="now"===a||"moment"===a?y():y(a));var b=da(a);if(!b.isValid())throw new TypeError("defaultDate() Could not parse date parameter: "+a);if(!R(b))throw new TypeError("defaultDate() date passed is invalid according to component setup validations");return d.defaultDate=b,(d.defaultDate&&d.inline||""===g.val().trim())&&aa(d.defaultDate),l},l.locale=function(a){if(0===arguments.length)return d.locale;if(!b.localeData(a))throw new TypeError("locale() locale "+a+" is not loaded from moment locales!");return d.locale=a,e.locale(d.locale),f.locale(d.locale),i&&pa(),o&&(ba(),ga()),l},l.stepping=function(a){return 0===arguments.length?d.stepping:(a=parseInt(a,10),(isNaN(a)||1>a)&&(a=1),d.stepping=a,l)},l.useCurrent=function(a){var b=["year","month","day","hour","minute"];if(0===arguments.length)return d.useCurrent;if("boolean"!=typeof a&&"string"!=typeof a)throw new TypeError("useCurrent() expects a boolean or string parameter");if("string"==typeof a&&-1===b.indexOf(a.toLowerCase()))throw new TypeError("useCurrent() expects a string parameter of "+b.join(", "));return d.useCurrent=a,l},l.collapse=function(a){if(0===arguments.length)return d.collapse;if("boolean"!=typeof a)throw new TypeError("collapse() expects a boolean parameter");return d.collapse===a?l:(d.collapse=a,o&&(ba(),ga()),l)},l.icons=function(b){if(0===arguments.length)return a.extend({},d.icons);if(!(b instanceof Object))throw new TypeError("icons() expects parameter to be an Object");return a.extend(d.icons,b),o&&(ba(),ga()),l},l.tooltips=function(b){if(0===arguments.length)return a.extend({},d.tooltips);if(!(b instanceof Object))throw new TypeError("tooltips() expects parameter to be an Object");return a.extend(d.tooltips,b),o&&(ba(),ga()),l},l.useStrict=function(a){if(0===arguments.length)return d.useStrict;if("boolean"!=typeof a)throw new TypeError("useStrict() expects a boolean parameter");return d.useStrict=a,l},l.sideBySide=function(a){if(0===arguments.length)return d.sideBySide;if("boolean"!=typeof a)throw new TypeError("sideBySide() expects a boolean parameter");return d.sideBySide=a,o&&(ba(),ga()),l},l.viewMode=function(a){if(0===arguments.length)return d.viewMode;if("string"!=typeof a)throw new TypeError("viewMode() expects a string parameter");if(-1===r.indexOf(a))throw new TypeError("viewMode() parameter must be one of ("+r.join(", ")+") value");return d.viewMode=a,k=Math.max(r.indexOf(a),p),L(),l},l.toolbarPlacement=function(a){if(0===arguments.length)return d.toolbarPlacement;if("string"!=typeof a)throw new TypeError("toolbarPlacement() expects a string parameter");if(-1===u.indexOf(a))throw new TypeError("toolbarPlacement() parameter must be one of ("+u.join(", ")+") value");return d.toolbarPlacement=a,o&&(ba(),ga()),l},l.widgetPositioning=function(b){if(0===arguments.length)return a.extend({},d.widgetPositioning);if("[object Object]"!=={}.toString.call(b))throw new TypeError("widgetPositioning() expects an object variable");if(b.horizontal){if("string"!=typeof b.horizontal)throw new TypeError("widgetPositioning() horizontal variable must be a string");if(b.horizontal=b.horizontal.toLowerCase(),-1===t.indexOf(b.horizontal))throw new TypeError("widgetPositioning() expects horizontal parameter to be one of ("+t.join(", ")+")");d.widgetPositioning.horizontal=b.horizontal}if(b.vertical){if("string"!=typeof b.vertical)throw new TypeError("widgetPositioning() vertical variable must be a string");if(b.vertical=b.vertical.toLowerCase(),-1===s.indexOf(b.vertical))throw new TypeError("widgetPositioning() expects vertical parameter to be one of ("+s.join(", ")+")");d.widgetPositioning.vertical=b.vertical}return _(),l},l.calendarWeeks=function(a){if(0===arguments.length)return d.calendarWeeks;if("boolean"!=typeof a)throw new TypeError("calendarWeeks() expects parameter to be a boolean value");return d.calendarWeeks=a,_(),l},l.showTodayButton=function(a){if(0===arguments.length)return d.showTodayButton;if("boolean"!=typeof a)throw new TypeError("showTodayButton() expects a boolean parameter");return d.showTodayButton=a,o&&(ba(),ga()),l},l.showClear=function(a){if(0===arguments.length)return d.showClear;if("boolean"!=typeof a)throw new TypeError("showClear() expects a boolean parameter");return d.showClear=a,o&&(ba(),ga()),l},l.widgetParent=function(b){if(0===arguments.length)return d.widgetParent;if("string"==typeof b&&(b=a(b)),null!==b&&"string"!=typeof b&&!(b instanceof a))throw new TypeError("widgetParent() expects a string or a jQuery object parameter");return d.widgetParent=b,o&&(ba(),ga()),l},l.keepOpen=function(a){if(0===arguments.length)return d.keepOpen;if("boolean"!=typeof a)throw new TypeError("keepOpen() expects a boolean parameter");return d.keepOpen=a,l},l.focusOnShow=function(a){if(0===arguments.length)return d.focusOnShow;if("boolean"!=typeof a)throw new TypeError("focusOnShow() expects a boolean parameter");return d.focusOnShow=a,l},l.inline=function(a){if(0===arguments.length)return d.inline;if("boolean"!=typeof a)throw new TypeError("inline() expects a boolean parameter");return d.inline=a,l},l.clear=function(){return ca(),l},l.keyBinds=function(a){return 0===arguments.length?d.keyBinds:(d.keyBinds=a,l)},l.getMoment=function(a){return y(a)},l.debug=function(a){if("boolean"!=typeof a)throw new TypeError("debug() expects a boolean parameter");return d.debug=a,l},l.allowInputToggle=function(a){if(0===arguments.length)return d.allowInputToggle;if("boolean"!=typeof a)throw new TypeError("allowInputToggle() expects a boolean parameter");return d.allowInputToggle=a,l},l.showClose=function(a){if(0===arguments.length)return d.showClose;if("boolean"!=typeof a)throw new TypeError("showClose() expects a boolean parameter");return d.showClose=a,l},l.keepInvalid=function(a){if(0===arguments.length)return d.keepInvalid;if("boolean"!=typeof a)throw new TypeError("keepInvalid() expects a boolean parameter");
|
11 |
+
return d.keepInvalid=a,l},l.datepickerInput=function(a){if(0===arguments.length)return d.datepickerInput;if("string"!=typeof a)throw new TypeError("datepickerInput() expects a string parameter");return d.datepickerInput=a,l},l.parseInputDate=function(a){if(0===arguments.length)return d.parseInputDate;if("function"!=typeof a)throw new TypeError("parseInputDate() sholud be as function");return d.parseInputDate=a,l},l.disabledTimeIntervals=function(b){if(0===arguments.length)return d.disabledTimeIntervals?a.extend({},d.disabledTimeIntervals):d.disabledTimeIntervals;if(!b)return d.disabledTimeIntervals=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledTimeIntervals() expects an array parameter");return d.disabledTimeIntervals=b,_(),l},l.disabledHours=function(b){if(0===arguments.length)return d.disabledHours?a.extend({},d.disabledHours):d.disabledHours;if(!b)return d.disabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("disabledHours() expects an array parameter");if(d.disabledHours=oa(b),d.enabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.enabledHours=function(b){if(0===arguments.length)return d.enabledHours?a.extend({},d.enabledHours):d.enabledHours;if(!b)return d.enabledHours=!1,_(),l;if(!(b instanceof Array))throw new TypeError("enabledHours() expects an array parameter");if(d.enabledHours=oa(b),d.disabledHours=!1,d.useCurrent&&!d.keepInvalid){for(var c=0;!R(e,"h");){if(e.add(1,"h"),24===c)throw"Tried 24 times to find a valid date";c++}aa(e)}return _(),l},l.viewDate=function(a){if(0===arguments.length)return f.clone();if(!a)return f=e.clone(),l;if(!("string"==typeof a||b.isMoment(a)||a instanceof Date))throw new TypeError("viewDate() parameter must be one of [string, moment or Date]");return f=da(a),K(),l},c.is("input"))g=c;else if(g=c.find(d.datepickerInput),0===g.length)g=c.find("input");else if(!g.is("input"))throw new Error('CSS class "'+d.datepickerInput+'" cannot be applied to non input element');if(c.hasClass("input-group")&&(n=0===c.find(".datepickerbutton").length?c.find(".input-group-addon"):c.find(".datepickerbutton")),!d.inline&&!g.is("input"))throw new Error("Could not initialize DateTimePicker without an input element");return e=y(),f=e.clone(),a.extend(!0,d,H()),l.options(d),pa(),la(),g.prop("disabled")&&l.disable(),g.is("input")&&0!==g.val().trim().length?aa(da(g.val().trim())):d.defaultDate&&void 0===g.attr("placeholder")&&aa(d.defaultDate),d.inline&&ga(),l};return a.fn.factoryBootstrap459_DatetimePickerControl=function(b){b=b||{};var d,e=Array.prototype.slice.call(arguments,1),f=!0,g=["destroy","hide","show","toggle"];if("object"==typeof b)return this.each(function(){var d,e=a(this);e.data("DateTimePicker")||(d=a.extend(!0,{},a.fn.factoryBootstrap459_DatetimePickerControl.defaults,b),e.data("DateTimePicker",c(e,d)))});if("string"==typeof b)return this.each(function(){var c=a(this),g=c.data("DateTimePicker");if(!g)throw new Error('bootstrap-datetimepicker("'+b+'") method was called on an element that is not using DateTimePicker');d=g[b].apply(g,e),f=d===g}),f||a.inArray(b,g)>-1?this:d;throw new TypeError("Invalid arguments for DateTimePicker: "+b)},a.fn.factoryBootstrap459_DatetimePickerControl.defaults={timeZone:"",format:!1,dayViewHeaderFormat:"MMMM YYYY",extraFormats:!1,stepping:1,minDate:!1,maxDate:!1,useCurrent:!0,collapse:!0,locale:b.locale(),defaultDate:!1,disabledDates:!1,enabledDates:!1,icons:{time:"fa fa-clock-o",date:"fa fa-calendar",up:"fa fa-arrow-up",down:"fa fa-arrow-down",previous:"fa fa-arrow-left",next:"fa fa-arrow-right",today:"fa fa-thumb-tack",clear:"fa fa-trash",close:"fa fa-times"},tooltips:{today:"Go to today",clear:"Clear selection",close:"Close the picker",selectMonth:"Select Month",prevMonth:"Previous Month",nextMonth:"Next Month",selectYear:"Select Year",prevYear:"Previous Year",nextYear:"Next Year",selectDecade:"Select Decade",prevDecade:"Previous Decade",nextDecade:"Next Decade",prevCentury:"Previous Century",nextCentury:"Next Century",pickHour:"Pick Hour",incrementHour:"Increment Hour",decrementHour:"Decrement Hour",pickMinute:"Pick Minute",incrementMinute:"Increment Minute",decrementMinute:"Decrement Minute",pickSecond:"Pick Second",incrementSecond:"Increment Second",decrementSecond:"Decrement Second",togglePeriod:"Toggle Period",selectTime:"Select Time"},useStrict:!1,sideBySide:!1,daysOfWeekDisabled:!1,calendarWeeks:!1,viewMode:"days",toolbarPlacement:"default",showTodayButton:!1,showClear:!1,showClose:!1,widgetPositioning:{horizontal:"auto",vertical:"auto"},widgetParent:null,ignoreReadonly:!1,keepOpen:!1,focusOnShow:!0,inline:!1,keepInvalid:!1,datepickerInput:".datepickerinput",keyBinds:{up:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(7,"d")):this.date(b.clone().add(this.stepping(),"m"))}},down:function(a){if(!a)return void this.show();var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(7,"d")):this.date(b.clone().subtract(this.stepping(),"m"))},"control up":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().subtract(1,"y")):this.date(b.clone().add(1,"h"))}},"control down":function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")?this.date(b.clone().add(1,"y")):this.date(b.clone().subtract(1,"h"))}},left:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"d"))}},right:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"d"))}},pageUp:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().subtract(1,"M"))}},pageDown:function(a){if(a){var b=this.date()||this.getMoment();a.find(".datepicker").is(":visible")&&this.date(b.clone().add(1,"M"))}},enter:function(){this.hide()},escape:function(){this.hide()},"control space":function(a){a&&a.find(".timepicker").is(":visible")&&a.find('.btn[data-action="togglePeriod"]').click()},t:function(){this.date(this.getMoment())},"delete":function(){this.clear()}},debug:!1,allowInputToggle:!1,disabledTimeIntervals:!1,disabledHours:!1,enabledHours:!1,viewDate:!1},a.fn.factoryBootstrap459_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-459 .factory-datetimepicker").factoryBootstrap459_DatetimePickerControl(),a(".factory-bootstrap-459 .factory-datetimepicker-range-0").factoryBootstrap459_DatetimePickerControl(),a(".factory-bootstrap-459 .factory-datetimepicker-range-1").factoryBootstrap459_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-459 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-459 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-459 .factory-datetimepicker-range-1").on("dp.change",function(b){a(".factory-bootstrap-459 .factory-datetimepicker-range-0").data("DateTimePicker").maxDate(b.date)})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=factory-dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}},a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=factory-dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}},a.fn.factoryBootstrap459_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.factoryBootstrap459_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.modal.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="factory-bootstrap-
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="factory-bootstrap-459-modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.factoryBootstrap459_modal;a.fn.factoryBootstrap459_modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.factoryBootstrap459_modal.Constructor=b,a.fn.factoryBootstrap459_modal.noConflict=function(){return a.fn.factoryBootstrap459_modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="factory-modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("factory-modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.factoryBootstrap459_modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.checkbox.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=this;this.$element=a(b),this.$result=this.$element.find(".factory-result"),this.$on=this.$element.find(".factory-on"),this.$off=this.$element.find(".factory-off");var d=this.$element.is(".factory-tumbler"),e=this.$element.is(".factory-has-tumbler-hint"),f=this.$element.data("tumbler-function"),g=this.$element.data("tumbler-delay");g||(g=3e3),this.callByPath=function(a,b){for(var c=a.split("."),d=window,e=0;e<c.length;e++)d=d[c[e]];d.apply(d,b)},this.$on.click(function(){return c.$off.removeClass("active"),c.$on.addClass("active"),d?setTimeout(function(){c.$on.removeClass("active"),c.$off.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!0),c.$result.val(1),c.$result.trigger("change")),!1}),this.$off.click(function(){return c.$on.removeClass("active"),c.$off.addClass("active"),d?setTimeout(function(){c.$off.removeClass("active"),c.$on.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!1),c.$result.val(0),c.$result.trigger("change")),!1}),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){(void 0!==window.__factory_checkbox_control_events_off_data||void 0!==window.__factory_checkbox_control_events_on_data)&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.prop("checked"),f=window.__factory_checkbox_control_events_on_data[d],g=window.__factory_checkbox_control_events_off_data[d];if(f||g){var h,i;void 0===window.__factory_checkbox_control_detach_elements&&(window.__factory_checkbox_control_detach_elements={}),h=window.__factory_checkbox_control_detach_elements,i=e?f:g;for(var j in i)if(i.hasOwnProperty(j)){var k,l=i[j];a.isArray(l)||(k=c.hashCode(d+l));var m;switch(j){case"hide":"string"==typeof l&&a(l).hide(0);break;case"show":"string"==typeof l&&a(l).fadeIn(200);break;case"detach":"string"==typeof l&&a(l).each(function(b){h[k]||(h[k]={}),h[k][b]||(h[k][b]={}),h[k][b].recovery_contanier=a(this).parent(),h[k][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(h[k]){for(var n in h[k])h[k].hasOwnProperty(n)&&h[k][n].recovery_contanier&&h[k][n].element&&h[k][n].recovery_contanier.append(h[k][n].element);delete h[k]}break;case"removeClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).removeClass(l[m]);break;case"addClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).addClass(l[m]);break;case"setValue":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&void 0!==l[m]&&null!==l[m]&&a(m).val(l[m])}}}},this.executeEvents(this.$result)};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=this;this.$element=a(b),this.$result=this.$element.find(".factory-result"),this.$on=this.$element.find(".factory-on"),this.$off=this.$element.find(".factory-off");var d=this.$element.is(".factory-tumbler"),e=this.$element.is(".factory-has-tumbler-hint"),f=this.$element.data("tumbler-function"),g=this.$element.data("tumbler-delay");g||(g=3e3),this.callByPath=function(a,b){for(var c=a.split("."),d=window,e=0;e<c.length;e++)d=d[c[e]];d.apply(d,b)},this.$on.click(function(){return c.$off.removeClass("active"),c.$on.addClass("active"),d?setTimeout(function(){c.$on.removeClass("active"),c.$off.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!0),c.$result.val(1),c.$result.trigger("change")),!1}),this.$off.click(function(){return c.$on.removeClass("active"),c.$off.addClass("active"),d?setTimeout(function(){c.$off.removeClass("active"),c.$on.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!1),c.$result.val(0),c.$result.trigger("change")),!1}),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){(void 0!==window.__factory_checkbox_control_events_off_data||void 0!==window.__factory_checkbox_control_events_on_data)&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.prop("checked"),f=window.__factory_checkbox_control_events_on_data[d],g=window.__factory_checkbox_control_events_off_data[d];if(f||g){var h,i;void 0===window.__factory_checkbox_control_detach_elements&&(window.__factory_checkbox_control_detach_elements={}),h=window.__factory_checkbox_control_detach_elements,i=e?f:g;for(var j in i)if(i.hasOwnProperty(j)){var k,l=i[j];a.isArray(l)||(k=c.hashCode(d+l));var m;switch(j){case"hide":"string"==typeof l&&a(l).hide(0);break;case"show":"string"==typeof l&&a(l).fadeIn(200);break;case"detach":"string"==typeof l&&a(l).each(function(b){h[k]||(h[k]={}),h[k][b]||(h[k][b]={}),h[k][b].recovery_contanier=a(this).parent(),h[k][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(h[k]){for(var n in h[k])h[k].hasOwnProperty(n)&&h[k][n].recovery_contanier&&h[k][n].element&&h[k][n].recovery_contanier.append(h[k][n].element);delete h[k]}break;case"removeClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).removeClass(l[m]);break;case"addClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).addClass(l[m]);break;case"setValue":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&void 0!==l[m]&&null!==l[m]&&a(m).val(l[m])}}}},this.executeEvents(this.$result)};a.fn.factoryBootstrap459_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.factoryBootstrap459_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-checkbox.factory-buttons-way").factoryBootstrap459_checkboxControl(),a(".factory-bootstrap-459 .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-and-opacity.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a,b){a(function(){a(function(){a(".factory-bootstrap-
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a,b){a(function(){a(function(){a(".factory-bootstrap-459 .factory-color-and-opacity").each(function(){var b=a(this),c=b.find(".factory-color"),d=b.find(".factory-integer");d.change(function(){var a=d.find(".factory-result").val()/100;c.find(".factory-background").css("opacity",a)}),d.change(),d.on("click.color.factory",function(a){a.stopPropagation()})})})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.color.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){a.widget("
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){a.widget("factoryBootstrap459.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.factoryBootstrap459_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap459_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap459_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap459_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap459_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("factoryBootstrap459_colorControl",a.factoryBootstrap459.colorControl),a(".factory-bootstrap-459 .factory-color").factoryBootstrap459_colorControl({})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.dropdown-and-colors.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=a(b),d=c.find(".factory-colors-inner-wrap");c.find("select").change(function(){var b=c.find("select option:selected"),e=b.data("colors"),f=d.data("radio-name");if(f&&e){d.html("");for(var g=0;g<e.length;g++){var h=e[g],i=a('<span class="factory-form-radio-item"><label class="factory-from-radio-label"><input type="radio" name="'+f+'" class="factory-radio-color" value="'+h[0]+'" checked="checked"><span style="background-color:'+h[1]+'"></span></label></span>');d.append(i)}}})};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=a(b),d=c.find(".factory-colors-inner-wrap");c.find("select").change(function(){var b=c.find("select option:selected"),e=b.data("colors"),f=d.data("radio-name");if(f&&e){d.html("");for(var g=0;g<e.length;g++){var h=e[g],i=a('<span class="factory-form-radio-item"><label class="factory-from-radio-label"><input type="radio" name="'+f+'" class="factory-radio-color" value="'+h[0]+'" checked="checked"><span style="background-color:'+h[1]+'"></span></label></span>');d.append(i)}}})};a.fn.factoryBootstrap459_dropdownAndColors=function(c){if("string"==typeof c){var d=a(this).data("factory.dropdownAndColors.control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.dropdownAndColors.control");d||c.data("factory.dropdownAndColors.control",d=new b(this))})},a.fn.factoryBootstrap459_dropdownAndColors.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-dropdown-and-colors").factoryBootstrap459_dropdownAndColors()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.dropdown.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name")||this.$element.attr("name"),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){void 0!==window.factory_dropdown_control_events_data&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.val(),f=window.factory_dropdown_control_events_data[d];if(f&&f[e]){var g;void 0===window.__factory_dropdown_control_detach_elements&&(window.__factory_dropdown_control_detach_elements={}),g=window.__factory_dropdown_control_detach_elements;for(var h in f[e])if(f[e].hasOwnProperty(h)){var i,j=f[e][h];switch(a.isArray(j)||(i=c.hashCode(d+j)),h){case"hide":"string"==typeof j&&a(j).hide(0);break;case"show":"string"==typeof j&&a(j).fadeIn(200);break;case"detach":"string"==typeof j&&a(j).each(function(b){g[i]||(g[i]={}),g[i][b]||(g[i][b]={}),g[i][b].recovery_contanier=a(this).parent(),g[i][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(g[i]){for(var k in g[i])g[i].hasOwnProperty(k)&&g[i][k].recovery_contanier&&g[i][k].element&&g[i][k].recovery_contanier.append(g[i][k].element);delete g[i]}break;case"removeClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).removeClass(j[l]);break;case"addClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).addClass(j[l])}}}},"buttons"===this.way)this.$result=this.$element.find(".factory-result"),this.$hints=this.$element.find(".factory-hints"),this.$buttons=this.$element.find(".btn"),c.executeEvents(this.$result),this.$buttons.click(function(){var b=a(this).data("value");return c.$buttons.removeClass("active"),a(this).addClass("active"),c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+b).fadeIn(),c.$result.val(b),c.$result.trigger("change"),!1});else if("ddslick"===this.way){c.executeEvents(c.$element.find(".factory-result"));var d=window["factory_"+this.name+"_data"],e=this.$element.find(".factory-ddslick"),f=this.$element.data("width")||300,g=this.$element.data("align")||"right";a(d).each(function(){return this.imageHoverSrc?void(a("<img/>")[0].src=this.imageHoverSrc):!0}),e.ddslick({data:d,width:f,imagePosition:g,selectText:"- select -",onSelected:function(a){a.selectedData.imageHoverSrc&&c.$element.find(".dd-selected-image").attr("src",a.selectedData.imageHoverSrc);var b=c.$element.find(".factory-result").val(a.selectedData.value);b.change()}})}else{c.executeEvents(this.$element),this.$hints=this.$element.next(),this.$hints.hasClass("factory-hints")&&(this.$element.change(function(){return c.updateHints(),!1}),this.updateHints=function(){var a=c.$element.val();c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+a).show()},c.updateHints()),this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(a){console&&console.log&&console.log(a.responseText),c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length)for(var d in a){var e=a[d];c.addListItem(e)}else this.$element.append("<option>"+b.emptyList+"</li>");this.$element.trigger("factory-loaded")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<option />").attr("value",b.value).text(b.title).appendTo(this.$element),e=c.getAjaxData();e.selected&&e.selected==b.value&&d.attr("selected","selected")},this.showError=function(b){this.clearList();var d=a("<div class='factory-control-error'></div>").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),e=c.getAjaxData();this.$element.append("<option>"+e.emptyList+"</li>"),this.$element.after(d),this.$element.addClass("factory-has-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var h=this.$element.data("ajax");h&&this.loadData()}};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name")||this.$element.attr("name"),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){void 0!==window.factory_dropdown_control_events_data&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.val(),f=window.factory_dropdown_control_events_data[d];if(f&&f[e]){var g;void 0===window.__factory_dropdown_control_detach_elements&&(window.__factory_dropdown_control_detach_elements={}),g=window.__factory_dropdown_control_detach_elements;for(var h in f[e])if(f[e].hasOwnProperty(h)){var i,j=f[e][h];switch(a.isArray(j)||(i=c.hashCode(d+j)),h){case"hide":"string"==typeof j&&a(j).hide(0);break;case"show":"string"==typeof j&&a(j).fadeIn(200);break;case"detach":"string"==typeof j&&a(j).each(function(b){g[i]||(g[i]={}),g[i][b]||(g[i][b]={}),g[i][b].recovery_contanier=a(this).parent(),g[i][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(g[i]){for(var k in g[i])g[i].hasOwnProperty(k)&&g[i][k].recovery_contanier&&g[i][k].element&&g[i][k].recovery_contanier.append(g[i][k].element);delete g[i]}break;case"removeClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).removeClass(j[l]);break;case"addClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).addClass(j[l])}}}},"buttons"===this.way)this.$result=this.$element.find(".factory-result"),this.$hints=this.$element.find(".factory-hints"),this.$buttons=this.$element.find(".btn"),c.executeEvents(this.$result),this.$buttons.click(function(){var b=a(this).data("value");return c.$buttons.removeClass("active"),a(this).addClass("active"),c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+b).fadeIn(),c.$result.val(b),c.$result.trigger("change"),!1});else if("ddslick"===this.way){c.executeEvents(c.$element.find(".factory-result"));var d=window["factory_"+this.name+"_data"],e=this.$element.find(".factory-ddslick"),f=this.$element.data("width")||300,g=this.$element.data("align")||"right";a(d).each(function(){return this.imageHoverSrc?void(a("<img/>")[0].src=this.imageHoverSrc):!0}),e.ddslick({data:d,width:f,imagePosition:g,selectText:"- select -",onSelected:function(a){a.selectedData.imageHoverSrc&&c.$element.find(".dd-selected-image").attr("src",a.selectedData.imageHoverSrc);var b=c.$element.find(".factory-result").val(a.selectedData.value);b.change()}})}else{c.executeEvents(this.$element),this.$hints=this.$element.next(),this.$hints.hasClass("factory-hints")&&(this.$element.change(function(){return c.updateHints(),!1}),this.updateHints=function(){var a=c.$element.val();c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+a).show()},c.updateHints()),this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(a){console&&console.log&&console.log(a.responseText),c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length)for(var d in a){var e=a[d];c.addListItem(e)}else this.$element.append("<option>"+b.emptyList+"</li>");this.$element.trigger("factory-loaded")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<option />").attr("value",b.value).text(b.title).appendTo(this.$element),e=c.getAjaxData();e.selected&&e.selected==b.value&&d.attr("selected","selected")},this.showError=function(b){this.clearList();var d=a("<div class='factory-control-error'></div>").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),e=c.getAjaxData();this.$element.append("<option>"+e.emptyList+"</li>"),this.$element.after(d),this.$element.addClass("factory-has-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var h=this.$element.data("ajax");h&&this.loadData()}};a.fn.factoryBootstrap459_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.factoryBootstrap459_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-dropdown").factoryBootstrap459_dropdownControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.fonts.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){a.widget("
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){a.widget("factoryBootstrap459.fontControl",{_create:function(){this.$element=this.element,this.$family=this.$element.find(".factory-family-wrap select"),this.$googleFontData=this.$element.find(".factory-google-font-data"),this.fontSelectorName=this.$family.attr("name"),this.googleFontsOptions={frameName:this.element.data("google-fonts-frame-name")},this.googleFontsOptions.frameName||(this.googleFontsOptions.frameName="preview"),this._initUI(),this._bindEvents()},_initUI:function(){this.$family.chosen()},_bindEvents:function(){var a=this;this.$family.change(function(b){var c=a._getCurrentOption(),d=c.data("google-font");if(d){var e=c.data("family"),f=c.data("variants").split(","),g=c.data("subsets").split(",");a._loadGoogleFont(e,f,g)}else a.$googleFontData.val("")})},_getCurrentOption:function(){var a=this.$family.val();return this._getOptionByValue(a)},_getOptionByValue:function(a){var b=this.$family.find("option[value='"+a+"']");return b},_loadGoogleFont:function(b,c,d){var c=this._filterGoogleFontVariantsBeforeLoading(b,c,d),d=this._filterGoogleFontSubsetsBeforeLoading(b,c,d);this.$googleFontData.val(this._encode64(JSON.stringify({name:b,styles:c,subsets:d})));var e=this._getTargetToLoadGoogleFont(),f=this.fontSelectorName+"-font-loader",g=e.find("#"+f);e.find("#"+f).length>0&&g.remove();var h="http://fonts.googleapis.com/css";c&&c.length&&(b=b+":"+c.join(",")),h=h+"?family="+b,d&&d.length&&(h=h+"&subset="+d.join(",")),a('<link id="'+f+'" rel="stylesheet" type="text/css" href="'+h+'" >').appendTo(e)},_filterGoogleFontVariantsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-variants",[c,e.$element,b,d]),c},_filterGoogleFontSubsetsBeforeLoading:function(b,c,d){var e=this;return a(document).trigger("factory-filter-google-font-subsets",[d,e.$element,c,d]),d},_getTargetToLoadGoogleFont:function(){var b=this.googleFontsOptions.frameName,c=a("head");if(b){var d=a('iframe[name="'+b+'"]');if(0===d.length)return console.error("The preview container not found.");c=d.contents().find("head")}return c},_base64KeyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",_encode64:function(a){a=escape(a);var b,c,d,e,f,g="",h="",i="",j=0;do b=a.charCodeAt(j++),c=a.charCodeAt(j++),h=a.charCodeAt(j++),d=b>>2,e=(3&b)<<4|c>>4,f=(15&c)<<2|h>>6,i=63&h,isNaN(c)?f=i=64:isNaN(h)&&(i=64),g=g+this._base64KeyStr.charAt(d)+this._base64KeyStr.charAt(e)+this._base64KeyStr.charAt(f)+this._base64KeyStr.charAt(i),b=c=h="",d=e=f=i="";while(j<a.length);return g}}),a(function(){a.widget.bridge("factoryBootstrap459_fontControl",a.factoryBootstrap459.fontControl),a(".factory-bootstrap-459 .factory-font").factoryBootstrap459_fontControl({})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.gradient.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){this.$element=a(b),this.$picker=this.$element.find(".factory-gradient-picker"),this.$result=this.$element.find(".factory-result"),this.init()};b.prototype.init=function(){var a=this,b=this.$element.data("directions"),c=this.$element.data("points"),d=c?c.split(","):[];this.$picker.gradientPicker({change:function(b,c){a.$result.val(c).trigger("keyup")},fillDirection:b,controlPoints:d})},a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){this.$element=a(b),this.$picker=this.$element.find(".factory-gradient-picker"),this.$result=this.$element.find(".factory-result"),this.init()};b.prototype.init=function(){var a=this,b=this.$element.data("directions"),c=this.$element.data("points"),d=c?c.split(","):[];this.$picker.gradientPicker({change:function(b,c){a.$result.val(c).trigger("keyup")},fillDirection:b,controlPoints:d})},a.fn.factoryBootstrap459_gradientControl=function(c){return this.each(function(){var d=a(this),e=d.data("factory.gradient-control");e||d.data("factory.gradient-control",e=new b(this)),"string"==typeof c&&e[c].call(e)})},a.fn.factoryBootstrap459_gradientControl.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-gradient").factoryBootstrap459_gradientControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.integer.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){this.$element=a(b),this.$element.hasClass("factory-has-slider")&&this.createSlider()};b.prototype.createSlider=function(){var a=this,b=this.$element.find(".factory-slider-container");this.$bar=b.find(".factory-bar"),this.$result=b.find(".factory-result"),this.$visibleValue=b.find(".factory-visible-value"),this.units=b.data("units"),this.rangeStart=b.data("range-start"),this.rangeEnd=b.data("range-end"),this.step=b.data("step"),this.step||(this.step=1);var c=this.$result.val();this.$bar.noUiSlider({start:parseInt(c),range:{min:a.rangeStart,max:a.rangeEnd},connect:"lower",step:a.step}),this.$bar.on("slide set",function(){a.setValue(parseInt(a.$bar.val()))})},b.prototype.setValue=function(a,b){this.$result.val(a),this.$visibleValue.length>0&&(this.units?this.$visibleValue.text(a+this.units):this.$visibleValue.text(a)),b&&this.$bar.noUiSlider({start:a},!0),this.$result.trigger("keyup"),this.$element.trigger("change")},b.prototype.getValue=function(){return this.$result.val()},b.prototype.api=function(){return this},a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){this.$element=a(b),this.$element.hasClass("factory-has-slider")&&this.createSlider()};b.prototype.createSlider=function(){var a=this,b=this.$element.find(".factory-slider-container");this.$bar=b.find(".factory-bar"),this.$result=b.find(".factory-result"),this.$visibleValue=b.find(".factory-visible-value"),this.units=b.data("units"),this.rangeStart=b.data("range-start"),this.rangeEnd=b.data("range-end"),this.step=b.data("step"),this.step||(this.step=1);var c=this.$result.val();this.$bar.noUiSlider({start:parseInt(c),range:{min:a.rangeStart,max:a.rangeEnd},connect:"lower",step:a.step}),this.$bar.on("slide set",function(){a.setValue(parseInt(a.$bar.val()))})},b.prototype.setValue=function(a,b){this.$result.val(a),this.$visibleValue.length>0&&(this.units?this.$visibleValue.text(a+this.units):this.$visibleValue.text(a)),b&&this.$bar.noUiSlider({start:a},!0),this.$result.trigger("keyup"),this.$element.trigger("change")},b.prototype.getValue=function(){return this.$result.val()},b.prototype.api=function(){return this},a.fn.factoryBootstrap459_integerControl=function(c){if("string"==typeof c){var d=a(this).data("factory.integer-control");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.integer-control");d||c.data("factory.integer-control",d=new b(this))})},a.fn.factoryBootstrap459_integerControl.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-integer").factoryBootstrap459_integerControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.list.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name"),"checklist"===this.way){this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(){c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length){this.$element.removeClass("factory-empty");for(var d in a){var e=a[d];c.addListItem(e)}}else this.$element.addClass("factory-empty"),this.$element.append("<li>"+b.emptyList+"</li>")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<li>"),e=a("<label>").attr("for","factory-checklist-"+c.name+"-"+b.value).appendTo(d),f=a("<span>").appendTo(e),g=a("<input />").attr("type","checkbox").attr("name",c.name+"[]").val(b.value).attr("id","factory-checklist-"+c.name+"-"+b.value).appendTo(f),h=(a("<span>"+b.title+"</span>").appendTo(e),c.getAjaxData());h.selected.length&&a.inArray(b.value,h.selected)>=0&&g.attr("checked","checked"),this.$element.append(d)},this.showError=function(b){this.$element.html("").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),this.$element.addClass("factory-list-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var d=this.$element.data("ajax");d&&this.loadData()}};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name"),"checklist"===this.way){this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(){c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length){this.$element.removeClass("factory-empty");for(var d in a){var e=a[d];c.addListItem(e)}}else this.$element.addClass("factory-empty"),this.$element.append("<li>"+b.emptyList+"</li>")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<li>"),e=a("<label>").attr("for","factory-checklist-"+c.name+"-"+b.value).appendTo(d),f=a("<span>").appendTo(e),g=a("<input />").attr("type","checkbox").attr("name",c.name+"[]").val(b.value).attr("id","factory-checklist-"+c.name+"-"+b.value).appendTo(f),h=(a("<span>"+b.title+"</span>").appendTo(e),c.getAjaxData());h.selected.length&&a.inArray(b.value,h.selected)>=0&&g.attr("checked","checked"),this.$element.append(d)},this.showError=function(b){this.$element.html("").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),this.$element.addClass("factory-list-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var d=this.$element.data("ajax");d&&this.loadData()}};a.fn.factoryBootstrap459_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.factoryBootstrap459_listControl.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-list").factoryBootstrap459_listControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){"use strict";var b=function(b){this.$element=a(b);var c=a(".factory-mtextbox-item",this.$element).eq(0).clone(!0);a(".factory-mtextbox-add-item",this.$element).on("click",function(){var b=a(this).closest(".factory-multiple-textbox-group").find(".factory-mtextbox-items"),d=c.clone(!0),e=a('<button class="btn btn-default btn-small factory-mtextbox-remove-item"><i class="fa fa-times" aria-hidden="true"></i></button>');return b.append(d.append(e)),d.find('input[type="text"]').val("").focus(),!1}),a(document).on("click",".factory-mtextbox-remove-item",function(){return a(this).closest(".factory-mtextbox-item").remove(),!1})};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){"use strict";var b=function(b){this.$element=a(b);var c=a(".factory-mtextbox-item",this.$element).eq(0).clone(!0);a(".factory-mtextbox-add-item",this.$element).on("click",function(){var b=a(this).closest(".factory-multiple-textbox-group").find(".factory-mtextbox-items"),d=c.clone(!0),e=a('<button class="btn btn-default btn-small factory-mtextbox-remove-item"><i class="fa fa-times" aria-hidden="true"></i></button>');return b.append(d.append(e)),d.find('input[type="text"]').val("").focus(),!1}),a(document).on("click",".factory-mtextbox-remove-item",function(){return a(this).closest(".factory-mtextbox-item").remove(),!1})};a.fn.factoryBootstrap459_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-459 .factory-multiple-textbox-group").factoryBootstrap459_MultipleTextboxControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.pattern.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){a.widget("
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){a.widget("factoryBootstrap459.patternControl",{_create:function(){this.$element=this.element,this.$preview=this.$element.find(".factory-preview"),this.$patternResult=this.$element.find(".factory-pattern-result"),this.$colorResult=this.$element.find(".factory-color-result"),this.$patterns=this.$element.find(".factory-patterns-panel"),this.$patternItems=this.$element.find(".factory-patterns-item"),this.$btnUpload=this.$element.find(".factory-upload-btn"),this.$btnChangeColor=this.$element.find(".factory-change-color-btn"),this.$colorPanel=this.$element.find(".factory-color-panel"),this.$colorContol=this.$element.find(".factory-color"),this._initMainPanel(),this._initColorPickerPanel(),this._initPatternsPanel()},_initMainPanel:function(){var a=this;this.$preview.on("click",function(){return a.togglePatternsPanel(),!1}),this.$btnChangeColor.on("click",function(){return a.toggleColorPanel(),!1})},togglePatternsPanel:function(){this.$element.hasClass("factory-patterns-panel-active")?this.hidePatternsPanel():this.showPatternsPanel()},hidePatternsPanel:function(){this.$element.removeClass("factory-patterns-panel-active")},showPatternsPanel:function(){this.$element.addClass("factory-patterns-panel-active")},hasColor:function(){return this.$element.hasClass("factory-color-panel-active")},toggleColorPanel:function(){this.hasColor()?this.hideColorPanel():this.showColorPanel()},hideColorPanel:function(){this.$element.removeClass("factory-color-panel-active"),this.$btnChangeColor.removeClass("button-active"),this.$colorResult.val(""),this.$colorResult.trigger("change"),this.$element.trigger("change")},showColorPanel:function(){this.$element.addClass("factory-color-panel-active"),this.$btnChangeColor.addClass("button-active"),this.$colorResult.val(this.$colorContol.factoryBootstrap459_colorControl("getValue")),this.$colorResult.trigger("change"),this.$element.trigger("change")},_initColorPickerPanel:function(){var a=this;this.$colorContol.bind("updated.color.factory",function(b,c){return a.$colorResult.val(c),!1})},_initPatternsPanel:function(){var b=this,c=!0,d=wp.media.editor.send.attachment;this.$btnUpload.on("click",function(){return c=!0,wp.media.editor.send.attachment=function(a,e){return c?(b.$preview.css({background:"url("+e.url+") repeat",border:"0",fontSize:"0"}),void b.$patternResult.attr("value",e.url).trigger("change")):d.apply(this,[a,e])},wp.media.editor.open(b.$btnUpload),a(".add_media").on("click",function(){c=!1}),!1}),this.$patternItems.on("click",function(){if(a(this).data("pattern")){var c=a(this).data("pattern");b.$preview.removeClass("factory-empty"),b.$preview.css({background:"url("+c+") repeat"}),b.$patternResult.attr("value",c).trigger("change")}})}}),a(function(){a.widget.bridge("factoryBootstrap459_patternControl",a.factoryBootstrap459.patternControl),a(".factory-bootstrap-459 .factory-pattern").factoryBootstrap459_patternControl({})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/holder.more-link.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a,b,c,d){"use strict";var e="
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a,b,c,d){"use strict";var e="factoryBootstrap459_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-459 .factory-more-link").factoryBootstrap459_moreLink()})}(jQuery,window,document);
|
libs/factory/bootstrap/assets/js-min/plugin.gradient-picker.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function($){function ctrlPtComparator(a,b){return a.position-b.position}function bind(a,b){return"function"==typeof a.bind?a.bind(b):function(){a.apply(b,arguments)}}function GradientSelection(a,b){var c=this;this.$el=a,this.$presets=this.$el.find(".gradientPicker-pallets"),this.$presetsItems=this.$presets.find(".factory-preset-gradient"),this.$preview=this.$el.find(".gradientPicker-preview"),this.$pointsContainer=this.$el.find(".factory-points"),this.$colorPickerContainer=this.$el.find(".factory-color-picker-container"),this.$colorPicker=this.$el.find(".factory-color-picker"),this.$colorHex=this.$el.find(".factory-color-hex"),this.$opacitySliderContainer=this.$el.find(".factory-slider-container"),this.$opacitySlider=this.$el.find(".factory-bar"),this.$el.css("position","relative"),this.opts=b,this._createPresetGradients(),this._createPreview(),this._createColorPicker(),this._createDirectionDropdown(),this.controlPoints=[],b.controlPoints=b.controlPoints||[];for(var d=0;d<b.controlPoints.length;++d){var e=this.createCtrlPt(b.controlPoints[d]);this.controlPoints.push(e)}0===this.controlPoints.length&&(this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("primary")+" 0% 1")),this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("secondary")+" 100% 1"))),$(document).on("click.gp.factory",function(){c.hideColorPicker()}),this.$colorPickerContainer.on("click.gp.factory",function(a){a.stopPropagation()}),this.$pointsContainer.on("click.gp.factory",function(a){a.stopPropagation(),c.placePoint(a)}),this.updatePreview()}function ControlPoint(a,b,c){var d=this;if(this.parent=a,this.$container=a.$pointsContainer,this.$el=$('<span class="factory-point"></span>'),this.$pointColor=$('<span class="factory-point-color"></span>').appendTo(this.$el),this.$container.append(this.$el),"string"==typeof b?(b=b.split(" "),this.position=parseFloat(b[1])/100,this.color=b[0],this.opacity=b[2]):(this.position=b.position,this.color=b.color,this.opacity=b.opacity),this.outerWidth=this.$el.outerWidth(),this.$pointColor.css({"background-color":d.color,opacity:d.opacity}),"horizontal"===c){var e=(d.$container.width()-this.$el.outerWidth())*this.position;this.$el.css("left",e)}else{var f=(d.$container.height()-this.$el.outerHeight())*this.position;this.$el.css("top",f)}this.drag=bind(this.drag,this),this.stop=bind(this.stop,this),this.$el.disableSelection().css("webkit-user-select","none").draggable({axis:"horizontal"===c?"x":"y",drag:this.drag,stop:this.stop,containment:d.$container,cancel:null}),this.$el.on("click.gp.factory",function(a){d.parent.currentPoint===d?d.parent.hideColorPicker(d):d.parent.showColorPicker(d),a.stopPropagation()})}$.event.special.destroyed||($.event.special.destroyed={remove:function(a){a.handler&&a.handler()}});var agent=window.navigator.userAgent,browserPrefix=["-webkit-","-moz-","-ms-"],x,y=0;GradientSelection.prototype={_createPresetGradients:function(){var a=this;this.$presetsItems.each(function(){var a=$(this),b=$('<span class="factory-secondary-color-wrap"></span>').appendTo(a),c=$('<span class="factory-secondary-color"></span>').appendTo(b);a.css("background",a.data("primary")),c.css("background",a.data("secondary"))}),this.$presetsItems.click(function(){var b=$(this).data("primary"),c=$(this).data("secondary");a.setGradient([b+" 0% 1",c+" 100% 1"])})},_createPreview:function(){var a=this.$preview[0];a.width=0===a.clientWidth?210:a.clientWidth,a.height=0===a.clientHeight?30:a.clientHeight,this.g2d=a.getContext("2d")},_createColorPicker:function(){var a=this;this.$colorPicker.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function($){function ctrlPtComparator(a,b){return a.position-b.position}function bind(a,b){return"function"==typeof a.bind?a.bind(b):function(){a.apply(b,arguments)}}function GradientSelection(a,b){var c=this;this.$el=a,this.$presets=this.$el.find(".gradientPicker-pallets"),this.$presetsItems=this.$presets.find(".factory-preset-gradient"),this.$preview=this.$el.find(".gradientPicker-preview"),this.$pointsContainer=this.$el.find(".factory-points"),this.$colorPickerContainer=this.$el.find(".factory-color-picker-container"),this.$colorPicker=this.$el.find(".factory-color-picker"),this.$colorHex=this.$el.find(".factory-color-hex"),this.$opacitySliderContainer=this.$el.find(".factory-slider-container"),this.$opacitySlider=this.$el.find(".factory-bar"),this.$el.css("position","relative"),this.opts=b,this._createPresetGradients(),this._createPreview(),this._createColorPicker(),this._createDirectionDropdown(),this.controlPoints=[],b.controlPoints=b.controlPoints||[];for(var d=0;d<b.controlPoints.length;++d){var e=this.createCtrlPt(b.controlPoints[d]);this.controlPoints.push(e)}0===this.controlPoints.length&&(this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("primary")+" 0% 1")),this.controlPoints.push(this.createCtrlPt(this.$presetsItems.data("secondary")+" 100% 1"))),$(document).on("click.gp.factory",function(){c.hideColorPicker()}),this.$colorPickerContainer.on("click.gp.factory",function(a){a.stopPropagation()}),this.$pointsContainer.on("click.gp.factory",function(a){a.stopPropagation(),c.placePoint(a)}),this.updatePreview()}function ControlPoint(a,b,c){var d=this;if(this.parent=a,this.$container=a.$pointsContainer,this.$el=$('<span class="factory-point"></span>'),this.$pointColor=$('<span class="factory-point-color"></span>').appendTo(this.$el),this.$container.append(this.$el),"string"==typeof b?(b=b.split(" "),this.position=parseFloat(b[1])/100,this.color=b[0],this.opacity=b[2]):(this.position=b.position,this.color=b.color,this.opacity=b.opacity),this.outerWidth=this.$el.outerWidth(),this.$pointColor.css({"background-color":d.color,opacity:d.opacity}),"horizontal"===c){var e=(d.$container.width()-this.$el.outerWidth())*this.position;this.$el.css("left",e)}else{var f=(d.$container.height()-this.$el.outerHeight())*this.position;this.$el.css("top",f)}this.drag=bind(this.drag,this),this.stop=bind(this.stop,this),this.$el.disableSelection().css("webkit-user-select","none").draggable({axis:"horizontal"===c?"x":"y",drag:this.drag,stop:this.stop,containment:d.$container,cancel:null}),this.$el.on("click.gp.factory",function(a){d.parent.currentPoint===d?d.parent.hideColorPicker(d):d.parent.showColorPicker(d),a.stopPropagation()})}$.event.special.destroyed||($.event.special.destroyed={remove:function(a){a.handler&&a.handler()}});var agent=window.navigator.userAgent,browserPrefix=["-webkit-","-moz-","-ms-"],x,y=0;GradientSelection.prototype={_createPresetGradients:function(){var a=this;this.$presetsItems.each(function(){var a=$(this),b=$('<span class="factory-secondary-color-wrap"></span>').appendTo(a),c=$('<span class="factory-secondary-color"></span>').appendTo(b);a.css("background",a.data("primary")),c.css("background",a.data("secondary"))}),this.$presetsItems.click(function(){var b=$(this).data("primary"),c=$(this).data("secondary");a.setGradient([b+" 0% 1",c+" 100% 1"])})},_createPreview:function(){var a=this.$preview[0];a.width=0===a.clientWidth?210:a.clientWidth,a.height=0===a.clientHeight?30:a.clientHeight,this.g2d=a.getContext("2d")},_createColorPicker:function(){var a=this;this.$colorPicker.factoryBootstrap459_iris({width:217,palettes:["#16a086","#27ae61","#2a80b9","#8f44ad","#2d3e50","#f49c14","#c1392b","#bec3c7"],hide:!0,change:function(b,c){a.currentPoint.updateColor(c.color.toString()),a._colorLock||a.$colorHex.val(c.color.toString())}}),a.$colorHex.on("change paste keyup",function(){a._colorLock=!0,a.$colorPicker.factoryBootstrap459_iris("color",a.$colorHex.val()),a._cancelColorLock()}),this.$opacitySlider.noUiSlider({start:100,range:{min:0,max:100},step:1}),this.$opacitySlider.on("slide",function(){var b=parseInt(a.$opacitySlider.val()),c=b+"%";a.$opacitySliderContainer.find(".factory-visible-value").text(c),a.currentPoint.updateOpacity(b/100)}),this.$opacitySlider.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},_repeatColorLock:!1,_colorLock:!1,_colorLockTimer:!1,_cancelColorLock:function(a){var b=this;return b._colorLockTimer&&!a?(this._repeatColorLock=!0,!1):void(this._colorLockTimer=setTimeout(function(){return b._repeatColorLock?(b._repeatColorLock=!1,b._cancelColorLock(!0),!1):(b._colorLock=!1,b._colorLockTimer=!1,void(b._repeatColorLock=!1))},500))},_createDirectionDropdown:function(){var a=this,b=factory&&factory.res&&factory.res.resVertical||"vertical",c=factory&&factory.res&&factory.res.resHorizontal||"horizontal";this.$directionDropdown=$('<select class="gradientPicker-filldirection"><option value="vertical"'+("top"===a.opts.fillDirection?" selected":"")+">"+b+'</option><option value="horizontal"'+("left"===a.opts.fillDirection?" selected":"")+">"+c+"</option></select>"),this.$el.append(this.$directionDropdown),this.$directionDropdown.chosen(),this.$directionDropdown.change(function(){a.setGradientDirection($(this).val())})},showColorPicker:function(a){this.currentPoint=a,$(".factory-current-point").removeClass("factory-current-point"),a.$el.addClass("factory-current-point"),this.$colorPickerContainer.show(),this.$colorPicker.factoryBootstrap459_iris("show"),this.$colorPicker.factoryBootstrap459_iris("option","color",a.color),this.$opacitySlider.val(100*a.opacity),this.$opacitySlider.trigger("slide")},hideColorPicker:function(){$(".factory-current-point").removeClass("factory-current-point"),this.currentPoint=!1,this.$colorPickerContainer.hide()},isColorPickerShown:function(){return this.currentPoint},docClicked:function(){$(".gradientPicker-iris-wrap").hide(),$(".gradientPicker-ctrlPt").removeClass("open")},createCtrlPt:function(a){return new ControlPoint(this,a,this.opts.orientation)},updateOptions:function(a,b){if($.extend(this.opts,a),b){this.controlPoints=[],this.$pointsContainer.html("");for(var c=0;c<this.opts.controlPoints.length;++c){var d=this.createCtrlPt(this.opts.controlPoints[c]);this.controlPoints.push(d)}}switch(this.updatePreview(),this.opts.fillDirection){case"top":fillDirectCheck="horizontal";break;case"left":fillDirectCheck="vertical";break;default:fillDirectCheck=!1}fillDirectCheck&&$(".gradientPicker-filldirection",this.$el).find('option[value="'+fillDirectCheck+'"]').prop("selected",!0)},updatePreview:function(){var a=[];if(this.controlPoints.sort(ctrlPtComparator),this.g2d.clearRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),"horizontal"===this.opts.orientation)for(var b=this.g2d.createLinearGradient(0,0,this.g2d.canvas.width,0),c=0;c<this.controlPoints.length;++c){var d=this.controlPoints[c];b.addColorStop(d.position,"rgba("+hexToRgb(d.color).r+","+hexToRgb(d.color).g+","+hexToRgb(d.color).b+", "+d.opacity+")"),a.push({position:d.position,color:d.color,opacity:d.opacity})}if(this.g2d.fillStyle=b,this.g2d.fillRect(0,0,this.g2d.canvas.width,this.g2d.canvas.height),this.opts.generateStyles)var e=this._generatePreviewStyles();this.opts.change(a,e)},removeControlPoint:function(a){var b=this.controlPoints.indexOf(a);-1!=b&&(this.controlPoints.splice(b,1),a.$el.remove())},placePoint:function(a){a.stopPropagation();var b=$(a.target).offset(),c=a.pageX-b.left,d=a.pageY-b.top,e=this.g2d.getImageData(c,d,1,1),f="rgb("+e.data[0]+","+e.data[1]+","+e.data[2]+")",g=1/255*e.data[3],h=this.createCtrlPt({position:c/this.g2d.canvas.width,color:rgb2hex(f),opacity:g});this.controlPoints.push(h),this.controlPoints.sort(ctrlPtComparator),this.showColorPicker(h)},setGradient:function(a){this.updateOptions({controlPoints:a},!0),this.updatePreview()},setGradientDirection:function(a){switch(a){case"horizontal":this.updateOptions({type:"linear",fillDirection:"top"},!1);break;case"vertical":this.updateOptions({type:"linear",fillDirection:"left"},!1)}},_generatePreviewStyles:function(){var a={};a.filldirection=this.opts.fillDirection,a.color_points=[];for(var b=0;b<this.controlPoints.length;++b){var c=this.controlPoints[b];a.color_points.push(c.color+" "+(100*c.position|0)+"% "+c.opacity)}return JSON.stringify(a)},_genPalletsBackground:function(a,b){return cssRules="linear-gradient(90deg, "+a+" 0%, "+b+" 100%)",agent.indexOf("WebKit")>=0?crossBrowserRule=browserPrefix[0]+cssRules:agent.indexOf("Mozilla")>=0?crossBrowserRule=browserPrefix[1]+cssRules:agent.indexOf("Microsoft")>=0?crossBrowserRule=browserPrefix[2]+cssRules:crossBrowserRule=cssRules,crossBrowserRule}},ControlPoint.prototype={updateColor:function(a){this.color=a,this.$pointColor.css("background-color",a),this.parent.updatePreview()},updateOpacity:function(a){this.opacity=a,this.$pointColor.css("opacity",a),this.parent.updatePreview()},drag:function(e,ui){var stopPointPosition=eval(this.$el.parent().offset().top+this.$el.parent().height()+20);e.pageY>stopPointPosition&&this.remove();var left=ui.position.left;this.position=left/(this.$container.width()-this.outerWidth),this.parent.updatePreview()},stop:function(){this.parent.updatePreview()},remove:function(){this.parent.removeControlPoint(this),this.parent.hideColorPicker(),this.parent.updatePreview()}};var methods={init:function(a){a=$.extend({controlPoints:["#FFF 0% 1","#000 100% 1"],orientation:"horizontal",type:"linear",fillDirection:"left",generateStyles:!0,change:function(){}},a),this.each(function(){var b=$(this),c=new GradientSelection(b,a);b.data("gradientPicker-sel",c)})},update:function(a){this.each(function(){var b=$(this),c=b.data("gradientPicker-sel");null!=c&&c.updateOptions(a,!0)})}};$.fn.gradientPicker=function(a,b){"string"==typeof a&&"init"!==a?methods[a].call(this,b):(b=a,methods.init.call(this,b))}}(jQuery);
|
libs/factory/bootstrap/assets/js-min/plugin.iris.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
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.factoryBootstrap454_iris=!0,a.fn.factoryBootstrap454_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap454_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).factoryBootstrap454_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.factoryBootstrap454_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.factoryBootstrap454_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.factoryBootstrap454_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.factoryBootstrap454_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.factoryBootstrap454_iris",n),void a('<style id="iris-css">'+m+"</style>").appendTo("head"))}(jQuery);
|
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.factoryBootstrap459_iris=!0,a.fn.factoryBootstrap459_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap459_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).factoryBootstrap459_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.factoryBootstrap459_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.factoryBootstrap459_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.factoryBootstrap459_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.factoryBootstrap459_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.factoryBootstrap459_iris",n),void a('<style id="iris-css">'+m+"</style>").appendTo("head"))}(jQuery);
|
libs/factory/bootstrap/assets/js-min/plugin.paddings-editor.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){this.$element=a(b),this.$rectangle=this.$element.find(".factory-rectangle"),this.$center=this.$element.find(".factory-side-center"),this.$bar=this.$element.find(".factory-bar"),this.$sides=this.$element.find(".factory-side"),this.$result=this.$element.find(".factory-result"),this.units=this.$element.data("units"),this.rangeStart=this.$element.data("range-start"),this.rangeEnd=this.$element.data("range-end"),this.step=this.$element.data("step"),this._createCanvas(),this._createSlider(),this._initMouse(),this.selectSide("center")};b.prototype._createCanvas=function(){var b=this;this._recalculateSizes(),this.$canvas=a("<canvas width='"+b.elementWidth+"' height='"+b.elementHeight+"'>").appendTo(this.$rectangle),this.canvasContext=this.$canvas.get(0).getContext("2d"),this._redraw()},b.prototype._createSlider=function(){var a=this;this.$bar.noUiSlider({start:parseInt(a.$center.data("value")),range:{min:a.rangeStart,max:a.rangeEnd},step:a.step}),this.$bar.on("slide",function(){var b=parseInt(a.$bar.val()),c=b+a.units;"center"===a.activeSide?(a.$sides.data("value",b),a.$sides.find(".factory-visible-value").text(c)):(a.$activeSide.data("value",b),a.$activeSide.find(".factory-visible-value").text(c))}),this.$bar.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},b.prototype.getValue=function(){var a=this.$element.find(".factory-side-top").data("value"),b=this.$element.find(".factory-side-right").data("value"),c=this.$element.find(".factory-side-bottom").data("value"),d=this.$element.find(".factory-side-left").data("value");return a+this.units+" "+b+this.units+" "+c+this.units+" "+d+this.units},b.prototype.selectSide=function(a){this.activeSide!==a&&(this.activeSide=a,this.$activeSide=this.$element.find(".factory-side-"+this.activeSide),this.$element.find(".factory-side.factory-active").removeClass("factory-active"),this.$activeSide.addClass("factory-active"),this._redraw(),this.$bar.val(this.$activeSide.data("value")))},b.prototype._initMouse=function(){var a=this;this._recalculateSizes(),this.$rectangle.on("mousemove.paddings-editor",function(b){a.hoveredSide=a._getCurrentSide(b.pageX,b.pageY),a.hoveredSide!==a.lastHoveredSide&&(a.lastHoveredSide=a.hoveredSide,a._redraw())}),this.$rectangle.on("mouseleave.paddings-editor",function(b){a.hoveredSide=a.lastHoveredSide=null,a._redraw()}),this.$rectangle.on("click.paddings-editor",function(b){var c=a._getCurrentSide(b.pageX,b.pageY);a.selectSide(c)})},b.prototype._getCurrentSide=function(a,b){var c=this.$element.offset(),d=a-c.left,e=b-c.top,f=d-this.centerX,g=e-this.centerY,h=Math.sqrt(Math.pow(f,2)+Math.pow(g,2));if(h<=this.centerR)return"center";var i=this.elementHeight,j=this.elementWidth,k=-this.elementWidth*this.elementHeight,l=-(k+i*d)/j,m=-this.elementHeight,n=this.elementWidth,o=0,p=-(o+m*d)/n;return e>l&&p>e?"right":l>e&&e>p?"left":l>e&&p>e?"top":e>l&&e>p?"bottom":null},b.prototype._redraw=function(){this.canvasContext.clearRect(0,0,this.elementWidth,this.elementHeight),this._highlightSide("top","#a6b6b6"),this._highlightSide("bottom","#a6b6b6"),this._highlightSide("left","#aec0c0"),this._highlightSide("right","#aec0c0"),this._highlightSide(this.hoveredSide,"#c0cece"),this.activeSide&&this._highlightSide(this.activeSide,"#829595")},b.prototype._highlightSide=function(a,b){a&&"center"!==a&&(this.canvasContext.fillStyle=b,this.canvasContext.beginPath(),"top"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,0)):"bottom"===a?(this.canvasContext.moveTo(0,this.elementHeight),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)):"left"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(0,this.elementHeight)):"right"===a&&(this.canvasContext.moveTo(this.elementWidth,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)),this.canvasContext.closePath(),this.canvasContext.fill())},b.prototype._recalculateSizes=function(){this.elementOffset=this.$element.offset(),this.elementWidth=this.$rectangle.innerWidth(),this.elementHeight=this.$rectangle.innerHeight(),this.centerSize=this.$center.innerWidth(),this.centerR=this.centerSize/2,this.centerX=this.elementWidth/2,this.centerY=this.elementHeight/2},a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){this.$element=a(b),this.$rectangle=this.$element.find(".factory-rectangle"),this.$center=this.$element.find(".factory-side-center"),this.$bar=this.$element.find(".factory-bar"),this.$sides=this.$element.find(".factory-side"),this.$result=this.$element.find(".factory-result"),this.units=this.$element.data("units"),this.rangeStart=this.$element.data("range-start"),this.rangeEnd=this.$element.data("range-end"),this.step=this.$element.data("step"),this._createCanvas(),this._createSlider(),this._initMouse(),this.selectSide("center")};b.prototype._createCanvas=function(){var b=this;this._recalculateSizes(),this.$canvas=a("<canvas width='"+b.elementWidth+"' height='"+b.elementHeight+"'>").appendTo(this.$rectangle),this.canvasContext=this.$canvas.get(0).getContext("2d"),this._redraw()},b.prototype._createSlider=function(){var a=this;this.$bar.noUiSlider({start:parseInt(a.$center.data("value")),range:{min:a.rangeStart,max:a.rangeEnd},step:a.step}),this.$bar.on("slide",function(){var b=parseInt(a.$bar.val()),c=b+a.units;"center"===a.activeSide?(a.$sides.data("value",b),a.$sides.find(".factory-visible-value").text(c)):(a.$activeSide.data("value",b),a.$activeSide.find(".factory-visible-value").text(c))}),this.$bar.on("set",function(){a.$result.val(a.getValue()),a.$result.trigger("change")})},b.prototype.getValue=function(){var a=this.$element.find(".factory-side-top").data("value"),b=this.$element.find(".factory-side-right").data("value"),c=this.$element.find(".factory-side-bottom").data("value"),d=this.$element.find(".factory-side-left").data("value");return a+this.units+" "+b+this.units+" "+c+this.units+" "+d+this.units},b.prototype.selectSide=function(a){this.activeSide!==a&&(this.activeSide=a,this.$activeSide=this.$element.find(".factory-side-"+this.activeSide),this.$element.find(".factory-side.factory-active").removeClass("factory-active"),this.$activeSide.addClass("factory-active"),this._redraw(),this.$bar.val(this.$activeSide.data("value")))},b.prototype._initMouse=function(){var a=this;this._recalculateSizes(),this.$rectangle.on("mousemove.paddings-editor",function(b){a.hoveredSide=a._getCurrentSide(b.pageX,b.pageY),a.hoveredSide!==a.lastHoveredSide&&(a.lastHoveredSide=a.hoveredSide,a._redraw())}),this.$rectangle.on("mouseleave.paddings-editor",function(b){a.hoveredSide=a.lastHoveredSide=null,a._redraw()}),this.$rectangle.on("click.paddings-editor",function(b){var c=a._getCurrentSide(b.pageX,b.pageY);a.selectSide(c)})},b.prototype._getCurrentSide=function(a,b){var c=this.$element.offset(),d=a-c.left,e=b-c.top,f=d-this.centerX,g=e-this.centerY,h=Math.sqrt(Math.pow(f,2)+Math.pow(g,2));if(h<=this.centerR)return"center";var i=this.elementHeight,j=this.elementWidth,k=-this.elementWidth*this.elementHeight,l=-(k+i*d)/j,m=-this.elementHeight,n=this.elementWidth,o=0,p=-(o+m*d)/n;return e>l&&p>e?"right":l>e&&e>p?"left":l>e&&p>e?"top":e>l&&e>p?"bottom":null},b.prototype._redraw=function(){this.canvasContext.clearRect(0,0,this.elementWidth,this.elementHeight),this._highlightSide("top","#a6b6b6"),this._highlightSide("bottom","#a6b6b6"),this._highlightSide("left","#aec0c0"),this._highlightSide("right","#aec0c0"),this._highlightSide(this.hoveredSide,"#c0cece"),this.activeSide&&this._highlightSide(this.activeSide,"#829595")},b.prototype._highlightSide=function(a,b){a&&"center"!==a&&(this.canvasContext.fillStyle=b,this.canvasContext.beginPath(),"top"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,0)):"bottom"===a?(this.canvasContext.moveTo(0,this.elementHeight),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)):"left"===a?(this.canvasContext.moveTo(0,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(0,this.elementHeight)):"right"===a&&(this.canvasContext.moveTo(this.elementWidth,0),this.canvasContext.lineTo(this.centerX,this.centerY),this.canvasContext.lineTo(this.elementWidth,this.elementHeight)),this.canvasContext.closePath(),this.canvasContext.fill())},b.prototype._recalculateSizes=function(){this.elementOffset=this.$element.offset(),this.elementWidth=this.$rectangle.innerWidth(),this.elementHeight=this.$rectangle.innerHeight(),this.centerSize=this.$center.innerWidth(),this.centerR=this.centerSize/2,this.centerX=this.elementWidth/2,this.centerY=this.elementHeight/2},a.fn.factoryBootstrap459_paddingsEditor=function(c){if("string"==typeof c){var d=a(this).data("factory.paddings-editor");return d?d[c]():null}return this.each(function(){var c=a(this),d=c.data("factory.paddings-editor");d||c.data("factory.paddings-editor",d=new b(this))})},a.fn.factoryBootstrap459_paddingsEditor.Constructor=b,a(function(){a(".factory-bootstrap-459 .factory-paddings-editor").factoryBootstrap459_paddingsEditor()})}(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_459_LOADED') ) {
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
+
define('FACTORY_BOOTSTRAP_459_VERSION', '4.5.9');
|
27 |
+
define('FACTORY_BOOTSTRAP_459_LOADED', true);
|
28 |
|
29 |
if( !defined('FACTORY_FLAT_ADMIN') ) {
|
30 |
define('FACTORY_FLAT_ADMIN', true);
|
31 |
}
|
32 |
|
33 |
+
define('FACTORY_BOOTSTRAP_459_DIR', dirname(__FILE__));
|
34 |
+
define('FACTORY_BOOTSTRAP_459_URL', plugins_url(null, __FILE__));
|
35 |
|
36 |
+
require_once(FACTORY_BOOTSTRAP_459_DIR . '/includes/functions.php');
|
37 |
|
38 |
/**
|
39 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
40 |
*/
|
41 |
+
add_action('wbcr_factory_bootstrap_459_plugin_created', function ($plugin) {
|
42 |
+
$manager = new Wbcr_FactoryBootstrap459_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_FactoryBootstrap454_Manager {
|
|
51 |
*
|
52 |
* @since 1.0.0
|
53 |
*/
|
54 |
-
public function __construct(
|
55 |
{
|
56 |
$this->plugin = $plugin;
|
57 |
|
@@ -115,8 +115,8 @@ class Wbcr_FactoryBootstrap454_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_FactoryBootstrap454_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_FactoryBootstrap454_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_FactoryBootstrap454_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_FactoryBootstrap459_Manager {
|
24 |
|
25 |
/**
|
26 |
* A plugin for which the manager was created.
|
27 |
*
|
28 |
* @since 3.2.0
|
29 |
+
* @var Wbcr_Factory458_Plugin
|
30 |
*/
|
31 |
public $plugin;
|
32 |
|
51 |
*
|
52 |
* @since 1.0.0
|
53 |
*/
|
54 |
+
public function __construct(Wbcr_Factory458_Plugin $plugin)
|
55 |
{
|
56 |
$this->plugin = $plugin;
|
57 |
|
115 |
public function loadAssets($hook)
|
116 |
{
|
117 |
|
118 |
+
do_action('wbcr_factory_458_bootstrap_enqueue_scripts', $hook);
|
119 |
+
do_action('wbcr_factory_458_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_459_DIR . '/assets/cache/';
|
165 |
+
$cache_dir_url = FACTORY_BOOTSTRAP_459_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_459_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_459_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_459_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_453_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_453_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_453_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_453_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_453_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_453_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_458_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_458'), __('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_458')]);
|
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_458')]);
|
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_458' ), 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_458')]);
|
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_458_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_458')], 403);
|
113 |
}
|
114 |
|
115 |
if( empty($component_name) ) {
|
116 |
+
wp_send_json_error(['error_message' => __('Required attribute [component_name] is empty.', 'wbcr_factory_458')]);
|
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_458_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-458-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-458-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-458-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_458.hooks.run('core/components/pre_update', [$this, data]);
|
58 |
|
59 |
self.sendRequest(data, function(response) {
|
60 |
if( !response || !response.success ) {
|
61 |
+
$.wfactory_458.hooks.run('core/components/update_error', [
|
62 |
$this,
|
63 |
data,
|
64 |
response
|
80 |
$this.removeClass('button-default').addClass('button-primary');
|
81 |
}
|
82 |
|
83 |
+
$.wfactory_458.hooks.run('core/components/installed', [
|
84 |
$this,
|
85 |
data,
|
86 |
response
|
96 |
$this.removeClass('button-primary').addClass('button-default');
|
97 |
}
|
98 |
|
99 |
+
$.wfactory_458.hooks.run('core/components/pre_activate', [
|
100 |
$this,
|
101 |
data,
|
102 |
response
|
124 |
$this.removeClass('button-default').addClass('button-primary');
|
125 |
}
|
126 |
|
127 |
+
$.wfactory_458.hooks.run('core/components/deactivated', [
|
128 |
$this,
|
129 |
data,
|
130 |
response
|
134 |
|
135 |
plugin_action = 'install';
|
136 |
|
137 |
+
$.wfactory_458.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_458.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-458-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_458.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_458.hooks.run('core/components/activated', [
|
191 |
componentButton,
|
192 |
sendData,
|
193 |
response
|
210 |
console.log(xhr.responseText);
|
211 |
console.log(thrownError);
|
212 |
|
213 |
+
$.wfactory_458.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_458 ) {
|
12 |
+
$.wfactory_458 = {};
|
13 |
}
|
14 |
|
15 |
+
$.wfactory_458.filters = $.wfactory_458.filters || {
|
16 |
|
17 |
/**
|
18 |
* A set of registered filters.
|
79 |
}
|
80 |
};
|
81 |
|
82 |
+
$.wfactory_458.hooks = $.wfactory_458.hooks || {
|
83 |
|
84 |
/**
|
85 |
* Applies filters to a given input value.
|
86 |
*/
|
87 |
run: function(filterName, args) {
|
88 |
+
$.wfactory_458.filters.run(filterName, args);
|
89 |
},
|
90 |
|
91 |
/**
|
92 |
* Registers a new filter.
|
93 |
*/
|
94 |
add: function(filterName, callback, priority) {
|
95 |
+
$.wfactory_458.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_458_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
define('FACTORY_458_LOADED', true);
|
22 |
|
23 |
+
define('FACTORY_458_VERSION', '4.5.8');
|
24 |
|
25 |
+
define('FACTORY_458_DIR', dirname(__FILE__));
|
26 |
+
define('FACTORY_458_URL', plugins_url(null, __FILE__));
|
27 |
|
28 |
+
load_plugin_textdomain('wbcr_factory_458', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
29 |
|
30 |
#comp merge
|
31 |
+
require_once(FACTORY_458_DIR . '/includes/functions.php');
|
32 |
|
33 |
+
require_once(FACTORY_458_DIR . '/includes/entities/class-factory-paths.php');
|
34 |
+
require_once(FACTORY_458_DIR . '/includes/entities/class-factory-support.php');
|
35 |
|
36 |
+
require_once(FACTORY_458_DIR . '/includes/class-factory-requests.php');
|
37 |
+
require_once(FACTORY_458_DIR . '/includes/class-factory-options.php');
|
38 |
+
require_once(FACTORY_458_DIR . '/includes/class-factory-plugin-base.php');
|
39 |
+
require_once(FACTORY_458_DIR . '/includes/class-factory-migrations.php');
|
40 |
+
require_once(FACTORY_458_DIR . '/includes/class-factory-notices.php');
|
41 |
|
42 |
// ASSETS
|
43 |
+
require_once(FACTORY_458_DIR . '/includes/assets-managment/class-factory-assets-list.php');
|
44 |
+
require_once(FACTORY_458_DIR . '/includes/assets-managment/class-factory-script-list.php');
|
45 |
+
require_once(FACTORY_458_DIR . '/includes/assets-managment/class-factory-style-list.php');
|
46 |
|
47 |
// PREMIUM
|
48 |
+
require_once(FACTORY_458_DIR . '/includes/premium/class-factory-license-interface.php');
|
49 |
+
require_once(FACTORY_458_DIR . '/includes/premium/class-factory-provider-abstract.php');
|
50 |
+
require_once(FACTORY_458_DIR . '/includes/premium/class-factory-manager.php');
|
51 |
|
52 |
// UPDATES
|
53 |
+
require_once(FACTORY_458_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php');
|
54 |
+
require_once(FACTORY_458_DIR . '/includes/updates/repositories/class-factory-wordpress.php');
|
55 |
+
require_once(FACTORY_458_DIR . '/includes/updates/repositories/class-factory-github.php');
|
56 |
+
require_once(FACTORY_458_DIR . '/includes/updates/class-factory-upgrader.php');
|
57 |
+
require_once(FACTORY_458_DIR . '/includes/updates/class-factory-premium-upgrader.php');
|
58 |
|
59 |
+
require_once(FACTORY_458_DIR . '/includes/class-factory-plugin-abstract.php');
|
60 |
|
61 |
+
require_once(FACTORY_458_DIR . '/includes/activation/class-factory-activator.php');
|
62 |
+
require_once(FACTORY_458_DIR . '/includes/activation/class-factory-update.php');
|
63 |
#endcomp
|
64 |
|
65 |
add_action('admin_enqueue_scripts', function () {
|
66 |
+
wp_enqueue_script('wfactory-458-core-general', FACTORY_458_URL . '/assets/js/core-general.js', [
|
67 |
'jquery'
|
68 |
+
], FACTORY_458_VERSION);
|
69 |
+
wp_enqueue_script('wfactory-458-core-components', FACTORY_458_URL . '/assets/js/core-components.js', [
|
70 |
'jquery',
|
71 |
+
'wfactory-458-core-general'
|
72 |
+
], FACTORY_458_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_Factory458_Activator {
|
23 |
|
24 |
/**
|
25 |
* Curent plugin.
|
26 |
*
|
27 |
+
* @var Wbcr_Factory458_Plugin
|
28 |
*/
|
29 |
public $plugin;
|
30 |
|
31 |
+
public function __construct( Wbcr_Factory458_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_Factory458_Update {
|
24 |
|
25 |
/**
|
26 |
* Current plugin
|
27 |
*
|
28 |
+
* @var Wbcr_Factory458_Plugin
|
29 |
*/
|
30 |
var $plugin;
|
31 |
|
32 |
+
public function __construct( Wbcr_Factory458_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_Factory453_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_Factory458_AssetsList {
|
23 |
|
24 |
protected $all = [];
|
25 |
public $header_place = [];
|
29 |
protected $default_place;
|
30 |
|
31 |
/**
|
32 |
+
* @var Wbcr_Factory458_Plugin
|
33 |
*/
|
34 |
protected $plugin;
|
35 |
|
36 |
/**
|
37 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
38 |
* @param bool $defaultIsFooter
|
39 |
*/
|
40 |
+
public function __construct( Wbcr_Factory458_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_Factory453_ScriptList extends Wbcr_Factory453_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_Factory458_ScriptList extends Wbcr_Factory458_AssetsList {
|
24 |
|
25 |
public $localize_data = [];
|
26 |
public $use_ajax = false;
|
149 |
* @param string $varname
|
150 |
* @param array $data
|
151 |
*
|
152 |
+
* @return Wbcr_Factory458_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_Factory458_StyleList extends Wbcr_Factory458_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_110' ), $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_458' ), $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_458' ), $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();
|
@@ -77,13 +77,13 @@ class Migrations {
|
|
77 |
public function check_migrations() {
|
78 |
if ( $this->is_migration_error() && isset( $_GET['wbcr_factory_fix_migration_error'] ) ) {
|
79 |
$this->fix_migration_error();
|
80 |
-
|
81 |
die();
|
82 |
}
|
83 |
|
84 |
if ( $this->is_debug() && isset( $_GET['wbcr_factory_test_migration'] ) ) {
|
85 |
$this->make_migration();
|
86 |
-
|
87 |
die();
|
88 |
}
|
89 |
|
@@ -126,17 +126,17 @@ class Migrations {
|
|
126 |
$migration_error_text = get_option( $this->plugin->getOptionName( 'plugin_migration_error' ), '' );
|
127 |
}
|
128 |
|
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;
|
@@ -160,21 +160,21 @@ class Migrations {
|
|
160 |
return $notices;
|
161 |
}
|
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_458;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory458_Plugin;
|
7 |
|
8 |
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit;
|
35 |
/**
|
36 |
* Migrations constructor.
|
37 |
*
|
38 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
39 |
*
|
40 |
* @throws Exception
|
41 |
*/
|
42 |
+
public function __construct( Wbcr_Factory458_Plugin $plugin ) {
|
43 |
|
44 |
$this->plugin = $plugin;
|
45 |
$plugin_name = $plugin->getPluginName();
|
77 |
public function check_migrations() {
|
78 |
if ( $this->is_migration_error() && isset( $_GET['wbcr_factory_fix_migration_error'] ) ) {
|
79 |
$this->fix_migration_error();
|
80 |
+
wp_safe_redirect( esc_url_raw(remove_query_arg( 'wbcr_factory_fix_migration_error' )) );
|
81 |
die();
|
82 |
}
|
83 |
|
84 |
if ( $this->is_debug() && isset( $_GET['wbcr_factory_test_migration'] ) ) {
|
85 |
$this->make_migration();
|
86 |
+
wp_safe_redirect( esc_url_raw(remove_query_arg( 'wbcr_factory_test_migration' )) );
|
87 |
die();
|
88 |
}
|
89 |
|
126 |
$migration_error_text = get_option( $this->plugin->getOptionName( 'plugin_migration_error' ), '' );
|
127 |
}
|
128 |
|
129 |
+
$fix_migration_error_url = esc_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_458' ) . "</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_458' ) . '</b><br>' . $notice_text . '</p>'
|
140 |
];
|
141 |
|
142 |
return $notices;
|
160 |
return $notices;
|
161 |
}
|
162 |
|
163 |
+
$migrate_url = esc_url(add_query_arg( 'wbcr_factory_test_migration', 1 ));
|
164 |
|
165 |
+
$notice_text = __( "Plugin activated:", "wbcr_factory_458" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
|
166 |
|
167 |
+
$notice_text .= __( "Old plugin version (debug):", "wbcr_factory_458" ) . ' ' . $this->get_old_plugin_version() . "<br>";
|
168 |
+
$notice_text .= __( "Current plugin version:", "wbcr_factory_458" ) . ' ' . $this->get_current_plugin_version() . "<br>";
|
169 |
+
$notice_text .= __( "Need migration:", "wbcr_factory_458" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
|
170 |
+
$notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_458" ) . "</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_458' ) . '</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_458' ) );
|
509 |
}
|
510 |
|
511 |
$tokens = token_get_all( $phpCode );
|
libs/factory/core/includes/class-factory-notices.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
-
use
|
6 |
|
7 |
// Exit if accessed directly
|
8 |
if( !defined('ABSPATH') ) {
|
@@ -27,7 +27,7 @@ if( !defined('ABSPATH') ) {
|
|
27 |
class Notices {
|
28 |
|
29 |
/**
|
30 |
-
* @var
|
31 |
*/
|
32 |
protected $plugin;
|
33 |
/**
|
@@ -58,7 +58,7 @@ class Notices {
|
|
58 |
/**
|
59 |
* Инициализируем уведомлений сразу после загрузки модуля уведомлений
|
60 |
*
|
61 |
-
* @param
|
62 |
*/
|
63 |
public function __construct($plugin)
|
64 |
{
|
@@ -86,7 +86,7 @@ class Notices {
|
|
86 |
public function currentScreenAction()
|
87 |
{
|
88 |
/**
|
89 |
-
* @since 2.1.2 - Добавлен, модуль factory_notices_000 был удален. Поэтому в этому хуке мы заменили префикс на
|
90 |
*/
|
91 |
$this->notices = apply_filters('wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName());
|
92 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_458;
|
4 |
|
5 |
+
use Wbcr_Factory458_Plugin;
|
6 |
|
7 |
// Exit if accessed directly
|
8 |
if( !defined('ABSPATH') ) {
|
27 |
class Notices {
|
28 |
|
29 |
/**
|
30 |
+
* @var Wbcr_Factory458_Plugin
|
31 |
*/
|
32 |
protected $plugin;
|
33 |
/**
|
58 |
/**
|
59 |
* Инициализируем уведомлений сразу после загрузки модуля уведомлений
|
60 |
*
|
61 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
62 |
*/
|
63 |
public function __construct($plugin)
|
64 |
{
|
86 |
public function currentScreenAction()
|
87 |
{
|
88 |
/**
|
89 |
+
* @since 2.1.2 - Добавлен, модуль factory_notices_000 был удален. Поэтому в этому хуке мы заменили префикс на factory_458
|
90 |
*/
|
91 |
$this->notices = apply_filters('wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName());
|
92 |
|
libs/factory/core/includes/class-factory-options.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
@@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
10 |
}
|
11 |
|
12 |
/**
|
13 |
-
* Трейт используется для расширения базового класса плагина
|
14 |
*
|
15 |
* Этот трейт является оберткой для Wordpress функций get_option, get_site_option, update_option, update_site_option,
|
16 |
* delete_option, delete_site_option. Основная задача была получать, обновлять, удалять опции без использования префиксов,
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_458;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
10 |
}
|
11 |
|
12 |
/**
|
13 |
+
* Трейт используется для расширения базового класса плагина Wbcr_Factory458_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_Base {
|
|
186 |
* Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
|
187 |
* скриптов, стилей) фреймворка.
|
188 |
*
|
189 |
-
* @param
|
190 |
*/
|
191 |
-
public function setBootstap(
|
192 |
{
|
193 |
$this->bootstrap = $bootstrap;
|
194 |
}
|
@@ -196,9 +196,9 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_Base {
|
|
584 |
return null;
|
585 |
}
|
586 |
|
587 |
-
return
|
588 |
}
|
589 |
|
590 |
/**
|
@@ -594,13 +594,13 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_Base {
|
|
846 |
*/
|
847 |
protected function init_plugin_migrations()
|
848 |
{
|
849 |
-
new WBCR\
|
850 |
}
|
851 |
|
852 |
/**
|
@@ -857,7 +857,7 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_Base {
|
|
857 |
*/
|
858 |
protected function init_plugin_notices()
|
859 |
{
|
860 |
-
new Wbcr\
|
861 |
}
|
862 |
|
863 |
/**
|
@@ -873,7 +873,7 @@ abstract class Wbcr_Factory453_Plugin extends Wbcr_Factory453_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_Factory453_Plugin extends Wbcr_Factory453_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_Factory458_Plugin extends Wbcr_Factory458_Base {
|
28 |
|
29 |
/**
|
30 |
+
* Instance class Wbcr_Factory458_Request, required manages http requests
|
31 |
*
|
32 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
|
33 |
+
* @var Wbcr_Factory458_Request
|
34 |
*/
|
35 |
public $request;
|
36 |
|
37 |
/**
|
38 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
|
39 |
+
* @var \WBCR\Factory_458\Premium\Provider
|
40 |
*/
|
41 |
public $premium;
|
42 |
|
43 |
/**
|
44 |
* The Bootstrap Manager class
|
45 |
*
|
46 |
+
* @var Wbcr_FactoryBootstrap459_Manager
|
47 |
*/
|
48 |
public $bootstrap;
|
49 |
|
50 |
/**
|
51 |
* The Bootstrap Manager class
|
52 |
*
|
53 |
+
* @var Wbcr_FactoryForms455_Manager
|
54 |
*/
|
55 |
public $forms;
|
56 |
|
57 |
/**
|
58 |
+
* Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory458_Activator.
|
59 |
* Классы активации используются для упаковки набора функций, которые нужно выполнить во время
|
60 |
* активации плагина.
|
61 |
*
|
62 |
+
* @var array[] Wbcr_Factory458_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_135\Base
|
90 |
*/
|
91 |
private $adverts;
|
92 |
|
95 |
*
|
96 |
* @author Artem Prihodko <webtemyk@yandex.ru>
|
97 |
* @since 4.3.7
|
98 |
+
* @var WBCR\Factory_Logger_123\Logger
|
99 |
*/
|
100 |
public $logger;
|
101 |
|
115 |
|
116 |
parent::__construct($plugin_path, $data);
|
117 |
|
118 |
+
$this->request = new Wbcr_Factory458_Request();
|
119 |
+
//$this->route = new Wbcr_Factory458_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-458-intall-component" == $_REQUEST['action'] ) {
|
148 |
+
add_action('wp_ajax_wfactory-458-intall-component', [$this, 'ajax_handler_install_components']);
|
149 |
}
|
150 |
|
151 |
+
if( "wfactory-458-prepare-component" == $_REQUEST['action'] ) {
|
152 |
+
add_action('wp_ajax_wfactory-458-prepare-component', [$this, 'ajax_handler_prepare_component']);
|
153 |
}
|
154 |
+
if( "wfactory-458-creativemotion-install-plugin" == $_REQUEST['action'] ) {
|
155 |
+
add_action('wp_ajax_wfactory-458-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_458_DIR . '/ajax/install-addons.php';
|
169 |
+
wfactory_458_install_components($this);
|
170 |
}
|
171 |
|
172 |
public function ajax_handler_prepare_component()
|
173 |
{
|
174 |
+
require_once FACTORY_458_DIR . '/ajax/install-addons.php';
|
175 |
+
wfactory_458_prepare_component($this);
|
176 |
}
|
177 |
|
178 |
public function ajax_handler_install_creativemotion_plugins()
|
179 |
{
|
180 |
+
require_once FACTORY_458_DIR . '/ajax/install-addons.php';
|
181 |
+
wfactory_458_creativemotion_install_plugin($this);
|
182 |
}
|
183 |
// --------------------------------------------------------
|
184 |
|
186 |
* Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
|
187 |
* скриптов, стилей) фреймворка.
|
188 |
*
|
189 |
+
* @param Wbcr_FactoryBootstrap459_Manager $bootstrap
|
190 |
*/
|
191 |
+
public function setBootstap(Wbcr_FactoryBootstrap459_Manager $bootstrap)
|
192 |
{
|
193 |
$this->bootstrap = $bootstrap;
|
194 |
}
|
196 |
/**
|
197 |
* Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
|
198 |
*
|
199 |
+
* @param Wbcr_FactoryForms455_Manager $forms
|
200 |
*/
|
201 |
+
public function setForms(Wbcr_FactoryForms455_Manager $forms)
|
202 |
{
|
203 |
$this->forms = $forms;
|
204 |
}
|
246 |
*/
|
247 |
public function set_license_provider($name, $class_name)
|
248 |
{
|
249 |
+
if( !isset(WBCR\Factory_458\Premium\Manager::$providers[$name]) ) {
|
250 |
+
WBCR\Factory_458\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_458\Updates\Upgrader::$repositories[$name]) ) {
|
269 |
+
WBCR\Factory_458\Updates\Upgrader::$repositories[$name] = $class_name;
|
270 |
}
|
271 |
}
|
272 |
|
276 |
* Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
|
277 |
* рекламных объявлений.
|
278 |
*
|
279 |
+
* @return \WBCR\Factory_Adverts_135\Base
|
280 |
* @since 1.1
|
281 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
282 |
*/
|
312 |
|
313 |
public function newScriptList()
|
314 |
{
|
315 |
+
return new Wbcr_Factory458_ScriptList($this);
|
316 |
}
|
317 |
|
318 |
public function newStyleList()
|
319 |
{
|
320 |
+
return new Wbcr_Factory458_StyleList($this);
|
321 |
}
|
322 |
|
323 |
/**
|
324 |
* Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
|
325 |
* фреймворка pages. Разработчик создает собственный класс, унаследованный от
|
326 |
+
* Wbcr_FactoryPages457_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_FactoryPages457_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_FactoryPages457') ) {
|
359 |
+
throw new Exception('The factory_pages_457 module is not included.');
|
360 |
}
|
361 |
|
362 |
+
Wbcr_FactoryPages457::register($this, $class_name);
|
363 |
}
|
364 |
|
365 |
/**
|
409 |
/**
|
410 |
* @since 4.1.1 - change hook name
|
411 |
*/
|
412 |
+
if( apply_filters("wbcr/factory_458/cancel_plugin_activation_{$this->plugin_name}", false) ) {
|
413 |
return;
|
414 |
}
|
415 |
|
416 |
/**
|
417 |
+
* wbcr_factory_458_plugin_activation
|
418 |
*
|
419 |
* @since 4.1.1 - deprecated
|
420 |
*/
|
421 |
+
wbcr_factory_458_do_action_deprecated('wbcr_factory_458_plugin_activation', [
|
422 |
$this
|
423 |
], '4.1.1', "wbcr/factory/plugin_activation");
|
424 |
|
427 |
*
|
428 |
* @since 4.1.2 - deprecated
|
429 |
*/
|
430 |
+
wbcr_factory_458_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_458_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_458_plugin_activation_' . $this->plugin_name
|
452 |
*
|
453 |
* @since 4.1.1 - deprecated
|
454 |
*/
|
455 |
+
wbcr_factory_458_do_action_deprecated('wbcr_factory_458_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_458/cancel_plugin_deactivation_{$this->plugin_name}", false) ) {
|
497 |
return;
|
498 |
}
|
499 |
|
500 |
/**
|
501 |
+
* wbcr_factory_458_plugin_deactivation
|
502 |
*
|
503 |
* @since 4.1.1 - deprecated
|
504 |
*/
|
505 |
+
wbcr_factory_458_do_action_deprecated('wbcr_factory_458_plugin_deactivation', [
|
506 |
$this
|
507 |
], '4.1.1', "wbcr/factory/plugin_deactivation");
|
508 |
|
511 |
*
|
512 |
* @since 4.1.2 - deprecated
|
513 |
*/
|
514 |
+
wbcr_factory_458_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_458_plugin_deactivation_ . $this->plugin_name
|
527 |
*
|
528 |
* @since 4.1.1 - deprecated
|
529 |
*/
|
530 |
+
wbcr_factory_458_do_action_deprecated('wbcr_factory_458_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_458_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_FactoryPages457') ) {
|
578 |
+
throw new Exception('The factory_pages_457 module is not included.');
|
579 |
}
|
580 |
|
581 |
if( !is_admin() ) {
|
584 |
return null;
|
585 |
}
|
586 |
|
587 |
+
return Wbcr_FactoryPages457::getPageUrl($this, $page_id, $args);
|
588 |
}
|
589 |
|
590 |
/**
|
594 |
* @param $slug
|
595 |
* param $premium
|
596 |
*
|
597 |
+
* @return \WBCR\Factory_458\Components\Install_Button
|
598 |
*/
|
599 |
public function get_install_component_button($component_type, $slug)
|
600 |
{
|
601 |
+
require_once FACTORY_458_DIR . '/includes/components/class-install-component-button.php';
|
602 |
|
603 |
+
return new \WBCR\Factory_458\Components\Install_Button($this, $component_type, $slug);
|
604 |
}
|
605 |
|
606 |
/**
|
609 |
* @param $component_type
|
610 |
* @param $slug
|
611 |
*
|
612 |
+
* @return \WBCR\Factory_458\Components\Delete_Button
|
613 |
*/
|
614 |
public function get_delete_component_button($component_type, $slug)
|
615 |
{
|
616 |
+
require_once FACTORY_458_DIR . '/includes/components/class-delete-component-button.php';
|
617 |
|
618 |
+
return new WBCR\Factory_458\Components\Delete_Button($this, $component_type, $slug);
|
619 |
}
|
620 |
|
621 |
/**
|
798 |
/**
|
799 |
* @since 4.1.1 - deprecated
|
800 |
*/
|
801 |
+
wbcr_factory_458_do_action_deprecated('wbcr_factory_458_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_458/modules_loaded-" . $this->plugin_name);
|
802 |
|
803 |
/**
|
804 |
* @since 4.1.1 - add
|
805 |
*/
|
806 |
+
do_action('wbcr/factory_458/modules_loaded-' . $this->plugin_name);
|
807 |
}
|
808 |
|
809 |
|
830 |
});
|
831 |
|
832 |
if( is_admin() ) {
|
833 |
+
add_filter('wbcr_factory_458_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_458\Migrations($this);
|
850 |
}
|
851 |
|
852 |
/**
|
857 |
*/
|
858 |
protected function init_plugin_notices()
|
859 |
{
|
860 |
+
new Wbcr\Factory_458\Notices($this);
|
861 |
}
|
862 |
|
863 |
/**
|
873 |
protected function init_plugin_updates()
|
874 |
{
|
875 |
if( $this->has_updates ) {
|
876 |
+
new WBCR\Factory_458\Updates\Upgrader($this);
|
877 |
}
|
878 |
}
|
879 |
|
896 |
}
|
897 |
|
898 |
// Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
|
899 |
+
$this->premium = WBCR\Factory_458\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_458\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_Factory453_Base {
|
|
81 |
* https://robin-image-optimizer.webcraftic.com/premium-features.
|
82 |
*
|
83 |
* Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
|
84 |
-
* экземпляр класса \WBCR\
|
85 |
* Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
|
86 |
* можете изменить все ссылки в одном месте.
|
87 |
*
|
@@ -127,7 +127,7 @@ class Wbcr_Factory453_Base {
|
|
127 |
* к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
|
128 |
* взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
|
129 |
* индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
|
130 |
-
* WBCR\
|
131 |
*
|
132 |
* На текущий момент существует только реализация для freemius провайдера.
|
133 |
*
|
@@ -177,9 +177,9 @@ class Wbcr_Factory453_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_Factory453_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_Factory453_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_Factory453_Base {
|
|
394 |
* Проверяет, включен ли премиум для этого плагина или нет.
|
395 |
*
|
396 |
* @return bool Возвращает true, если премиум пакет включен для этого плагина.
|
397 |
-
* См.
|
398 |
*/
|
399 |
public function has_premium()
|
400 |
{
|
@@ -404,7 +404,7 @@ class Wbcr_Factory453_Base {
|
|
404 |
/**
|
405 |
* Позволяет получить заголовок плагина.
|
406 |
*
|
407 |
-
* @return string Возвращает заголовок плагина. См.
|
408 |
*/
|
409 |
public function getPluginTitle()
|
410 |
{
|
@@ -414,7 +414,7 @@ class Wbcr_Factory453_Base {
|
|
414 |
/**
|
415 |
* Позволяет получить префикс плагина.
|
416 |
*
|
417 |
-
* @return string Возвращает префикс плагина.См.
|
418 |
*/
|
419 |
public function getPrefix()
|
420 |
{
|
@@ -424,7 +424,7 @@ class Wbcr_Factory453_Base {
|
|
424 |
/**
|
425 |
* Позволяет получить имя плагина.
|
426 |
*
|
427 |
-
* @return string Возвращает имя плагина. См.
|
428 |
*/
|
429 |
public function getPluginName()
|
430 |
{
|
@@ -434,7 +434,7 @@ class Wbcr_Factory453_Base {
|
|
434 |
/**
|
435 |
* Позволяет получить версию плагина.
|
436 |
*
|
437 |
-
* @return string Возвращает версию плагина. См.
|
438 |
*/
|
439 |
public function getPluginVersion()
|
440 |
{
|
@@ -458,7 +458,7 @@ class Wbcr_Factory453_Base {
|
|
458 |
* какие-то данные не описанные в интерфейсе этого плагина.
|
459 |
*
|
460 |
* @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
|
461 |
-
*
|
462 |
*
|
463 |
* @return null
|
464 |
*/
|
@@ -472,9 +472,9 @@ class Wbcr_Factory453_Base {
|
|
472 |
}
|
473 |
|
474 |
/**
|
475 |
-
* Предоставляет доступ к экземпляру класса \WBCR\
|
476 |
*
|
477 |
-
* @return \WBCR\
|
478 |
*/
|
479 |
public function get_support()
|
480 |
{
|
@@ -482,9 +482,9 @@ class Wbcr_Factory453_Base {
|
|
482 |
}
|
483 |
|
484 |
/**
|
485 |
-
* Предоставляет доступ к экземпляру класса \WBCR\
|
486 |
*
|
487 |
-
* @return \WBCR\
|
488 |
*/
|
489 |
public function get_paths()
|
490 |
{
|
@@ -494,7 +494,7 @@ class Wbcr_Factory453_Base {
|
|
494 |
/**
|
495 |
* Позволяет получить сырые данные плагина в виде объекта StdClass.
|
496 |
*
|
497 |
-
* @return object Возвращает объект с сырыми данными плагина. См.
|
498 |
*/
|
499 |
public function getPluginInfo()
|
500 |
{
|
5 |
}
|
6 |
|
7 |
/**
|
8 |
+
* Базовый класс для создания нового плагина. Полную реализацию класса смотрите в Wbcr_Factory458_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_Factory458_Base {
|
21 |
|
22 |
+
use WBCR\Factory_458\Options;
|
23 |
|
24 |
/**
|
25 |
* Обязательное свойство. Префикс, используется для создания пространство имен.
|
81 |
* https://robin-image-optimizer.webcraftic.com/premium-features.
|
82 |
*
|
83 |
* Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
|
84 |
+
* экземпляр класса \WBCR\Factory_458\Entities\Support, для получения информации о сайте плагина.
|
85 |
* Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
|
86 |
* можете изменить все ссылки в одном месте.
|
87 |
*
|
127 |
* к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
|
128 |
* взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
|
129 |
* индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
|
130 |
+
* WBCR\Factory_458\Premium\Provider > WBCR\Factory_Freemius_145\Premium\Provider
|
131 |
*
|
132 |
* На текущий момент существует только реализация для freemius провайдера.
|
133 |
*
|
177 |
* }
|
178 |
*/
|
179 |
protected $load_factory_modules = [
|
180 |
+
['libs/factory/bootstrap', 'factory_bootstrap_459', 'admin'],
|
181 |
+
['libs/factory/forms', 'factory_forms_455', 'admin'],
|
182 |
+
['libs/factory/pages', 'factory_pages_457', 'admin'],
|
183 |
];
|
184 |
|
185 |
/**
|
209 |
|
210 |
|
211 |
/**
|
212 |
+
* Экземпляр класса \WBCR\Factory_458\Entities\Support используется для получения информации
|
213 |
* о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
|
214 |
* ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
|
215 |
*
|
216 |
+
* @var \WBCR\Factory_458\Entities\Support
|
217 |
*/
|
218 |
protected $support;
|
219 |
|
220 |
/**
|
221 |
+
* Экземпляр класса \WBCR\Factory_458\Entities\Paths используется для получения информации о
|
222 |
* путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
|
223 |
* или его входного файла.
|
224 |
*
|
225 |
+
* @var \WBCR\Factory_458\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_458\Entities\Support($this->support_details);
|
275 |
+
$this->paths = new \WBCR\Factory_458\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_Factory458_Base::has_premium
|
398 |
*/
|
399 |
public function has_premium()
|
400 |
{
|
404 |
/**
|
405 |
* Позволяет получить заголовок плагина.
|
406 |
*
|
407 |
+
* @return string Возвращает заголовок плагина. См. Wbcr_Factory458_Base::plugin_title
|
408 |
*/
|
409 |
public function getPluginTitle()
|
410 |
{
|
414 |
/**
|
415 |
* Позволяет получить префикс плагина.
|
416 |
*
|
417 |
+
* @return string Возвращает префикс плагина.См. Wbcr_Factory458_Base::prefix
|
418 |
*/
|
419 |
public function getPrefix()
|
420 |
{
|
424 |
/**
|
425 |
* Позволяет получить имя плагина.
|
426 |
*
|
427 |
+
* @return string Возвращает имя плагина. См. Wbcr_Factory458_Base::plugin_name
|
428 |
*/
|
429 |
public function getPluginName()
|
430 |
{
|
434 |
/**
|
435 |
* Позволяет получить версию плагина.
|
436 |
*
|
437 |
+
* @return string Возвращает версию плагина. См. Wbcr_Factory458_Base::plugin_version
|
438 |
*/
|
439 |
public function getPluginVersion()
|
440 |
{
|
458 |
* какие-то данные не описанные в интерфейсе этого плагина.
|
459 |
*
|
460 |
* @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
|
461 |
+
* Wbcr_Factory458_Base::plugin_data
|
462 |
*
|
463 |
* @return null
|
464 |
*/
|
472 |
}
|
473 |
|
474 |
/**
|
475 |
+
* Предоставляет доступ к экземпляру класса \WBCR\Factory_458\Entities\Support.
|
476 |
*
|
477 |
+
* @return \WBCR\Factory_458\Entities\Support
|
478 |
*/
|
479 |
public function get_support()
|
480 |
{
|
482 |
}
|
483 |
|
484 |
/**
|
485 |
+
* Предоставляет доступ к экземпляру класса \WBCR\Factory_458\Entities\Paths.
|
486 |
*
|
487 |
+
* @return \WBCR\Factory_458\Entities\Paths
|
488 |
*/
|
489 |
public function get_paths()
|
490 |
{
|
494 |
/**
|
495 |
* Позволяет получить сырые данные плагина в виде объекта StdClass.
|
496 |
*
|
497 |
+
* @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory458_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_Factory458_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_Factory453_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_Factory453_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_Factory458_Requirements' ) ) {
|
16 |
+
class Wbcr_Factory458_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_110' ), $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_458' ), $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_458' ), $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_458' ), $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_458\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_458\Components;
|
4 |
|
5 |
/**
|
6 |
* This file groups the settings for quick setup
|
22 |
|
23 |
protected $classes = [
|
24 |
'button',
|
25 |
+
'wfactory-458-process-button'
|
26 |
];
|
27 |
protected $data = [];
|
28 |
protected $base_path;
|
37 |
* @throws \Exception
|
38 |
* @since 4.3.3
|
39 |
*/
|
40 |
+
public function __construct(\Wbcr_Factory458_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_110\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_458'),
|
424 |
+
'install' => __('Install', 'wbcr_factory_458'),
|
425 |
+
'deactivate' => __('Deactivate', 'wbcr_factory_458'),
|
426 |
+
'delete' => __('Delete', 'wbcr_factory_458'),
|
427 |
+
'loading' => __('Please wait...', 'wbcr_factory_458'),
|
428 |
+
'preparation' => __('Preparation...', 'wbcr_factory_458'),
|
429 |
+
'read' => __('Read more', 'wbcr_factory_458')
|
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_458\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_458\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_453_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_453_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_453_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_458_deprecated_hook()
|
57 |
*
|
58 |
*/
|
59 |
+
function wbcr_factory_458_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_458_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_458_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_458_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_458_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_458_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_458\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_458\Premium;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory458_Plugin;
|
7 |
|
8 |
// Exit if accessed directly
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
24 |
public static $providers;
|
25 |
|
26 |
/**
|
27 |
+
* @var Wbcr_Factory458_Plugin
|
28 |
*/
|
29 |
protected $plugin;
|
30 |
|
36 |
/**
|
37 |
* Manager constructor.
|
38 |
*
|
39 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
40 |
* @param array $settings
|
41 |
*
|
42 |
* @throws Exception
|
43 |
*/
|
44 |
+
public function __construct( Wbcr_Factory458_Plugin $plugin, array $settings ) {
|
45 |
$this->plugin = $plugin;
|
46 |
$this->settings = $settings;
|
47 |
}
|
48 |
|
49 |
/**
|
50 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
51 |
* @param array $settings
|
52 |
*
|
53 |
+
* @return \WBCR\Factory_Freemius_145\Premium\Provider
|
54 |
* @throws Exception
|
55 |
*/
|
56 |
+
public static function instance( Wbcr_Factory458_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_145\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_458\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_458\Premium;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory458_Plugin;
|
7 |
|
8 |
// Exit if accessed directly
|
9 |
if( !defined('ABSPATH') ) {
|
21 |
abstract class Provider {
|
22 |
|
23 |
/**
|
24 |
+
* @var Wbcr_Factory458_Plugin
|
25 |
*/
|
26 |
protected $plugin;
|
27 |
|
38 |
/**
|
39 |
* Provider constructor.
|
40 |
*
|
41 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
42 |
* @param array $settings
|
43 |
*/
|
44 |
+
public function __construct(Wbcr_Factory458_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_458\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_458\Updates;
|
4 |
|
5 |
use Exception;
|
6 |
use Plugin_Installer_Skin;
|
7 |
use Plugin_Upgrader;
|
8 |
+
use Wbcr_Factory458_Plugin;
|
9 |
+
use Wbcr_FactoryPages457_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_Factory458_Plugin $plugin
|
49 |
*
|
50 |
* @throws Exception
|
51 |
* @since 4.1.1
|
52 |
*
|
53 |
*/
|
54 |
+
public function __construct(Wbcr_Factory458_Plugin $plugin)
|
55 |
{
|
56 |
parent::__construct($plugin);
|
57 |
|
242 |
/**
|
243 |
* Выводит уведомление внутри интерфейса плагина, на всех страницах плагина.
|
244 |
*
|
245 |
+
* @param Wbcr_FactoryPages457_ImpressiveThemplate $obj
|
246 |
*
|
247 |
+
* @param Wbcr_Factory458_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_458'),
|
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_458'),
|
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_458'), $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_458'), $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_458\Updates;
|
4 |
|
5 |
use Exception;
|
6 |
use stdClass;
|
7 |
+
use Wbcr_Factory458_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_145\Updates\Freemius_Repository',
|
32 |
+
* 'freemius' => '\WBCR\Factory_458\Updates\Wordpress_Repository'
|
33 |
* ]
|
34 |
*/
|
35 |
public static $repositories = [];
|
42 |
protected $type = 'default';
|
43 |
|
44 |
/**
|
45 |
+
* @var Wbcr_Factory458_Plugin
|
46 |
*/
|
47 |
protected $plugin;
|
48 |
|
88 |
/**
|
89 |
* Manager constructor.
|
90 |
*
|
91 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
92 |
* @param $args
|
93 |
* @param bool $is_premium
|
94 |
*
|
96 |
* @since 4.1.1
|
97 |
*
|
98 |
*/
|
99 |
+
public function __construct(Wbcr_Factory458_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_458\Updates\Wordpress_Repository';
|
111 |
+
self::$repositories['github'] = '\WBCR\Factory_458\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_458\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_458\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory458_Plugin;
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
57 |
/**
|
58 |
* Wordpress constructor.
|
59 |
*
|
60 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
61 |
* @param bool $is_premium
|
62 |
* @since 4.4.1
|
63 |
*/
|
64 |
+
public function __construct(Wbcr_Factory458_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_458\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory458_Plugin;
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
23 |
protected $initialized = false;
|
24 |
|
25 |
/**
|
26 |
+
* @var Wbcr_Factory458_Plugin
|
27 |
*/
|
28 |
protected $plugin;
|
29 |
|
30 |
/**
|
31 |
* Repository constructor.
|
32 |
*
|
33 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
34 |
* @param array $settings
|
35 |
*/
|
36 |
+
abstract public function __construct(Wbcr_Factory458_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_458\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory458_Plugin;
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
20 |
/**
|
21 |
* Wordpress constructor.
|
22 |
*
|
23 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
24 |
* @param array $settings
|
25 |
*/
|
26 |
+
public function __construct(Wbcr_Factory458_Plugin $plugin, array $settings = [])
|
27 |
{
|
28 |
$this->plugin = $plugin;
|
29 |
}
|
libs/factory/core/langs/{wbcr_factory_453-ru_RU.mo → wbcr_factory_458-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/core/langs/{wbcr_factory_453-ru_RU.po → wbcr_factory_458-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_450_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_450_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_455_LOADED') ) {
|
26 |
return;
|
27 |
}
|
28 |
|
29 |
+
define('FACTORY_FORMS_455_LOADED', true);
|
30 |
|
31 |
+
define('FACTORY_FORMS_455_VERSION', '4.5.5');
|
32 |
|
33 |
// absolute path and URL to the files and resources of the module.
|
34 |
+
define('FACTORY_FORMS_455_DIR', dirname(__FILE__));
|
35 |
+
define('FACTORY_FORMS_455_URL', plugins_url(null, __FILE__));
|
36 |
|
37 |
#comp merge
|
38 |
+
require_once(FACTORY_FORMS_455_DIR . '/includes/providers/value-provider.interface.php');
|
39 |
+
require_once(FACTORY_FORMS_455_DIR . '/includes/providers/meta-value-provider.class.php');
|
40 |
+
require_once(FACTORY_FORMS_455_DIR . '/includes/providers/options-value-provider.class.php');
|
41 |
|
42 |
+
require_once(FACTORY_FORMS_455_DIR . '/includes/form.class.php');
|
43 |
#endcomp
|
44 |
|
45 |
+
load_plugin_textdomain('wbcr_factory_forms_455', 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_455_register_controls' hook
|
53 |
*
|
54 |
*/
|
55 |
+
if( !function_exists('wbcr_factory_forms_455_register_default_controls') ) {
|
56 |
|
57 |
/**
|
58 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
59 |
*
|
60 |
* @throws Exception
|
61 |
*/
|
62 |
+
function wbcr_factory_forms_455_register_default_controls(Wbcr_Factory458_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_455_DIR . '/includes/html-builder.class.php');
|
70 |
+
require_once(FACTORY_FORMS_455_DIR . '/includes/form-element.class.php');
|
71 |
+
require_once(FACTORY_FORMS_455_DIR . '/includes/control.class.php');
|
72 |
+
require_once(FACTORY_FORMS_455_DIR . '/includes/complex-control.class.php');
|
73 |
+
require_once(FACTORY_FORMS_455_DIR . '/includes/holder.class.php');
|
74 |
+
require_once(FACTORY_FORMS_455_DIR . '/includes/control-holder.class.php');
|
75 |
+
require_once(FACTORY_FORMS_455_DIR . '/includes/custom-element.class.php');
|
76 |
+
require_once(FACTORY_FORMS_455_DIR . '/includes/form-layout.class.php');
|
77 |
|
78 |
// registration of controls
|
79 |
$plugin->forms->registerControls([
|
80 |
[
|
81 |
'type' => 'checkbox',
|
82 |
+
'class' => 'Wbcr_FactoryForms455_CheckboxControl',
|
83 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/checkbox.php'
|
84 |
],
|
85 |
[
|
86 |
'type' => 'list',
|
87 |
+
'class' => 'Wbcr_FactoryForms455_ListControl',
|
88 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/list.php'
|
89 |
],
|
90 |
[
|
91 |
'type' => 'dropdown',
|
92 |
+
'class' => 'Wbcr_FactoryForms455_DropdownControl',
|
93 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/dropdown.php'
|
94 |
],
|
95 |
[
|
96 |
'type' => 'dropdown-and-colors',
|
97 |
+
'class' => 'Wbcr_FactoryForms455_DropdownAndColorsControl',
|
98 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/dropdown-and-colors.php'
|
99 |
],
|
100 |
[
|
101 |
'type' => 'hidden',
|
102 |
+
'class' => 'Wbcr_FactoryForms455_HiddenControl',
|
103 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/hidden.php'
|
104 |
],
|
105 |
[
|
106 |
'type' => 'hidden',
|
107 |
+
'class' => 'Wbcr_FactoryForms455_HiddenControl',
|
108 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/hidden.php'
|
109 |
],
|
110 |
[
|
111 |
'type' => 'radio',
|
112 |
+
'class' => 'Wbcr_FactoryForms455_RadioControl',
|
113 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/radio.php'
|
114 |
],
|
115 |
[
|
116 |
'type' => 'radio-colors',
|
117 |
+
'class' => 'Wbcr_FactoryForms455_RadioColorsControl',
|
118 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/radio-colors.php'
|
119 |
],
|
120 |
[
|
121 |
'type' => 'textarea',
|
122 |
+
'class' => 'Wbcr_FactoryForms455_TextareaControl',
|
123 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/textarea.php'
|
124 |
],
|
125 |
[
|
126 |
'type' => 'textbox',
|
127 |
+
'class' => 'Wbcr_FactoryForms455_TextboxControl',
|
128 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/textbox.php'
|
129 |
],
|
130 |
[
|
131 |
'type' => 'multiple-textbox',
|
132 |
+
'class' => 'Wbcr_FactoryForms455_MultipleTextboxControl',
|
133 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/multiple-textbox.php'
|
134 |
],
|
135 |
[
|
136 |
'type' => 'datetimepicker-range',
|
137 |
+
'class' => 'Wbcr_FactoryForms455_DatepickerRangeControl',
|
138 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/datepicker-range.php'
|
139 |
],
|
140 |
[
|
141 |
'type' => 'url',
|
142 |
+
'class' => 'Wbcr_FactoryForms455_UrlControl',
|
143 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/url.php'
|
144 |
],
|
145 |
[
|
146 |
'type' => 'wp-editor',
|
147 |
+
'class' => 'Wbcr_FactoryForms455_WpEditorControl',
|
148 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/wp-editor.php'
|
149 |
],
|
150 |
[
|
151 |
'type' => 'color',
|
152 |
+
'class' => 'Wbcr_FactoryForms455_ColorControl',
|
153 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/color.php'
|
154 |
],
|
155 |
[
|
156 |
'type' => 'color-and-opacity',
|
157 |
+
'class' => 'Wbcr_FactoryForms455_ColorAndOpacityControl',
|
158 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/color-and-opacity.php'
|
159 |
],
|
160 |
[
|
161 |
'type' => 'gradient',
|
162 |
+
'class' => 'Wbcr_FactoryForms455_GradientControl',
|
163 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/gradient.php'
|
164 |
],
|
165 |
[
|
166 |
'type' => 'font',
|
167 |
+
'class' => 'Wbcr_FactoryForms455_FontControl',
|
168 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/font.php'
|
169 |
],
|
170 |
[
|
171 |
'type' => 'google-font',
|
172 |
+
'class' => 'Wbcr_FactoryForms455_GoogleFontControl',
|
173 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/google-font.php'
|
174 |
],
|
175 |
[
|
176 |
'type' => 'pattern',
|
177 |
+
'class' => 'Wbcr_FactoryForms455_PatternControl',
|
178 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/pattern.php'
|
179 |
],
|
180 |
[
|
181 |
'type' => 'integer',
|
182 |
+
'class' => 'Wbcr_FactoryForms455_IntegerControl',
|
183 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/integer.php'
|
184 |
],
|
185 |
[
|
186 |
'type' => 'control-group',
|
187 |
+
'class' => 'Wbcr_FactoryForms455_ControlGroupHolder',
|
188 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/holders/control-group.php'
|
189 |
],
|
190 |
[
|
191 |
'type' => 'paddings-editor',
|
192 |
+
'class' => 'Wbcr_FactoryForms455_PaddingsEditorControl',
|
193 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/paddings-editor.php'
|
194 |
],
|
195 |
]);
|
196 |
|
198 |
$plugin->forms->registerHolders([
|
199 |
[
|
200 |
'type' => 'tab',
|
201 |
+
'class' => 'Wbcr_FactoryForms455_TabHolder',
|
202 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/holders/tab.php'
|
203 |
],
|
204 |
[
|
205 |
'type' => 'tab-item',
|
206 |
+
'class' => 'Wbcr_FactoryForms455_TabItemHolder',
|
207 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/holders/tab-item.php'
|
208 |
],
|
209 |
[
|
210 |
'type' => 'accordion',
|
211 |
+
'class' => 'Wbcr_FactoryForms455_AccordionHolder',
|
212 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/holders/accordion.php'
|
213 |
],
|
214 |
[
|
215 |
'type' => 'accordion-item',
|
216 |
+
'class' => 'Wbcr_FactoryForms455_AccordionItemHolder',
|
217 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/holders/accordion-item.php'
|
218 |
],
|
219 |
[
|
220 |
'type' => 'control-group',
|
221 |
+
'class' => 'Wbcr_FactoryForms455_ControlGroupHolder',
|
222 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/holders/control-group.php'
|
223 |
],
|
224 |
[
|
225 |
'type' => 'control-group-item',
|
226 |
+
'class' => 'Wbcr_FactoryForms455_ControlGroupItem',
|
227 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/holders/control-group-item.php'
|
228 |
],
|
229 |
[
|
230 |
'type' => 'form-group',
|
231 |
+
'class' => 'Wbcr_FactoryForms455_FormGroupHolder',
|
232 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/holders/form-group.php'
|
233 |
],
|
234 |
[
|
235 |
'type' => 'more-link',
|
236 |
+
'class' => 'Wbcr_FactoryForms455_MoreLinkHolder',
|
237 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/holders/more-link.php'
|
238 |
],
|
239 |
[
|
240 |
'type' => 'div',
|
241 |
+
'class' => 'Wbcr_FactoryForms455_DivHolder',
|
242 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/holders/div.php'
|
243 |
],
|
244 |
[
|
245 |
'type' => 'columns',
|
246 |
+
'class' => 'Wbcr_FactoryForms455_ColumnsHolder',
|
247 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/holders/columns.php'
|
248 |
]
|
249 |
]);
|
250 |
|
252 |
$plugin->forms->registerCustomElements([
|
253 |
[
|
254 |
'type' => 'html',
|
255 |
+
'class' => 'Wbcr_FactoryForms455_Html',
|
256 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/customs/html.php',
|
257 |
],
|
258 |
[
|
259 |
'type' => 'separator',
|
260 |
+
'class' => 'Wbcr_FactoryForms455_Separator',
|
261 |
+
'include' => FACTORY_FORMS_455_DIR . '/controls/customs/separator.php',
|
262 |
],
|
263 |
]);
|
264 |
|
265 |
// registration of form layouts
|
266 |
$plugin->forms->registerFormLayout([
|
267 |
'name' => 'bootstrap-3',
|
268 |
+
'class' => 'Wbcr_FactoryForms455_Bootstrap3FormLayout',
|
269 |
+
'include' => FACTORY_FORMS_455_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
|
270 |
]);
|
271 |
}
|
272 |
|
273 |
+
add_action('wbcr_factory_forms_455_register_controls', 'wbcr_factory_forms_455_register_default_controls');
|
274 |
}
|
libs/factory/forms/controls/checkbox.php
CHANGED
@@ -20,9 +20,9 @@
|
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
-
if( !class_exists('
|
24 |
|
25 |
-
class
|
26 |
|
27 |
public $type = 'checkbox';
|
28 |
|
@@ -130,10 +130,10 @@
|
|
130 |
<div <?php $this->attrs() ?>>
|
131 |
<button type="button" class="btn btn-default btn-small btn-sm factory-on <?php if( $value ) {
|
132 |
echo 'active';
|
133 |
-
} ?>"><?php _e('On', '
|
134 |
<button type="button" class="btn btn-default btn-small btn-sm factory-off <?php if( !$value ) {
|
135 |
echo 'active';
|
136 |
-
} ?>" data-value="0"><?php _e('Off', '
|
137 |
<input type="checkbox" style="display: none" id="<?php echo $name_on_form ?>" class="factory-result" name="<?php echo $name_on_form ?>" value="<?php echo $value ?>" <?php if( $value ) {
|
138 |
echo 'checked="checked"';
|
139 |
} ?>" />
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms455_CheckboxControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms455_CheckboxControl extends Wbcr_FactoryForms455_Control {
|
26 |
|
27 |
public $type = 'checkbox';
|
28 |
|
130 |
<div <?php $this->attrs() ?>>
|
131 |
<button type="button" class="btn btn-default btn-small btn-sm factory-on <?php if( $value ) {
|
132 |
echo 'active';
|
133 |
+
} ?>"><?php _e('On', 'wbcr_factory_forms_455') ?></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_455') ?></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 |
} ?>" />
|
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_FactoryForms455_ColorAndOpacityControl') ) {
|
24 |
}
|
25 |
|
26 |
+
class Wbcr_FactoryForms455_ColorAndOpacityControl extends Wbcr_FactoryForms455_ComplexControl {
|
27 |
|
28 |
public $type = 'color-and-opacity';
|
29 |
|
57 |
'way' => 'slider'
|
58 |
));
|
59 |
|
60 |
+
$this->color = new Wbcr_FactoryForms455_ColorControl($options['color'], $form, $provider);
|
61 |
+
$this->opacity = new Wbcr_FactoryForms455_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_FactoryForms455_ColorControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms455_ColorControl extends Wbcr_FactoryForms455_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_FactoryForms455_Html') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryForms455_Html extends Wbcr_FactoryForms455_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_FactoryForms455_Separator') ) {
|
18 |
+
class Wbcr_FactoryForms455_Separator extends Wbcr_FactoryForms455_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_FactoryForms455_DatepickerRangeControl') ) {
|
33 |
|
34 |
+
class Wbcr_FactoryForms455_DatepickerRangeControl extends Wbcr_FactoryForms455_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_FactoryForms455_TextboxControl($options['range_1'], $form, $provider);
|
69 |
+
$this->range_2 = new Wbcr_FactoryForms455_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 FactoryForms455_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 FactoryForms455_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_FactoryForms455_DropdownAndColorsControl') ) {
|
41 |
|
42 |
+
class Wbcr_FactoryForms455_DropdownAndColorsControl extends Wbcr_FactoryForms455_ComplexControl {
|
43 |
|
44 |
public $type = 'dropdown-and-colors';
|
45 |
|
69 |
'name' => $this->options['name'] . '__colors',
|
70 |
));
|
71 |
|
72 |
+
$this->dropdown = new Wbcr_FactoryForms455_DropdownControl($options['dropdown'], $form, $provider);
|
73 |
+
$this->colors = new Wbcr_FactoryForms455_RadioColorsControl($options['colors'], $form, $provider);
|
74 |
$this->inner_controls = array($this->dropdown, $this->colors);
|
75 |
|
76 |
$colors = $this->colors->getOption('data');
|
libs/factory/forms/controls/dropdown.php
CHANGED
@@ -21,9 +21,9 @@
|
|
21 |
exit;
|
22 |
}
|
23 |
|
24 |
-
if ( ! class_exists( '
|
25 |
|
26 |
-
class
|
27 |
|
28 |
public $type = 'dropdown';
|
29 |
|
@@ -123,7 +123,7 @@
|
|
123 |
'url': '<?php echo $data['url'] ?>',
|
124 |
'data': <?php echo json_encode( $data['data'] ) ?>,
|
125 |
'selected': '<?php echo $value ?>',
|
126 |
-
'empty_list': '<?php echo $this->getOption( 'empty', __( 'The list is empty.', '
|
127 |
};
|
128 |
</script>
|
129 |
<?php
|
@@ -268,7 +268,7 @@
|
|
268 |
}
|
269 |
|
270 |
$is_empty = $this->isAjax() || empty( $items );
|
271 |
-
$empty_list = $this->getOption( 'empty', __( '- empty -', '
|
272 |
|
273 |
?>
|
274 |
<select <?php $this->attrs() ?>>
|
@@ -349,7 +349,7 @@
|
|
349 |
}
|
350 |
|
351 |
$value = isset( $item['value'] ) ? $item['value'] : '';
|
352 |
-
$title = isset( $item['title'] ) ? $item['title'] : __( '- empty -', '
|
353 |
|
354 |
$data = isset( $item['data'] ) ? $item['data'] : null;
|
355 |
} else {
|
21 |
exit;
|
22 |
}
|
23 |
|
24 |
+
if ( ! class_exists( 'Wbcr_FactoryForms455_DropdownControl' ) ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms455_DropdownControl extends Wbcr_FactoryForms455_Control {
|
27 |
|
28 |
public $type = 'dropdown';
|
29 |
|
123 |
'url': '<?php echo $data['url'] ?>',
|
124 |
'data': <?php echo json_encode( $data['data'] ) ?>,
|
125 |
'selected': '<?php echo $value ?>',
|
126 |
+
'empty_list': '<?php echo $this->getOption( 'empty', __( 'The list is empty.', 'wbcr_factory_forms_455' ) ) ?>'
|
127 |
};
|
128 |
</script>
|
129 |
<?php
|
268 |
}
|
269 |
|
270 |
$is_empty = $this->isAjax() || empty( $items );
|
271 |
+
$empty_list = $this->getOption( 'empty', __( '- empty -', 'wbcr_factory_forms_455' ) );
|
272 |
|
273 |
?>
|
274 |
<select <?php $this->attrs() ?>>
|
349 |
}
|
350 |
|
351 |
$value = isset( $item['value'] ) ? $item['value'] : '';
|
352 |
+
$title = isset( $item['title'] ) ? $item['title'] : __( '- empty -', 'wbcr_factory_forms_455' );
|
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_FactoryForms455_FontControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms455_FontControl extends Wbcr_FactoryForms455_ComplexControl {
|
26 |
|
27 |
public $type = 'font';
|
28 |
|
54 |
'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
|
55 |
);
|
56 |
|
57 |
+
$this->size = new Wbcr_FactoryForms455_IntegerControl($option_font_size, $form, $provider);
|
58 |
+
$this->family = new Wbcr_FactoryForms455_DropdownControl($option_font_family, $form, $provider);
|
59 |
+
$this->color = new Wbcr_FactoryForms455_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_455_fonts', $fonts);
|
70 |
+
$fonts = apply_filters('wbcr_factory_forms_455_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_455')),
|
81 |
array(
|
82 |
'group',
|
83 |
+
__('Sans Serif:', 'wbcr_factory_forms_455'),
|
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_455'),
|
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_455'),
|
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_FactoryForms455_GoogleFontControl extends Wbcr_FactoryForms455_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_FactoryForms455_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_455'))
|
53 |
);
|
54 |
|
55 |
$fontsCommon = array(
|
56 |
'group',
|
57 |
+
__('Standard:', 'wbcr_factory_forms_455'),
|
58 |
array(
|
59 |
|
60 |
array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
|
65 |
)
|
66 |
);
|
67 |
|
68 |
+
$fontsGoogleFonts = array('group', __('Google Fonts:', 'wbcr_factory_forms_455'), 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_455');
|
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_455');
|
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_455');
|
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_FactoryForms455_GradientControl') ) {
|
29 |
+
class Wbcr_FactoryForms455_GradientControl extends Wbcr_FactoryForms455_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_455' ) ?>';
|
70 |
+
factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_455' ) ?>';
|
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_FactoryForms455_HiddenControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms455_HiddenControl extends Wbcr_FactoryForms455_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_FactoryForms455_AccordionItemHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms455_AccordionItemHolder extends Wbcr_FactoryForms455_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_FactoryForms455_AccordionHolder') ) {
|
17 |
/**
|
18 |
* Tab Control Holder
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
class Wbcr_FactoryForms455_AccordionHolder extends Wbcr_FactoryForms455_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_FactoryForms455_ColumnsHolder') ) {
|
18 |
/**
|
19 |
* Columns Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms455_ColumnsHolder extends Wbcr_FactoryForms455_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_FactoryForms455_ControlGroupItem') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms455_ControlGroupItem extends Wbcr_FactoryForms455_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_FactoryForms455_ControlGroupHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms455_ControlGroupHolder extends Wbcr_FactoryForms455_ControlHolder {
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
61 |
continue;
|
62 |
}
|
63 |
|
64 |
+
$builder = new Wbcr_FactoryForms455_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_FactoryForms455_DivHolder') ) {
|
18 |
/**
|
19 |
* Div Control Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms455_DivHolder extends Wbcr_FactoryForms455_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_FactoryForms455_FormGroupHolder') ) {
|
18 |
/**
|
19 |
* Group Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms455_FormGroupHolder extends Wbcr_FactoryForms455_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_FactoryForms455_MoreLinkHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Collapsed Group Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms455_MoreLinkHolder extends Wbcr_FactoryForms455_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_FactoryForms455_TabItemHolder') ) {
|
17 |
/**
|
18 |
* Tab Item Control Holder
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
class Wbcr_FactoryForms455_TabItemHolder extends Wbcr_FactoryForms455_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_FactoryForms455_TabHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms455_TabHolder extends Wbcr_FactoryForms455_Holder {
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
* @param mixed[] $options A holder options.
|
47 |
+
* @param FactoryForms455_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_FactoryForms455_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_FactoryForms455_IntegerControl') ) {
|
36 |
|
37 |
+
class Wbcr_FactoryForms455_IntegerControl extends Wbcr_FactoryForms455_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_FactoryForms455_ListControl') ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms455_ListControl extends Wbcr_FactoryForms455_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_455') ) ?>'
|
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_455'));
|
140 |
|
141 |
if( $is_empty ) {
|
142 |
$this->addCssClass('factory-empty');
|
libs/factory/forms/controls/multiple-textbox.php
CHANGED
@@ -15,9 +15,9 @@
|
|
15 |
exit;
|
16 |
}
|
17 |
|
18 |
-
if( !class_exists('
|
19 |
|
20 |
-
class
|
21 |
|
22 |
public $type = 'multiple-textbox';
|
23 |
|
@@ -86,7 +86,7 @@
|
|
86 |
<?php endif; ?>
|
87 |
</div>
|
88 |
<button class="btn btn-default btn-small factory-mtextbox-add-item">
|
89 |
-
<i class="fa fa-plus" aria-hidden="true"></i> <?php _e('Add new', '
|
90 |
</button>
|
91 |
</div>
|
92 |
|
15 |
exit;
|
16 |
}
|
17 |
|
18 |
+
if( !class_exists('Wbcr_FactoryForms455_MultipleTextboxControl') ) {
|
19 |
|
20 |
+
class Wbcr_FactoryForms455_MultipleTextboxControl extends Wbcr_FactoryForms455_Control {
|
21 |
|
22 |
public $type = 'multiple-textbox';
|
23 |
|
86 |
<?php endif; ?>
|
87 |
</div>
|
88 |
<button class="btn btn-default btn-small factory-mtextbox-add-item">
|
89 |
+
<i class="fa fa-plus" aria-hidden="true"></i> <?php _e('Add new', 'wbcr_factory_forms_455') ?>
|
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_FactoryForms455_PaddingsEditorControl') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryForms455_PaddingsEditorControl extends Wbcr_FactoryForms455_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_455') ?>
|
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_FactoryForms455_PatternControl') ) {
|
19 |
|
20 |
+
class Wbcr_FactoryForms455_PatternControl extends Wbcr_FactoryForms455_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_455_patterns', array());
|
56 |
+
$this->patterns = apply_filters('wbcr_factory_forms_455_patterns-' . $name, $this->patterns);
|
57 |
|
58 |
$this->custom_patterns = $this->getOption('patterns', array());
|
59 |
|
60 |
+
$this->color = new Wbcr_FactoryForms455_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_455') ?>">
|
106 |
<i class="fa fa-flask"></i>
|
107 |
+
<span><?php _e('re-color', 'wbcr_factory_forms_455') ?></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_455') ?></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_455') ?></i>
|
118 |
</div>
|
119 |
</div>
|
120 |
<div class="factory-picker-target"></div>
|
libs/factory/forms/controls/radio-colors.php
CHANGED
@@ -27,9 +27,9 @@
|
|
27 |
exit;
|
28 |
}
|
29 |
|
30 |
-
if( !class_exists('
|
31 |
|
32 |
-
class
|
33 |
|
34 |
public $type = 'radio-color';
|
35 |
|
27 |
exit;
|
28 |
}
|
29 |
|
30 |
+
if( !class_exists('Wbcr_FactoryForms455_RadioColorsControl') ) {
|
31 |
|
32 |
+
class Wbcr_FactoryForms455_RadioColorsControl extends Wbcr_FactoryForms455_Control {
|
33 |
|
34 |
public $type = 'radio-color';
|
35 |
|
libs/factory/forms/controls/radio.php
CHANGED
@@ -21,9 +21,9 @@
|
|
21 |
exit;
|
22 |
}
|
23 |
|
24 |
-
if( !class_exists('
|
25 |
|
26 |
-
class
|
27 |
|
28 |
public $type = 'radio';
|
29 |
|
21 |
exit;
|
22 |
}
|
23 |
|
24 |
+
if( !class_exists('Wbcr_FactoryForms455_RadioControl') ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms455_RadioControl extends Wbcr_FactoryForms455_Control {
|
27 |
|
28 |
public $type = 'radio';
|
29 |
|
libs/factory/forms/controls/textarea.php
CHANGED
@@ -20,9 +20,9 @@
|
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
-
if( !class_exists('
|
24 |
|
25 |
-
class
|
26 |
|
27 |
public $type = 'textarea';
|
28 |
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms455_TextareaControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms455_TextareaControl extends Wbcr_FactoryForms455_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_FactoryForms455_TextboxControl') ) {
|
33 |
|
34 |
+
class Wbcr_FactoryForms455_TextboxControl extends Wbcr_FactoryForms455_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 FactoryForms455_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_FactoryForms455_UrlControl') ) {
|
22 |
|
23 |
+
class Wbcr_FactoryForms455_UrlControl extends Wbcr_FactoryForms455_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_FactoryForms455_WpEditorControl') ) {
|
26 |
|
27 |
+
class Wbcr_FactoryForms455_WpEditorControl extends Wbcr_FactoryForms455_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_455_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_FactoryForms455_ComplexControl') ) {
|
17 |
/**
|
18 |
* The base class for all controls.
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
abstract class Wbcr_FactoryForms455_ComplexControl extends Wbcr_FactoryForms455_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_FactoryForms455_Control[]
|
37 |
*/
|
38 |
public $inner_controls = array();
|
39 |
|
41 |
* Sets a provider for the control.
|
42 |
*
|
43 |
* @since 1.0.0
|
44 |
+
* @param Wbcr_IFactoryForms455_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_FactoryForms455_ControlHolder') ) {
|
18 |
/**
|
19 |
* The base class for control holders.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
abstract class Wbcr_FactoryForms455_ControlHolder extends Wbcr_FactoryForms455_Control {
|
24 |
|
25 |
/**
|
26 |
* Holder Elements.
|
27 |
*
|
28 |
* @since 1.0.0
|
29 |
+
* @var Wbcr_FactoryForms455_Control[]
|
30 |
*/
|
31 |
protected $elements = array();
|
32 |
|
43 |
*
|
44 |
* @since 1.0.0
|
45 |
* @param mixed[] $options A holder options.
|
46 |
+
* @param Wbcr_FactoryForms455_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_FactoryForms455_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_FactoryForms455_Control') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all controls.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
abstract class Wbcr_FactoryForms455_Control extends Wbcr_FactoryForms455_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_IFactoryForms455_ValueProvider
|
47 |
*/
|
48 |
protected $provider = null;
|
49 |
|
51 |
* Create a new instance of the control.
|
52 |
*
|
53 |
* @param mixed[] $options
|
54 |
+
* @param FactoryForms455_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 IFactoryForms455_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_FactoryForms455_CustomElement') ) {
|
18 |
/**
|
19 |
* The base class for all controls.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
abstract class Wbcr_FactoryForms455_CustomElement extends Wbcr_FactoryForms455_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_FactoryForms455_FormElement') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all form element (controls, holders).
|
23 |
*
|
24 |
* @since 1.0.0
|
25 |
*/
|
26 |
+
abstract class Wbcr_FactoryForms455_FormElement {
|
27 |
|
28 |
/**
|
29 |
* A type of an elemnt.
|
37 |
* An html attribute builder.
|
38 |
*
|
39 |
* @since 1.0.0
|
40 |
+
* @var Wbcr_FactoryForms455_HtmlAttributeBuilder
|
41 |
*/
|
42 |
private $html_builder;
|
43 |
|
53 |
* A parent form.
|
54 |
*
|
55 |
* @since 1.0.0
|
56 |
+
* @var Wbcr_FactoryForms455_Form
|
57 |
*/
|
58 |
protected $form;
|
59 |
|
61 |
* A form layout.
|
62 |
*
|
63 |
* @since 1.0.0
|
64 |
+
* @var Wbcr_FactoryForms455_FormLayout
|
65 |
*/
|
66 |
protected $layout;
|
67 |
|
94 |
*
|
95 |
* @since 1.0.0
|
96 |
* @param mixed[] $options A holder options.
|
97 |
+
* @param Wbcr_FactoryForms455_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_FactoryForms455_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_FactoryForms455_FormLayout') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all form layouts.
|
21 |
*/
|
22 |
+
abstract class Wbcr_FactoryForms455_FormLayout extends Wbcr_FactoryForms455_Holder {
|
23 |
|
24 |
/**
|
25 |
* A form layout name.
|
42 |
*
|
43 |
* @since 1.0.0
|
44 |
* @param mixed[] $options A holder options.
|
45 |
+
* @param Wbcr_FactoryForms455_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-455-' . $this->type);
|
56 |
+
$this->addCssClass('factory-forms-455-' . $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_455_plugin_created', 'wbcr_factory_forms_455_plugin_created');
|
19 |
|
20 |
+
function wbcr_factory_forms_455_plugin_created($plugin)
|
21 |
{
|
22 |
+
$plugin->forms = new Wbcr_FactoryForms455_Manager($plugin);
|
23 |
}
|
24 |
|
25 |
+
if( !class_exists('Wbcr_FactoryForms455_Manager') ) {
|
26 |
|
27 |
+
class Wbcr_FactoryForms455_Manager {
|
28 |
|
29 |
// ----------------------------------------------------
|
30 |
// Static fields and methods
|
57 |
/**
|
58 |
* Registers a set of new controls.
|
59 |
*
|
60 |
+
* @see FactoryForms455_Form::registerControl()
|
61 |
*
|
62 |
* @since 1.0.0
|
63 |
* @return void
|
95 |
/**
|
96 |
* Registers a set of new holder controls.
|
97 |
*
|
98 |
+
* @see FactoryForms455_Form::registerHolder()
|
99 |
*
|
100 |
* @since 1.0.0
|
101 |
* @return void
|
129 |
/**
|
130 |
* Registers a set of new custom form elements.
|
131 |
*
|
132 |
+
* @see FactoryForms455_Form::registerCustomElement()
|
133 |
*
|
134 |
* @since 1.0.0
|
135 |
* @return void
|
180 |
public static $controls_registered = false;
|
181 |
}
|
182 |
}
|
183 |
+
if( !class_exists('Wbcr_FactoryForms455_Form') ) {
|
184 |
/**
|
185 |
* An abstraction for forms.
|
186 |
*/
|
187 |
+
class Wbcr_FactoryForms455_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_IFactoryForms455_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_FactoryForms455_FormLayout
|
249 |
*/
|
250 |
public $layout;
|
251 |
|
261 |
*
|
262 |
* @since 1.0.0
|
263 |
* @param array $options
|
264 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
265 |
*/
|
266 |
+
public function __construct(array $options, Wbcr_Factory458_Plugin $plugin)
|
267 |
{
|
268 |
// register controls once, when the first form is created
|
269 |
+
if( !Wbcr_FactoryForms455_Manager::$controls_registered ) {
|
270 |
|
271 |
+
do_action('wbcr_factory_forms_455_register_controls', $plugin);
|
272 |
|
273 |
//if( !empty($plugin) ) {
|
274 |
+
do_action('wbcr_factory_forms_455_register_controls_' . $plugin->getPluginName(), $plugin);
|
275 |
//}
|
276 |
|
277 |
+
Wbcr_FactoryForms455_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_FactoryForms455_Manager::$temper = 'flat';
|
293 |
}
|
294 |
|
295 |
/**
|
296 |
* Sets a provider for the control.
|
297 |
*
|
298 |
* @since 1.0.0
|
299 |
+
* @param Wbcr_IFactoryForms455_ValueProvider $provider
|
300 |
* @return void
|
301 |
*/
|
302 |
public function setProvider($provider)
|
332 |
*/
|
333 |
public function getItems()
|
334 |
{
|
335 |
+
return apply_filters('wbcr_factory_458_form_items', $this->items, $this->name);
|
336 |
}
|
337 |
|
338 |
/**
|
339 |
* Returns form controls (control objects).
|
340 |
*
|
341 |
* @since 1.0.0
|
342 |
+
* @return Wbcr_FactoryForms455_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_FactoryForms455_Control[]
|
359 |
*/
|
360 |
|
361 |
public function createControls($holder = null)
|
395 |
*
|
396 |
* @since 1.0.0
|
397 |
* @param array $item Item data.
|
398 |
+
* @return Wbcr_FactoryForms455_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_FactoryForms455_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_FactoryForms455_Control A control object.
|
437 |
*/
|
438 |
public function createControl($item)
|
439 |
{
|
441 |
|
442 |
if( is_array($item) ) {
|
443 |
|
444 |
+
$control_data = Wbcr_FactoryForms455_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_FactoryForms455_Holder A control holder object.
|
469 |
*/
|
470 |
public function createHolder($item)
|
471 |
{
|
473 |
|
474 |
if( is_array($item) ) {
|
475 |
|
476 |
+
$holderData = Wbcr_FactoryForms455_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_FactoryForms455_FormElement A custom form element object.
|
495 |
*/
|
496 |
public function createCustomElement($item)
|
497 |
{
|
499 |
|
500 |
if( is_array($item) ) {
|
501 |
|
502 |
+
$data = Wbcr_FactoryForms455_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_FactoryForms455_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_FactoryForms455_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_FactoryForms455_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_FactoryForms455_Manager::$registered_controls;
|
606 |
} elseif( self::isControlHolder($type) ) {
|
607 |
+
$haystack = Wbcr_FactoryForms455_Manager::$registered_holders;
|
608 |
}
|
609 |
|
610 |
if( isset($haystack[$type]) ) {
|
660 |
*/
|
661 |
public static function isControl($item)
|
662 |
{
|
663 |
+
return isset(Wbcr_FactoryForms455_Manager::$registered_controls[$item['type']]);
|
664 |
}
|
665 |
|
666 |
/**
|
672 |
*/
|
673 |
public static function isControlHolder($item)
|
674 |
{
|
675 |
+
return isset(Wbcr_FactoryForms455_Manager::$registered_holders[$item['type']]);
|
676 |
}
|
677 |
|
678 |
/**
|
684 |
*/
|
685 |
public static function isCustomElement($item)
|
686 |
{
|
687 |
+
return isset(Wbcr_FactoryForms455_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_FactoryForms455_Holder') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for control holders.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
abstract class Wbcr_FactoryForms455_Holder extends Wbcr_FactoryForms455_FormElement {
|
25 |
|
26 |
/**
|
27 |
* Holder Elements.
|
28 |
*
|
29 |
* @since 1.0.0
|
30 |
+
* @var Wbcr_FactoryForms455_Control[]
|
31 |
*/
|
32 |
protected $elements = array();
|
33 |
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
* @param mixed[] $options A holder options.
|
47 |
+
* @param Wbcr_FactoryForms455_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_FactoryForms455_Control[].
|
60 |
*/
|
61 |
public function getElements()
|
62 |
{
|
84 |
$is_first_item = false;
|
85 |
}
|
86 |
|
87 |
+
do_action('wbcr_factory_458_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_FactoryForms455_HtmlAttributeBuilder') ) {
|
18 |
/**
|
19 |
* Html Attribute Builder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms455_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_FactoryForms455_OptionsValueProvider') ) {
|
18 |
|
19 |
/**
|
20 |
* Factory Meta Value Provider
|
24 |
*
|
25 |
* @since 1.0.0
|
26 |
*/
|
27 |
+
class Wbcr_FactoryForms455_MetaValueProvider implements Wbcr_IFactoryForms455_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_FactoryForms455_OptionsValueProvider') ) {
|
17 |
|
18 |
/**
|
19 |
* Factory Options Value Provider
|
22 |
*
|
23 |
* @since 1.0.0
|
24 |
*/
|
25 |
+
class Wbcr_FactoryForms455_OptionsValueProvider implements Wbcr_IFactoryForms455_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_Factory458_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_IFactoryForms455_ValueProvider') ) {
|
18 |
/**
|
19 |
* The interface for all value provides.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
interface Wbcr_IFactoryForms455_ValueProvider {
|
24 |
|
25 |
/**
|
26 |
* Inits a form a provider to get data from a storage.
|
libs/factory/forms/langs/{wbcr_factory_forms_450-ru_RU.mo → wbcr_factory_forms_455-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/forms/langs/{wbcr_factory_forms_450-ru_RU.po → wbcr_factory_forms_455-ru_RU.po}
RENAMED
File without changes
|
libs/factory/forms/layouts/bootstrap-3/bootstrap-3.php
CHANGED
@@ -14,11 +14,11 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
/**
|
19 |
* A form layout based on Twitter Bootstrap 3
|
20 |
*/
|
21 |
-
class
|
22 |
|
23 |
public $name = 'default';
|
24 |
|
@@ -27,7 +27,7 @@
|
|
27 |
*
|
28 |
* @since 1.0.0
|
29 |
* @param array $options A holder options.
|
30 |
-
* @param
|
31 |
*/
|
32 |
public function __construct($options, $form)
|
33 |
{
|
@@ -68,7 +68,7 @@
|
|
68 |
}
|
69 |
|
70 |
/**
|
71 |
-
* @param
|
72 |
*/
|
73 |
public function beforeControl($control)
|
74 |
{
|
@@ -116,7 +116,7 @@
|
|
116 |
}
|
117 |
|
118 |
/**
|
119 |
-
* @param
|
120 |
*/
|
121 |
public function afterControl($control)
|
122 |
{
|
@@ -168,7 +168,7 @@
|
|
168 |
}
|
169 |
|
170 |
/**
|
171 |
-
* @param
|
172 |
* @param int $index
|
173 |
* @param int $total
|
174 |
*/
|
@@ -193,7 +193,7 @@
|
|
193 |
}
|
194 |
|
195 |
/**
|
196 |
-
* @param
|
197 |
* @param int $index
|
198 |
* @param int $total
|
199 |
*/
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms455_Bootstrap3FormLayout') ) {
|
18 |
/**
|
19 |
* A form layout based on Twitter Bootstrap 3
|
20 |
*/
|
21 |
+
class Wbcr_FactoryForms455_Bootstrap3FormLayout extends Wbcr_FactoryForms455_FormLayout {
|
22 |
|
23 |
public $name = 'default';
|
24 |
|
27 |
*
|
28 |
* @since 1.0.0
|
29 |
* @param array $options A holder options.
|
30 |
+
* @param Wbcr_FactoryForms455_Form $form A parent form.
|
31 |
*/
|
32 |
public function __construct($options, $form)
|
33 |
{
|
68 |
}
|
69 |
|
70 |
/**
|
71 |
+
* @param Wbcr_FactoryForms455_Control $control
|
72 |
*/
|
73 |
public function beforeControl($control)
|
74 |
{
|
116 |
}
|
117 |
|
118 |
/**
|
119 |
+
* @param Wbcr_FactoryForms455_Control $control
|
120 |
*/
|
121 |
public function afterControl($control)
|
122 |
{
|
168 |
}
|
169 |
|
170 |
/**
|
171 |
+
* @param Wbcr_FactoryForms455_Control $control
|
172 |
* @param int $index
|
173 |
* @param int $total
|
174 |
*/
|
193 |
}
|
194 |
|
195 |
/**
|
196 |
+
* @param Wbcr_FactoryForms455_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_145_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
define('FACTORY_FREEMIUS_145_VERSION', '1.4.5');
|
22 |
|
23 |
+
define('FACTORY_FREEMIUS_145_LOADED', true);
|
24 |
+
define('FACTORY_FREEMIUS_145_DIR', dirname(__FILE__));
|
25 |
+
define('FACTORY_FREEMIUS_145_URL', plugins_url(null, __FILE__));
|
26 |
|
27 |
#comp merge
|
28 |
// Freemius
|
29 |
+
require_once(FACTORY_FREEMIUS_145_DIR . '/includes/entities/class-freemius-entity.php');
|
30 |
+
require_once(FACTORY_FREEMIUS_145_DIR . '/includes/entities/class-freemius-scope.php');
|
31 |
+
require_once(FACTORY_FREEMIUS_145_DIR . '/includes/entities/class-freemius-user.php');
|
32 |
+
require_once(FACTORY_FREEMIUS_145_DIR . '/includes/entities/class-freemius-site.php');
|
33 |
+
require_once(FACTORY_FREEMIUS_145_DIR . '/includes/entities/class-freemius-license.php');
|
34 |
+
require_once(FACTORY_FREEMIUS_145_DIR . '/includes/licensing/class-freemius-provider.php');
|
35 |
+
require_once(FACTORY_FREEMIUS_145_DIR . '/includes/updates/class-freemius-repository.php');
|
36 |
|
37 |
if( !class_exists('Freemius_Api_WordPress') ) {
|
38 |
+
require_once FACTORY_FREEMIUS_145_DIR . '/includes/sdk/FreemiusWordPress.php';
|
39 |
}
|
40 |
|
41 |
+
require_once(FACTORY_FREEMIUS_145_DIR . '/includes/class-freemius-api.php');
|
42 |
|
43 |
/**
|
44 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
45 |
*/
|
46 |
+
add_action('wbcr_factory_freemius_145_plugin_created', function ($plugin) {
|
47 |
# Устанавливаем класс провайдера лицензий для премиум менеджера
|
48 |
+
$plugin->set_license_provider('freemius', 'WBCR\Factory_Freemius_145\Premium\Provider');
|
49 |
# Устанавливаем класс репозитория обновлений для менеджера обновлений
|
50 |
+
$plugin->set_update_repository('freemius', 'WBCR\Factory_Freemius_145\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_145;
|
4 |
|
5 |
use Freemius_Api_WordPress;
|
6 |
use Freemius_Exception;
|
7 |
+
use Wbcr_Factory458_Plugin;
|
8 |
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
exit;
|
33 |
private $api;
|
34 |
|
35 |
/**
|
36 |
+
* @var Wbcr_Factory458_Plugin
|
37 |
*/
|
38 |
private $plugin;
|
39 |
|
48 |
private static $clock_diff;
|
49 |
|
50 |
/**
|
51 |
+
* @param Wbcr_Factory458_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_Factory458_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_Factory458_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_Factory458_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_145\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_145\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_458\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_145\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_145\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_145\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_145\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_145\Premium;
|
4 |
+
|
5 |
+
use WBCR\Factory_Freemius_145\Entities\License;
|
6 |
+
use WBCR\Factory_Freemius_145\Entities\Plugin;
|
7 |
+
use WBCR\Factory_Freemius_145\Entities\Site;
|
8 |
+
use WBCR\Factory_Freemius_145\Entities\User;
|
9 |
+
use WBCR\Factory_458\Premium\Provider as License_Provider;
|
10 |
+
use Wbcr_Factory458_Plugin;
|
11 |
+
use WBCR\Factory_Freemius_145\Api;
|
12 |
use WP_Error;
|
13 |
use Exception;
|
14 |
|
40 |
private $slug;
|
41 |
|
42 |
/**
|
43 |
+
* @var \WBCR\Factory_Freemius_145\Api
|
44 |
*/
|
45 |
private $site_api;
|
46 |
|
47 |
/**
|
48 |
+
* @var \WBCR\Factory_Freemius_145\Api
|
49 |
*/
|
50 |
private $plugin_api;
|
51 |
|
52 |
/**
|
53 |
+
* @var \WBCR\Factory_Freemius_145\Api
|
54 |
*/
|
55 |
private $user_api;
|
56 |
|
82 |
/**
|
83 |
* Manager constructor.
|
84 |
*
|
85 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
86 |
*
|
87 |
* @throws Exception
|
88 |
*/
|
89 |
+
public function __construct(Wbcr_Factory458_Plugin $plugin, array $settings)
|
90 |
{
|
91 |
parent::__construct($plugin, $settings);
|
92 |
|
150 |
}
|
151 |
|
152 |
/**
|
153 |
+
* @return \WBCR\Factory_Freemius_145\Entities\License|null
|
154 |
* @throws Exception
|
155 |
*/
|
156 |
public function get_license()
|
613 |
/**
|
614 |
* @param bool $flush
|
615 |
*
|
616 |
+
* @return \WBCR\Factory_Freemius_145\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_145\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_145\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_145\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
7 |
+
use Wbcr_Factory458_Plugin;
|
8 |
+
use WBCR\Factory_458\Updates\Repository;
|
9 |
|
10 |
if( !defined('ABSPATH') ) {
|
11 |
exit;
|
20 |
class Freemius_Repository extends Repository {
|
21 |
|
22 |
/**
|
23 |
+
* @var \WBCR\Factory_Freemius_145\Premium\Provider
|
24 |
*/
|
25 |
private $premium;
|
26 |
|
27 |
/**
|
28 |
* Freemius constructor.
|
29 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
30 |
*
|
31 |
* @throws Exception
|
32 |
* @since 4.0.0
|
33 |
*
|
34 |
*/
|
35 |
+
public function __construct(Wbcr_Factory458_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_145\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_118_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_123_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_123_'+wbcr_factory_logger_123.plugin_prefix+'logs_cleanup',
|
14 |
+
nonce: wbcr_factory_logger_123.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_110.app.showNotice(data.message, data.type);
|
22 |
},
|
23 |
error: function (jqXHR, textStatus, errorThrown) {
|
24 |
+
jQuery.wbcr_factory_templates_110.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_118_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_123\Logger;
|
4 |
|
5 |
/**
|
6 |
* Factory Logger
|
19 |
exit;
|
20 |
}
|
21 |
|
22 |
+
if( defined('FACTORY_LOGGER_123_LOADED') || (defined('FACTORY_LOGGER_STOP') && FACTORY_LOGGER_STOP) ) {
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
+
define('FACTORY_LOGGER_123_LOADED', true);
|
27 |
+
define('FACTORY_LOGGER_123_VERSION', '1.2.3');
|
28 |
+
define('FACTORY_LOGGER_123_DIR', dirname(__FILE__));
|
29 |
+
define('FACTORY_LOGGER_123_URL', plugins_url(null, __FILE__));
|
30 |
|
31 |
+
load_plugin_textdomain('wbcr_factory_logger_123', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
32 |
|
33 |
+
require_once(FACTORY_LOGGER_123_DIR . '/includes/class-logger.php');
|
34 |
|
35 |
if( is_admin() ) {
|
36 |
+
require_once(FACTORY_LOGGER_123_DIR . '/includes/class-log-export.php');
|
37 |
+
require_once(FACTORY_LOGGER_123_DIR . '/pages/class-logger-impressive-page.php');
|
38 |
+
require_once(FACTORY_LOGGER_123_DIR . '/pages/class-logger-impressive-lite.php');
|
39 |
+
require_once(FACTORY_LOGGER_123_DIR . '/pages/class-logger-admin-page.php');
|
40 |
}
|
41 |
|
42 |
/**
|
43 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
44 |
*/
|
45 |
+
add_action('wbcr_factory_logger_123_plugin_created', function ($plugin) {
|
46 |
+
/* @var Wbcr_Factory458_Plugin $plugin */
|
47 |
|
48 |
/* Settings of Logger
|
49 |
$settings = [
|
54 |
'rotate_limit' => 3,
|
55 |
];
|
56 |
|
57 |
+
$plugin->set_logger( "WBCR\Factory_Logger_123\Logger", $settings );
|
58 |
*/
|
59 |
+
$plugin->set_logger("WBCR\Factory_Logger_123\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_123;
|
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 = [] ) {
|
@@ -373,15 +373,7 @@ class Logger {
|
|
373 |
*/
|
374 |
public function add( $level, $message ) {
|
375 |
|
376 |
-
|
377 |
-
//$log_debug = defined( 'WP_DEBUG' ) && WP_DEBUG;
|
378 |
-
|
379 |
-
//if ( ! $log_debug ) {
|
380 |
-
//return false;
|
381 |
-
//}
|
382 |
-
//}
|
383 |
-
|
384 |
-
$this->_logs[] = $this->get_format( $level, htmlspecialchars( $message ) );
|
385 |
|
386 |
if ( count( $this->_logs ) >= $this->flush_interval ) {
|
387 |
$this->flush();
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Logger_123;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
48 |
const LEVEL_DEBUG = 'debug';
|
49 |
|
50 |
/**
|
51 |
+
* @var \Wbcr_Factory458_Plugin Plugin class.
|
52 |
*/
|
53 |
public $plugin;
|
54 |
|
92 |
/**
|
93 |
* Logger constructor.
|
94 |
*
|
95 |
+
* @param \Wbcr_Factory458_Plugin $plugin
|
96 |
* @param array $settings
|
97 |
*/
|
98 |
public function __construct( $plugin, $settings = [] ) {
|
373 |
*/
|
374 |
public function add( $level, $message ) {
|
375 |
|
376 |
+
$this->_logs[] = $this->get_format( $level, $message );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
377 |
|
378 |
if ( count( $this->_logs ) >= $this->flush_interval ) {
|
379 |
$this->flush();
|
libs/factory/logger/langs/{wbcr_factory_logger_118-ru_RU.mo → wbcr_factory_logger_123-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/logger/langs/{wbcr_factory_logger_118-ru_RU.po → wbcr_factory_logger_123-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_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_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,11 @@ class Wbcr_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_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 +65,7 @@ class Wbcr_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_AdminPage {
|
|
64 |
* {@inheritdoc}
|
65 |
*/
|
66 |
public function getMenuTitle() {
|
67 |
-
return __( 'Plugin Log', '
|
68 |
}
|
69 |
|
70 |
/**
|
@@ -81,22 +82,22 @@ class Wbcr_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_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 |
<?php echo $buttons; ?>
|
@@ -109,7 +110,7 @@ class Wbcr_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_AdminPage {
|
|
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 +118,13 @@ class Wbcr_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_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 +133,7 @@ class Wbcr_FactoryLogger118_AdminPage extends Wbcr_FactoryPages452_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_FactoryLogger123_AdminPage extends Wbcr_FactoryPages457_AdminPage {
|
16 |
|
17 |
/**
|
18 |
* {@inheritdoc}
|
30 |
public $type = 'page';
|
31 |
|
32 |
/**
|
33 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
34 |
*/
|
35 |
public function __construct( $plugin ) {
|
36 |
$this->id = $plugin->getPrefix() . "logger";
|
37 |
|
38 |
+
$this->menu_title = __( 'Plugin Log', 'wbcr_factory_logger_123' );
|
39 |
+
$this->page_title = __( 'Plugin log', 'wbcr_factory_logger_123' );
|
40 |
$this->capabilitiy = "manage_options";
|
41 |
|
42 |
+
add_action( 'wp_ajax_wbcr_factory_logger_123_'.$plugin->getPrefix().'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_123_URL . '/assets/css/logger.css' );
|
57 |
+
$this->scripts->add( FACTORY_LOGGER_123_URL . '/assets/js/logger.js', [ 'jquery' ], 'wbcr_factory_logger_123', FACTORY_LOGGER_123_VERSION );
|
58 |
+
wp_localize_script( 'wbcr_factory_logger_123', 'wbcr_factory_logger_123', [
|
59 |
+
'clean_logs_nonce' => wp_create_nonce( 'wbcr_factory_logger_123_clean_logs' ),
|
60 |
+
'plugin_prefix' => $this->plugin->getPrefix(),
|
61 |
] );
|
62 |
}
|
63 |
|
65 |
* {@inheritdoc}
|
66 |
*/
|
67 |
public function getMenuTitle() {
|
68 |
+
return __( 'Plugin Log', 'wbcr_factory_logger_123' );
|
69 |
}
|
70 |
|
71 |
/**
|
82 |
$buttons = "
|
83 |
<div class='wbcr_factory_logger_buttons'>
|
84 |
<a href='" . wp_nonce_url( $this->getActionUrl( 'export' ) ) . "'
|
85 |
+
class='button button-primary'>" . __( 'Export Debug Information', 'wbcr_factory_logger_123' ) . "</a>
|
86 |
<a href='#'
|
87 |
class='button button-secondary'
|
88 |
+
onclick='wbcr_factory_logger_123_LogCleanup(this);return false;'
|
89 |
+
data-working='" . __( 'Working...', 'wbcr_factory_logger_123' ) . "'>" .
|
90 |
+
sprintf( __( 'Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_123' ), $this->get_log_size_formatted() ) . "
|
91 |
</a>
|
92 |
</div>";
|
93 |
|
94 |
?>
|
95 |
<div class="wbcr_factory_logger_container">
|
96 |
<div class="wbcr_factory_logger_page_title">
|
97 |
+
<h1><?php _e( 'Logs of the', 'wbcr_factory_logger_123' ) ?>
|
98 |
<?php echo $this->plugin->getPluginTitle() . " " . $this->plugin->getPluginVersion(); ?></h1>
|
99 |
<p>
|
100 |
+
<?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_123' ) ?>
|
101 |
</p>
|
102 |
</div>
|
103 |
<?php echo $buttons; ?>
|
110 |
}
|
111 |
|
112 |
public function ajax_cleanup() {
|
113 |
+
check_admin_referer( 'wbcr_factory_logger_123_clean_logs', 'nonce' );
|
114 |
|
115 |
if ( ! current_user_can( 'manage_options' ) ) {
|
116 |
wp_die( - 1 );
|
118 |
|
119 |
if ( ! $this->plugin->logger->clean_up() ) {
|
120 |
wp_send_json_error( [
|
121 |
+
'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_123' ),
|
122 |
'type' => 'danger',
|
123 |
] );
|
124 |
}
|
125 |
|
126 |
wp_send_json( [
|
127 |
+
'message' => esc_html__( 'Logs clean-up successfully', 'wbcr_factory_logger_123' ),
|
128 |
'type' => 'success',
|
129 |
] );
|
130 |
}
|
133 |
* Processing log export action in form of ZIP archive.
|
134 |
*/
|
135 |
public function exportAction() {
|
136 |
+
$export = new WBCR\Factory_Logger_123\Log_Export( $this->plugin->logger );
|
137 |
|
138 |
if ( $export->prepare() ) {
|
139 |
$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_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\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,11 @@ class Wbcr_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\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 +63,7 @@ class Wbcr_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\ImpressiveL
|
|
62 |
* {@inheritdoc}
|
63 |
*/
|
64 |
public function getMenuTitle() {
|
65 |
-
return __( 'Plugin Log', '
|
66 |
}
|
67 |
|
68 |
/**
|
@@ -72,18 +73,18 @@ class Wbcr_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\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">
|
@@ -97,7 +98,7 @@ class Wbcr_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\ImpressiveL
|
|
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 +106,13 @@ class Wbcr_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\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 +121,7 @@ class Wbcr_FactoryLogger118_Lite extends \WBCR\Factory_Templates_106\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_FactoryLogger123_Lite extends \WBCR\Factory_Templates_110\ImpressiveLite {
|
16 |
|
17 |
/**
|
18 |
* {@inheritdoc}
|
30 |
public $type = 'page';
|
31 |
|
32 |
/**
|
33 |
+
* @param Wbcr_Factory458_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_123' );
|
39 |
|
40 |
+
add_action( 'wp_ajax_wbcr_factory_logger_123_'.$plugin->getPrefix().'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_123_URL . '/assets/css/logger.css' );
|
55 |
+
$this->scripts->add( FACTORY_LOGGER_123_URL . '/assets/js/logger.js', [ 'jquery' ], 'wbcr_factory_logger_123', FACTORY_LOGGER_123_VERSION );
|
56 |
+
$this->scripts->localize( 'wbcr_factory_logger_123', [
|
57 |
+
'clean_logs_nonce' => wp_create_nonce( 'wbcr_factory_logger_123_clean_logs' ),
|
58 |
+
'plugin_prefix' => $this->plugin->getPrefix(),
|
59 |
] );
|
60 |
}
|
61 |
|
63 |
* {@inheritdoc}
|
64 |
*/
|
65 |
public function getMenuTitle() {
|
66 |
+
return __( 'Plugin Log', 'wbcr_factory_logger_123' );
|
67 |
}
|
68 |
|
69 |
/**
|
73 |
$buttons = "
|
74 |
<div class='btn-group'>
|
75 |
<a href='" . wp_nonce_url( $this->getActionUrl( 'export' ) ) . "'
|
76 |
+
class='button button-primary'>" . __( 'Export Debug Information', 'wbcr_factory_logger_123' ) . "</a>
|
77 |
<a href='#'
|
78 |
class='button button-secondary'
|
79 |
+
onclick='wbcr_factory_logger_123_LogCleanup(this);return false;'
|
80 |
+
data-working='" . __( 'Working...', 'wbcr_factory_logger_123' ) . "'>" . sprintf( __( 'Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_123' ), $this->get_log_size_formatted() ) . "
|
81 |
</a>
|
82 |
</div>";
|
83 |
?>
|
84 |
<div class="wbcr-factory-page-group-header" style="margin-top:0;">
|
85 |
+
<strong><?php _e( 'Plugin Log', 'wbcr_factory_logger_123' ) ?></strong>
|
86 |
<p>
|
87 |
+
<?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_123' ) ?>
|
88 |
</p>
|
89 |
</div>
|
90 |
<div class="wbcr-factory-page-group-body" style="padding: 0 20px">
|
98 |
}
|
99 |
|
100 |
public function ajax_cleanup() {
|
101 |
+
check_admin_referer( 'wbcr_factory_logger_123_clean_logs', 'nonce' );
|
102 |
|
103 |
if ( ! current_user_can( 'manage_options' ) ) {
|
104 |
wp_die( - 1 );
|
106 |
|
107 |
if ( ! $this->plugin->logger->clean_up() ) {
|
108 |
wp_send_json_error( [
|
109 |
+
'message' => esc_html__( 'Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_123' ),
|
110 |
'type' => 'danger',
|
111 |
] );
|
112 |
}
|
113 |
|
114 |
wp_send_json( [
|
115 |
+
'message' => esc_html__( 'Logs clean-up successfully', 'wbcr_factory_logger_123' ),
|
116 |
'type' => 'success',
|
117 |
] );
|
118 |
}
|
121 |
* Processing log export action in form of ZIP archive.
|
122 |
*/
|
123 |
public function exportAction() {
|
124 |
+
$export = new WBCR\Factory_Logger_123\Log_Export( $this->plugin->logger );
|
125 |
|
126 |
if ( $export->prepare() ) {
|
127 |
$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_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\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,11 @@ class Wbcr_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\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 +67,7 @@ class Wbcr_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\Pages\P
|
|
66 |
*/
|
67 |
public function getMenuTitle()
|
68 |
{
|
69 |
-
return __('Plugin Log', '
|
70 |
}
|
71 |
|
72 |
/**
|
@@ -77,18 +78,18 @@ class Wbcr_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\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">
|
@@ -103,7 +104,7 @@ class Wbcr_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\Pages\P
|
|
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 +112,13 @@ class Wbcr_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\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 +128,7 @@ class Wbcr_FactoryLogger118_PageBase extends \WBCR\Factory_Templates_106\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_FactoryLogger123_PageBase extends \WBCR\Factory_Templates_110\Pages\PageBase {
|
16 |
|
17 |
/**
|
18 |
* {@inheritdoc}
|
30 |
public $type = 'page';
|
31 |
|
32 |
/**
|
33 |
+
* @param Wbcr_Factory458_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_123');
|
40 |
+
$this->page_menu_short_description = __('Plugin debug report', 'wbcr_factory_logger_123');
|
41 |
|
42 |
+
add_action( 'wp_ajax_wbcr_factory_logger_123_'.$plugin->getPrefix().'logs_cleanup', [ $this, 'ajax_cleanup' ] );
|
43 |
|
44 |
parent::__construct($plugin);
|
45 |
}
|
54 |
{
|
55 |
parent::assets($scripts, $styles);
|
56 |
|
57 |
+
$this->styles->add(FACTORY_LOGGER_123_URL . '/assets/css/logger.css');
|
58 |
+
$this->scripts->add(FACTORY_LOGGER_123_URL . '/assets/js/logger.js', ['jquery'], 'wbcr_factory_logger_123', FACTORY_LOGGER_123_VERSION);
|
59 |
+
$this->scripts->localize('wbcr_factory_logger_123', [
|
60 |
+
'clean_logs_nonce' => wp_create_nonce('wbcr_factory_logger_123_clean_logs'),
|
61 |
+
'plugin_prefix' => $this->plugin->getPrefix(),
|
62 |
]);
|
63 |
}
|
64 |
|
67 |
*/
|
68 |
public function getMenuTitle()
|
69 |
{
|
70 |
+
return __('Plugin Log', 'wbcr_factory_logger_123');
|
71 |
}
|
72 |
|
73 |
/**
|
78 |
$buttons = "
|
79 |
<div class='btn-group'>
|
80 |
<a href='" . wp_nonce_url($this->getActionUrl('export')) . "'
|
81 |
+
class='button button-primary'>" . __('Export Debug Information', 'wbcr_factory_logger_123') . "</a>
|
82 |
<a href='#'
|
83 |
class='button button-secondary'
|
84 |
+
onclick='wbcr_factory_logger_123_LogCleanup(this);return false;'
|
85 |
+
data-working='" . __('Working...', 'wbcr_factory_logger_123') . "'>" . sprintf(__('Clean-up Logs (<span id="wbcr-log-size">%s</span>)', 'wbcr_factory_logger_123'), $this->get_log_size_formatted()) . "
|
86 |
</a>
|
87 |
</div>";
|
88 |
?>
|
89 |
<div class="wbcr-factory-page-group-header" style="margin-top:0;">
|
90 |
+
<strong><?php _e('Plugin Log', 'wbcr_factory_logger_123') ?></strong>
|
91 |
<p>
|
92 |
+
<?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_123') ?>
|
93 |
</p>
|
94 |
</div>
|
95 |
<div class="wbcr-factory-page-group-body" style="padding: 0 20px">
|
104 |
|
105 |
public function ajax_cleanup()
|
106 |
{
|
107 |
+
check_admin_referer('wbcr_factory_logger_123_clean_logs', 'nonce');
|
108 |
|
109 |
if( !current_user_can('manage_options') ) {
|
110 |
wp_die(-1);
|
112 |
|
113 |
if( !$this->plugin->logger->clean_up() ) {
|
114 |
wp_send_json_error([
|
115 |
+
'message' => esc_html__('Failed to clean-up logs. Please try again later.', 'wbcr_factory_logger_123'),
|
116 |
'type' => 'danger',
|
117 |
]);
|
118 |
}
|
119 |
|
120 |
wp_send_json([
|
121 |
+
'message' => esc_html__('Logs clean-up successfully', 'wbcr_factory_logger_123'),
|
122 |
'type' => 'success',
|
123 |
]);
|
124 |
}
|
128 |
*/
|
129 |
public function exportAction()
|
130 |
{
|
131 |
+
$export = new WBCR\Factory_Logger_123\Log_Export($this->plugin->logger);
|
132 |
|
133 |
if( $export->prepare() ) {
|
134 |
$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_457_LOADED') ) {
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
+
define('FACTORY_PAGES_457_LOADED', true);
|
27 |
|
28 |
+
define('FACTORY_PAGES_457_VERSION', '4.5.7');
|
29 |
|
30 |
+
define('FACTORY_PAGES_457_DIR', dirname(__FILE__));
|
31 |
+
define('FACTORY_PAGES_457_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_457', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
38 |
|
39 |
+
require(FACTORY_PAGES_457_DIR . '/pages.php');
|
40 |
+
require(FACTORY_PAGES_457_DIR . '/includes/page.class.php');
|
41 |
+
require(FACTORY_PAGES_457_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_FactoryPages452_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_FactoryPages452_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_FactoryPages452_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_FactoryPages457_AdminPage') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryPages457_AdminPage extends Wbcr_FactoryPages457_Page {
|
20 |
|
21 |
/**
|
22 |
* Visible page title.
|
209 |
*/
|
210 |
public $add_link_to_plugin_actions = false;
|
211 |
|
212 |
+
public function __construct(Wbcr_Factory458_Plugin $plugin)
|
213 |
{
|
214 |
parent::__construct($plugin);
|
215 |
$this->configure();
|
325 |
{
|
326 |
$result_id = $this->getResultId();
|
327 |
|
328 |
+
$this->hidden = apply_filters('wbcr_factory_458_page_is_hidden_' . $result_id, $this->hidden);
|
329 |
|
330 |
if( $this->hidden ) {
|
331 |
return;
|
332 |
}
|
333 |
|
334 |
+
$this->internal = apply_filters('wbcr_factory_458_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_458_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_FactoryPages452_Page' ) ) {
|
|
30 |
* Чтобы не было конфликтов с другими плагинами, используйте префиксы.
|
31 |
*
|
32 |
* @since 1.0.0
|
33 |
-
* @see
|
34 |
*
|
35 |
* @var string
|
36 |
*/
|
@@ -39,7 +39,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages452_Page' ) ) {
|
|
39 |
/**
|
40 |
* Current Factory Plugin.
|
41 |
*
|
42 |
-
* @var
|
43 |
*/
|
44 |
public $plugin;
|
45 |
|
@@ -51,11 +51,11 @@ if ( ! class_exists( 'Wbcr_FactoryPages452_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_FactoryPages452_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_FactoryPages457_Page' ) ) {
|
18 |
|
19 |
+
class Wbcr_FactoryPages457_Page {
|
20 |
|
21 |
|
22 |
/**
|
30 |
* Чтобы не было конфликтов с другими плагинами, используйте префиксы.
|
31 |
*
|
32 |
* @since 1.0.0
|
33 |
+
* @see FactoryPages457_AdminPage
|
34 |
*
|
35 |
* @var string
|
36 |
*/
|
39 |
/**
|
40 |
* Current Factory Plugin.
|
41 |
*
|
42 |
+
* @var Wbcr_Factory458_Plugin
|
43 |
*/
|
44 |
public $plugin;
|
45 |
|
51 |
//private $default_actions = array();
|
52 |
|
53 |
/**
|
54 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
55 |
*
|
56 |
* @throws Exception
|
57 |
*/
|
58 |
+
public function __construct( Wbcr_Factory458_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_457/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_452-fr_FR.mo → wbcr_factory_pages_457-fr_FR.mo}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_452-fr_FR.po → wbcr_factory_pages_457-fr_FR.po}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_452-ru_RU.mo → wbcr_factory_pages_457-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_452-ru_RU.po → wbcr_factory_pages_457-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_FactoryPages457::actionAdminMenu');
|
18 |
+
add_action('network_admin_menu', 'Wbcr_FactoryPages457::actionAdminMenu');
|
19 |
|
20 |
+
if( !class_exists('Wbcr_FactoryPages457') ) {
|
21 |
/**
|
22 |
* A base class to manage pages.
|
23 |
*
|
24 |
* @since 1.0.0
|
25 |
*/
|
26 |
+
class Wbcr_FactoryPages457 {
|
27 |
|
28 |
/**
|
29 |
+
* @var Wbcr_FactoryPages457_Page[]
|
30 |
*/
|
31 |
private static $pages = array();
|
32 |
|
33 |
/**
|
34 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
35 |
* @param $class_name
|
36 |
*/
|
37 |
public static function register($plugin, $class_name)
|
59 |
}
|
60 |
}
|
61 |
|
62 |
+
public static function getPageUrl(Wbcr_Factory458_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_Factory458_Plugin $plugin
|
79 |
* @return array
|
80 |
*/
|
81 |
public static function getIds($plugin)
|
93 |
}
|
94 |
}
|
95 |
|
96 |
+
if( !function_exists('wbcr_factory_pages_457_get_page_id') ) {
|
97 |
/**
|
98 |
*
|
99 |
+
* @param Wbcr_Factory458_Plugin $plugin
|
100 |
* @param string $page_id
|
101 |
* @return string
|
102 |
*/
|
103 |
+
function wbcr_factory_pages_457_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-110-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-110-impressive-page-template .wbcr-factory-templates-110-multisite-suggetion {
|
30 |
padding: 30px 80px;
|
31 |
}
|
32 |
+
#WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-templates-110-multisite-suggetion h3 {
|
33 |
margin: 0 0 20px;
|
34 |
}
|
35 |
+
#WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-templates-110-multisite-suggetion .wbcr-factory-inner-contanier {
|
36 |
border: 2px dashed #8bc34a;
|
37 |
background: #fff;
|
38 |
padding: 20px;
|
39 |
}
|
40 |
+
#WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-templates-110-multisite-suggetion .wbcr-factory-activate-premium:focus {
|
65 |
outline: none;
|
66 |
border: 0;
|
67 |
}
|
68 |
+
#WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-templates-110-multisite-suggetion .wbcr-factory-purchase-premium:focus {
|
93 |
outline: none;
|
94 |
border: 0;
|
95 |
}
|
96 |
+
#WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-pro-suggettion {
|
97 |
background: #fff;
|
98 |
color: #353535;
|
99 |
font-weight: 600;
|
100 |
border: 2px dashed #8bc34a;
|
101 |
}
|
102 |
+
#WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-pro-suggettion ul {
|
114 |
position: relative;
|
115 |
margin-bottom: 20px;
|
116 |
}
|
117 |
+
#WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-pro-suggettion ul li {
|
118 |
font-size: 15px;
|
119 |
padding: 7px;
|
120 |
padding-left: 20px;
|
121 |
}
|
122 |
+
#WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-templates-110-multisite-pro-suggetion {
|
224 |
padding: 10px 80px;
|
225 |
}
|
226 |
+
#WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-pro-suggettion {
|
227 |
padding: 10px;
|
228 |
}
|
229 |
+
#WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-pro-suggettion ul {
|
236 |
margin-bottom: 20px;
|
237 |
}
|
238 |
+
#WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-pro-suggettion ul li {
|
239 |
font-size: 13px;
|
240 |
padding: 2px;
|
241 |
padding-left: 10px;
|
242 |
}
|
243 |
+
#WBCR .wbcr-factory-templates-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-templates-110-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-110-components {
|
7 |
padding: 0 20px 20px;
|
8 |
text-align: center;
|
9 |
}
|
10 |
+
#WBCR .wbc-factory-templates-110-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-110-components .plugin-card:first-child {
|
22 |
margin-left: 0;
|
23 |
}
|
24 |
+
#WBCR .wbc-factory-templates-110-components .plugin-card .plugin-card-bottom {
|
25 |
position: absolute;
|
26 |
bottom: 0;
|
27 |
right: 0;
|
28 |
left: 0;
|
29 |
}
|
30 |
+
#WBCR .wbc-factory-templates-110-components .plugin-card .plugin-card-top {
|
31 |
min-height: 163px;
|
32 |
}
|
33 |
+
#WBCR .wbc-factory-templates-110-components .plugin-card .desc,
|
34 |
+
#WBCR .wbc-factory-templates-110-components .plugin-card .name {
|
35 |
margin-right: 0 !important;
|
36 |
}
|
37 |
+
#WBCR .wbc-factory-templates-110-components .plugin-card .name h3 {
|
38 |
font-size: 17px;
|
39 |
margin-top: 0 !important;
|
40 |
}
|
41 |
+
#WBCR .wbc-factory-templates-110-components .plugin-card .install-now {
|
42 |
float: right;
|
43 |
}
|
44 |
+
#WBCR .wbc-factory-templates-110-components .plugin-card .delete-now {
|
45 |
float: right;
|
46 |
margin-left: 5px;
|
47 |
}
|
48 |
+
#WBCR .wbc-factory-templates-110-components .plugin-card .delete-now .dashicons,
|
49 |
+
#WBCR .wbc-factory-templates-110-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-110-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-110-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-110-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-110-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-110-components .plugin-card.premium {
|
109 |
border-color: #e8d7b2;
|
110 |
background-color: #fff9eb;
|
111 |
}
|
112 |
+
#WBCR .wbc-factory-templates-110-components .plugin-card.plugin-status-deactive {
|
113 |
background-color: #f1f1f1;
|
114 |
}
|
115 |
+
#WBCR .wbc-factory-templates-110-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-110-components .plugin-card.plugin-status-deactive .plugin-icon {
|
122 |
opacity: 0.3;
|
123 |
}
|
124 |
+
#WBCR .wbc-factory-templates-110-components .plugin-card.plugin-status-deactive .desc {
|
125 |
color: #afafaf;
|
126 |
}
|
127 |
+
#WBCR .wbc-factory-templates-110-components .plugin-card.plugin-status-deactive.premium {
|
128 |
background-color: #f9f2f1;
|
129 |
}
|
130 |
@media screen and (max-width: 1750px) {
|
131 |
+
#WBCR .wbc-factory-templates-110-components .plugin-card {
|
132 |
width: 49%;
|
133 |
}
|
134 |
}
|
135 |
@media screen and (max-width: 1350px) {
|
136 |
+
#WBCR .wbc-factory-templates-110-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-110__search_options_form #wbcr-factory-templates-110__autocomplete {
|
9 |
width: 100%;
|
10 |
box-sizing: border-box;
|
11 |
border-color: #d6d4d4;
|
12 |
}
|
13 |
+
#wbcr-factory-templates-110__search_options_form #wbcr-factory-templates-110__autocomplete::placeholder,
|
14 |
+
#wbcr-factory-templates-110__search_options_form #wbcr-factory-templates-110__autocomplete::-moz-placeholder,
|
15 |
+
#wbcr-factory-templates-110__search_options_form #wbcr-factory-templates-110__autocomplete::-webkit-input-placeholder {
|
16 |
color: #eae9e9;
|
17 |
}
|
18 |
+
#wbcr-factory-templates-110__search_options_form.wbcr-factory-templates-110__autocomplete-wrap {
|
19 |
padding: 10px;
|
20 |
}
|
21 |
+
#wbcr-factory-templates-110__search_options_form .wbcr-factory-templates-110__autocomplete-label {
|
22 |
display: block !important;
|
23 |
}
|
24 |
+
.wbcr-factory-templates-110__autocomplete-suggestions {
|
25 |
border: 1px solid #999;
|
26 |
background: #FFF;
|
27 |
overflow: auto;
|
28 |
}
|
29 |
+
.wbcr-factory-templates-110__autocomplete-suggestion {
|
30 |
padding: 2px 5px;
|
31 |
white-space: nowrap;
|
32 |
overflow: hidden;
|
33 |
cursor: pointer;
|
34 |
}
|
35 |
+
.wbcr-factory-templates-110__autocomplete-selected {
|
36 |
background: #F0F0F0;
|
37 |
}
|
38 |
+
.wbcr-factory-templates-110__autocomplete-suggestions strong {
|
39 |
font-weight: normal;
|
40 |
color: #3399FF;
|
41 |
}
|
42 |
+
.wbcr-factory-templates-110__autocomplete-group {
|
43 |
padding: 2px 5px;
|
44 |
}
|
45 |
+
.wbcr-factory-templates-110__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-110__form-buttons {
|
6 |
text-align: right;
|
7 |
padding: 10px;
|
8 |
background: #f7f7f7;
|
9 |
border-top: 1px solid #e8e8e8;
|
10 |
}
|
11 |
+
.w-factory-templates-110__form-buttons .w-factory-templates-110__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-110__form-buttons .w-factory-templates-110__skip-button:active,
|
20 |
+
.w-factory-templates-110__form-buttons .w-factory-templates-110__skip-button:hover,
|
21 |
+
.w-factory-templates-110__form-buttons .w-factory-templates-110__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-110__form-buttons .w-factory-templates-110__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-110__form-buttons .w-factory-templates-110__continue-button:active,
|
35 |
+
.w-factory-templates-110__form-buttons .w-factory-templates-110__continue-button:hover,
|
36 |
+
.w-factory-templates-110__form-buttons .w-factory-templates-110__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-110-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-110-setup__inner-wrap,
|
50 |
+
.w-factory-templates-110__setup-form .factory-form-layout {
|
51 |
padding: 30px;
|
52 |
}
|
53 |
+
.w-factory-templates-110-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-110-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-110-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-110-setup-steps li.active {
|
87 |
border-color: #ff1c40 !important;
|
88 |
color: #222;
|
89 |
font-weight: 700;
|
90 |
}
|
91 |
+
.w-factory-templates-110-setup-steps li.active::before {
|
92 |
border-color: #ff1c40 !important;
|
93 |
}
|
94 |
+
.w-factory-templates-110-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-110-setup-steps li a:focus,
|
103 |
+
.w-factory-templates-110-setup-steps li a:hover {
|
104 |
color: #111;
|
105 |
text-decoration: underline;
|
106 |
}
|
107 |
+
/*.w-factory-templates-110-setup-steps li.done {
|
108 |
border-color: #f57d4f;
|
109 |
color: #f57d4f
|
110 |
}
|
111 |
|
112 |
+
.w-factory-templates-110-setup-steps li.done::before {
|
113 |
border-color: #f57d4f;
|
114 |
background: #f57d4f
|
115 |
}*/
|
116 |
+
.w-factory-templates-110-setup .w-factory-templates-110-setup-actions {
|
117 |
overflow: hidden;
|
118 |
margin: 20px 0 0;
|
119 |
position: relative;
|
120 |
}
|
121 |
+
.w-factory-templates-110-setup-content p:last-child {
|
122 |
margin-bottom: 0;
|
123 |
}
|
124 |
+
.w-factory-templates-110-setup-content p.store-setup {
|
125 |
margin-top: 0;
|
126 |
}
|
127 |
+
.w-factory-templates-110-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-110-logo {
|
135 |
text-align: center;
|
136 |
}
|
137 |
+
.w-factory-templates-110-logo img {
|
138 |
max-width: 250px;
|
139 |
}
|
140 |
+
.w-factory-templates-110-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-110-setup-content table {
|
148 |
font-size: 1em;
|
149 |
line-height: 1.75;
|
150 |
color: #666;
|
151 |
}
|
152 |
+
.w-factory-templates-110-setup-content table thead {
|
153 |
background: #f1f1f1;
|
154 |
}
|
155 |
+
.w-factory-templates-110-setup-content table th,
|
156 |
+
.w-factory-templates-110-setup-content table td {
|
157 |
padding: 10px 15px;
|
158 |
}
|
159 |
+
.w-factory-templates-110-setup-content h1,
|
160 |
+
.w-factory-templates-110-setup-content h2,
|
161 |
+
.w-factory-templates-110-setup-content h3,
|
162 |
+
.w-factory-templates-110-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-110-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-110-setup-step__new_onboarding-welcome {
|
178 |
font-size: 22px !important;
|
179 |
}
|
180 |
+
.w-factory-templates-110-setup-content a {
|
181 |
color: #f57d4f;
|
182 |
}
|
183 |
+
.w-factory-templates-110-setup-content a:focus,
|
184 |
+
.w-factory-templates-110-setup-content a:hover {
|
185 |
color: #111;
|
186 |
}
|
187 |
+
.w-factory-templates-110-setup-content table.tax-rates {
|
188 |
width: 100%;
|
189 |
font-size: 0.92em;
|
190 |
}
|
191 |
+
.w-factory-templates-110-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-110-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-110-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-110-setup-content table.tax-rates td.sort {
|
212 |
cursor: move;
|
213 |
color: #ccc;
|
214 |
}
|
215 |
+
.w-factory-templates-110-setup-content table.tax-rates td.sort::before {
|
216 |
content: "\f333";
|
217 |
font-family: dashicons;
|
218 |
}
|
219 |
+
.w-factory-templates-110-setup-content table.tax-rates td.readonly {
|
220 |
background: #f5f5f5;
|
221 |
}
|
222 |
+
.w-factory-templates-110-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-110-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-110-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-110-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-110-setup-content .w-factory-templates-110-setup-pages {
|
259 |
width: 100%;
|
260 |
border-top: 1px solid #eee;
|
261 |
}
|
262 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-pages thead th {
|
263 |
display: none;
|
264 |
}
|
265 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-pages .page-name {
|
266 |
width: 30%;
|
267 |
font-weight: 700;
|
268 |
}
|
269 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-pages td,
|
270 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-pages th {
|
271 |
padding: 14px 0;
|
272 |
border-bottom: 1px solid #eee;
|
273 |
}
|
274 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-pages td:first-child,
|
275 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-pages th:first-child {
|
276 |
padding-right: 9px;
|
277 |
}
|
278 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-pages th {
|
279 |
padding-top: 0;
|
280 |
}
|
281 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-pages .page-options p {
|
282 |
color: #777;
|
283 |
margin: 6px 0 0 24px;
|
284 |
line-height: 1.75;
|
285 |
}
|
286 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-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-110-setup-content .w-factory-templates-110-setup-pages .page-options p label {
|
294 |
line-height: 1;
|
295 |
}
|
296 |
@media screen and (max-width: 782px) {
|
297 |
+
.w-factory-templates-110-setup-content .form-table tbody th {
|
298 |
width: auto;
|
299 |
}
|
300 |
}
|
301 |
+
.w-factory-templates-110-setup-content .twitter-share-button {
|
302 |
float: right;
|
303 |
}
|
304 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-next-steps {
|
305 |
overflow: hidden;
|
306 |
margin: 0 0 24px;
|
307 |
padding-bottom: 2px;
|
308 |
}
|
309 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-next-steps h2 {
|
310 |
margin-bottom: 12px;
|
311 |
}
|
312 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-next-steps .w-factory-templates-110-setup-next-steps-first {
|
313 |
float: left;
|
314 |
width: 50%;
|
315 |
box-sizing: border-box;
|
316 |
}
|
317 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-next-steps .w-factory-templates-110-setup-next-steps-last {
|
318 |
float: right;
|
319 |
width: 50%;
|
320 |
box-sizing: border-box;
|
321 |
}
|
322 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-next-steps ul {
|
323 |
padding: 0 2em 0 0;
|
324 |
list-style: none outside;
|
325 |
margin: 0;
|
326 |
}
|
327 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-next-steps ul li a {
|
328 |
display: block;
|
329 |
padding: 0 0 0.75em;
|
330 |
}
|
331 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-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-110-setup-content .w-factory-templates-110-setup-next-steps ul .setup-product a.button:active,
|
346 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-next-steps ul .setup-product a.button:focus,
|
347 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-next-steps ul .setup-product a.button:hover {
|
348 |
background: #f5f5f5;
|
349 |
border-color: #aaa;
|
350 |
}
|
351 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-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-110-setup-content .w-factory-templates-110-setup-next-steps ul .setup-product a.button-primary:active,
|
359 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-next-steps ul .setup-product a.button-primary:focus,
|
360 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-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-110-setup-content .w-factory-templates-110-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-110-setup-content .w-factory-templates-110-setup-next-steps ul .learn-more a::before {
|
378 |
content: "\f105";
|
379 |
}
|
380 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-next-steps ul .video-walkthrough a::before {
|
381 |
content: "\f126";
|
382 |
}
|
383 |
+
.w-factory-templates-110-setup-content .w-factory-templates-110-setup-next-steps ul .newsletter a::before {
|
384 |
content: "\f465";
|
385 |
}
|
386 |
+
.w-factory-templates-110-setup-content .updated,
|
387 |
+
.w-factory-templates-110-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-110-setup-content .updated p,
|
394 |
+
.w-factory-templates-110-setup-content .woocommerce-newsletter p {
|
395 |
padding: 0;
|
396 |
margin: 0 0 12px;
|
397 |
}
|
398 |
+
.w-factory-templates-110-setup-content .updated form,
|
399 |
+
.w-factory-templates-110-setup-content .updated p:last-child,
|
400 |
+
.w-factory-templates-110-setup-content .woocommerce-newsletter form,
|
401 |
+
.w-factory-templates-110-setup-content .woocommerce-newsletter p:last-child {
|
402 |
margin: 0 0 24px;
|
403 |
}
|
404 |
+
.w-factory-templates-110-setup-content .checkbox input[type=checkbox] {
|
405 |
opacity: 0;
|
406 |
position: absolute;
|
407 |
left: -9999px;
|
408 |
}
|
409 |
+
.w-factory-templates-110-setup-content .checkbox label {
|
410 |
position: relative;
|
411 |
display: inline-block;
|
412 |
padding-left: 28px;
|
413 |
}
|
414 |
+
.w-factory-templates-110-setup-content .checkbox label::after,
|
415 |
+
.w-factory-templates-110-setup-content .checkbox label::before {
|
416 |
position: absolute;
|
417 |
content: "";
|
418 |
display: inline-block;
|
419 |
}
|
420 |
+
.w-factory-templates-110-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-110-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-110-setup-content .checkbox input[type=checkbox] + label::after {
|
442 |
content: none;
|
443 |
}
|
444 |
+
.w-factory-templates-110-setup-content .checkbox input[type=checkbox]:checked + label::after {
|
445 |
content: "";
|
446 |
}
|
447 |
+
.w-factory-templates-110-setup-content .checkbox input[type=checkbox]:focus + label::before {
|
448 |
outline: #3b99fc auto 5px;
|
449 |
}
|
450 |
+
.w-factory-templates-110-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_110.app - методы для работы с приложением. Скрыть, показать уведомления.
|
6 |
+
* $.wbcr_factory_templates_110.hooks - это иммитация хуков и фильтров аналогично тем, что используются в Wordpress
|
7 |
*
|
8 |
* Copyright 2018, Webcraftic, http://webcraftic.com
|
9 |
*
|
13 |
(function($) {
|
14 |
'use strict';
|
15 |
|
16 |
+
if( !$.wbcr_factory_templates_110 ) {
|
17 |
+
$.wbcr_factory_templates_110 = {};
|
18 |
}
|
19 |
|
20 |
//todo: Переопредление для совместимости со старыми версиями плагинов.
|
21 |
+
$.wbcr_factory_templates_110.filters = $.wbcr_factory_templates_110.filters || $.wfactory_458.filters;
|
22 |
//todo: Переопредление для совместимости со старыми версиями плагинов.
|
23 |
+
$.wbcr_factory_templates_110.hooks = $.wbcr_factory_templates_110.hooks || $.wfactory_458.hooks;
|
24 |
|
25 |
+
$.wbcr_factory_templates_110.app = $.wbcr_factory_templates_110.app || {
|
26 |
/**
|
27 |
* Создает и показывает уведомление внутри интерфейса Clearfy
|
28 |
*
|
68 |
/**
|
69 |
* Хук выполняет проивольную функцию, после того как уведомление отображено
|
70 |
* Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
|
71 |
+
* Пример регистрации хука $.wfactory_458.hooks.add('wbcr/factory_templates_110/updated',
|
72 |
* function(noticeId) {});
|
73 |
* @param {string} noticeId - id уведомления
|
74 |
*/
|
75 |
+
$.wfactory_458.hooks.run('wbcr/factory_templates_110/showed_notice', [noticeId]);
|
76 |
+
$.wfactory_458.hooks.run('wbcr/clearfy/showed_notice', [noticeId]);
|
77 |
});
|
78 |
|
79 |
return noticeId;
|
98 |
/**
|
99 |
* Хук выполняет проивольную функцию, после того как уведомление скрыто
|
100 |
* Реализация системы фильтров и хуков в файле libs/clearfy/admin/assests/js/global.js
|
101 |
+
* Пример регистрации хука $.wfactory_458.hooks.add('wbcr/factory_templates_110/updated',
|
102 |
* function(noticeId)
|
103 |
* {});
|
104 |
* @param {string} noticeId - id уведомления
|
105 |
*/
|
106 |
+
$.wfactory_458.hooks.run('wbcr/factory_templates_110/hidded_notice', [noticeId]);
|
107 |
+
$.wfactory_458.hooks.run('wbcr/clearfy/hidded_notice', [noticeId]);
|
108 |
});
|
109 |
},
|
110 |
|
121 |
|
122 |
};
|
123 |
|
124 |
+
$.wfactory_458.hooks.add('core/components/pre_activate', function(button) {
|
125 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
126 |
if( !$('#WBCR').length ) {
|
127 |
return false;
|
137 |
}
|
138 |
});
|
139 |
|
140 |
+
$.wfactory_458.hooks.add('core/components/deactivated', function(button, data, response) {
|
141 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
142 |
if( !$('#WBCR').length ) {
|
143 |
return false;
|
156 |
}
|
157 |
});
|
158 |
|
159 |
+
$.wfactory_458.hooks.add('core/components/deleted', function(button) {
|
160 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
161 |
if( !$('#WBCR').length ) {
|
162 |
return false;
|
175 |
}
|
176 |
});
|
177 |
|
178 |
+
$.wfactory_458.hooks.add('core/components/activation_error', function(plugin, button, response) {
|
179 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
180 |
+
if( !($('#WBCR').length && $.wbcr_factory_templates_110) ) {
|
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_110.app.showNotice(response.data.error_message, 'danger');
|
188 |
}
|
189 |
});
|
190 |
|
191 |
+
$.wfactory_458.hooks.add('core/components/update_error', function(button, data, response) {
|
192 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
193 |
+
if( !($('#WBCR').length && $.wbcr_factory_templates_110) ) {
|
194 |
return false;
|
195 |
}
|
196 |
|
197 |
if( response.data && response.data.error_message ) {
|
198 |
+
$.wbcr_factory_templates_110.app.showNotice(response.data.error_message, 'danger');
|
199 |
}
|
200 |
|
201 |
});
|
202 |
|
203 |
+
$.wfactory_458.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_458.hooks.add('core/components/ajax_error', function(xhr, ajaxOptions, thrownError) {
|
213 |
// Выполняем код ниже, только на страницах плагина с интерфейсом Clearfy
|
214 |
+
if( !($('#WBCR').length && $.wbcr_factory_templates_110) ) {
|
215 |
return false;
|
216 |
}
|
217 |
|
218 |
+
$.wbcr_factory_templates_110.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_110.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_110.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_110.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_110.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-110__autocomplete').wfactory_clearfy_autocomplete({
|
43 |
lookup: wfactory_clearfy_search_options,
|
44 |
onSelect: function(suggestion) {
|
45 |
+
$('#wbcr-factory-templates-110__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_110.app.showNotice('Error: [' + response.data.error_message + ']', 'danger');
|
29 |
setTimeout(function() {
|
30 |
+
$.wbcr_factory_templates_110.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_110.app.showNotice('Error: [' + thrownError + '] Status: [' + xhr.status + '] Error massage: [' + xhr.responseText + ']', 'danger');
|
56 |
setTimeout(function() {
|
57 |
+
$.wbcr_factory_templates_110.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-106__autocomplete-selected",suggestion:"wbcr-factory-templates-106__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-106__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-106__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-110__autocomplete-selected",suggestion:"wbcr-factory-templates-110__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-110__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-110__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
@@ -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 |
}
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( defined('FACTORY_TEMPLATES_110_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
define('FACTORY_TEMPLATES_110_LOADED', true);
|
22 |
|
23 |
+
define('FACTORY_TEMPLATES_110', '1.1.0');
|
24 |
|
25 |
+
define('FACTORY_TEMPLATES_110_DIR', dirname(__FILE__));
|
26 |
+
define('FACTORY_TEMPLATES_110_URL', plugins_url(null, __FILE__));
|
27 |
|
28 |
+
load_plugin_textdomain('wbcr_factory_templates_110', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
29 |
|
30 |
+
require(FACTORY_TEMPLATES_110_DIR . '/includes/ajax-handlers.php');
|
31 |
+
require(FACTORY_TEMPLATES_110_DIR . '/includes/class-helpers.php');
|
32 |
+
require(FACTORY_TEMPLATES_110_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-110-global', FACTORY_TEMPLATES_110_URL . '/assets/js/clearfy-globals.js', [
|
42 |
'jquery',
|
43 |
+
'wfactory-458-core-general'
|
44 |
+
], FACTORY_TEMPLATES_110);
|
45 |
|
46 |
+
require_once FACTORY_TEMPLATES_110_DIR . '/includes/class-search-options.php';
|
47 |
+
$all_options = \WBCR\Factory_Templates_110\Search_Options::get_all_options();
|
48 |
|
49 |
if( empty($all_options) ) {
|
50 |
return;
|
72 |
//return;
|
73 |
//}
|
74 |
|
75 |
+
wp_localize_script('wbcr-factory-templates-110-global', 'wfactory_clearfy_search_options', $formated_options);
|
76 |
});
|
77 |
|
78 |
+
if( defined('FACTORY_PAGES_457_LOADED') ) {
|
79 |
+
require(FACTORY_TEMPLATES_110_DIR . '/pages/templates/impressive/class-page-template-impressive.php');
|
80 |
+
require(FACTORY_TEMPLATES_110_DIR . '/pages/templates/impressive/class-pages.php');
|
81 |
+
require(FACTORY_TEMPLATES_110_DIR . '/pages/templates/impressive-lite/class-page-template-impressive-lite.php');
|
82 |
|
83 |
+
require(FACTORY_TEMPLATES_110_DIR . '/pages/class-page-more-features.php');
|
84 |
+
require(FACTORY_TEMPLATES_110_DIR . '/pages/class-page-license.php');
|
85 |
+
require(FACTORY_TEMPLATES_110_DIR . '/pages/class-pages-components.php');
|
86 |
|
87 |
+
require(FACTORY_TEMPLATES_110_DIR . '/pages/setup-parts/class-step.php');
|
88 |
+
require(FACTORY_TEMPLATES_110_DIR . '/pages/setup-parts/class-step-form.php');
|
89 |
+
require(FACTORY_TEMPLATES_110_DIR . '/pages/setup-parts/class-step-custom.php');
|
90 |
+
require(FACTORY_TEMPLATES_110_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_106_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_106_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_106_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_106_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_106_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_Factory458_Plugin $plugin_instance
|
19 |
*
|
20 |
* @since 2.3.0
|
21 |
*
|
22 |
*/
|
23 |
+
function wbcr_factory_templates_110_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_110')]);
|
38 |
}
|
39 |
|
40 |
if( empty($group_id) ) {
|
41 |
+
wp_send_json_error(['error_message' => __('Group ID is empty!', 'wbcr_factory_templates_110')]);
|
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_110')]);
|
67 |
|
68 |
die();
|
69 |
}
|
71 |
/**
|
72 |
* Обработчик ajax запросов для проверки, активации, деактивации лицензионного ключа
|
73 |
*
|
74 |
+
* @param Wbcr_Factory458_Plugin $plugin_instance
|
75 |
*
|
76 |
* @since 2.0.7
|
77 |
*
|
78 |
*/
|
79 |
+
function wbcr_factory_templates_110_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_110')]);
|
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_110')]);
|
106 |
} else {
|
107 |
$plugin_instance->premium->activate($license_key);
|
108 |
+
$success_message = __('Your license has been successfully activated', 'wbcr_factory_templates_110');
|
109 |
}
|
110 |
break;
|
111 |
case 'deactivate':
|
112 |
$plugin_instance->premium->deactivate();
|
113 |
+
$success_message = __('The license is deactivated', 'wbcr_factory_templates_110');
|
114 |
break;
|
115 |
case 'sync':
|
116 |
$plugin_instance->premium->sync();
|
117 |
+
$success_message = __('The license has been updated', 'wbcr_factory_templates_110');
|
118 |
break;
|
119 |
case 'unsubscribe':
|
120 |
$plugin_instance->premium->cancel_paid_subscription();
|
121 |
+
$success_message = __('Subscription success cancelled', 'wbcr_factory_templates_110');
|
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_110;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
19 |
abstract class Configurate {
|
20 |
|
21 |
/**
|
22 |
+
* @param \Wbcr_Factory458_Plugin $plugin
|
23 |
*/
|
24 |
+
public function __construct(\Wbcr_Factory458_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_110;
|
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_110;
|
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 <?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(), '
|
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 <?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', '
|
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>
|
@@ -332,19 +332,19 @@ class License extends PageBase {
|
|
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,19 +352,19 @@ 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"><?php echo $this->get_plan() ?></span>
|
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 |
-
<?php _e('of', '
|
366 |
<?php echo esc_attr($this->premium_license->get_sites_quota()); ?></span>
|
367 |
-
<span class="license-value-name"><?php _e('active sites', '
|
368 |
</td>
|
369 |
<?php endif; ?>
|
370 |
<td class="license-param license-param-version">
|
@@ -374,8 +374,8 @@ class License extends PageBase {
|
|
374 |
<?php if( $this->is_premium ): ?>
|
375 |
<td class="license-param license-param-days">
|
376 |
<?php if( $this->get_license_type() == 'trial' ): ?>
|
377 |
-
<span class="license-value"><?php _e('EXPIRED!', '
|
378 |
-
<span class="license-value-name"><?php _e('please update the key', '
|
379 |
<?php else: ?>
|
380 |
<span class="license-value">
|
381 |
<?php
|
@@ -385,9 +385,9 @@ class License extends PageBase {
|
|
385 |
echo $this->get_expiration_days();
|
386 |
}
|
387 |
?>
|
388 |
-
<small> <?php _e('day(s)', '
|
389 |
</span>
|
390 |
-
<span class="license-value-name"><?php _e('remained', '
|
391 |
<?php endif; ?>
|
392 |
</td>
|
393 |
<?php endif; ?>
|
@@ -398,14 +398,14 @@ class License extends PageBase {
|
|
398 |
<div class="license-input">
|
399 |
<form action="" method="post">
|
400 |
<?php if($this->is_premium): ?>
|
401 |
-
<p><?php _e('Have a key to activate the premium version? Paste it here:', '
|
402 |
<?php else: ?>
|
403 |
-
<p><?php _e('Have a key to activate the plugin? Paste it here:', '
|
404 |
<p>
|
405 |
<?php endif; ?>
|
406 |
<button data-action="activate" class="btn btn-default wcl-control-btn" type="button"
|
407 |
id="license-submit">
|
408 |
-
<?php _e('Submit Key', '
|
409 |
</button>
|
410 |
<div class="license-key-wrap">
|
411 |
<input type="text" id="license-key" name="licensekey" value="" class="form-control"/>
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Templates_110\Pages;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
82 |
|
83 |
/**
|
84 |
* @since 2.0.7
|
85 |
+
* @var \WBCR\Factory_458\Premium\Provider
|
86 |
*/
|
87 |
protected $premium;
|
88 |
|
100 |
|
101 |
/**
|
102 |
* @since 2.0.7
|
103 |
+
* @var \WBCR\Factory_458\Premium\Interfaces\License
|
104 |
*/
|
105 |
protected $premium_license;
|
106 |
|
109 |
|
110 |
/**
|
111 |
* {@inheritdoc}
|
112 |
+
* @param \Wbcr_Factory458_Plugin $plugin
|
113 |
*/
|
114 |
+
public function __construct(\Wbcr_Factory458_Plugin $plugin)
|
115 |
{
|
116 |
$this->plugin = $plugin;
|
117 |
|
138 |
{
|
139 |
parent::assets($scripts, $styles);
|
140 |
|
141 |
+
$this->styles->add(FACTORY_TEMPLATES_110_URL . '/assets/css/license-manager.css');
|
142 |
+
$this->scripts->add(FACTORY_TEMPLATES_110_URL . '/assets/js/clearfy-license-manager.js');
|
143 |
}
|
144 |
|
145 |
/**
|
149 |
*/
|
150 |
public function ajax_handler()
|
151 |
{
|
152 |
+
wbcr_factory_templates_110_check_license($this->plugin);
|
153 |
}
|
154 |
|
155 |
/**
|
159 |
{
|
160 |
?>
|
161 |
<div id="wcl-license-wrapper"
|
162 |
+
data-loader="<?php echo FACTORY_TEMPLATES_110_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_110'), $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_110'), $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-459 onp-page-wrap <?php echo $this->get_license_type() ?>-license-manager-content">
|
285 |
<div>
|
286 |
+
<h3><?php printf(__('Activate %s', 'wbcr_factory_templates_110'), $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_110') ?></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_110') ?>
|
304 |
</span>
|
305 |
</a>
|
306 |
+
<p><?php printf(__('Your current license for %1$s:', 'wbcr_factory_templates_110'), $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_110') ?>
|
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_110') ?>
|
317 |
</a>
|
318 |
<?php endif; ?>
|
319 |
<h3>
|
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_110') ?></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_110') ?></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_110') ?>
|
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_110'), '') ?>
|
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_110') ?></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_110') ?></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()); ?>
|
365 |
+
<?php _e('of', 'wbcr_factory_templates_110') ?>
|
366 |
<?php echo esc_attr($this->premium_license->get_sites_quota()); ?></span>
|
367 |
+
<span class="license-value-name"><?php _e('active sites', 'wbcr_factory_templates_110') ?></span>
|
368 |
</td>
|
369 |
<?php endif; ?>
|
370 |
<td class="license-param license-param-version">
|
374 |
<?php if( $this->is_premium ): ?>
|
375 |
<td class="license-param license-param-days">
|
376 |
<?php if( $this->get_license_type() == 'trial' ): ?>
|
377 |
+
<span class="license-value"><?php _e('EXPIRED!', 'wbcr_factory_templates_110') ?></span>
|
378 |
+
<span class="license-value-name"><?php _e('please update the key', 'wbcr_factory_templates_110') ?></span>
|
379 |
<?php else: ?>
|
380 |
<span class="license-value">
|
381 |
<?php
|
385 |
echo $this->get_expiration_days();
|
386 |
}
|
387 |
?>
|
388 |
+
<small> <?php _e('day(s)', 'wbcr_factory_templates_110') ?></small>
|
389 |
</span>
|
390 |
+
<span class="license-value-name"><?php _e('remained', 'wbcr_factory_templates_110') ?></span>
|
391 |
<?php endif; ?>
|
392 |
</td>
|
393 |
<?php endif; ?>
|
398 |
<div class="license-input">
|
399 |
<form action="" method="post">
|
400 |
<?php if($this->is_premium): ?>
|
401 |
+
<p><?php _e('Have a key to activate the premium version? Paste it here:', 'wbcr_factory_templates_110') ?><p>
|
402 |
<?php else: ?>
|
403 |
+
<p><?php _e('Have a key to activate the plugin? Paste it here:', 'wbcr_factory_templates_110') ?>
|
404 |
<p>
|
405 |
<?php endif; ?>
|
406 |
<button data-action="activate" class="btn btn-default wcl-control-btn" type="button"
|
407 |
id="license-submit">
|
408 |
+
<?php _e('Submit Key', 'wbcr_factory_templates_110') ?>
|
409 |
</button>
|
410 |
<div class="license-key-wrap">
|
411 |
<input type="text" id="license-key" name="licensekey" value="" class="form-control"/>
|
libs/factory/templates/pages/class-page-more-features.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* The page Settings.
|
@@ -18,7 +18,7 @@ if( !defined('ABSPATH') ) {
|
|
18 |
}
|
19 |
|
20 |
|
21 |
-
class MoreFeatures extends \WBCR\
|
22 |
|
23 |
/**
|
24 |
* {@inheritDoc}
|
@@ -63,9 +63,9 @@ class MoreFeatures extends \WBCR\Factory_Templates_106\Impressive {
|
|
63 |
*/
|
64 |
public $internal = true;
|
65 |
|
66 |
-
public function __construct(\
|
67 |
{
|
68 |
-
$this->menu_title = __('More features (<b>free</b>)', '
|
69 |
|
70 |
parent::__construct($plugin);
|
71 |
|
@@ -79,7 +79,7 @@ class MoreFeatures extends \WBCR\Factory_Templates_106\Impressive {
|
|
79 |
*/
|
80 |
public function getPageTitle()
|
81 |
{
|
82 |
-
return __('More features', '
|
83 |
}
|
84 |
|
85 |
/**
|
@@ -94,66 +94,66 @@ class MoreFeatures extends \WBCR\Factory_Templates_106\Impressive {
|
|
94 |
<div class="col-sm-4">
|
95 |
<div class="wbcr-factory-feature-box">
|
96 |
<span class="dashicons dashicons-yes"></span>
|
97 |
-
<h3><?php _e('Code cleaning', '
|
98 |
-
<p><?php _e('Clears the source code of the page from unused code.', '
|
99 |
</div>
|
100 |
</div>
|
101 |
<div class="col-sm-4">
|
102 |
<div class="wbcr-factory-feature-box">
|
103 |
<span class="dashicons dashicons-chart-bar"></span>
|
104 |
-
<h3><?php _e('Improve SEO', '
|
105 |
-
<p><?php _e('Removes duplicate pages, closes external links, changes the headers of the server.', '
|
106 |
</div>
|
107 |
</div>
|
108 |
<div class="col-sm-4">
|
109 |
<div class="wbcr-factory-feature-box">
|
110 |
<span class="dashicons dashicons-shield-alt"></span>
|
111 |
-
<h3><?php _e('Site protection', '
|
112 |
-
<p><?php _e('Enables and disables features that improve the protection of your site.', '
|
113 |
</div>
|
114 |
</div>
|
115 |
<div class="col-sm-4">
|
116 |
<div class="wbcr-factory-feature-box">
|
117 |
<span class="dashicons dashicons-welcome-comments"></span>
|
118 |
-
<h3><?php _e('Disable comments', '
|
119 |
-
<p><?php _e('Disables comments on the entire site or on specific pages.', '
|
120 |
</div>
|
121 |
</div>
|
122 |
<div class="col-sm-4">
|
123 |
<div class="wbcr-factory-feature-box">
|
124 |
<span class="dashicons dashicons-update"></span>
|
125 |
-
<h3><?php _e('Manage updates', '
|
126 |
<p><?php _e('Enables or disables automatically updates for plugins, themes and core. It is also possible
|
127 |
-
to disable all updates.', '
|
128 |
</div>
|
129 |
</div>
|
130 |
<div class="col-sm-4">
|
131 |
<div class="wbcr-factory-feature-box">
|
132 |
<span class="dashicons dashicons-admin-plugins"></span>
|
133 |
-
<h3><?php _e('Manage widgets', '
|
134 |
-
<p><?php _e('Allows you to remove unused widgets.', '
|
135 |
</div>
|
136 |
</div>
|
137 |
<div class="col-sm-4">
|
138 |
<div class="wbcr-factory-feature-box">
|
139 |
<span class="dashicons dashicons-dashboard"></span>
|
140 |
-
<h3><?php _e('Speed Optimization', '
|
141 |
-
<p><?php _e('Increases performance by disabling unused functions and reducing the number of requests.', '
|
142 |
</div>
|
143 |
</div>
|
144 |
<div class="col-sm-4">
|
145 |
<div class="wbcr-factory-feature-box">
|
146 |
<span class="dashicons dashicons-visibility"></span>
|
147 |
-
<h3><?php _e('Site privacy', '
|
148 |
<p><?php _e('Allows you to hide the version of the site and plugins. Allows you to hide your
|
149 |
-
WordPress.', '
|
150 |
</div>
|
151 |
</div>
|
152 |
<div class="col-sm-4">
|
153 |
<div class="wbcr-factory-feature-box">
|
154 |
<span class="dashicons dashicons-admin-settings"></span>
|
155 |
-
<h3><?php _e('Easy setup', '
|
156 |
-
<p><?php _e('In quick mode, you can easily configure the plugin according to your needs.', '
|
157 |
</div>
|
158 |
</div>
|
159 |
</div>
|
@@ -167,7 +167,7 @@ class MoreFeatures extends \WBCR\Factory_Templates_106\Impressive {
|
|
167 |
$url .= '?utm_source=wordpress.org&utm_campaign=' . $this->plugin->getPluginName();
|
168 |
?>
|
169 |
<a href="<?php echo $url ?>" class="wbcr-factory-premium-button" target="_blank">
|
170 |
-
<?php _e('Get the ultimate plugin 100% FREE', '
|
171 |
</a>
|
172 |
</div>
|
173 |
<?php
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Templates_110\Pages;
|
4 |
|
5 |
/**
|
6 |
* The page Settings.
|
18 |
}
|
19 |
|
20 |
|
21 |
+
class MoreFeatures extends \WBCR\Factory_Templates_110\Impressive {
|
22 |
|
23 |
/**
|
24 |
* {@inheritDoc}
|
63 |
*/
|
64 |
public $internal = true;
|
65 |
|
66 |
+
public function __construct(\Wbcr_Factory458_Plugin $plugin)
|
67 |
{
|
68 |
+
$this->menu_title = __('More features (<b>free</b>)', 'wbcr_factory_templates_110');
|
69 |
|
70 |
parent::__construct($plugin);
|
71 |
|
79 |
*/
|
80 |
public function getPageTitle()
|
81 |
{
|
82 |
+
return __('More features', 'wbcr_factory_templates_110');
|
83 |
}
|
84 |
|
85 |
/**
|
94 |
<div class="col-sm-4">
|
95 |
<div class="wbcr-factory-feature-box">
|
96 |
<span class="dashicons dashicons-yes"></span>
|
97 |
+
<h3><?php _e('Code cleaning', 'wbcr_factory_templates_110') ?></h3>
|
98 |
+
<p><?php _e('Clears the source code of the page from unused code.', 'wbcr_factory_templates_110') ?></p>
|
99 |
</div>
|
100 |
</div>
|
101 |
<div class="col-sm-4">
|
102 |
<div class="wbcr-factory-feature-box">
|
103 |
<span class="dashicons dashicons-chart-bar"></span>
|
104 |
+
<h3><?php _e('Improve SEO', 'wbcr_factory_templates_110') ?></h3>
|
105 |
+
<p><?php _e('Removes duplicate pages, closes external links, changes the headers of the server.', 'wbcr_factory_templates_110') ?></p>
|
106 |
</div>
|
107 |
</div>
|
108 |
<div class="col-sm-4">
|
109 |
<div class="wbcr-factory-feature-box">
|
110 |
<span class="dashicons dashicons-shield-alt"></span>
|
111 |
+
<h3><?php _e('Site protection', 'wbcr_factory_templates_110') ?></h3>
|
112 |
+
<p><?php _e('Enables and disables features that improve the protection of your site.', 'wbcr_factory_templates_110') ?></p>
|
113 |
</div>
|
114 |
</div>
|
115 |
<div class="col-sm-4">
|
116 |
<div class="wbcr-factory-feature-box">
|
117 |
<span class="dashicons dashicons-welcome-comments"></span>
|
118 |
+
<h3><?php _e('Disable comments', 'wbcr_factory_templates_110') ?></h3>
|
119 |
+
<p><?php _e('Disables comments on the entire site or on specific pages.', 'wbcr_factory_templates_110') ?></p>
|
120 |
</div>
|
121 |
</div>
|
122 |
<div class="col-sm-4">
|
123 |
<div class="wbcr-factory-feature-box">
|
124 |
<span class="dashicons dashicons-update"></span>
|
125 |
+
<h3><?php _e('Manage updates', 'wbcr_factory_templates_110') ?></h3>
|
126 |
<p><?php _e('Enables or disables automatically updates for plugins, themes and core. It is also possible
|
127 |
+
to disable all updates.', 'wbcr_factory_templates_110') ?></p>
|
128 |
</div>
|
129 |
</div>
|
130 |
<div class="col-sm-4">
|
131 |
<div class="wbcr-factory-feature-box">
|
132 |
<span class="dashicons dashicons-admin-plugins"></span>
|
133 |
+
<h3><?php _e('Manage widgets', 'wbcr_factory_templates_110') ?></h3>
|
134 |
+
<p><?php _e('Allows you to remove unused widgets.', 'wbcr_factory_templates_110') ?></p>
|
135 |
</div>
|
136 |
</div>
|
137 |
<div class="col-sm-4">
|
138 |
<div class="wbcr-factory-feature-box">
|
139 |
<span class="dashicons dashicons-dashboard"></span>
|
140 |
+
<h3><?php _e('Speed Optimization', 'wbcr_factory_templates_110') ?></h3>
|
141 |
+
<p><?php _e('Increases performance by disabling unused functions and reducing the number of requests.', 'wbcr_factory_templates_110') ?></p>
|
142 |
</div>
|
143 |
</div>
|
144 |
<div class="col-sm-4">
|
145 |
<div class="wbcr-factory-feature-box">
|
146 |
<span class="dashicons dashicons-visibility"></span>
|
147 |
+
<h3><?php _e('Site privacy', 'wbcr_factory_templates_110') ?></h3>
|
148 |
<p><?php _e('Allows you to hide the version of the site and plugins. Allows you to hide your
|
149 |
+
WordPress.', 'wbcr_factory_templates_110') ?></p>
|
150 |
</div>
|
151 |
</div>
|
152 |
<div class="col-sm-4">
|
153 |
<div class="wbcr-factory-feature-box">
|
154 |
<span class="dashicons dashicons-admin-settings"></span>
|
155 |
+
<h3><?php _e('Easy setup', 'wbcr_factory_templates_110') ?></h3>
|
156 |
+
<p><?php _e('In quick mode, you can easily configure the plugin according to your needs.', 'wbcr_factory_templates_110') ?></p>
|
157 |
</div>
|
158 |
</div>
|
159 |
</div>
|
167 |
$url .= '?utm_source=wordpress.org&utm_campaign=' . $this->plugin->getPluginName();
|
168 |
?>
|
169 |
<a href="<?php echo $url ?>" class="wbcr-factory-premium-button" target="_blank">
|
170 |
+
<?php _e('Get the ultimate plugin 100% FREE', 'wbcr_factory_templates_110') ?>
|
171 |
</a>
|
172 |
</div>
|
173 |
<?php
|
libs/factory/templates/pages/class-page-setup.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
@@ -10,15 +10,15 @@ if( !defined('ABSPATH') ) {
|
|
10 |
/**
|
11 |
* Класс страницы, которая реализует функции мастера установки.
|
12 |
*
|
13 |
-
* Этот класс унаследован от стандартного шаблона страницы \
|
14 |
* поэтому все его инструменты могут быть применены и в этом классе. Но вы должны учитывать, что
|
15 |
* поведение экшенов страницы было изменено. В данной реализации экшены используется для пагинации шагов.
|
16 |
*
|
17 |
-
* @package WBCR\
|
18 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
19 |
* @since 2.2.2
|
20 |
*/
|
21 |
-
class Setup extends \WBCR\
|
22 |
|
23 |
const DEFAULT_STEP = 'step0';
|
24 |
|
@@ -68,20 +68,20 @@ class Setup extends \WBCR\Factory_Templates_106\Impressive {
|
|
68 |
private $steps = [];
|
69 |
|
70 |
/**
|
71 |
-
* @param \
|
72 |
*/
|
73 |
-
public function __construct(\
|
74 |
{
|
75 |
$this->id = 'setup';
|
76 |
|
77 |
-
$this->menu_title = __('Setup master', '
|
78 |
-
$this->page_menu_short_description = __('Setup master', '
|
79 |
parent::__construct($plugin);
|
80 |
}
|
81 |
|
82 |
public function getPageTitle()
|
83 |
{
|
84 |
-
return __('Setup', '
|
85 |
}
|
86 |
|
87 |
public function get_close_wizard_url()
|
@@ -135,18 +135,18 @@ class Setup extends \WBCR\Factory_Templates_106\Impressive {
|
|
135 |
/**
|
136 |
* Requests assets (js and css) for the page.
|
137 |
*
|
138 |
-
* @param \
|
139 |
-
* @param \
|
140 |
*
|
141 |
* @return void
|
142 |
-
* @see
|
143 |
*
|
144 |
*/
|
145 |
public function assets($scripts, $styles)
|
146 |
{
|
147 |
parent::assets($scripts, $styles);
|
148 |
|
149 |
-
$this->styles->add(
|
150 |
|
151 |
// Require step assets
|
152 |
if( isset($_GET['action']) && false !== strpos($_GET['action'], 'step') && isset($this->steps[$_GET['action']]) ) {
|
@@ -163,8 +163,8 @@ class Setup extends \WBCR\Factory_Templates_106\Impressive {
|
|
163 |
protected function showPage($content = null)
|
164 |
{
|
165 |
?>
|
166 |
-
<div class="w-factory-templates-
|
167 |
-
<ol class="w-factory-templates-
|
168 |
<?php foreach($this->steps as $step): ?>
|
169 |
<?php if( self::DEFAULT_STEP === $step->get_id() ) {
|
170 |
continue;
|
@@ -172,11 +172,11 @@ class Setup extends \WBCR\Factory_Templates_106\Impressive {
|
|
172 |
<li <?php if($this->current_step === $step->get_id()): ?>class="active"<?php endif; ?>><?php echo $step->get_title(); ?></li>
|
173 |
<?php endforeach; ?>
|
174 |
</ol>
|
175 |
-
<div class="w-factory-templates-
|
176 |
<?php echo $content; ?>
|
177 |
</div>
|
178 |
-
<a class="w-factory-templates-
|
179 |
-
<?php _e('Not now', '
|
180 |
</a>
|
181 |
</div>
|
182 |
<?php
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Templates_110\Pages;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
10 |
/**
|
11 |
* Класс страницы, которая реализует функции мастера установки.
|
12 |
*
|
13 |
+
* Этот класс унаследован от стандартного шаблона страницы \Wbcr_FactoryPages457_ImpressiveThemplate,
|
14 |
* поэтому все его инструменты могут быть применены и в этом классе. Но вы должны учитывать, что
|
15 |
* поведение экшенов страницы было изменено. В данной реализации экшены используется для пагинации шагов.
|
16 |
*
|
17 |
+
* @package WBCR\Factory_Templates_110\Pages
|
18 |
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
19 |
* @since 2.2.2
|
20 |
*/
|
21 |
+
class Setup extends \WBCR\Factory_Templates_110\Impressive {
|
22 |
|
23 |
const DEFAULT_STEP = 'step0';
|
24 |
|
68 |
private $steps = [];
|
69 |
|
70 |
/**
|
71 |
+
* @param \Wbcr_Factory458_Plugin $plugin
|
72 |
*/
|
73 |
+
public function __construct(\Wbcr_Factory458_Plugin $plugin)
|
74 |
{
|
75 |
$this->id = 'setup';
|
76 |
|
77 |
+
$this->menu_title = __('Setup master', 'wbcr_factory_templates_110');
|
78 |
+
$this->page_menu_short_description = __('Setup master', 'wbcr_factory_templates_110');
|
79 |
parent::__construct($plugin);
|
80 |
}
|
81 |
|
82 |
public function getPageTitle()
|
83 |
{
|
84 |
+
return __('Setup', 'wbcr_factory_templates_110');
|
85 |
}
|
86 |
|
87 |
public function get_close_wizard_url()
|
135 |
/**
|
136 |
* Requests assets (js and css) for the page.
|
137 |
*
|
138 |
+
* @param \Wbcr_Factory458_ScriptList $scripts
|
139 |
+
* @param \Wbcr_Factory458_StyleList $styles
|
140 |
*
|
141 |
* @return void
|
142 |
+
* @see Wbcr_FactoryPages457_AdminPage
|
143 |
*
|
144 |
*/
|
145 |
public function assets($scripts, $styles)
|
146 |
{
|
147 |
parent::assets($scripts, $styles);
|
148 |
|
149 |
+
$this->styles->add(FACTORY_TEMPLATES_110_URL . '/assets/css/page-setup.css');
|
150 |
|
151 |
// Require step assets
|
152 |
if( isset($_GET['action']) && false !== strpos($_GET['action'], 'step') && isset($this->steps[$_GET['action']]) ) {
|
163 |
protected function showPage($content = null)
|
164 |
{
|
165 |
?>
|
166 |
+
<div class="w-factory-templates-110-setup">
|
167 |
+
<ol class="w-factory-templates-110-setup-steps">
|
168 |
<?php foreach($this->steps as $step): ?>
|
169 |
<?php if( self::DEFAULT_STEP === $step->get_id() ) {
|
170 |
continue;
|
172 |
<li <?php if($this->current_step === $step->get_id()): ?>class="active"<?php endif; ?>><?php echo $step->get_title(); ?></li>
|
173 |
<?php endforeach; ?>
|
174 |
</ol>
|
175 |
+
<div class="w-factory-templates-110-setup-content">
|
176 |
<?php echo $content; ?>
|
177 |
</div>
|
178 |
+
<a class="w-factory-templates-110-setup-footer-links" href="<?php echo esc_url($this->get_close_wizard_url()); ?>">
|
179 |
+
<?php _e('Not now', 'wbcr_factory_templates_110') ?>
|
180 |
</a>
|
181 |
</div>
|
182 |
<?php
|
libs/factory/templates/pages/class-pages-components.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* This file is the add-ons page.
|
@@ -16,7 +16,7 @@ if( !defined('ABSPATH') ) {
|
|
16 |
exit;
|
17 |
}
|
18 |
|
19 |
-
class Components extends \WBCR\
|
20 |
|
21 |
/**
|
22 |
* The id of the page in the admin menu.
|
@@ -24,7 +24,7 @@ class Components extends \WBCR\Factory_Templates_106\Pages\PageBase {
|
|
24 |
* Mainly used to navigate between pages.
|
25 |
*
|
26 |
* @since 1.0.0
|
27 |
-
* @see
|
28 |
*
|
29 |
* @var string
|
30 |
*/
|
@@ -41,12 +41,12 @@ class Components extends \WBCR\Factory_Templates_106\Pages\PageBase {
|
|
41 |
public $available_for_multisite = true;
|
42 |
|
43 |
/**
|
44 |
-
* @param \
|
45 |
*/
|
46 |
-
public function __construct(\
|
47 |
{
|
48 |
-
$this->menu_title = __('Components', '
|
49 |
-
$this->page_menu_short_description = __('More features for plugin', '
|
50 |
|
51 |
parent::__construct($plugin);
|
52 |
|
@@ -58,18 +58,18 @@ class Components extends \WBCR\Factory_Templates_106\Pages\PageBase {
|
|
58 |
*
|
59 |
* @return void
|
60 |
* @since 1.0.0
|
61 |
-
* @see
|
62 |
*
|
63 |
*/
|
64 |
public function assets($scripts, $styles)
|
65 |
{
|
66 |
parent::assets($scripts, $styles);
|
67 |
|
68 |
-
$this->styles->add(
|
69 |
|
70 |
/**
|
71 |
-
* @param \
|
72 |
-
* @param \
|
73 |
* @since 1.4.0
|
74 |
*
|
75 |
*/
|
@@ -80,10 +80,10 @@ class Components extends \WBCR\Factory_Templates_106\Pages\PageBase {
|
|
80 |
* We register notifications for some actions
|
81 |
*
|
82 |
* @param $notices
|
83 |
-
* @param \
|
84 |
*
|
85 |
* @return array
|
86 |
-
* @see libs\factory\pages\themplates\
|
87 |
*/
|
88 |
public function getActionNotices($notices)
|
89 |
{
|
@@ -92,7 +92,7 @@ class Components extends \WBCR\Factory_Templates_106\Pages\PageBase {
|
|
92 |
'wbcr-force-update-components-success' => 1
|
93 |
],
|
94 |
'type' => 'success',
|
95 |
-
'message' => __('Components have been successfully updated to the latest version.', '
|
96 |
];
|
97 |
|
98 |
$notices[] = [
|
@@ -100,7 +100,7 @@ class Components extends \WBCR\Factory_Templates_106\Pages\PageBase {
|
|
100 |
'wbcr-force-update-components-error' => 'inactive_licence'
|
101 |
],
|
102 |
'type' => 'danger',
|
103 |
-
'message' => __('To use premium components, you need activate a license!', '
|
104 |
];
|
105 |
|
106 |
$notices[] = [
|
@@ -173,12 +173,12 @@ class Components extends \WBCR\Factory_Templates_106\Pages\PageBase {
|
|
173 |
$components = apply_filters('wbcr/clearfy/components/items_list', $components);
|
174 |
|
175 |
?>
|
176 |
-
<div class="wbcr-factory-page-group-header"><?php _e('<strong>Plugin Components</strong>.', '
|
177 |
<p>
|
178 |
-
<?php _e('These are components of the plugin bundle. When you activate the plugin, all the components turned on by default. If you don’t need some function, you can easily turn it off on this page.', '
|
179 |
</p>
|
180 |
</div>
|
181 |
-
<div class="wbc-factory-templates-
|
182 |
<?php
|
183 |
/**
|
184 |
* @since 1.4.0
|
@@ -229,7 +229,7 @@ class Components extends \WBCR\Factory_Templates_106\Pages\PageBase {
|
|
229 |
<div class="plugin-card-bottom">
|
230 |
<?php if( !(isset($component['disable_button']) && $component['disable_button']) ): ?>
|
231 |
<?php if( 'premium' === $component['build'] && !($this->plugin->premium->is_activate() && $this->plugin->premium->is_install_package()) ): ?>
|
232 |
-
<a target="_blank" href="<?php echo esc_url($component['url']) ?>" class="button button-default install-now"><?php _e('Read more', '
|
233 |
<?php else: ?>
|
234 |
<?php $delete_button->render_button(); ?><?php $install_button->render_button(); ?>
|
235 |
<?php endif; ?>
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Templates_110\Pages;
|
4 |
|
5 |
/**
|
6 |
* This file is the add-ons page.
|
16 |
exit;
|
17 |
}
|
18 |
|
19 |
+
class Components extends \WBCR\Factory_Templates_110\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 FactoryPages457_AdminPage
|
28 |
*
|
29 |
* @var string
|
30 |
*/
|
41 |
public $available_for_multisite = true;
|
42 |
|
43 |
/**
|
44 |
+
* @param \Wbcr_Factory458_Plugin $plugin
|
45 |
*/
|
46 |
+
public function __construct(\Wbcr_Factory458_Plugin $plugin)
|
47 |
{
|
48 |
+
$this->menu_title = __('Components', 'wbcr_factory_templates_110');
|
49 |
+
$this->page_menu_short_description = __('More features for plugin', 'wbcr_factory_templates_110');
|
50 |
|
51 |
parent::__construct($plugin);
|
52 |
|
58 |
*
|
59 |
* @return void
|
60 |
* @since 1.0.0
|
61 |
+
* @see FactoryPages457_AdminPage
|
62 |
*
|
63 |
*/
|
64 |
public function assets($scripts, $styles)
|
65 |
{
|
66 |
parent::assets($scripts, $styles);
|
67 |
|
68 |
+
$this->styles->add(FACTORY_TEMPLATES_110_URL . '/assets/css/components.css');
|
69 |
|
70 |
/**
|
71 |
+
* @param \Wbcr_Factory458_StyleList $styles
|
72 |
+
* @param \Wbcr_Factory458_ScriptList $scripts
|
73 |
* @since 1.4.0
|
74 |
*
|
75 |
*/
|
80 |
* We register notifications for some actions
|
81 |
*
|
82 |
* @param $notices
|
83 |
+
* @param \Wbcr_Factory458_Plugin $plugin
|
84 |
*
|
85 |
* @return array
|
86 |
+
* @see libs\factory\pages\themplates\FactoryPages457_ImpressiveThemplate
|
87 |
*/
|
88 |
public function getActionNotices($notices)
|
89 |
{
|
92 |
'wbcr-force-update-components-success' => 1
|
93 |
],
|
94 |
'type' => 'success',
|
95 |
+
'message' => __('Components have been successfully updated to the latest version.', 'wbcr_factory_templates_110')
|
96 |
];
|
97 |
|
98 |
$notices[] = [
|
100 |
'wbcr-force-update-components-error' => 'inactive_licence'
|
101 |
],
|
102 |
'type' => 'danger',
|
103 |
+
'message' => __('To use premium components, you need activate a license!', 'wbcr_factory_templates_110') . '<a href="admin.php?page=license-wbcr_clearfy" class="btn btn-gold">' . __('Activate license', 'wbcr_factory_templates_110') . '</a>'
|
104 |
];
|
105 |
|
106 |
$notices[] = [
|
173 |
$components = apply_filters('wbcr/clearfy/components/items_list', $components);
|
174 |
|
175 |
?>
|
176 |
+
<div class="wbcr-factory-page-group-header"><?php _e('<strong>Plugin Components</strong>.', 'wbcr_factory_templates_110') ?>
|
177 |
<p>
|
178 |
+
<?php _e('These are components of the plugin bundle. When you activate the plugin, all the components turned on by default. If you don’t need some function, you can easily turn it off on this page.', 'wbcr_factory_templates_110') ?>
|
179 |
</p>
|
180 |
</div>
|
181 |
+
<div class="wbc-factory-templates-110-components">
|
182 |
<?php
|
183 |
/**
|
184 |
* @since 1.4.0
|
229 |
<div class="plugin-card-bottom">
|
230 |
<?php if( !(isset($component['disable_button']) && $component['disable_button']) ): ?>
|
231 |
<?php if( 'premium' === $component['build'] && !($this->plugin->premium->is_activate() && $this->plugin->premium->is_install_package()) ): ?>
|
232 |
+
<a target="_blank" href="<?php echo esc_url($component['url']) ?>" class="button button-default install-now"><?php _e('Read more', 'wbcr_factory_templates_110'); ?></a>
|
233 |
<?php else: ?>
|
234 |
<?php $delete_button->render_button(); ?><?php $install_button->render_button(); ?>
|
235 |
<?php endif; ?>
|
libs/factory/templates/pages/setup-parts/class-step-custom.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* Step
|
@@ -18,10 +18,10 @@ class Step_Custom extends Step {
|
|
18 |
public function render_button($continue = true, $skip = false, $custom_title = null, $align = 'right')
|
19 |
{
|
20 |
$this->set_button_handler();
|
21 |
-
$button_title = !empty($custom_title) ? $custom_title : __('Continue', '
|
22 |
|
23 |
if( !$this->get_next_id() ) {
|
24 |
-
$button_title = __('Finish', '
|
25 |
}
|
26 |
|
27 |
if( !in_array($align, ['center', 'left', 'right']) ) {
|
@@ -29,13 +29,13 @@ class Step_Custom extends Step {
|
|
29 |
}
|
30 |
|
31 |
?>
|
32 |
-
<form method="post" id="w-factory-templates-
|
33 |
-
<div class="w-factory-templates-
|
34 |
<?php if( $skip ): ?>
|
35 |
-
<input type="submit" name="skip_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-templates-
|
36 |
<?php endif; ?>
|
37 |
<?php if( $continue ): ?>
|
38 |
-
<input type="submit" name="continue_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-templates-
|
39 |
<?php endif; ?>
|
40 |
</div>
|
41 |
</form>
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Templates_110\Pages;
|
4 |
|
5 |
/**
|
6 |
* Step
|
18 |
public function render_button($continue = true, $skip = false, $custom_title = null, $align = 'right')
|
19 |
{
|
20 |
$this->set_button_handler();
|
21 |
+
$button_title = !empty($custom_title) ? $custom_title : __('Continue', 'wbcr_factory_templates_110');
|
22 |
|
23 |
if( !$this->get_next_id() ) {
|
24 |
+
$button_title = __('Finish', 'wbcr_factory_templates_110');
|
25 |
}
|
26 |
|
27 |
if( !in_array($align, ['center', 'left', 'right']) ) {
|
29 |
}
|
30 |
|
31 |
?>
|
32 |
+
<form method="post" id="w-factory-templates-110__setup-form-<?php echo $this->get_id() ?>" class="form-horizontal">
|
33 |
+
<div class="w-factory-templates-110__form-buttons" style="text-align: <?php echo esc_attr($align); ?>">
|
34 |
<?php if( $skip ): ?>
|
35 |
+
<input type="submit" name="skip_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-templates-110__skip-button" value="<?php _e('Skip', 'wbcr_factory_templates_110') ?>">
|
36 |
<?php endif; ?>
|
37 |
<?php if( $continue ): ?>
|
38 |
+
<input type="submit" name="continue_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-templates-110__continue-button" value="<?php echo $button_title; ?>">
|
39 |
<?php endif; ?>
|
40 |
</div>
|
41 |
</form>
|
libs/factory/templates/pages/setup-parts/class-step-form.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* Step
|
@@ -10,7 +10,7 @@ namespace WBCR\Factory_Templates_106\Pages;
|
|
10 |
*/
|
11 |
class Step_Form extends Step {
|
12 |
|
13 |
-
public function __construct(\WBCR\
|
14 |
{
|
15 |
parent::__construct($page);
|
16 |
}
|
@@ -33,12 +33,12 @@ class Step_Form extends Step {
|
|
33 |
protected function instance_form($options)
|
34 |
{
|
35 |
|
36 |
-
$form = new \
|
37 |
'scope' => rtrim($this->plugin->getPrefix(), '_'),
|
38 |
'name' => $this->page->getResultId() . "-options-" . $this->get_id()
|
39 |
], $this->plugin);
|
40 |
|
41 |
-
$form->setProvider(new \
|
42 |
|
43 |
$form_options = [];
|
44 |
|
@@ -83,20 +83,20 @@ class Step_Form extends Step {
|
|
83 |
return $form;
|
84 |
}
|
85 |
|
86 |
-
protected function render_form(\
|
87 |
{
|
88 |
?>
|
89 |
-
<form method="post" id="w-factory-templates-
|
90 |
<?php $form->html(); ?>
|
91 |
-
<div class="w-factory-templates-
|
92 |
-
<!--<input type="submit" name="skip_button_<?php /*echo $this->get_id() */ ?>" class="button-primary button button-large w-factory-templates-
|
93 |
-
<input type="submit" name="continue_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-templates-
|
94 |
</div>
|
95 |
</form>
|
96 |
<?php
|
97 |
}
|
98 |
|
99 |
-
protected function set_form_handler(\
|
100 |
{
|
101 |
if( isset($_POST['continue_button_' . $this->get_id()]) ) {
|
102 |
$form->save();
|
@@ -123,8 +123,8 @@ class Step_Form extends Step {
|
|
123 |
$form = $this->instance_form($this->get_form_options());
|
124 |
?>
|
125 |
<div id="WBCR" class="wrap">
|
126 |
-
<div class="wbcr-factory-templates-
|
127 |
-
<div class="w-factory-templates-
|
128 |
<h3><?php echo $this->get_title(); ?></h3>
|
129 |
<p style="text-align: left;"><?php echo $this->get_form_description(); ?></p>
|
130 |
</div>
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Templates_110\Pages;
|
4 |
|
5 |
/**
|
6 |
* Step
|
10 |
*/
|
11 |
class Step_Form extends Step {
|
12 |
|
13 |
+
public function __construct(\WBCR\Factory_Templates_110\Pages\Setup $page)
|
14 |
{
|
15 |
parent::__construct($page);
|
16 |
}
|
33 |
protected function instance_form($options)
|
34 |
{
|
35 |
|
36 |
+
$form = new \Wbcr_FactoryForms455_Form([
|
37 |
'scope' => rtrim($this->plugin->getPrefix(), '_'),
|
38 |
'name' => $this->page->getResultId() . "-options-" . $this->get_id()
|
39 |
], $this->plugin);
|
40 |
|
41 |
+
$form->setProvider(new \Wbcr_FactoryForms455_OptionsValueProvider($this->plugin));
|
42 |
|
43 |
$form_options = [];
|
44 |
|
83 |
return $form;
|
84 |
}
|
85 |
|
86 |
+
protected function render_form(\Wbcr_FactoryForms455_Form $form)
|
87 |
{
|
88 |
?>
|
89 |
+
<form method="post" id="w-factory-templates-110__setup-form-<?php echo $this->get_id() ?>" class="w-factory-templates-110__setup-form form-horizontal">
|
90 |
<?php $form->html(); ?>
|
91 |
+
<div class="w-factory-templates-110__form-buttons">
|
92 |
+
<!--<input type="submit" name="skip_button_<?php /*echo $this->get_id() */ ?>" class="button-primary button button-large w-factory-templates-110__skip-button" value="<?php /*_e('Skip', 'wbcr_factory_templates_110') */ ?>">-->
|
93 |
+
<input type="submit" name="continue_button_<?php echo $this->get_id() ?>" class="button-primary button button-large w-factory-templates-110__continue-button" value="<?php _e('Continue', 'wbcr_factory_templates_110') ?>">
|
94 |
</div>
|
95 |
</form>
|
96 |
<?php
|
97 |
}
|
98 |
|
99 |
+
protected function set_form_handler(\Wbcr_FactoryForms455_Form $form)
|
100 |
{
|
101 |
if( isset($_POST['continue_button_' . $this->get_id()]) ) {
|
102 |
$form->save();
|
123 |
$form = $this->instance_form($this->get_form_options());
|
124 |
?>
|
125 |
<div id="WBCR" class="wrap">
|
126 |
+
<div class="wbcr-factory-templates-110-impressive-page-template factory-bootstrap-459 factory-fontawesome-000">
|
127 |
+
<div class="w-factory-templates-110-setup__inner-wrap">
|
128 |
<h3><?php echo $this->get_title(); ?></h3>
|
129 |
<p style="text-align: left;"><?php echo $this->get_form_description(); ?></p>
|
130 |
</div>
|
libs/factory/templates/pages/setup-parts/class-step.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* Step
|
@@ -16,16 +16,16 @@ abstract class Step {
|
|
16 |
protected $next_id = false;
|
17 |
|
18 |
/**
|
19 |
-
* @var \WBCR\
|
20 |
*/
|
21 |
protected $page;
|
22 |
|
23 |
/**
|
24 |
-
* @var \
|
25 |
*/
|
26 |
protected $plugin;
|
27 |
|
28 |
-
public function __construct(\WBCR\
|
29 |
{
|
30 |
$this->page = $page;
|
31 |
$this->plugin = $page->plugin;
|
@@ -51,7 +51,7 @@ abstract class Step {
|
|
51 |
*
|
52 |
* @return void
|
53 |
* @since 1.0.0
|
54 |
-
* @see
|
55 |
*
|
56 |
*/
|
57 |
public function assets($scripts, $styles)
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Templates_110\Pages;
|
4 |
|
5 |
/**
|
6 |
* Step
|
16 |
protected $next_id = false;
|
17 |
|
18 |
/**
|
19 |
+
* @var \WBCR\Factory_Templates_110\Pages\Setup
|
20 |
*/
|
21 |
protected $page;
|
22 |
|
23 |
/**
|
24 |
+
* @var \Wbcr_Factory458_Plugin
|
25 |
*/
|
26 |
protected $plugin;
|
27 |
|
28 |
+
public function __construct(\WBCR\Factory_Templates_110\Pages\Setup $page)
|
29 |
{
|
30 |
$this->page = $page;
|
31 |
$this->plugin = $page->plugin;
|
51 |
*
|
52 |
* @return void
|
53 |
* @since 1.0.0
|
54 |
+
* @see FactoryPages457_AdminPage
|
55 |
*
|
56 |
*/
|
57 |
public function assets($scripts, $styles)
|
libs/factory/templates/pages/templates/impressive-lite/assets/css/impressive-lite.page.template.css
CHANGED
@@ -24,7 +24,7 @@
|
|
24 |
#WBCR .wdan-notices-compact-panel {
|
25 |
display: none !important;
|
26 |
}
|
27 |
-
#WBCR .wbcr-factory-templates-
|
28 |
position: relative;
|
29 |
background-color: #32373c;
|
30 |
/**
|
@@ -34,83 +34,83 @@
|
|
34 |
Widget in the sidebar of the plugin
|
35 |
*/
|
36 |
}
|
37 |
-
#WBCR .wbcr-factory-templates-
|
38 |
margin: 0 10px;
|
39 |
}
|
40 |
-
#WBCR .wbcr-factory-templates-
|
41 |
color: #9a9a9a;
|
42 |
}
|
43 |
-
#WBCR .wbcr-factory-templates-
|
44 |
color: #ffc107;
|
45 |
}
|
46 |
-
#WBCR .wbcr-factory-templates-
|
47 |
color: #ffeb3b;
|
48 |
}
|
49 |
-
#WBCR .wbcr-factory-templates-
|
50 |
padding: 0 20px;
|
51 |
}
|
52 |
-
#WBCR .wbcr-factory-templates-
|
53 |
font-weight: normal;
|
54 |
}
|
55 |
-
#WBCR .wbcr-factory-templates-
|
56 |
max-width: 300px;
|
57 |
}
|
58 |
-
#WBCR .wbcr-factory-templates-
|
59 |
text-align: right;
|
60 |
padding-right: 20px;
|
61 |
}
|
62 |
-
#WBCR .wbcr-factory-templates-
|
63 |
display: inline-block;
|
64 |
vertical-align: bottom;
|
65 |
}
|
66 |
-
#WBCR .wbcr-factory-templates-
|
67 |
-
#WBCR .wbcr-factory-templates-
|
68 |
outline: none;
|
69 |
}
|
70 |
-
#WBCR .wbcr-factory-templates-
|
71 |
padding: 20px 20px 40px;
|
72 |
}
|
73 |
-
#WBCR .wbcr-factory-templates-
|
24 |
#WBCR .wdan-notices-compact-panel {
|
25 |
display: none !important;
|
26 |
}
|
27 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template {
|
28 |
position: relative;
|
29 |
background-color: #32373c;
|
30 |
/**
|
34 |
Widget in the sidebar of the plugin
|
35 |
*/
|
36 |
}
|
37 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template .row {
|
38 |
margin: 0 10px;
|
39 |
}
|
40 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template .wbcr-factory-color-grey {
|
41 |
color: #9a9a9a;
|
42 |
}
|
43 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template .wbcr-factory-orange-color {
|
44 |
color: #ffc107;
|
45 |
}
|
46 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template .wbcr-factory-light-orange-color {
|
47 |
color: #ffeb3b;
|
48 |
}
|
49 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template .form-group {
|
50 |
padding: 0 20px;
|
51 |
}
|
52 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template .form-group label {
|
53 |
font-weight: normal;
|
54 |
}
|
55 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template .form-horizontal .control-label {
|
56 |
max-width: 300px;
|
57 |
}
|
58 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template .factory-control-buttons {
|
59 |
text-align: right;
|
60 |
padding-right: 20px;
|
61 |
}
|
62 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template .factory-from-control-list label span {
|
63 |
display: inline-block;
|
64 |
vertical-align: bottom;
|
65 |
}
|
66 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template .factory-from-control-list label span input[type="checkbox"],
|
67 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template .factory-from-control-list label span input[type="checkbox"]:focus {
|
68 |
outline: none;
|
69 |
}
|
70 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template .wbcr-factory-header {
|
71 |
padding: 20px 20px 40px;
|
72 |
}
|
73 |
+
#WBCR .wbcr-factory-templates-110-impressive-lite-page-template .wbcr-fa
|