Version Description
- Bug fix
Download this release
Release Info
Developer | studiopioneer |
Plugin | Instagram Slider Widget |
Version | 1.6.3 |
Comparing to | |
See all releases |
Code changes from version 1.5.0 to 1.6.3
- admin/assets/css/jr-insta-admin.css +70 -1
- admin/assets/css/license-manager.css +1 -1
- admin/assets/img/instagram_bg.png +0 -0
- admin/assets/img/loader.gif +0 -0
- admin/assets/img/slider icon.png +0 -0
- admin/assets/img/spinner.gif +0 -0
- admin/assets/img/wis.png +0 -0
- admin/assets/img/wis_icon.png +0 -0
- admin/assets/img/wis_in.png +0 -0
- admin/assets/js/jr-insta-admin.js +87 -10
- admin/assets/js/license-manager.js +9 -9
- admin/assets/js/tinymce_button.js +41 -0
- admin/class-wis-activation.php +2 -2
- admin/class-wis-page.php +2 -2
- {libs/factory/adverts/assets → admin}/index.php +0 -0
- admin/pages/about.php +3 -3
- admin/pages/license.php +8 -8
- admin/pages/settings.php +26 -59
- admin/pages/widgets.php +2 -2
- admin/views/tab-about.php +138 -20
- admin/views/tab-license.php +3 -3
- admin/views/tab-settings.php +86 -22
- admin/views/tab-widgets.php +9 -0
- assets/css/instag-slider.css +61 -3
- assets/css/wis-header.css +57 -0
- assets/in.png +0 -0
- assets/js/jr-insta-admin.js +1 -7
- html_templates/feed_header_template.php +36 -0
- includes/class-wis-plugin.php +58 -11
- includes/class-wis_instagram_slider.php +682 -376
- {libs/factory/adverts/assets/js → includes}/index.php +0 -0
- instaram_slider.php +18 -16
- languages/index.php +2 -0
- languages/instagram-slider-widget-en_US.mo +0 -0
- languages/instagram-slider-widget-en_US.po +628 -0
- languages/instagram-slider-widget-ru_RU.mo +0 -0
- languages/instagram-slider-widget-ru_RU.po +644 -0
- languages/instagram-slider-widget.pot +629 -0
- libs/factory/adverts/assets/js/script.js +0 -13
- libs/factory/adverts/boot.php +12 -12
- libs/factory/adverts/includes/class-adverts-base.php +0 -261
- libs/factory/adverts/includes/class-adverts-dashboard-widget.php +0 -107
- libs/factory/adverts/includes/class-adverts-rest-request.php +0 -180
- libs/factory/adverts/includes/class-base.php +10 -14
- libs/factory/adverts/includes/class-dashboard-widget.php +39 -13
- libs/factory/adverts/includes/class-rest-request.php +5 -5
- libs/factory/adverts/langs/{wbcr_factory_adverts_102-ru_RU.mo → wbcr_factory_adverts_104-ru_RU.mo} +0 -0
- libs/factory/adverts/langs/{wbcr_factory_adverts_102-ru_RU.po → wbcr_factory_adverts_104-ru_RU.po} +0 -0
- libs/factory/adverts/readme.txt +0 -98
- libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/bootstrap.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 +15 -15
- libs/factory/core/boot.php +27 -27
- 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 +2 -2
- libs/factory/core/includes/class-factory-migrations.php +15 -15
- libs/factory/core/includes/class-factory-notices.php +51 -41
- libs/factory/core/includes/class-factory-options.php +2 -2
- libs/factory/core/includes/class-factory-plugin-abstract.php +103 -89
- libs/factory/core/includes/class-factory-plugin-base.php +84 -30
- libs/factory/core/includes/class-factory-requests.php +1 -1
- libs/factory/core/includes/class-factory-requirements.php +15 -14
- 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 +40 -41
- libs/factory/core/includes/updates/class-factory-premium-upgrader.php +21 -15
- libs/factory/core/includes/updates/class-factory-upgrader.php +9 -9
- 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_420-ru_RU.mo → wbcr_factory_422-ru_RU.mo} +0 -0
- libs/factory/core/langs/{wbcr_factory_420-ru_RU.po → wbcr_factory_422-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_418-ru_RU.mo → wbcr_factory_forms_420-ru_RU.mo} +0 -0
- libs/factory/forms/langs/{wbcr_factory_forms_418-ru_RU.po → wbcr_factory_forms_420-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 +61 -34
- libs/factory/freemius/includes/updates/class-freemius-repository.php +7 -7
- libs/factory/pages/boot.php +10 -10
- libs/factory/pages/includes/admin-page.class.php +7 -8
- libs/factory/pages/includes/page.class.php +7 -7
- libs/factory/pages/langs/{wbcr_factory_pages_420-fr_FR.mo → wbcr_factory_pages_422-fr_FR.mo} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_420-fr_FR.po → wbcr_factory_pages_422-fr_FR.po} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_420-ru_RU.mo → wbcr_factory_pages_422-ru_RU.mo} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_420-ru_RU.po → wbcr_factory_pages_422-ru_RU.po} +0 -0
- libs/factory/pages/pages.php +11 -11
- libs/factory/pages/templates/assets/css/impressive.page.template.css +116 -116
- libs/factory/pages/templates/impressive-page.class.php +29 -29
admin/assets/css/jr-insta-admin.css
CHANGED
@@ -28,4 +28,73 @@
|
|
28 |
.jr-container .slider.round { border-radius: 34px; }
|
29 |
.jr-container .slider.round:before { border-radius: 50%; }
|
30 |
.jr-container .donate-buttons { text-align: center }
|
31 |
-
.jr-container .donate-button-link { cursor: pointer }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
.jr-container .slider.round { border-radius: 34px; }
|
29 |
.jr-container .slider.round:before { border-radius: 50%; }
|
30 |
.jr-container .donate-buttons { text-align: center }
|
31 |
+
.jr-container .donate-button-link { cursor: pointer }
|
32 |
+
|
33 |
+
.wis-btn-instagram-account
|
34 |
+
{
|
35 |
+
padding: 0 24px 0 120px;
|
36 |
+
height: 44px;
|
37 |
+
line-height: 44px;
|
38 |
+
text-transform: uppercase;
|
39 |
+
color: rgba(255,255,255,0.8)!important;
|
40 |
+
text-decoration: none;
|
41 |
+
border-radius: 5px;
|
42 |
+
transition: all .5s ease-in-out;
|
43 |
+
font-weight: 600;
|
44 |
+
display: inline-block;
|
45 |
+
background: #408bd1 url(../img/instagram_bg.png) no-repeat 16px 13.5px !important;
|
46 |
+
background-size: auto 20px !important;
|
47 |
+
}
|
48 |
+
.btn-instagram-account-disabled
|
49 |
+
{
|
50 |
+
opacity: 0.5;
|
51 |
+
}
|
52 |
+
|
53 |
+
.instagram-account-pro
|
54 |
+
{
|
55 |
+
padding: 5px;
|
56 |
+
}
|
57 |
+
|
58 |
+
.wis-spinner
|
59 |
+
{
|
60 |
+
background: url(../img/spinner.gif) no-repeat;
|
61 |
+
background-size: 20px 20px;
|
62 |
+
display: inline-block;
|
63 |
+
visibility: hidden;
|
64 |
+
float: right;
|
65 |
+
vertical-align: middle;
|
66 |
+
opacity: 0.7;
|
67 |
+
filter: alpha(opacity=70);
|
68 |
+
width: 20px;
|
69 |
+
height: 20px;
|
70 |
+
margin: 4px 10px 0;
|
71 |
+
}
|
72 |
+
.wis-table > tbody > tr > td
|
73 |
+
{
|
74 |
+
background-color: white;
|
75 |
+
}
|
76 |
+
.wis-table > thead > tr > th
|
77 |
+
{
|
78 |
+
font-weight: bold;
|
79 |
+
background-color: #e8e8e8;
|
80 |
+
}
|
81 |
+
.wis-text-token
|
82 |
+
{
|
83 |
+
background: transparent !important;
|
84 |
+
border: 0 !important;
|
85 |
+
box-shadow: inset 0 0 0 rgba(0, 0, 0, 0.00) !important;
|
86 |
+
}
|
87 |
+
.wis-help-text
|
88 |
+
{
|
89 |
+
font-size: 16px;
|
90 |
+
margin: 10px 0px 0px 10px;
|
91 |
+
}
|
92 |
+
.wis-help-text p
|
93 |
+
{
|
94 |
+
font-size: 14px;
|
95 |
+
}
|
96 |
+
|
97 |
+
i.wis-shortcode-icon
|
98 |
+
{
|
99 |
+
background: url(../img/wis_icon.png) center no-repeat;
|
100 |
+
}
|
admin/assets/css/license-manager.css
CHANGED
@@ -653,7 +653,7 @@
|
|
653 |
border-bottom: 3px solid #ccc;
|
654 |
}
|
655 |
|
656 |
-
.
|
657 |
float: right;
|
658 |
width: 32px;
|
659 |
}
|
653 |
border-bottom: 3px solid #ccc;
|
654 |
}
|
655 |
|
656 |
+
.wis-loader {
|
657 |
float: right;
|
658 |
width: 32px;
|
659 |
}
|
admin/assets/img/instagram_bg.png
ADDED
Binary file
|
admin/assets/img/loader.gif
ADDED
Binary file
|
admin/assets/img/slider icon.png
ADDED
Binary file
|
admin/assets/img/spinner.gif
ADDED
Binary file
|
admin/assets/img/wis.png
CHANGED
Binary file
|
admin/assets/img/wis_icon.png
ADDED
Binary file
|
admin/assets/img/wis_in.png
ADDED
Binary file
|
admin/assets/js/jr-insta-admin.js
CHANGED
@@ -1,13 +1,7 @@
|
|
1 |
(function($) {
|
2 |
|
3 |
$(document).ready(function($){
|
4 |
-
|
5 |
-
$('.donate-button-link').on('click', function (e) {
|
6 |
-
e.preventDefault();
|
7 |
-
//$(this).slideUp(100);
|
8 |
-
$('.donate-bitcoin-qr-address').slideToggle();
|
9 |
-
});
|
10 |
-
|
11 |
// Hide Custom Url if image link is not set to custom url
|
12 |
$('body').on('change', '.jr-container select[id$="images_link"]', function(e){
|
13 |
var images_link = $(this);
|
@@ -28,26 +22,68 @@
|
|
28 |
template.closest('.jr-container').find('.jr-slider-options').animate({opacity: 'show' , height: 'show'}, 200);
|
29 |
template.closest('.jr-container').find('input[id$="columns"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
|
30 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
});
|
32 |
|
33 |
// Modfiy options when search for is changed
|
34 |
$('body').on('change', '.jr-container input:radio[id$="search_for"]', function(e){
|
35 |
var search_for = $(this);
|
36 |
-
if ( search_for.val()
|
37 |
search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
|
38 |
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'hide' , height: 'hide'}, 200);
|
39 |
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'hide' , height: 'hide'}, 200);
|
40 |
search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
|
41 |
search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'hide' , height: 'hide'}, 200);
|
42 |
search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
|
|
|
|
|
43 |
|
44 |
-
|
|
|
45 |
search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
|
46 |
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'show' , height: 'show'}, 200);
|
47 |
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'show' , height: 'show'}, 200);
|
48 |
search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
|
49 |
search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'show' , height: 'show'}, 200);
|
50 |
search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
|
52 |
}
|
53 |
});
|
@@ -108,7 +144,48 @@
|
|
108 |
}
|
109 |
});
|
110 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
}); // Document Ready
|
113 |
|
114 |
-
})(jQuery);
|
1 |
(function($) {
|
2 |
|
3 |
$(document).ready(function($){
|
4 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
// Hide Custom Url if image link is not set to custom url
|
6 |
$('body').on('change', '.jr-container select[id$="images_link"]', function(e){
|
7 |
var images_link = $(this);
|
22 |
template.closest('.jr-container').find('.jr-slider-options').animate({opacity: 'show' , height: 'show'}, 200);
|
23 |
template.closest('.jr-container').find('input[id$="columns"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
|
24 |
}
|
25 |
+
if( template.val() != 'masonry') {
|
26 |
+
template.closest('.jr-container').find('.masonry_settings').animate({opacity: 'hide' , height: 'hide'}, 200);
|
27 |
+
template.closest('.jr-container').find('.masonry_notice').animate({opacity: 'hide' , height: 'hide'}, 200);
|
28 |
+
} else {
|
29 |
+
template.closest('.jr-container').find('.masonry_settings').animate({opacity: 'show' , height: 'show'}, 200);
|
30 |
+
template.closest('.jr-container').find('.masonry_notice').animate({opacity: 'show' , height: 'show'}, 200);
|
31 |
+
}
|
32 |
+
if( template.val() != 'slick_slider') {
|
33 |
+
template.closest('.jr-container').find('.slick_settings').animate({opacity: 'hide' , height: 'hide'}, 200);
|
34 |
+
} else {
|
35 |
+
template.closest('.jr-container').find('.slick_settings').animate({opacity: 'show' , height: 'show'}, 200);
|
36 |
+
}
|
37 |
+
if( template.val() != 'highlight') {
|
38 |
+
template.closest('.jr-container').find('.highlight_settings').animate({opacity: 'hide' , height: 'hide'}, 200);
|
39 |
+
} else {
|
40 |
+
template.closest('.jr-container').find('.highlight_settings').animate({opacity: 'show' , height: 'show'}, 200);
|
41 |
+
}
|
42 |
+
if( template.val() != 'slider' && template.val() != 'slider-overlay') {
|
43 |
+
template.closest('.jr-container').find('.slider_normal_settings').animate({opacity: 'hide' , height: 'hide'}, 200);
|
44 |
+
} else {
|
45 |
+
template.closest('.jr-container').find('.slider_normal_settings').animate({opacity: 'show' , height: 'show'}, 200);
|
46 |
+
}
|
47 |
+
if( template.val() == 'highlight' || template.val() == 'slick_slider' || template.val() == 'thumbs' || template.val() == 'thumbs-no-border'){
|
48 |
+
template.closest('.jr-container').find('.words_in_caption').animate({opacity: 'hide' , height: 'hide'}, 200);
|
49 |
+
} else {
|
50 |
+
template.closest('.jr-container').find('.words_in_caption').animate({opacity: 'show' , height: 'show'}, 200);
|
51 |
+
}
|
52 |
});
|
53 |
|
54 |
// Modfiy options when search for is changed
|
55 |
$('body').on('change', '.jr-container input:radio[id$="search_for"]', function(e){
|
56 |
var search_for = $(this);
|
57 |
+
if ( search_for.val() === 'hashtag' ) {
|
58 |
search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
|
59 |
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'hide' , height: 'hide'}, 200);
|
60 |
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'hide' , height: 'hide'}, 200);
|
61 |
search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
|
62 |
search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'hide' , height: 'hide'}, 200);
|
63 |
search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
|
64 |
+
search_for.closest('.jr-container').find('input[id$="show_feed_header"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
|
65 |
+
$('#img_to_show').animate({opacity: 'hide' , height: 'hide'}, 200);
|
66 |
|
67 |
+
|
68 |
+
} else if(search_for.val() === 'username') {
|
69 |
search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
|
70 |
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'show' , height: 'show'}, 200);
|
71 |
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'show' , height: 'show'}, 200);
|
72 |
search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
|
73 |
search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'show' , height: 'show'}, 200);
|
74 |
search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
|
75 |
+
search_for.closest('.jr-container').find('input[id$="show_feed_header"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
|
76 |
+
$('#img_to_show').animate({opacity: 'hide' , height: 'hide'}, 200);
|
77 |
+
|
78 |
+
} else if(search_for.val() === 'account') {
|
79 |
+
search_for.closest('.jr-container').find('[id$="attachment"]:checkbox').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
|
80 |
+
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="user_url"]').animate({opacity: 'hide' , height: 'hide'}, 200);
|
81 |
+
search_for.closest('.jr-container').find('select[id$="images_link"] option[value="attachment"]').animate({opacity: 'hide' , height: 'hide'}, 200);
|
82 |
+
search_for.closest('.jr-container').find('select[id$="images_link"]').val('image_link');
|
83 |
+
search_for.closest('.jr-container').find('select[id$="description"] option[value="username"]').animate({opacity: 'hide' , height: 'hide'}, 200);
|
84 |
+
search_for.closest('.jr-container').find('input[id$="blocked_users"]').closest('p').animate({opacity: 'hide' , height: 'hide'}, 200);
|
85 |
+
search_for.closest('.jr-container').find('input[id$="show_feed_header"]').closest('p').animate({opacity: 'show' , height: 'show'}, 200);
|
86 |
+
$('#img_to_show').animate({opacity: 'show' , height: 'show'}, 200);
|
87 |
|
88 |
}
|
89 |
});
|
144 |
}
|
145 |
});
|
146 |
});
|
147 |
+
// Delete account with ajax
|
148 |
+
$('.wis-delete-account').on('click', function (e) {
|
149 |
+
e.preventDefault();
|
150 |
+
|
151 |
+
var c = confirm(wis.remove_account);
|
152 |
+
|
153 |
+
if (!c) {
|
154 |
+
return false;
|
155 |
+
}
|
156 |
|
157 |
+
var $item = $(this),
|
158 |
+
$tr = $item.closest('tr'),
|
159 |
+
$spinner = $('#wis-delete-spinner');
|
160 |
+
|
161 |
+
$.ajax({
|
162 |
+
url: ajaxurl,
|
163 |
+
type: 'post',
|
164 |
+
data: {
|
165 |
+
action: 'wis_delete_account',
|
166 |
+
item_id: $item.data('item_id'),
|
167 |
+
_ajax_nonce: wis.nonce
|
168 |
+
},
|
169 |
+
beforeSend: function () {
|
170 |
+
$spinner.addClass('is-active');
|
171 |
+
},
|
172 |
+
success: function (response) {
|
173 |
+
if (response.success) {
|
174 |
+
$tr.fadeOut();
|
175 |
+
window.location.reload();
|
176 |
+
} else {
|
177 |
+
alert(response.data);
|
178 |
+
}
|
179 |
+
},
|
180 |
+
complete: function () {
|
181 |
+
$spinner.removeClass('is-active');
|
182 |
+
},
|
183 |
+
error: function (jqXHR, textStatus) {
|
184 |
+
console.log(textStatus);
|
185 |
+
}
|
186 |
+
});
|
187 |
+
|
188 |
+
});
|
189 |
}); // Document Ready
|
190 |
|
191 |
+
})(jQuery);
|
admin/assets/js/license-manager.js
CHANGED
@@ -12,17 +12,17 @@
|
|
12 |
|
13 |
jQuery(function ($) {
|
14 |
|
15 |
-
$(document).on('click', '.
|
16 |
|
17 |
-
$('.
|
18 |
|
19 |
-
var wrapper = $('#
|
20 |
loader = wrapper.data('loader');
|
21 |
|
22 |
-
$(this).after('<img class="
|
23 |
|
24 |
var data = {
|
25 |
-
action: '
|
26 |
_wpnonce: $('#_wpnonce').val(),
|
27 |
license_action: $(this).data('action'),
|
28 |
licensekey: ''
|
@@ -41,8 +41,8 @@ jQuery(function ($) {
|
|
41 |
|
42 |
if (!response || !response.success) {
|
43 |
|
44 |
-
$('.
|
45 |
-
$('.
|
46 |
|
47 |
if (response.data) {
|
48 |
console.log(response.data.error_message);
|
@@ -62,8 +62,8 @@ jQuery(function ($) {
|
|
62 |
},
|
63 |
error: function (xhr, ajaxOptions, thrownError) {
|
64 |
|
65 |
-
$('.
|
66 |
-
$('.
|
67 |
|
68 |
console.log(xhr.status, xhr.responseText, thrownError);
|
69 |
|
12 |
|
13 |
jQuery(function ($) {
|
14 |
|
15 |
+
$(document).on('click', '.wis-control-btn', function () {
|
16 |
|
17 |
+
$('.wis-control-btn').hide();
|
18 |
|
19 |
+
var wrapper = $('#wis-license-wrapper'),
|
20 |
loader = wrapper.data('loader');
|
21 |
|
22 |
+
$(this).after('<img class="wis-loader" src="' + loader + '">');
|
23 |
|
24 |
var data = {
|
25 |
+
action: 'wis_check_license',
|
26 |
_wpnonce: $('#_wpnonce').val(),
|
27 |
license_action: $(this).data('action'),
|
28 |
licensekey: ''
|
41 |
|
42 |
if (!response || !response.success) {
|
43 |
|
44 |
+
$('.wis-control-btn').show();
|
45 |
+
$('.wis-loader').remove();
|
46 |
|
47 |
if (response.data) {
|
48 |
console.log(response.data.error_message);
|
62 |
},
|
63 |
error: function (xhr, ajaxOptions, thrownError) {
|
64 |
|
65 |
+
$('.wis-control-btn').show();
|
66 |
+
$('.wis-loader').remove();
|
67 |
|
68 |
console.log(xhr.status, xhr.responseText, thrownError);
|
69 |
|
admin/assets/js/tinymce_button.js
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
(function($) {
|
2 |
+
$(document).on('tinymce-editor-setup', function(event, editor) {
|
3 |
+
|
4 |
+
if( void 0 === wis_shortcodes ) {
|
5 |
+
console.log('Unknown error (wis).');
|
6 |
+
return;
|
7 |
+
}
|
8 |
+
|
9 |
+
if( $.isEmptyObject(wis_shortcodes) ) {
|
10 |
+
return;
|
11 |
+
}
|
12 |
+
|
13 |
+
editor.settings.toolbar1 += ',wis_insert_button';
|
14 |
+
|
15 |
+
var menu = [];
|
16 |
+
|
17 |
+
$.each(wis_shortcodes, function(index, item) {
|
18 |
+
menu.push({
|
19 |
+
text: item.title,
|
20 |
+
value: item.id,
|
21 |
+
onclick: function() {
|
22 |
+
var selected_content = editor.selection.getContent();
|
23 |
+
|
24 |
+
if( '' === selected_content ) {
|
25 |
+
editor.selection.setContent('[jr_instagram id="' + item.id + '"]');
|
26 |
+
} else {
|
27 |
+
editor.selection.setContent('[jr_instagram id="' + item.id + '"]');
|
28 |
+
}
|
29 |
+
}
|
30 |
+
});
|
31 |
+
});
|
32 |
+
|
33 |
+
editor.addButton('wis_insert_button', {
|
34 |
+
title: 'WIS',
|
35 |
+
type: 'menubutton',
|
36 |
+
icon: 'icon wis-shortcode-icon',
|
37 |
+
menu: menu
|
38 |
+
});
|
39 |
+
|
40 |
+
});
|
41 |
+
})(jQuery);
|
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_Factory422_Activator
|
8 |
*
|
9 |
* @version 1.0.1
|
10 |
*/
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
class WIS_Activation extends Wbcr_Factory422_Activator {
|
18 |
|
19 |
/**
|
20 |
* Method is executed during the activation of the plugin.
|
admin/class-wis-page.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.0
|
10 |
*/
|
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
class WIS_Page extends
|
18 |
|
19 |
/**
|
20 |
* Name of the template to get content of. It will be based on plugins /admin/views/ dir.
|
4 |
*
|
5 |
* @author Webcraftic <wordpress.webraftic@gmail.com>
|
6 |
* @copyright (c) 02.12.2018, Webcraftic
|
7 |
+
* @see Wbcr_FactoryPages422_AdminPage
|
8 |
*
|
9 |
* @version 1.0.0
|
10 |
*/
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
class WIS_Page extends Wbcr_FactoryPages422_AdminPage {
|
18 |
|
19 |
/**
|
20 |
* Name of the template to get content of. It will be based on plugins /admin/views/ dir.
|
{libs/factory/adverts/assets → admin}/index.php
RENAMED
File without changes
|
admin/pages/about.php
CHANGED
@@ -35,11 +35,11 @@ class WIS_AboutPage extends WIS_Page {
|
|
35 |
public $page_menu_dashicon;
|
36 |
|
37 |
/**
|
38 |
-
* @param
|
39 |
*/
|
40 |
public function __construct( $plugin ) {
|
41 |
-
$this->id =
|
42 |
-
$this->menu_target=
|
43 |
$this->page_title = __( 'About Social Slider Widget', 'instagram-slider-widget' );
|
44 |
$this->menu_title = __( 'About', 'instagram-slider-widget' );
|
45 |
$this->template_name = "about";
|
35 |
public $page_menu_dashicon;
|
36 |
|
37 |
/**
|
38 |
+
* @param WIS_Plugin $plugin
|
39 |
*/
|
40 |
public function __construct( $plugin ) {
|
41 |
+
$this->id = "about";
|
42 |
+
$this->menu_target= "widgets-".$plugin->getPluginName();
|
43 |
$this->page_title = __( 'About Social Slider Widget', 'instagram-slider-widget' );
|
44 |
$this->menu_title = __( 'About', 'instagram-slider-widget' );
|
45 |
$this->template_name = "about";
|
admin/pages/license.php
CHANGED
@@ -52,7 +52,7 @@ class WIS_LicensePage extends WIS_Page {
|
|
52 |
|
53 |
/**
|
54 |
* @since 2.0.7
|
55 |
-
* @var \WBCR\
|
56 |
*/
|
57 |
protected $premium;
|
58 |
|
@@ -70,7 +70,7 @@ class WIS_LicensePage extends WIS_Page {
|
|
70 |
|
71 |
/**
|
72 |
* @since 2.0.7
|
73 |
-
* @var \WBCR\
|
74 |
*/
|
75 |
protected $premium_license;
|
76 |
|
@@ -79,18 +79,18 @@ class WIS_LicensePage extends WIS_Page {
|
|
79 |
|
80 |
/**
|
81 |
* {@inheritdoc}
|
82 |
-
* @param
|
83 |
*/
|
84 |
-
public function __construct (
|
85 |
$this->plugin = $plugin;
|
86 |
|
87 |
parent::__construct( $plugin );
|
88 |
|
89 |
-
$this->id =
|
90 |
-
$this->menu_title = __( 'License', 'instagram-slider-widget' );
|
91 |
-
$this->page_title = __( 'License of
|
92 |
$this->template_name = "license";
|
93 |
-
$this->menu_target=
|
94 |
$this->capabilitiy = "manage_options";
|
95 |
|
96 |
$this->premium = WIS_Plugin::app()->premium;
|
52 |
|
53 |
/**
|
54 |
* @since 2.0.7
|
55 |
+
* @var \WBCR\Factory_422\Premium\Provider
|
56 |
*/
|
57 |
protected $premium;
|
58 |
|
70 |
|
71 |
/**
|
72 |
* @since 2.0.7
|
73 |
+
* @var \WBCR\Factory_422\Premium\Interfaces\License
|
74 |
*/
|
75 |
protected $premium_license;
|
76 |
|
79 |
|
80 |
/**
|
81 |
* {@inheritdoc}
|
82 |
+
* @param WIS_Plugin $plugin
|
83 |
*/
|
84 |
+
public function __construct ( $plugin ) {
|
85 |
$this->plugin = $plugin;
|
86 |
|
87 |
parent::__construct( $plugin );
|
88 |
|
89 |
+
$this->id = 'license';
|
90 |
+
$this->menu_title = '<span style="color:#f18500">'.__( 'License', 'instagram-slider-widget' ).'</span>';
|
91 |
+
$this->page_title = __( 'License of Social Slider Widget', 'instagram-slider-widget' );
|
92 |
$this->template_name = "license";
|
93 |
+
$this->menu_target= "widgets-".$plugin->getPluginName();
|
94 |
$this->capabilitiy = "manage_options";
|
95 |
|
96 |
$this->premium = WIS_Plugin::app()->premium;
|
admin/pages/settings.php
CHANGED
@@ -27,7 +27,7 @@ class WIS_SettingsPage extends WIS_Page {
|
|
27 |
* Mainly used to navigate between pages.
|
28 |
*
|
29 |
* @since 1.0.0
|
30 |
-
* @see
|
31 |
*
|
32 |
* @var string
|
33 |
*/
|
@@ -103,10 +103,10 @@ class WIS_SettingsPage extends WIS_Page {
|
|
103 |
* @param WIS_Plugin $plugin
|
104 |
*/
|
105 |
public function __construct( $plugin ) {
|
106 |
-
$this->id =
|
107 |
$this->page_title = __( 'Settings of Social Slider Widget', 'instagram-slider-widget' );
|
108 |
$this->menu_title = __( 'Settings', 'instagram-slider-widget' );
|
109 |
-
$this->menu_target=
|
110 |
$this->menu_icon = '~/admin/assets/img/wis.png';
|
111 |
$this->capabilitiy = "manage_options";
|
112 |
$this->template_name = "settings";
|
@@ -133,63 +133,30 @@ class WIS_SettingsPage extends WIS_Page {
|
|
133 |
], 'bootstrap' );
|
134 |
}
|
135 |
|
136 |
-
/**
|
137 |
-
* Returns options for the Basic Settings screen.
|
138 |
-
*
|
139 |
-
* @since 1.0.0
|
140 |
-
* @return array
|
141 |
-
*/
|
142 |
-
public function getOptions() {
|
143 |
-
|
144 |
-
$options = [];
|
145 |
-
|
146 |
-
$options[] = [
|
147 |
-
'type' => 'html',
|
148 |
-
'html' => '<h3 style="margin-left:0">General</h3>'
|
149 |
-
];
|
150 |
-
|
151 |
-
$options[] = [
|
152 |
-
'type' => 'separator'
|
153 |
-
];
|
154 |
-
|
155 |
-
/*
|
156 |
-
$options[] = [
|
157 |
-
'type' => 'checkbox',
|
158 |
-
'way' => 'buttons',
|
159 |
-
'name' => 'auto-generation',
|
160 |
-
'title' => __( 'Enable automatic post thumbnail generation', 'instagram-slider-widget' ),
|
161 |
-
'default' => false,
|
162 |
-
'hint' => __( 'Enable automatic post thumbnail generation', 'instagram-slider-widget' )
|
163 |
-
];
|
164 |
-
*/
|
165 |
-
|
166 |
-
return $options;
|
167 |
-
}
|
168 |
-
|
169 |
public function indexAction() {
|
170 |
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
parent::indexAction();
|
194 |
}
|
195 |
-
}
|
27 |
* Mainly used to navigate between pages.
|
28 |
*
|
29 |
* @since 1.0.0
|
30 |
+
* @see FactoryPages422_AdminPage
|
31 |
*
|
32 |
* @var string
|
33 |
*/
|
103 |
* @param WIS_Plugin $plugin
|
104 |
*/
|
105 |
public function __construct( $plugin ) {
|
106 |
+
$this->id = "settings";
|
107 |
$this->page_title = __( 'Settings of Social Slider Widget', 'instagram-slider-widget' );
|
108 |
$this->menu_title = __( 'Settings', 'instagram-slider-widget' );
|
109 |
+
$this->menu_target= "widgets-".$plugin->getPluginName();
|
110 |
$this->menu_icon = '~/admin/assets/img/wis.png';
|
111 |
$this->capabilitiy = "manage_options";
|
112 |
$this->template_name = "settings";
|
133 |
], 'bootstrap' );
|
134 |
}
|
135 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
136 |
public function indexAction() {
|
137 |
|
138 |
+
?>
|
139 |
+
<script>
|
140 |
+
var hash = document.location.hash;
|
141 |
+
var token = hash.split('=')[1];
|
142 |
+
if("string" == typeof token)
|
143 |
+
{
|
144 |
+
jQuery('#wis-spinner').addClass('is-active');
|
145 |
+
jQuery('#wis-spinner').css('visibility','visible');
|
146 |
+
|
147 |
+
jQuery.post ( ajaxurl, {
|
148 |
+
action: 'add_account_by_token',
|
149 |
+
token: token,
|
150 |
+
_ajax_nonce: '<?php echo wp_create_nonce("addAccountByToken"); ?>',
|
151 |
+
}).done( function( html ) {
|
152 |
+
document.location.hash = "";
|
153 |
+
window.location.reload();
|
154 |
+
});
|
155 |
+
// $(document).ready(function(){
|
156 |
+
// });
|
157 |
+
}
|
158 |
+
</script>
|
159 |
+
<?php
|
160 |
parent::indexAction();
|
161 |
}
|
162 |
+
}
|
admin/pages/widgets.php
CHANGED
@@ -27,7 +27,7 @@ class WIS_WidgetsPage extends WIS_Page {
|
|
27 |
* Mainly used to navigate between pages.
|
28 |
*
|
29 |
* @since 1.0.0
|
30 |
-
* @see
|
31 |
*
|
32 |
* @var string
|
33 |
*/
|
@@ -103,7 +103,7 @@ class WIS_WidgetsPage extends WIS_Page {
|
|
103 |
* @param WIS_Plugin $plugin
|
104 |
*/
|
105 |
public function __construct( $plugin ) {
|
106 |
-
$this->id =
|
107 |
$this->page_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
|
108 |
$this->menu_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
|
109 |
$this->menu_sub_title = __( 'Widgets', 'instagram-slider-widget' );;
|
27 |
* Mainly used to navigate between pages.
|
28 |
*
|
29 |
* @since 1.0.0
|
30 |
+
* @see FactoryPages422_AdminPage
|
31 |
*
|
32 |
* @var string
|
33 |
*/
|
103 |
* @param WIS_Plugin $plugin
|
104 |
*/
|
105 |
public function __construct( $plugin ) {
|
106 |
+
$this->id = "widgets";
|
107 |
$this->page_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
|
108 |
$this->menu_title = __( 'Social Slider Widgets', 'instagram-slider-widget' );
|
109 |
$this->menu_sub_title = __( 'Widgets', 'instagram-slider-widget' );;
|
admin/views/tab-about.php
CHANGED
@@ -1,15 +1,54 @@
|
|
1 |
<style>
|
2 |
-
|
3 |
.wis-section-wrapper {
|
4 |
-
width:
|
5 |
margin-top: 10px;
|
|
|
6 |
}
|
7 |
|
8 |
.wis-section {
|
9 |
-
padding:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
}
|
11 |
|
12 |
-
.wis-section
|
13 |
display: -webkit-box;
|
14 |
display: -webkit-flex;
|
15 |
display: -ms-flexbox;
|
@@ -64,41 +103,120 @@
|
|
64 |
.wis-section-changelog ul {
|
65 |
list-style: inherit;
|
66 |
margin-left: 40px;
|
|
|
67 |
}
|
68 |
|
69 |
#wpfooter {
|
70 |
position: relative !important;
|
71 |
}
|
|
|
|
|
|
|
|
|
72 |
|
73 |
|
74 |
</style>
|
75 |
|
76 |
<div class="wis-section-wrapper">
|
77 |
-
<section class="wis-section
|
|
|
|
|
|
|
|
|
78 |
<div class="container">
|
79 |
-
|
80 |
<div>
|
81 |
-
<h2><?php
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
|
|
|
|
91 |
</div>
|
92 |
</div>
|
93 |
-
|
94 |
</section>
|
95 |
-
|
|
|
|
|
96 |
<section class="wis-section wis-section-changelog">
|
97 |
<div class="container">
|
98 |
<div>
|
99 |
-
<
|
100 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
</div>
|
102 |
</div>
|
103 |
</section>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
</div>
|
1 |
<style>
|
|
|
2 |
.wis-section-wrapper {
|
3 |
+
width: auto;
|
4 |
margin-top: 10px;
|
5 |
+
margin-right: 15px;
|
6 |
}
|
7 |
|
8 |
.wis-section {
|
9 |
+
padding: 20px 29px 0px 29px;
|
10 |
+
}
|
11 |
+
|
12 |
+
.container
|
13 |
+
{
|
14 |
+
width: 100%;
|
15 |
+
}
|
16 |
+
.wis-section-thin
|
17 |
+
{
|
18 |
+
padding: 5px 0px 5px 0px;
|
19 |
+
}
|
20 |
+
.wis-section-thin .subheader
|
21 |
+
{
|
22 |
+
font-style: italic;
|
23 |
+
}
|
24 |
+
.wis-section-wrapper h1
|
25 |
+
{
|
26 |
+
text-transform: uppercase;
|
27 |
+
color: whitesmoke;
|
28 |
+
}
|
29 |
+
.wis-section-wrapper h2
|
30 |
+
{
|
31 |
+
text-transform: uppercase;
|
32 |
+
color: #e53030;
|
33 |
+
}
|
34 |
+
|
35 |
+
.wis-section img
|
36 |
+
{
|
37 |
+
border-radius: 10px;
|
38 |
+
margin: 10px 0px 0px 10px;
|
39 |
+
}
|
40 |
+
.wis-section-img
|
41 |
+
{
|
42 |
+
text-align: center;
|
43 |
+
}
|
44 |
+
|
45 |
+
.black-background
|
46 |
+
{
|
47 |
+
background-color: rgba(0,0,0,0.8);
|
48 |
+
color: whitesmoke;
|
49 |
}
|
50 |
|
51 |
+
.wis-section {
|
52 |
display: -webkit-box;
|
53 |
display: -webkit-flex;
|
54 |
display: -ms-flexbox;
|
103 |
.wis-section-changelog ul {
|
104 |
list-style: inherit;
|
105 |
margin-left: 40px;
|
106 |
+
width: 100%;
|
107 |
}
|
108 |
|
109 |
#wpfooter {
|
110 |
position: relative !important;
|
111 |
}
|
112 |
+
.center-section
|
113 |
+
{
|
114 |
+
text-align: center;
|
115 |
+
}
|
116 |
|
117 |
|
118 |
</style>
|
119 |
|
120 |
<div class="wis-section-wrapper">
|
121 |
+
<section class="wis-section-thin center-section black-background">
|
122 |
+
<h1><?php echo __( 'Social Slider Widget', 'instagram-slider-widget' ); ?></h1>
|
123 |
+
<p class="subheader"><?php echo __( 'Display Instagram feeds in widgets, posts, pages, or anywhere else using shortcodes.', 'instagram-slider-widget' ); ?></p>
|
124 |
+
</section>
|
125 |
+
<section class="wis-section wis-section-changelog">
|
126 |
<div class="container">
|
|
|
127 |
<div>
|
128 |
+
<h2><?php echo __( 'FEATURES', 'instagram-slider-widget' ); ?></h2>
|
129 |
+
<ul>
|
130 |
+
<li>Super easy to set up. Just create a widget with the necessary settings and add it anywhere on your website using shortcodes.</li>
|
131 |
+
<li>Show Instagram feeds on your website without authorization. Just enter a username and see the result (make sure to check the Instagram limitations on showing feeds without authorization).</li>
|
132 |
+
<li>Show Instagram feeds on your website without authorization using hashtags (make sure to check the Instagram limitations on showing feeds without authorization).</li>
|
133 |
+
<li>Authorize several Instagram accounts and show multiple feeds simultaneously with no limitations.</li>
|
134 |
+
<li>Fully responsive for mobile devices. Great view on any screen size and width.</li>
|
135 |
+
<li>Flexible layout settings. Customize the size, the number of images and columns, image spacing and much more!</li>
|
136 |
+
<li>Show thumbnails, medium or full-size images from your Instagram feed</li>
|
137 |
+
<li>Customize the display order by date, popularity or random.</li>
|
138 |
+
<li>Show or hide the account title.</li>
|
139 |
+
</ul>
|
140 |
</div>
|
141 |
</div>
|
|
|
142 |
</section>
|
143 |
+
<section class="wis-section-thin center-section">
|
144 |
+
<iframe width="720" height="405" src="https://www.youtube.com/embed/7EQirSL0xm4" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
145 |
+
</section>
|
146 |
<section class="wis-section wis-section-changelog">
|
147 |
<div class="container">
|
148 |
<div>
|
149 |
+
<h2><?php echo __( 'BENEFITS', 'instagram-slider-widget' ); ?></h2>
|
150 |
+
<ul>
|
151 |
+
<li>Increase your visitors’ engagement. Get more followers on your Instagram account.</li>
|
152 |
+
<li>Time-saving. You no longer need to post fresh images and entries on the website. Just upload them on Instagram, and your website visitors will know about it instantly.</li>
|
153 |
+
<li>A new way of posting news. Flexible settings for widget display templates give your content a seamless and attractive view on any website design.</li>
|
154 |
+
<li>Keep up your website. Post news on Instagram more often, and Social Slider Widget will take care of the rest.</li>
|
155 |
+
<li>Intuitive settings. It will only take 10 seconds to configure the widget and get the content on your website; no need to authorize on Instagram or handle tokens. And you can authorize your account in one click!</li>
|
156 |
+
</ul>
|
157 |
</div>
|
158 |
</div>
|
159 |
</section>
|
160 |
+
<section class="wis-section wis-section-changelog">
|
161 |
+
<div class="container">
|
162 |
+
<div>
|
163 |
+
<h2><?php echo __( 'PRO VERSION', 'instagram-slider-widget' ); ?></h2>
|
164 |
+
<p>To maintain the free version and provide prompt, effective & free support, we offer the Pro version.</p>
|
165 |
+
<p>In the <a href="https://cm-wp.com/instagram-slider-widget/">Pro version</a>, you can:</p>
|
166 |
+
<ul>
|
167 |
+
<li>
|
168 |
+
Authorize several accounts and display multiple feeds simultaneously (fully compatible with Instagram December 11, 2018, API changes)
|
169 |
+
<br>
|
170 |
+
<div class="wis-section-img"><img width="672" height="226" src="https://cm-wp.com/wp-content/uploads/2019/11/pic1.jpg" alt=""></div>
|
171 |
+
</li>
|
172 |
+
<li>
|
173 |
+
Display how many likes and comments each post has
|
174 |
+
<br>
|
175 |
+
<div class="wis-section-img"><img width="660" height="234" src="https://cm-wp.com/wp-content/uploads/2019/11/pic2.jpg" alt=""></div>
|
176 |
+
</li>
|
177 |
+
<li>
|
178 |
+
Create carousels of posts
|
179 |
+
</li>
|
180 |
+
<li>
|
181 |
+
Use <a href="https://cm-wp.com/instagram-slider-widget/masonry/">Masonry</a> or <a href="https://cm-wp.com/instagram-slider-widget/highlight/">Highlight</a> for feeds
|
182 |
+
<br>
|
183 |
+
<div class="wis-section-img"><img width="450" height="389" src="https://cm-wp.com/wp-content/uploads/2019/11/slider5.jpg" alt="">
|
184 |
+
<img width="450" height="389" src="https://cm-wp.com/wp-content/uploads/2019/11/slider6.jpg" alt="">
|
185 |
+
</div>
|
186 |
+
</li>
|
187 |
+
<li>
|
188 |
+
Display captions for images and videos.
|
189 |
+
<br>
|
190 |
+
<div class="wis-section-img"><img width="490" height="622" src="https://cm-wp.com/wp-content/uploads/2019/11/2019-11-01_11-03-07.png" alt=""></div>
|
191 |
+
</li>
|
192 |
+
</ul>
|
193 |
+
<p>Learn more about the <a href="https://cm-wp.com/instagram-slider-widget/">Pro version</a> or watch the <a href="https://cm-wp.com/instagram-slider-widget/#demos">demo</a>.</p>
|
194 |
+
</div>
|
195 |
+
</div>
|
196 |
+
</section>
|
197 |
+
<section class="wis-section wis-section-changelog">
|
198 |
+
<div class="container">
|
199 |
+
<div>
|
200 |
+
<h2><?php echo __( 'FEEDBACK AND SUPPORT', 'instagram-slider-widget' ); ?></h2>
|
201 |
+
<p>Our goal is to create a simple yet powerful plugin – customized and multifunctional, with prompt and helpful support.
|
202 |
+
For any difficulties or questions about the setup, open a ticket on the <a href="https://cm-wp.com/support/">support</a> and get support in no time.</p>
|
203 |
+
</div>
|
204 |
+
</div>
|
205 |
+
</section>
|
206 |
+
<section class="wis-section wis-section-changelog">
|
207 |
+
<div class="container">
|
208 |
+
<div>
|
209 |
+
<h2><?php echo __( 'WHY DO YOU NEED IT?', 'instagram-slider-widget' ); ?></h2>
|
210 |
+
<ul>
|
211 |
+
<li>Increase your visitors’ engagement. Get more followers on your Instagram account.</li>
|
212 |
+
<li>Time-saving. You no longer need to post fresh images and entries on the website. Just upload them on Instagram, and your website visitors will know about it instantly.</li>
|
213 |
+
<li>A new way of posting news. Flexible settings for widget display templates give your content a seamless and attractive view on any website design.</li>
|
214 |
+
<li>Keep up your website. Post news on Instagram more often, and Social Slider Widget will take care of the rest.</li>
|
215 |
+
<li>Intuitive settings. It will only take 10 seconds to configure the widget and get the content on your website; no need to authorize on Instagram or handle tokens. And you can authorize your account in one click!</li>
|
216 |
+
<li>Great user support.</li>
|
217 |
+
</ul>
|
218 |
+
</div>
|
219 |
+
</div>
|
220 |
+
</section>
|
221 |
+
|
222 |
</div>
|
admin/views/tab-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>
|
@@ -19,7 +19,7 @@
|
|
19 |
<a href="<?php echo $this->plugin->get_support()->get_pricing_url( true, 'license_page' ); ?>"
|
20 |
class="purchase-premium" target="_blank" rel="noopener">
|
21 |
<span class="btn btn-gold btn-inner-wrap">
|
22 |
-
<?php printf( __( 'Upgrade to Premium
|
23 |
</span>
|
24 |
</a>
|
25 |
<p><?php printf( __( 'Your current license for %1$s:', 'instagram-slider-widget' ), $this->plugin->getPluginTitle() ) ?></p>
|
1 |
<div class="wrap">
|
2 |
+
<div class="factory-bootstrap-423 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-423 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>
|
19 |
<a href="<?php echo $this->plugin->get_support()->get_pricing_url( true, 'license_page' ); ?>"
|
20 |
class="purchase-premium" target="_blank" rel="noopener">
|
21 |
<span class="btn btn-gold btn-inner-wrap">
|
22 |
+
<?php printf( __( 'Upgrade to Premium', 'instagram-slider-widget' ), $this->premium->get_price() ) ?>
|
23 |
</span>
|
24 |
</a>
|
25 |
<p><?php printf( __( 'Your current license for %1$s:', 'instagram-slider-widget' ), $this->plugin->getPluginTitle() ) ?></p>
|
admin/views/tab-settings.php
CHANGED
@@ -1,37 +1,101 @@
|
|
1 |
-
<?php
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
<div class="wrap">
|
4 |
-
<div class="factory-bootstrap-
|
5 |
<h3><?php _e( 'Settings', 'insert-php' ) ?></h3>
|
6 |
<div class="row">
|
7 |
<div class="col-md-9">
|
8 |
-
<
|
9 |
-
|
10 |
-
<
|
11 |
-
|
12 |
-
</
|
13 |
-
<?php } ?>
|
14 |
-
<div style="padding-top: 10px;">
|
15 |
-
<?php $form->html(); ?>
|
16 |
</div>
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
</div>
|
24 |
-
</
|
25 |
</div>
|
26 |
<div class="col-md-3">
|
27 |
-
<div id="
|
28 |
<?php
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
|
|
33 |
</div>
|
34 |
</div>
|
35 |
</div>
|
36 |
</div>
|
37 |
-
</div>
|
1 |
+
<?php
|
2 |
+
global $form;
|
3 |
|
4 |
+
$args = [
|
5 |
+
"client_id" => WIS_INSTAGRAM_CLIENT_ID,
|
6 |
+
"redirect_uri" => "http://instagram.cm-wp.com/?state=" . admin_url( 'admin.php?page=settings-' . WIS_Plugin::app()->getPluginName() ),
|
7 |
+
"response_type" => "token",
|
8 |
+
"scope" => "basic",
|
9 |
+
//"hl" => "en"
|
10 |
+
];
|
11 |
+
$autorize_url = "https://instagram.com/oauth/authorize/?" . http_build_query( $args );
|
12 |
+
|
13 |
+
?>
|
14 |
<div class="wrap">
|
15 |
+
<div class="factory-bootstrap-423 factory-fontawesome-000">
|
16 |
<h3><?php _e( 'Settings', 'insert-php' ) ?></h3>
|
17 |
<div class="row">
|
18 |
<div class="col-md-9">
|
19 |
+
<div class="row">
|
20 |
+
<div class="col-md-12 wis-help-text">
|
21 |
+
<p><?php
|
22 |
+
echo __( 'Without authorization Instagram limits the number of requests, and after exceeding the limit asks to log in, so an error is displayed that no images were found.', 'instagram-slider-widget' ); ?>
|
23 |
+
</p>
|
|
|
|
|
|
|
24 |
</div>
|
25 |
+
</div>
|
26 |
+
<?php $accounts = WIS_Plugin::app()->getPopulateOption( 'account_profiles', array() ); ?>
|
27 |
+
<div class="row">
|
28 |
+
<div class="col-md-12">
|
29 |
+
<div id="wis-add-account-button" class="">
|
30 |
+
<?php
|
31 |
+
if ( count( $accounts ) && !WIS_Plugin::app()->is_premium()) : ?>
|
32 |
+
<span class="wis-btn-instagram-account btn-instagram-account-disabled">
|
33 |
+
<?php _e('Add Account','instagram-slider-widget')?></span>
|
34 |
+
<span class="instagram-account-pro"><?php echo sprintf( __( "More accounts in <a href='%s'>PRO version</a>", 'instagram-slider-widget' ), WIS_Plugin::app()->get_support()->get_pricing_url(true, "wis_settings") );?></span>
|
35 |
+
<?php else: ?>
|
36 |
+
<a class="wis-btn-instagram-account" target="_self" href="<?php echo $autorize_url; ?>" title="Add Account">
|
37 |
+
<?php _e('Add Account','instagram-slider-widget')?></a>
|
38 |
+
<?php endif; ?>
|
39 |
+
<span style="float: none; margin-top: 0;" class="spinner" id="wis-spinner"> </span>
|
40 |
</div>
|
41 |
+
<div class="wis-help-text"><?php echo sprintf( __( "After adding an account, go to the <a href='%s'>widget settings</a> and change the \"Search Instagram for\" setting to Account", 'instagram-slider-widget' ), admin_url('widgets.php')) ?></div>
|
42 |
+
<?php
|
43 |
+
if ( count( $accounts ) ) : ?>
|
44 |
+
<br>
|
45 |
+
<table class="widefat wis-table">
|
46 |
+
<thead>
|
47 |
+
<tr>
|
48 |
+
<th><?php echo __( 'Image', 'instagram-slider-widget' ); ?></th>
|
49 |
+
<th><?php echo __( 'ID', 'instagram-slider-widget' ); ?></th>
|
50 |
+
<th><?php echo __( 'User', 'instagram-slider-widget' ); ?></th>
|
51 |
+
<th><?php echo __( 'Name', 'instagram-slider-widget' ); ?></th>
|
52 |
+
<th><?php echo __( 'Token', 'instagram-slider-widget' ); ?></th>
|
53 |
+
<th><?php echo __( 'Action', 'instagram-slider-widget' ); ?></th>
|
54 |
+
</tr>
|
55 |
+
</thead>
|
56 |
+
<tbody>
|
57 |
+
<?php
|
58 |
+
foreach ( $accounts as $profile_info ) {
|
59 |
+
?>
|
60 |
+
<tr>
|
61 |
+
<td class="profile-picture">
|
62 |
+
<img src="<?php echo esc_url( $profile_info['profile_picture'] ); ?>" width="30"/>
|
63 |
+
</td>
|
64 |
+
<td><?php echo esc_attr( $profile_info['id'] ); ?></td>
|
65 |
+
<td>
|
66 |
+
<a href="https://www.instagram.com/<?php echo esc_html( $profile_info['username'] ); ?>">@<?php echo esc_html( $profile_info['username'] ); ?></a>
|
67 |
+
</td>
|
68 |
+
<td><?php echo esc_html( $profile_info['full_name'] ); ?></td>
|
69 |
+
<td>
|
70 |
+
<input id="<?php echo esc_attr( $profile_info['id'] ); ?>-access-token" type="text" value="<?php echo esc_attr( $profile_info['token'] ); ?>" class="wis-text-token" readonly/>
|
71 |
+
</td>
|
72 |
+
<td>
|
73 |
+
<a href="#" data-item_id="<?php echo esc_attr( $profile_info['id'] ); ?>" class="btn btn-danger wis-delete-account">
|
74 |
+
<span class="dashicons dashicons-trash"></span><?php echo __( 'Delete', 'instagram-slider-widget' ); ?>
|
75 |
+
</a>
|
76 |
+
<span class="spinner" id="wis-delete-spinner"></span>
|
77 |
+
</td>
|
78 |
+
</tr>
|
79 |
+
<?php
|
80 |
+
}
|
81 |
+
?>
|
82 |
+
</tbody>
|
83 |
+
</table>
|
84 |
+
<?php wp_nonce_field( $this->plugin->getPrefix() . 'settings_form', $this->plugin->getPrefix() . 'nonce' ); ?>
|
85 |
+
<?php endif; ?>
|
86 |
</div>
|
87 |
+
</div>
|
88 |
</div>
|
89 |
<div class="col-md-3">
|
90 |
+
<div id="wis-dashboard-widget" class="wis-right-widget">
|
91 |
<?php
|
92 |
+
if(!WIS_Plugin::app()->is_premium())
|
93 |
+
{
|
94 |
+
WIS_Plugin::app()->get_adverts_manager()->render_placement( 'right_sidebar');
|
95 |
+
}
|
96 |
+
?>
|
97 |
</div>
|
98 |
</div>
|
99 |
</div>
|
100 |
</div>
|
101 |
+
</div>
|
admin/views/tab-widgets.php
CHANGED
@@ -13,11 +13,20 @@ if ( !empty( $sidebars_widgets ) )
|
|
13 |
if(strstr($widget, 'jr_insta_slider'))
|
14 |
{
|
15 |
wp_list_widget_controls($key, $wp_registered_sidebars[$key]['name']);
|
|
|
16 |
}
|
17 |
}
|
18 |
}
|
19 |
}
|
20 |
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
<script>
|
22 |
jQuery(document).ready(function($) {
|
23 |
$('.widget:not([id*="jr_insta_slider"])').remove();
|
13 |
if(strstr($widget, 'jr_insta_slider'))
|
14 |
{
|
15 |
wp_list_widget_controls($key, $wp_registered_sidebars[$key]['name']);
|
16 |
+
break;
|
17 |
}
|
18 |
}
|
19 |
}
|
20 |
}
|
21 |
?>
|
22 |
+
<style>
|
23 |
+
.widget-inside
|
24 |
+
{
|
25 |
+
border-top: none;
|
26 |
+
padding: 1px 15px 15px 15px;
|
27 |
+
line-height: 1.2;
|
28 |
+
}
|
29 |
+
</style>
|
30 |
<script>
|
31 |
jQuery(document).ready(function($) {
|
32 |
$('.widget:not([id*="jr_insta_slider"])').remove();
|
assets/css/instag-slider.css
CHANGED
@@ -24,9 +24,9 @@
|
|
24 |
.pllexislider .pllex-control-paging li a:hover,
|
25 |
.pllexislider .pllex-control-paging li a.pllex-active { background: rgba(0,0,0,0.6); -webkit-box-shadow: 0px 0px 1px 2px rgba(255,255,255,1); -moz-box-shadow: 0px 0px 1px 2px rgba(255,255,255,0.7); box-shadow: 0px 0px 1px 2px rgba(255,255,255,1);}
|
26 |
.pllexislider .pllex-control-paging li a.pllex-active { cursor: default; }
|
27 |
-
|
28 |
/* Direction Nav */
|
29 |
-
.pllexislider .pllex-direction-nav { z-index:2; position: absolute; list-style:none; padding: 0; top: 7px; right:
|
30 |
.pllexislider-overlay .pllex-direction-nav { display:none; }
|
31 |
.pllexislider .pllex-direction-nav li a { line-height: normal; overflow: hidden; display: block; border: 0 }
|
32 |
.pllexislider .pllex-direction-nav li a:focus { outline: 0 }
|
@@ -117,4 +117,62 @@
|
|
117 |
.jr-insta-thumb ul.thumbnails li {
|
118 |
width: 100% !important; /* over-ride all li styles */
|
119 |
}
|
120 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
.pllexislider .pllex-control-paging li a:hover,
|
25 |
.pllexislider .pllex-control-paging li a.pllex-active { background: rgba(0,0,0,0.6); -webkit-box-shadow: 0px 0px 1px 2px rgba(255,255,255,1); -moz-box-shadow: 0px 0px 1px 2px rgba(255,255,255,0.7); box-shadow: 0px 0px 1px 2px rgba(255,255,255,1);}
|
26 |
.pllexislider .pllex-control-paging li a.pllex-active { cursor: default; }
|
27 |
+
.pllexislider .pllex-control-paging {width: 100%; text-align: center}
|
28 |
/* Direction Nav */
|
29 |
+
.pllexislider .pllex-direction-nav { z-index:2; position: absolute; list-style:none; padding: 0; top: 7px; right: 2%; margin: 0; background-color: rgba(0,0,0, 0.6); -webkit-border-radius: 15%; -moz-border-radius: 15%; -o-border-radius: 15%; border-radius: 15%; }
|
30 |
.pllexislider-overlay .pllex-direction-nav { display:none; }
|
31 |
.pllexislider .pllex-direction-nav li a { line-height: normal; overflow: hidden; display: block; border: 0 }
|
32 |
.pllexislider .pllex-direction-nav li a:focus { outline: 0 }
|
117 |
.jr-insta-thumb ul.thumbnails li {
|
118 |
width: 100% !important; /* over-ride all li styles */
|
119 |
}
|
120 |
+
}
|
121 |
+
.graphdiv
|
122 |
+
{
|
123 |
+
-webkit-box-align: end;
|
124 |
+
align-items: flex-end;
|
125 |
+
bottom: 0;
|
126 |
+
display: flex;
|
127 |
+
-webkit-box-pack: start;
|
128 |
+
justify-content: flex-start;
|
129 |
+
left: 0;
|
130 |
+
pointer-events: none;
|
131 |
+
position: absolute;
|
132 |
+
right: 0;
|
133 |
+
top: 0;
|
134 |
+
}
|
135 |
+
|
136 |
+
.GraphImage{position: relative;}
|
137 |
+
.GraphSidecar {position: relative;}
|
138 |
+
.GraphVideo{position: relative;}
|
139 |
+
|
140 |
+
.GraphImage:before
|
141 |
+
{
|
142 |
+
position: absolute;
|
143 |
+
content: '';
|
144 |
+
background-image: url('../in.png');
|
145 |
+
background-repeat: no-repeat;
|
146 |
+
background-position: -32px -32px;
|
147 |
+
height: 32px;
|
148 |
+
width: 32px;
|
149 |
+
top: 5px;
|
150 |
+
right: 0;
|
151 |
+
z-index: 999999;
|
152 |
+
}
|
153 |
+
.GraphSidecar:before
|
154 |
+
{
|
155 |
+
position: absolute;
|
156 |
+
content: '';
|
157 |
+
background-image: url('../in.png');
|
158 |
+
background-repeat: no-repeat;
|
159 |
+
background-position: 0 0;
|
160 |
+
height: 32px;
|
161 |
+
width: 32px;
|
162 |
+
top: 5px;
|
163 |
+
right: 0;
|
164 |
+
z-index: 999999;
|
165 |
+
}
|
166 |
+
.GraphVideo:before
|
167 |
+
{
|
168 |
+
position: absolute;
|
169 |
+
content: '';
|
170 |
+
background-image: url('../in.png');
|
171 |
+
background-repeat: no-repeat;
|
172 |
+
background-position: 0 -32px;
|
173 |
+
height: 32px;
|
174 |
+
width: 32px;
|
175 |
+
top: 5px;
|
176 |
+
right: 0;
|
177 |
+
z-index: 999999;
|
178 |
+
}
|
assets/css/wis-header.css
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
.wis-feed-header {
|
2 |
+
height: 60px;
|
3 |
+
overflow: hidden;
|
4 |
+
display: inline-flex;
|
5 |
+
margin: 0px 0px !important;
|
6 |
+
}
|
7 |
+
|
8 |
+
.wis-header-info-username {
|
9 |
+
margin-bottom: -4px !important;
|
10 |
+
margin-top: -4px !important;
|
11 |
+
vertical-align: middle;
|
12 |
+
}
|
13 |
+
|
14 |
+
.wis-header-info {
|
15 |
+
margin-left: 10px;
|
16 |
+
font-size: 17px;
|
17 |
+
}
|
18 |
+
|
19 |
+
.wis-header-neg {
|
20 |
+
opacity: 0;
|
21 |
+
position: absolute;
|
22 |
+
height: 50px;
|
23 |
+
width: 50px;
|
24 |
+
z-index: 999;
|
25 |
+
background-color: black
|
26 |
+
}
|
27 |
+
|
28 |
+
.wis-header-neg-icon {
|
29 |
+
color: white;
|
30 |
+
margin-left: 12px;
|
31 |
+
margin-top: 11px;
|
32 |
+
font-size: 29px;
|
33 |
+
}
|
34 |
+
|
35 |
+
.wis-box{
|
36 |
+
height: 50px;
|
37 |
+
}
|
38 |
+
|
39 |
+
.wis-box div {
|
40 |
+
vertical-align: top;
|
41 |
+
margin-top: 0;
|
42 |
+
display: inline-block;
|
43 |
+
}
|
44 |
+
|
45 |
+
.wis-round {
|
46 |
+
border-radius: 50px !important;
|
47 |
+
}
|
48 |
+
|
49 |
+
.wis-feed-header:hover, .wis-feed-header:hover p{
|
50 |
+
cursor: pointer;
|
51 |
+
text-decoration: none;
|
52 |
+
color: #ed1e24;
|
53 |
+
}
|
54 |
+
|
55 |
+
.wis-feed-header:hover .wis-header-neg {
|
56 |
+
opacity: 0.5;
|
57 |
+
}
|
assets/in.png
ADDED
Binary file
|
assets/js/jr-insta-admin.js
CHANGED
@@ -1,13 +1,7 @@
|
|
1 |
(function($) {
|
2 |
|
3 |
$(document).ready(function($){
|
4 |
-
|
5 |
-
$('.donate-button-link').on('click', function (e) {
|
6 |
-
e.preventDefault();
|
7 |
-
//$(this).slideUp(100);
|
8 |
-
$('.donate-bitcoin-qr-address').slideToggle();
|
9 |
-
});
|
10 |
-
|
11 |
// Hide Custom Url if image link is not set to custom url
|
12 |
$('body').on('change', '.jr-container select[id$="images_link"]', function(e){
|
13 |
var images_link = $(this);
|
1 |
(function($) {
|
2 |
|
3 |
$(document).ready(function($){
|
4 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
// Hide Custom Url if image link is not set to custom url
|
6 |
$('body').on('change', '.jr-container select[id$="images_link"]', function(e){
|
7 |
var images_link = $(this);
|
html_templates/feed_header_template.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/** @var array $args account data */
|
3 |
+
/** @var string $username account username */
|
4 |
+
/** @var string $profile_pic_url URL of account profile picture */
|
5 |
+
/** @var int $posts_count count of account posts */
|
6 |
+
/** @var int $followers count of account followers */
|
7 |
+
/** @var string $profile_url ULR of account */
|
8 |
+
|
9 |
+
$username = isset($args['username']) ? $args['username'] : '';
|
10 |
+
$profile_pic_url = isset($args['profile_picture']) ? $args['profile_picture'] : '';
|
11 |
+
$posts_count = isset($args['counts']['media']) ? $args['counts']['media'] : '';
|
12 |
+
$followers = isset($args['counts']['followed_by']) ? $args['counts']['followed_by'] : '';
|
13 |
+
$profile_url = "https://www.instagram.com/$username/";
|
14 |
+
?>
|
15 |
+
|
16 |
+
<div class="wis-feed-header">
|
17 |
+
<a href="<?php echo esc_url($profile_url)?>" target="_blank" style="text-decoration: none;border: 0 !important;">
|
18 |
+
<div class="wis-box">
|
19 |
+
<div class="wis-header-img">
|
20 |
+
<div class="wis-round wis-header-neg">
|
21 |
+
<i class="wis-header-neg-icon"></i>
|
22 |
+
</div>
|
23 |
+
<img class="wis-round" style="position: relative" src="<?php echo esc_url( $profile_pic_url ) ?>" alt=""
|
24 |
+
width="50" height="50">
|
25 |
+
</div>
|
26 |
+
<div class="wis-header-info">
|
27 |
+
<p class="wis-header-info-username"><?php echo esc_html( $username )?></p>
|
28 |
+
<p style="margin-top: 0; font-size: 11px">
|
29 |
+
<span class="fa fa-image"> <?php echo esc_html( $posts_count ) ?></span>
|
30 |
+
<span class="fa fa-user"> <?php echo esc_html( $followers ) ?></span>
|
31 |
+
</p>
|
32 |
+
</div>
|
33 |
+
</div>
|
34 |
+
</a>
|
35 |
+
</div>
|
36 |
+
<br>
|
includes/class-wis-plugin.php
CHANGED
@@ -13,14 +13,19 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
* @version 1.0
|
14 |
*/
|
15 |
|
16 |
-
class WIS_Plugin extends
|
17 |
|
18 |
/**
|
19 |
* @see self::app()
|
20 |
-
* @var
|
21 |
*/
|
22 |
private static $app;
|
23 |
|
|
|
|
|
|
|
|
|
|
|
24 |
/**
|
25 |
* Статический метод для быстрого доступа к интерфейсу плагина.
|
26 |
*
|
@@ -30,7 +35,7 @@ class WIS_Plugin extends Wbcr_Factory420_Plugin {
|
|
30 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
31 |
* классам.
|
32 |
*
|
33 |
-
* @return
|
34 |
*/
|
35 |
public static function app() {
|
36 |
return self::$app;
|
@@ -81,11 +86,11 @@ class WIS_Plugin extends Wbcr_Factory420_Plugin {
|
|
81 |
* Регистрирует классы страниц в плагине
|
82 |
*/
|
83 |
private function register_pages() {
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
}
|
90 |
|
91 |
/**
|
@@ -107,7 +112,7 @@ class WIS_Plugin extends Wbcr_Factory420_Plugin {
|
|
107 |
}
|
108 |
|
109 |
/**
|
110 |
-
* Код для
|
111 |
*/
|
112 |
private function front_scripts() {
|
113 |
add_action( 'wp_enqueue_scripts', [$this, 'enqueue_assets'] );
|
@@ -117,11 +122,53 @@ class WIS_Plugin extends Wbcr_Factory420_Plugin {
|
|
117 |
{
|
118 |
wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_URL.'/admin/assets/css/jr-insta-admin.css', array(), WIS_PLUGIN_VERSION );
|
119 |
wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_URL.'/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), WIS_PLUGIN_VERSION, true );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
}
|
121 |
|
122 |
public function enqueue_assets()
|
123 |
{
|
124 |
-
wp_enqueue_style( 'instag-slider', WIS_PLUGIN_URL.'/assets/css/instag-slider.css', array(), WIS_PLUGIN_VERSION );
|
125 |
-
wp_enqueue_script( 'jquery-pllexi-slider', WIS_PLUGIN_URL.'/assets/js/jquery.flexslider-min.js', array( 'jquery' ), '2.2', false );
|
126 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
127 |
}
|
13 |
* @version 1.0
|
14 |
*/
|
15 |
|
16 |
+
class WIS_Plugin extends Wbcr_Factory422_Plugin {
|
17 |
|
18 |
/**
|
19 |
* @see self::app()
|
20 |
+
* @var Wbcr_Factory422_Plugin
|
21 |
*/
|
22 |
private static $app;
|
23 |
|
24 |
+
/**
|
25 |
+
* @var array Список слайдеров
|
26 |
+
*/
|
27 |
+
public $sliders = array();
|
28 |
+
|
29 |
/**
|
30 |
* Статический метод для быстрого доступа к интерфейсу плагина.
|
31 |
*
|
35 |
* Используется для получения настроек плагина, информации о плагине, для доступа к вспомогательным
|
36 |
* классам.
|
37 |
*
|
38 |
+
* @return Wbcr_Factory422_Plugin
|
39 |
*/
|
40 |
public static function app() {
|
41 |
return self::$app;
|
86 |
* Регистрирует классы страниц в плагине
|
87 |
*/
|
88 |
private function register_pages() {
|
89 |
+
require_once WIS_PLUGIN_DIR . '/admin/class-wis-page.php';
|
90 |
+
self::app()->registerPage( 'WIS_WidgetsPage', WIS_PLUGIN_DIR . '/admin/pages/widgets.php' );
|
91 |
+
self::app()->registerPage( 'WIS_SettingsPage', WIS_PLUGIN_DIR . '/admin/pages/settings.php' );
|
92 |
+
self::app()->registerPage( 'WIS_LicensePage', WIS_PLUGIN_DIR . '/admin/pages/license.php' );
|
93 |
+
self::app()->registerPage( 'WIS_AboutPage', WIS_PLUGIN_DIR . '/admin/pages/about.php' );
|
94 |
}
|
95 |
|
96 |
/**
|
112 |
}
|
113 |
|
114 |
/**
|
115 |
+
* Код для фронтенда
|
116 |
*/
|
117 |
private function front_scripts() {
|
118 |
add_action( 'wp_enqueue_scripts', [$this, 'enqueue_assets'] );
|
122 |
{
|
123 |
wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_URL.'/admin/assets/css/jr-insta-admin.css', array(), WIS_PLUGIN_VERSION );
|
124 |
wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_URL.'/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), WIS_PLUGIN_VERSION, true );
|
125 |
+
wp_localize_script('jr-insta-admin-script', 'wis', array(
|
126 |
+
'nonce' => wp_create_nonce('wis_nonce'),
|
127 |
+
'remove_account' => __('Are you sure want to delete this account?', 'instagram-slider-widget'),
|
128 |
+
));
|
129 |
+
wp_enqueue_script( 'jr-tinymce-button', WIS_PLUGIN_URL.'/admin/assets/js/tinymce_button.js', array( 'jquery' ), WIS_PLUGIN_VERSION, false );
|
130 |
+
$wis_shortcodes = $this->get_isw_widgets();
|
131 |
+
wp_localize_script('jr-insta-admin-script', 'wis_shortcodes', $wis_shortcodes);
|
132 |
}
|
133 |
|
134 |
public function enqueue_assets()
|
135 |
{
|
|
|
|
|
136 |
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Метод проверяет активацию премиум плагина и наличие действующего лицензионнного ключа
|
140 |
+
*
|
141 |
+
* @return bool
|
142 |
+
*/
|
143 |
+
public function is_premium()
|
144 |
+
{
|
145 |
+
if(
|
146 |
+
$this->premium->is_active() &&
|
147 |
+
$this->premium->is_activate()
|
148 |
+
//&& is_plugin_active( "{$this->premium->get_setting('slug')}/{$this->premium->get_setting('slug')}.php" )
|
149 |
+
)
|
150 |
+
return true;
|
151 |
+
else
|
152 |
+
return false;
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* Получает все виджеты этого плагина
|
157 |
+
*
|
158 |
+
* @return array
|
159 |
+
*/
|
160 |
+
public function get_isw_widgets()
|
161 |
+
{
|
162 |
+
$settings = WIS_InstagramSlider::app()->get_settings();
|
163 |
+
$result = array();
|
164 |
+
foreach ($settings as $key => $widget)
|
165 |
+
{
|
166 |
+
$result[] = array(
|
167 |
+
'title' => $widget['title'],
|
168 |
+
'id' => $key,
|
169 |
+
);
|
170 |
+
}
|
171 |
+
return $result;
|
172 |
+
}
|
173 |
+
|
174 |
}
|
includes/class-wis_instagram_slider.php
CHANGED
@@ -4,20 +4,37 @@
|
|
4 |
*/
|
5 |
class WIS_InstagramSlider extends WP_Widget {
|
6 |
|
|
|
7 |
/**
|
8 |
* Plugin version, used for cache-busting of style and script file references.
|
9 |
*
|
10 |
* @var string
|
11 |
*/
|
12 |
-
|
13 |
const USERNAME_URL = 'https://www.instagram.com/{username}/';
|
14 |
const TAG_URL = 'https://www.instagram.com/explore/tags/{tag}/?__a=1';
|
|
|
|
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
/**
|
17 |
* Initialize the plugin by registering widget and loading public scripts
|
18 |
*
|
19 |
*/
|
20 |
public function __construct() {
|
|
|
21 |
|
22 |
// Widget ID and Class Setup
|
23 |
parent::__construct( 'jr_insta_slider', __( 'Social Slider', 'instagram-slider-widget' ), array(
|
@@ -26,6 +43,19 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
26 |
)
|
27 |
);
|
28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29 |
// Shortcode
|
30 |
add_shortcode( 'jr_instagram', array( $this, 'shortcode' ) );
|
31 |
|
@@ -46,6 +76,11 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
46 |
|
47 |
// Add action for single cron events
|
48 |
add_action( 'jr_insta_cron', array( $this, 'jr_cron_trigger' ), 10 , 3 );
|
|
|
|
|
|
|
|
|
|
|
49 |
}
|
50 |
|
51 |
/**
|
@@ -66,9 +101,13 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
66 |
*/
|
67 |
public function public_enqueue() {
|
68 |
|
69 |
-
wp_enqueue_style(
|
|
|
|
|
70 |
|
71 |
-
|
|
|
|
|
72 |
}
|
73 |
|
74 |
/**
|
@@ -81,9 +120,9 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
81 |
if ( 'widgets.php' != $hook ) {
|
82 |
return;
|
83 |
}
|
|
|
|
|
84 |
|
85 |
-
wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_DIR.'/admin/assets/css/jr-insta-admin.css', array(), self::VERSION );
|
86 |
-
wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_DIR.'/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), self::VERSION, true );
|
87 |
}
|
88 |
|
89 |
/**
|
@@ -92,56 +131,62 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
92 |
*/
|
93 |
public function widget( $args, $instance ) {
|
94 |
|
95 |
-
extract( $args );
|
96 |
-
|
97 |
//Our variables from the widget settings.
|
98 |
$title = apply_filters( 'widget_title', $instance['title'] );
|
99 |
|
100 |
-
echo $before_widget;
|
101 |
|
102 |
// Display the widget title
|
103 |
if ( $title ) {
|
104 |
-
echo $before_title . $title . $after_title;
|
105 |
}
|
106 |
|
107 |
do_action( 'jr_instagram', $instance );
|
108 |
|
109 |
-
echo $after_widget;
|
110 |
}
|
111 |
|
112 |
/**
|
113 |
* Update the widget settings
|
114 |
*
|
115 |
* @param array $new_instance New instance values
|
116 |
-
* @param array $
|
117 |
*
|
118 |
* @return array
|
119 |
*/
|
120 |
public function update( $new_instance, $instance ) {
|
121 |
|
122 |
-
$instance['title'] = strip_tags( $new_instance['title'] );
|
123 |
-
$instance['search_for'] = $new_instance['search_for'];
|
124 |
-
$instance['username'] = $new_instance['username'];
|
125 |
-
$instance['
|
126 |
-
$instance['
|
127 |
-
$instance['
|
128 |
-
$instance['
|
129 |
-
$instance['
|
130 |
-
$instance['
|
131 |
-
$instance['
|
132 |
-
$instance['
|
133 |
-
$instance['
|
134 |
-
$instance['
|
135 |
-
$instance['
|
136 |
-
$instance['
|
137 |
-
$instance['
|
138 |
-
$instance['
|
139 |
-
$instance['
|
140 |
-
$instance['
|
141 |
-
$instance['
|
142 |
-
$instance['
|
143 |
-
$instance['
|
144 |
-
$instance['
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
145 |
|
146 |
return $instance;
|
147 |
}
|
@@ -153,18 +198,23 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
153 |
*/
|
154 |
public function form( $instance ) {
|
155 |
|
|
|
|
|
|
|
|
|
156 |
$defaults = array(
|
157 |
'title' => __('Social Slider', 'instagram-slider-widget'),
|
158 |
-
'search_for' => 'username',
|
|
|
159 |
'username' => '',
|
160 |
'hashtag' => '',
|
161 |
'blocked_users' => '',
|
162 |
'attachment' => 0,
|
163 |
'template' => 'slider',
|
164 |
-
'images_link' => '
|
165 |
'custom_url' => '',
|
166 |
'orderby' => 'rand',
|
167 |
-
'images_number' =>
|
168 |
'columns' => 4,
|
169 |
'refresh_hour' => 5,
|
170 |
'image_size' => 'standard',
|
@@ -173,34 +223,66 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
173 |
'no_pin' => 0,
|
174 |
'controls' => 'prev_next',
|
175 |
'animation' => 'slide',
|
176 |
-
'caption_words' =>
|
177 |
'slidespeed' => 7000,
|
178 |
'description' => array( 'username', 'time','caption' ),
|
179 |
-
'support_author' => 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
180 |
);
|
181 |
|
182 |
$instance = wp_parse_args( (array) $instance, $defaults );
|
183 |
|
184 |
?>
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
204 |
<?php
|
205 |
if ( isset ( $instance['username'] ) && !empty($instance['username'] ) ) {
|
206 |
echo '<br><button class="button action jr-delete-instagram-dupes" type="button" data-username="'.$instance['username'].'"><strong>Remove</strong> duplicate images for <strong>'.$instance['username'].'</strong></button><span class="jr-spinner"></span>';
|
@@ -208,159 +290,206 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
208 |
wp_nonce_field( 'jr_delete_instagram_dupes', 'delete_insta_dupes_nonce' );
|
209 |
}
|
210 |
?>
|
211 |
-
|
212 |
-
|
213 |
-
|
214 |
-
|
215 |
-
|
216 |
-
|
217 |
-
|
218 |
-
|
219 |
-
|
220 |
-
|
221 |
-
|
222 |
-
|
223 |
-
|
224 |
-
|
225 |
-
|
226 |
-
|
227 |
-
|
228 |
-
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
|
257 |
-
|
258 |
-
|
259 |
-
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
279 |
<?php
|
280 |
-
$advanced_class = '';
|
281 |
$advanced_text = '[ - Close ]';
|
282 |
if ( '' == trim( $instance['image_link_rel'] ) && '' == trim( $instance['image_link_class'] ) && '' == trim( $instance['image_size'] ) ) {
|
283 |
-
|
284 |
$advanced_text = '[ + Open ]';
|
285 |
}
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
<h4 class="jr-advanced-title"><?php _e( 'Advanced Slider Options', 'instagram-slider-widget'); ?></h4>
|
310 |
-
<p>
|
311 |
-
<?php _e( 'Slider Navigation Controls:', 'instagram-slider-widget' ); ?><br>
|
312 |
-
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="prev_next" <?php checked( 'prev_next', $instance['controls'] ); ?> /> <?php _e( 'Prev & Next', 'instagram-slider-widget' ); ?></label>
|
313 |
-
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="numberless" <?php checked( 'numberless', $instance['controls'] ); ?> /> <?php _e( 'Dotted', 'instagram-slider-widget' ); ?></label>
|
314 |
-
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="none" <?php checked( 'none', $instance['controls'] ); ?> /> <?php _e( 'No Navigation', 'instagram-slider-widget' ); ?></label>
|
315 |
-
</p>
|
316 |
-
<p>
|
317 |
-
<?php _e( 'Slider Animation:', 'instagram-slider-widget' ); ?><br>
|
318 |
-
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="slide" <?php checked( 'slide', $instance['animation'] ); ?> /> <?php _e( 'Slide', 'instagram-slider-widget' ); ?></label>
|
319 |
-
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="fade" <?php checked( 'fade', $instance['animation'] ); ?> /> <?php _e( 'Fade', 'instagram-slider-widget' ); ?></label>
|
320 |
-
</p>
|
321 |
-
<p>
|
322 |
-
<label for="<?php echo $this->get_field_id( 'caption_words' ); ?>"><?php _e( 'Number of words in caption:', 'instagram-slider-widget' ); ?>
|
323 |
-
<input class="small-text" id="<?php echo $this->get_field_id( 'caption_words' ); ?>" name="<?php echo $this->get_field_name( 'caption_words' ); ?>" value="<?php echo $instance['caption_words']; ?>" />
|
324 |
-
</label>
|
325 |
-
</p>
|
326 |
-
<p>
|
327 |
-
<label for="<?php echo $this->get_field_id( 'slidespeed' ); ?>"><?php _e( 'Slide Speed:', 'instagram-slider-widget' ); ?>
|
328 |
-
<input class="small-text" id="<?php echo $this->get_field_id( 'slidespeed' ); ?>" name="<?php echo $this->get_field_name( 'slidespeed' ); ?>" value="<?php echo $instance['slidespeed']; ?>" />
|
329 |
-
<span><?php _e('milliseconds', 'instagram-slider-widget'); ?></span>
|
330 |
-
<span class='jr-description'><?php _e('1000 milliseconds = 1 second', 'instagram-slider-widget'); ?></span>
|
331 |
-
</label>
|
332 |
-
</p>
|
333 |
-
<p>
|
334 |
-
<label for="<?php echo $this->get_field_id('description'); ?>"><?php _e( 'Slider Text Description:', 'instagram-slider-widget' ); ?></label>
|
335 |
-
<select size=3 class='widefat' id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>[]" multiple="multiple">
|
336 |
-
<option class="<?php if ( 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value='username' <?php $this->selected( $instance['description'], 'username' ); ?>><?php _e( 'Username', 'instagram-slider-widget'); ?></option>
|
337 |
-
<option value='time'<?php $this->selected( $instance['description'], 'time' ); ?>><?php _e( 'Time', 'instagram-slider-widget'); ?></option>
|
338 |
-
<option value='caption'<?php $this->selected( $instance['description'], 'caption' ); ?>><?php _e( 'Caption', 'instagram-slider-widget'); ?></option>
|
339 |
-
</select>
|
340 |
-
<span class="jr-description"><?php _e( 'Hold ctrl and click the fields you want to show/hide on your slider. Leave all unselected to hide them all. Default all selected.', 'instagram-slider-widget') ?></span>
|
341 |
-
</p>
|
342 |
-
</div>
|
343 |
-
</div>
|
344 |
<?php $widget_id = preg_replace( '/[^0-9]/', '', $this->id ); if ( $widget_id != '' ) : ?>
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
<?php endif; ?>
|
351 |
-
|
352 |
-
<div class="jr-image-options">
|
353 |
-
<h4 class="jr-advanced-title"><?php _e( 'Help us, help you!', 'instagram-slider-widget'); ?></h4>
|
354 |
-
<p><strong><?php _e( 'Show "Powered by Link"', 'instagram-slider-widget' ); ?></strong>
|
355 |
-
<label class="switch" for="<?php echo $this->get_field_id( 'support_author' ); ?>">
|
356 |
-
<input class="widefat" id="<?php echo $this->get_field_id( 'support_author' ); ?>" name="<?php echo $this->get_field_name( 'support_author' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['support_author'] ); ?> /><span class="slider round"></span></label>
|
357 |
-
<br><span class="jr-description"><?php _e( 'When enabled, the author is notified and a backlink website is visible at the bottom of the plugin. <br> <strong>If you enable this option you will have privileged support from our team!</strong>', 'instagram-slider-widget') ?></span>
|
358 |
-
</p>
|
359 |
-
<div class="donate-buttons">
|
360 |
-
<a target="_blank" title="Donate with Paypal!" href="http://bit.ly/2EseW2p"><p class="donate"><span></span>Donate with Paypal!</p></a>
|
361 |
-
</div>
|
362 |
-
</div></div>
|
363 |
-
</div><br>
|
364 |
<?php
|
365 |
}
|
366 |
|
@@ -402,7 +531,7 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
402 |
* @return void
|
403 |
*/
|
404 |
public function instagram_images( $args ) {
|
405 |
-
|
406 |
}
|
407 |
|
408 |
/**
|
@@ -410,7 +539,6 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
410 |
* @param [type] $username [description]
|
411 |
* @param [type] $refresh_hour [description]
|
412 |
* @param [type] $images [description]
|
413 |
-
* @return [type] [description]
|
414 |
*/
|
415 |
public function jr_cron_trigger( $username, $refresh_hour, $images ) {
|
416 |
$search_for = array();
|
@@ -426,8 +554,8 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
426 |
* @return string
|
427 |
*/
|
428 |
private function display_images( $args ) {
|
429 |
-
|
430 |
-
$username = isset( $args['username'] ) && !empty( $args['username'] ) ? $args['username'] : false;
|
431 |
$hashtag = isset( $args['hashtag'] ) && !empty( $args['hashtag'] ) ? str_replace( '#', '', $args['hashtag'] ) : false;
|
432 |
$blocked_users = isset( $args['blocked_users'] ) && !empty( $args['blocked_users'] ) ? $args['blocked_users'] : false;
|
433 |
$attachment = isset( $args['attachment'] ) ? true : false;
|
@@ -435,7 +563,7 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
435 |
$orderby = isset( $args['orderby'] ) ? $args['orderby'] : 'rand';
|
436 |
$images_link = isset( $args['images_link'] ) ? $args['images_link'] : 'image_url';
|
437 |
$custom_url = isset( $args['custom_url'] ) ? $args['custom_url'] : '';
|
438 |
-
$images_number = isset( $args['images_number'] ) ? absint( $args['images_number'] ) :
|
439 |
$columns = isset( $args['columns'] ) ? absint( $args['columns'] ) : 4;
|
440 |
$refresh_hour = isset( $args['refresh_hour'] ) ? absint( $args['refresh_hour'] ) : 5;
|
441 |
$image_size = isset( $args['image_size'] ) ? $args['image_size'] : 'standard';
|
@@ -444,11 +572,18 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
444 |
$image_link_class = isset( $args['image_link_class'] ) ? $args['image_link_class'] : '';
|
445 |
$controls = isset( $args['controls'] ) ? $args['controls'] : 'prev_next';
|
446 |
$animation = isset( $args['animation'] ) ? $args['animation'] : 'slide';
|
447 |
-
$caption_words = isset( $args['caption_words'] ) ? $args['caption_words'] :
|
448 |
$slidespeed = isset( $args['slidespeed'] ) ? $args['slidespeed'] : 7000;
|
449 |
$description = isset( $args['description'] ) ? $args['description'] : array();
|
450 |
$widget_id = isset( $args['widget_id'] ) ? $args['widget_id'] : preg_replace( '/[^0-9]/', '', $this->id );
|
451 |
$powered_by_link = isset( $args['support_author'] ) ? true : false;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
452 |
|
453 |
if ( !empty( $description ) && !is_array( $description ) ) {
|
454 |
$description = explode( ',', $description );
|
@@ -458,6 +593,10 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
458 |
$search = 'hashtag';
|
459 |
$search_for['hashtag'] = $hashtag;
|
460 |
$search_for['blocked_users'] = $blocked_users;
|
|
|
|
|
|
|
|
|
461 |
} else {
|
462 |
$search = 'user';
|
463 |
$search_for['username'] = $username;
|
@@ -467,6 +606,7 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
467 |
$refresh_hour = 5;
|
468 |
}
|
469 |
|
|
|
470 |
$template_args = array(
|
471 |
'search_for' => $search,
|
472 |
'attachment' => $attachment,
|
@@ -474,7 +614,13 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
474 |
'link_rel' => $image_link_rel,
|
475 |
'link_class' => $image_link_class,
|
476 |
'no_pin' => $no_pin,
|
477 |
-
'caption_words' => $caption_words
|
|
|
|
|
|
|
|
|
|
|
|
|
478 |
);
|
479 |
|
480 |
$images_div_class = 'jr-insta-thumb';
|
@@ -488,7 +634,7 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
488 |
$control_nav = ( $controls == 'numberless' ) ? 'true': 'false';
|
489 |
$ul_class = 'slides';
|
490 |
|
491 |
-
if
|
492 |
$images_div_class = 'pllexislider pllexislider-normal instaslider-nr-'. $widget_id;
|
493 |
$slider_script =
|
494 |
"<script type='text/javascript'>" . "\n" .
|
@@ -503,7 +649,11 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
503 |
" });" . "\n" .
|
504 |
" });" . "\n" .
|
505 |
"</script>" . "\n";
|
506 |
-
|
|
|
|
|
|
|
|
|
507 |
$images_div_class = 'pllexislider pllexislider-overlay instaslider-nr-'. $widget_id;
|
508 |
$slider_script =
|
509 |
"<script type='text/javascript'>" . "\n" .
|
@@ -518,10 +668,10 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
518 |
" start: function(slider){" . "\n" .
|
519 |
" slider.hover(" . "\n" .
|
520 |
" function () {" . "\n" .
|
521 |
-
" slider.find('.
|
522 |
" }," . "\n" .
|
523 |
" function () {" . "\n" .
|
524 |
-
" slider.find('.
|
525 |
" }" . "\n" .
|
526 |
" );" . "\n" .
|
527 |
" }" . "\n" .
|
@@ -531,10 +681,12 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
531 |
}
|
532 |
}
|
533 |
|
534 |
-
|
535 |
-
|
|
|
536 |
|
537 |
-
$output =
|
|
|
538 |
|
539 |
if ( ( $search == 'user' && $attachment ) ) {
|
540 |
|
@@ -580,7 +732,8 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
580 |
|
581 |
$instagram_images = new WP_Query( $query_args );
|
582 |
|
583 |
-
if ( $instagram_images->have_posts() ) {
|
|
|
584 |
|
585 |
$output = $slider_script . $images_div . $images_ul;
|
586 |
|
@@ -607,13 +760,17 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
607 |
|
608 |
endwhile;
|
609 |
|
610 |
-
$output .= "</ul>\n</div>"
|
611 |
|
612 |
} else {
|
613 |
|
614 |
$images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
|
615 |
|
616 |
if ( is_array( $images_data ) && !empty( $images_data ) ) {
|
|
|
|
|
|
|
|
|
617 |
|
618 |
if ( $orderby != 'rand' ) {
|
619 |
|
@@ -640,6 +797,7 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
640 |
$template_args['link_to'] = $custom_url;
|
641 |
}
|
642 |
|
|
|
643 |
$template_args['image'] = $image_data['sizes'][$image_size];
|
644 |
$template_args['caption'] = $image_data['caption'];
|
645 |
$template_args['timestamp'] = $image_data['timestamp'];
|
@@ -649,7 +807,7 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
649 |
$output .= $this->get_template( $template, $template_args );
|
650 |
}
|
651 |
|
652 |
-
$output .= "</ul>\n</div>"
|
653 |
}
|
654 |
|
655 |
}
|
@@ -659,8 +817,32 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
659 |
} else {
|
660 |
|
661 |
$images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
|
662 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
663 |
if ( is_array( $images_data ) && !empty( $images_data ) ) {
|
|
|
|
|
|
|
664 |
|
665 |
if ( $orderby != 'rand' ) {
|
666 |
|
@@ -688,6 +870,7 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
688 |
$template_args['link_to'] = $custom_url;
|
689 |
}
|
690 |
|
|
|
691 |
$template_args['image'] = $image_data['sizes'][$image_size];
|
692 |
$template_args['caption'] = $image_data['caption'];
|
693 |
$template_args['timestamp'] = $image_data['timestamp'];
|
@@ -696,7 +879,7 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
696 |
$output .= $this->get_template( $template, $template_args );
|
697 |
}
|
698 |
|
699 |
-
$output .= "</ul>\n</div>"
|
700 |
}
|
701 |
}
|
702 |
|
@@ -704,6 +887,25 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
704 |
|
705 |
}
|
706 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
707 |
|
708 |
/**
|
709 |
* Function to display Templates styles
|
@@ -717,8 +919,9 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
717 |
|
718 |
$link_to = isset( $args['link_to'] ) ? $args['link_to'] : false;
|
719 |
$image_url = isset( $args['image'] ) ? $args['image'] : false;
|
|
|
720 |
|
721 |
-
if ( ( $args['search_for'] == 'user' && $args['attachment'] !== true ) || $args['search_for'] == 'hashtag' ) {
|
722 |
$caption = $args['caption'];
|
723 |
$time = $args['timestamp'];
|
724 |
$username = $args['username'];
|
@@ -730,62 +933,62 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
730 |
}
|
731 |
|
732 |
$short_caption = wp_trim_words( $caption, 10, '' );
|
733 |
-
$short_caption =
|
|
|
734 |
$caption = wp_trim_words( $caption, $args['caption_words'], '' );
|
735 |
$nopin = ( 1 == $args['no_pin'] ) ? 'nopin="nopin"' : '';
|
736 |
|
737 |
-
$image_src =
|
738 |
$image_output = $image_src;
|
739 |
|
740 |
if ( $link_to ) {
|
741 |
-
$image_output =
|
742 |
|
743 |
if ( ! empty( $args['link_rel'] ) ) {
|
744 |
-
$image_output .=
|
745 |
}
|
746 |
|
747 |
if ( ! empty( $args['link_class'] ) ) {
|
748 |
-
$image_output .=
|
749 |
}
|
750 |
-
$image_output .=
|
751 |
}
|
752 |
|
753 |
$output = '';
|
754 |
|
755 |
-
|
756 |
-
|
757 |
-
|
758 |
-
$output .= "<li>";
|
759 |
|
760 |
$output .= $image_output;
|
761 |
|
762 |
if ( is_array( $args['description'] ) && count( $args['description'] ) >= 1 ) {
|
763 |
|
764 |
-
$output .= "<div class='jr-insta-datacontainer'>\n";
|
765 |
|
|
|
|
|
|
|
|
|
766 |
if ( $time && in_array( 'time', $args['description'] ) ) {
|
767 |
$time = human_time_diff( $time );
|
768 |
-
$output .= "<span class='jr-insta-time'>{$time} ago</span>\n";
|
769 |
-
|
770 |
-
if ( in_array( 'username', $args['description'] ) && $username ) {
|
771 |
-
$output .= "<span class='jr-insta-username'>by <a rel='nofollow' href='https://www.instagram.com/{$username}/' target='_blank'>{$username}</a></span>\n";
|
772 |
}
|
773 |
|
|
|
774 |
if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
|
775 |
-
$caption = preg_replace( '
|
776 |
-
$caption = preg_replace( '/\#([a-zA-Z0-
|
777 |
-
$output .= "<span class='jr-insta-caption'>{$caption}</span>\n";
|
778 |
}
|
779 |
|
780 |
$output .= "</div>\n";
|
781 |
}
|
782 |
|
783 |
$output .= "</li>";
|
784 |
-
|
785 |
// Template : Slider with text Overlay on mouse over
|
786 |
} elseif ( $template == 'slider-overlay' ) {
|
787 |
-
|
788 |
-
$output .= "<li>";
|
789 |
|
790 |
$output .= $image_output;
|
791 |
|
@@ -807,7 +1010,7 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
807 |
if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
|
808 |
$caption = preg_replace( '/@([a-z0-9_]+)/i', ' <a href="https://www.instagram.com/$1/" rel="nofollow" target="_blank">@$1</a> ', $caption );
|
809 |
$caption = preg_replace( '/\#([a-zA-Z0-9_-]+)/i', ' <a href="https://www.instagram.com/explore/tags/$1/" rel="nofollow" target="_blank">$0</a> ', $caption);
|
810 |
-
$output .= "<span class='jr-insta-caption'>{$caption}</span>\n";
|
811 |
}
|
812 |
|
813 |
$output .= "</div>\n";
|
@@ -819,8 +1022,7 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
819 |
|
820 |
// Template : Thumbnails no text
|
821 |
} elseif ( $template == 'thumbs' || $template == 'thumbs-no-border' ) {
|
822 |
-
|
823 |
-
$output .= "<li>";
|
824 |
$output .= $image_output;
|
825 |
$output .= "</li>";
|
826 |
|
@@ -835,10 +1037,10 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
835 |
|
836 |
/**
|
837 |
* Trigger refresh for new data
|
838 |
-
* @param
|
839 |
* @param array $old_args
|
840 |
* @param array $new_args
|
841 |
-
* @return
|
842 |
*/
|
843 |
private function trigger_refresh_data( $instaData, $old_args, $new_args ) {
|
844 |
|
@@ -872,45 +1074,60 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
872 |
return false;
|
873 |
}
|
874 |
|
875 |
-
|
876 |
/**
|
877 |
-
*
|
878 |
-
* @param
|
879 |
-
* @return
|
880 |
*/
|
881 |
-
function
|
882 |
|
883 |
-
|
884 |
-
|
885 |
|
886 |
-
|
887 |
-
|
888 |
-
|
889 |
-
$link = '<div style="clear:both;text-align:right;font-size:10px;" >Powered by '.$link['text'].'</div>';
|
890 |
-
} else {
|
891 |
-
$link = '';
|
892 |
-
}
|
893 |
|
894 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
895 |
}
|
896 |
-
|
897 |
-
}
|
898 |
|
|
|
|
|
899 |
|
900 |
-
|
901 |
-
|
902 |
-
|
903 |
-
|
904 |
-
|
905 |
-
|
906 |
-
|
907 |
-
|
908 |
-
*/
|
909 |
-
private function instagram_data( $search_for, $cache_hours, $nr_images, $attachment ) {
|
910 |
|
911 |
-
|
912 |
-
|
913 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
914 |
$search = 'user';
|
915 |
$search_string = $search_for['username'];
|
916 |
} elseif ( isset( $search_for['hashtag'] ) && !empty( $search_for['hashtag'] ) ) {
|
@@ -945,29 +1162,45 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
945 |
|
946 |
if ( 'user' == $search ) {
|
947 |
|
948 |
-
$
|
949 |
-
|
950 |
-
|
951 |
-
|
952 |
-
|
953 |
-
//
|
954 |
-
|
955 |
-
|
956 |
-
|
957 |
-
|
|
|
958 |
}
|
959 |
-
|
960 |
-
|
961 |
-
|
962 |
-
|
963 |
-
|
964 |
-
|
965 |
-
|
966 |
-
|
967 |
-
|
968 |
-
|
969 |
-
|
970 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
971 |
$url = str_replace( '{tag}', urlencode( trim( $search_string ) ), self::TAG_URL );
|
972 |
$response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
|
973 |
$results = json_decode( $response['body'], true );
|
@@ -985,17 +1218,19 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
985 |
|
986 |
if ( 'user' == $search ) {
|
987 |
$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'] : array();
|
|
|
|
|
988 |
} else {
|
989 |
$entry_data = isset( $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] ) ? $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] : array();
|
990 |
}
|
991 |
|
992 |
if ( empty( $entry_data ) ) {
|
993 |
-
return __( 'No images found', 'instagram-slider-widget');
|
994 |
}
|
995 |
|
996 |
-
foreach ( $entry_data as $current => $result )
|
997 |
-
|
998 |
-
$result = $result['node'];
|
999 |
|
1000 |
if ( 'hashtag' == $search ) {
|
1001 |
|
@@ -1004,24 +1239,28 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
1004 |
continue;
|
1005 |
}
|
1006 |
}
|
1007 |
-
|
1008 |
if ( $result['is_video'] == true ) {
|
1009 |
$nr_images++;
|
1010 |
continue;
|
1011 |
}
|
1012 |
-
|
1013 |
|
1014 |
if ( $current >= $nr_images ) {
|
1015 |
break;
|
1016 |
}
|
1017 |
|
1018 |
-
|
|
|
|
|
|
|
|
|
1019 |
|
1020 |
if ( 'user' == $search ) {
|
1021 |
$image_data['username'] = $search_string;
|
1022 |
}
|
1023 |
|
1024 |
-
if ( ( $search == 'hashtag' ) || ( $search == 'user' && !$attachment ) ) {
|
1025 |
|
1026 |
$instaData[] = $image_data;
|
1027 |
|
@@ -1080,7 +1319,6 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
1080 |
return $instaData;
|
1081 |
}
|
1082 |
|
1083 |
-
|
1084 |
/**
|
1085 |
* @param string $imageUrl
|
1086 |
*
|
@@ -1125,6 +1363,9 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
1125 |
$medias_model['id'] = $value;
|
1126 |
break;
|
1127 |
case 'code':
|
|
|
|
|
|
|
1128 |
case 'shortcode':
|
1129 |
$medias_model['code'] = $value;
|
1130 |
$medias_model['link'] = 'https://www.instagram.com/p/'. $value . '/';
|
@@ -1182,6 +1423,48 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
1182 |
return $medias_model;
|
1183 |
}
|
1184 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1185 |
|
1186 |
/**
|
1187 |
* Remove Duplicates
|
@@ -1245,6 +1528,59 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
1245 |
wp_send_json( $return );
|
1246 |
}
|
1247 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1248 |
/**
|
1249 |
* Get Instagram Ids from Usernames into array
|
1250 |
* @param string $usernames Comma separated string with instagram users
|
@@ -1264,30 +1600,19 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
1264 |
continue;
|
1265 |
}
|
1266 |
|
1267 |
-
$
|
1268 |
-
|
1269 |
-
|
1270 |
-
if ( is_wp_error( $response ) ) {
|
1271 |
-
|
1272 |
-
return $response->get_error_message();
|
1273 |
-
}
|
1274 |
-
|
1275 |
-
if ( $response['response']['code'] == 200 ) {
|
1276 |
-
|
1277 |
-
$results = json_decode( $response['body'], true );
|
1278 |
|
1279 |
-
|
|
|
1280 |
|
1281 |
-
|
1282 |
|
1283 |
-
|
1284 |
|
1285 |
-
|
1286 |
-
|
1287 |
-
|
1288 |
-
}
|
1289 |
-
}
|
1290 |
-
}
|
1291 |
}
|
1292 |
}
|
1293 |
|
@@ -1423,50 +1748,6 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
1423 |
return $a['popularity'] < $b['popularity'];
|
1424 |
}
|
1425 |
|
1426 |
-
/**
|
1427 |
-
* Plugin Data for better compatibility and Support
|
1428 |
-
*
|
1429 |
-
*/
|
1430 |
-
public function domain_data() {
|
1431 |
-
|
1432 |
-
if ( false === $domain_data = get_transient( 'jr_domain_info' ) ) {
|
1433 |
-
|
1434 |
-
$theme = wp_get_theme();
|
1435 |
-
$domain = get_site_url();
|
1436 |
-
$plugin = self::VERSION;
|
1437 |
-
$url = 'http://jrwebstudio.com/wp-admin/admin-post.php';
|
1438 |
-
|
1439 |
-
$response = wp_safe_remote_post( $url, array(
|
1440 |
-
'method' => 'POST',
|
1441 |
-
'timeout' => 45,
|
1442 |
-
'redirection' => 5,
|
1443 |
-
'httpversion' => '1.1',
|
1444 |
-
'blocking' => true,
|
1445 |
-
'user-agent' => 'Mozilla/4.0',
|
1446 |
-
'headers' => array(),
|
1447 |
-
'cookies' => array(),
|
1448 |
-
'body' => array(
|
1449 |
-
'action' => 'insta_users',
|
1450 |
-
'domain' => $domain,
|
1451 |
-
'theme_name' => $theme->get( 'Name' ),
|
1452 |
-
'theme_version' => $theme->get( 'Version' ),
|
1453 |
-
'plugin_version' => $plugin,
|
1454 |
-
'timestamp' => time()
|
1455 |
-
)
|
1456 |
-
)
|
1457 |
-
);
|
1458 |
-
|
1459 |
-
if ( $response['response']['code'] == 200 ) {
|
1460 |
-
$domain_data = json_decode( wp_remote_retrieve_body( $response ), true );
|
1461 |
-
if ( is_array( $domain_data) && !empty( $domain_data) ) {
|
1462 |
-
set_transient( 'jr_domain_info', $domain_data, WEEK_IN_SECONDS );
|
1463 |
-
}
|
1464 |
-
}
|
1465 |
-
}
|
1466 |
-
|
1467 |
-
return $domain_data;
|
1468 |
-
}
|
1469 |
-
|
1470 |
/**
|
1471 |
* Sanitize 4-byte UTF8 chars; no full utf8mb4 support in drupal7+mysql stack.
|
1472 |
* This solution runs in O(n) time BUT assumes that all incoming input is
|
@@ -1513,5 +1794,30 @@ class WIS_InstagramSlider extends WP_Widget {
|
|
1513 |
return $input;
|
1514 |
}
|
1515 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1516 |
} // end of class WIS_InstagramSlider
|
1517 |
-
?>
|
4 |
*/
|
5 |
class WIS_InstagramSlider extends WP_Widget {
|
6 |
|
7 |
+
private static $app;
|
8 |
/**
|
9 |
* Plugin version, used for cache-busting of style and script file references.
|
10 |
*
|
11 |
* @var string
|
12 |
*/
|
13 |
+
// Потому что, разработчики будут забывать обновлять версию в этом месте.
|
14 |
const USERNAME_URL = 'https://www.instagram.com/{username}/';
|
15 |
const TAG_URL = 'https://www.instagram.com/explore/tags/{tag}/?__a=1';
|
16 |
+
const USERS_SELF_URL = 'https://api.instagram.com/v1/users/self/';
|
17 |
+
const USERS_SELF_MEDIA_URL = 'https://api.instagram.com/v1/users/self/media/recent/';
|
18 |
|
19 |
+
/**
|
20 |
+
* @var WIS_Plugin
|
21 |
+
*/
|
22 |
+
public $WIS;
|
23 |
+
|
24 |
+
/**
|
25 |
+
* @var array
|
26 |
+
*/
|
27 |
+
public $sliders;
|
28 |
+
|
29 |
+
public static function app() {
|
30 |
+
return self::$app;
|
31 |
+
}
|
32 |
/**
|
33 |
* Initialize the plugin by registering widget and loading public scripts
|
34 |
*
|
35 |
*/
|
36 |
public function __construct() {
|
37 |
+
self::$app = $this;
|
38 |
|
39 |
// Widget ID and Class Setup
|
40 |
parent::__construct( 'jr_insta_slider', __( 'Social Slider', 'instagram-slider-widget' ), array(
|
43 |
)
|
44 |
);
|
45 |
|
46 |
+
$this->WIS = WIS_Plugin::app();
|
47 |
+
$this->sliders = array(
|
48 |
+
"slider" => 'Slider - Normal',
|
49 |
+
"slider-overlay" => 'Slider - Overlay Text',
|
50 |
+
"thumbs" => 'Thumbnails',
|
51 |
+
"thumbs-no-border" => 'Thumbnails - Without Border',
|
52 |
+
);
|
53 |
+
/**
|
54 |
+
* Фильтр для добавления слайдеров
|
55 |
+
*/
|
56 |
+
$this->sliders = apply_filters('wis/sliders', $this->sliders);
|
57 |
+
|
58 |
+
|
59 |
// Shortcode
|
60 |
add_shortcode( 'jr_instagram', array( $this, 'shortcode' ) );
|
61 |
|
76 |
|
77 |
// Add action for single cron events
|
78 |
add_action( 'jr_insta_cron', array( $this, 'jr_cron_trigger' ), 10 , 3 );
|
79 |
+
|
80 |
+
add_action( 'wp_ajax_add_account_by_token', array( $this, 'add_account_by_token' ) );
|
81 |
+
|
82 |
+
add_action( 'wp_ajax_wis_delete_account', array( $this, 'delete_account' ) );
|
83 |
+
|
84 |
}
|
85 |
|
86 |
/**
|
101 |
*/
|
102 |
public function public_enqueue() {
|
103 |
|
104 |
+
wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'font-awesome',
|
105 |
+
'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css'
|
106 |
+
);
|
107 |
|
108 |
+
wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'instag-slider', WIS_PLUGIN_URL.'/assets/css/instag-slider.css', array(), WIS_Plugin::app()->getPluginVersion() );
|
109 |
+
wp_enqueue_script( WIS_Plugin::app()->getPrefix() . 'jquery-pllexi-slider', WIS_PLUGIN_URL.'/assets/js/jquery.flexslider-min.js', array( 'jquery' ), WIS_Plugin::app()->getPluginVersion(), false );
|
110 |
+
wp_enqueue_style( WIS_Plugin::app()->getPrefix() . 'wis-header', WIS_PLUGIN_URL.'/assets/css/wis-header.css', array(), WIS_Plugin::app()->getPluginVersion() );
|
111 |
}
|
112 |
|
113 |
/**
|
120 |
if ( 'widgets.php' != $hook ) {
|
121 |
return;
|
122 |
}
|
123 |
+
wp_enqueue_style( 'jr-insta-admin-styles', WIS_PLUGIN_DIR.'/admin/assets/css/jr-insta-admin.css', array(), WIS_Plugin::app()->getPluginVersion() );
|
124 |
+
wp_enqueue_script( 'jr-insta-admin-script', WIS_PLUGIN_DIR.'/admin/assets/js/jr-insta-admin.js', array( 'jquery' ), WIS_Plugin::app()->getPluginVersion(), true );
|
125 |
|
|
|
|
|
126 |
}
|
127 |
|
128 |
/**
|
131 |
*/
|
132 |
public function widget( $args, $instance ) {
|
133 |
|
|
|
|
|
134 |
//Our variables from the widget settings.
|
135 |
$title = apply_filters( 'widget_title', $instance['title'] );
|
136 |
|
137 |
+
echo $args['before_widget'];
|
138 |
|
139 |
// Display the widget title
|
140 |
if ( $title ) {
|
141 |
+
echo $args['before_title'] . $title . $args['after_title'];
|
142 |
}
|
143 |
|
144 |
do_action( 'jr_instagram', $instance );
|
145 |
|
146 |
+
echo $args['after_widget'];
|
147 |
}
|
148 |
|
149 |
/**
|
150 |
* Update the widget settings
|
151 |
*
|
152 |
* @param array $new_instance New instance values
|
153 |
+
* @param array $instance Old instance values
|
154 |
*
|
155 |
* @return array
|
156 |
*/
|
157 |
public function update( $new_instance, $instance ) {
|
158 |
|
159 |
+
$instance['title'] = strip_tags( isset($new_instance['title']) ? $new_instance['title'] : null );
|
160 |
+
$instance['search_for'] = isset($new_instance['search_for']) ? $new_instance['search_for'] : null;
|
161 |
+
$instance['username'] = isset($new_instance['username']) ? $new_instance['username'] : null;
|
162 |
+
$instance['account'] = isset($new_instance['account']) ? $new_instance['account'] : null;
|
163 |
+
$instance['hashtag'] = isset($new_instance['hashtag']) ? $new_instance['hashtag'] : null;
|
164 |
+
$instance['blocked_users'] = isset($new_instance['blocked_users']) ? $new_instance['blocked_users'] : null;
|
165 |
+
$instance['attachment'] = isset($new_instance['attachment']) ? $new_instance['attachment'] : null;
|
166 |
+
$instance['template'] = isset($new_instance['template']) ? $new_instance['template'] : 'slider';
|
167 |
+
$instance['images_link'] = isset($new_instance['images_link']) ? $new_instance['images_link'] : 'image_link';
|
168 |
+
$instance['custom_url'] = isset($new_instance['custom_url']) ?$new_instance['custom_url'] : null;
|
169 |
+
$instance['orderby'] = isset($new_instance['orderby']) ? $new_instance['orderby'] : 'rand';
|
170 |
+
$instance['images_number'] = isset($new_instance['images_number']) ? $new_instance['images_number'] : 20;
|
171 |
+
$instance['columns'] = isset($new_instance['columns']) ? $new_instance['columns'] : 4;
|
172 |
+
$instance['refresh_hour'] = isset($new_instance['refresh_hour']) ? $new_instance['refresh_hour'] : 5;
|
173 |
+
$instance['image_size'] = isset($new_instance['image_size']) ? $new_instance['image_size'] : 'standard';
|
174 |
+
$instance['image_link_rel'] = isset($new_instance['image_link_rel']) ? $new_instance['image_link_rel'] : null;
|
175 |
+
$instance['image_link_class'] = isset($new_instance['image_link_class']) ? $new_instance['image_link_class'] : null;
|
176 |
+
$instance['no_pin'] = isset($new_instance['no_pin']) ? $new_instance['no_pin'] : null;
|
177 |
+
$instance['controls'] = isset($new_instance['controls']) ? $new_instance['controls'] : 'prev_next';
|
178 |
+
$instance['animation'] = isset($new_instance['animation']) ? $new_instance['animation'] : 'slide';
|
179 |
+
$instance['caption_words'] = isset($new_instance['caption_words']) ? $new_instance['caption_words'] : 20;
|
180 |
+
$instance['slidespeed'] = isset($new_instance['slidespeed']) ? $new_instance['slidespeed'] : 7000;
|
181 |
+
$instance['description'] = isset($new_instance['description']) ? $new_instance['description'] : array( 'username', 'time','caption' );
|
182 |
+
$instance['support_author'] = isset($new_instance['support_author']) ? $new_instance['support_author'] : null;
|
183 |
+
$instance['gutter'] = isset($new_instance['gutter']) ? $new_instance['gutter'] : null;
|
184 |
+
$instance['masonry_image_width'] = isset($new_instance['masonry_image_width']) ? $new_instance['masonry_image_width'] : 200;
|
185 |
+
$instance['slick_slides_to_show'] = isset($new_instance['slick_slides_to_show']) ? $new_instance['slick_slides_to_show'] : 3;
|
186 |
+
$instance['slick_slides_padding'] = isset($new_instance['slick_slides_padding']) ? $new_instance['slick_slides_padding'] : 0;
|
187 |
+
$instance['show_feed_header'] = isset($new_instance['show_feed_header']) ? $new_instance['show_feed_header'] : 0;
|
188 |
+
$instance['highlight_offset'] = isset($new_instance['highlight_offset']) ? $new_instance['highlight_offset'] : 1;
|
189 |
+
$instance['highlight_pattern'] = isset($new_instance['highlight_pattern']) ? $new_instance['highlight_pattern'] : 6;
|
190 |
|
191 |
return $instance;
|
192 |
}
|
198 |
*/
|
199 |
public function form( $instance ) {
|
200 |
|
201 |
+
$accounts = WIS_Plugin::app()->getOption( 'account_profiles');
|
202 |
+
if(!is_array($accounts)) $accounts = array();
|
203 |
+
$sliders = $this->sliders;
|
204 |
+
|
205 |
$defaults = array(
|
206 |
'title' => __('Social Slider', 'instagram-slider-widget'),
|
207 |
+
'search_for' => count($accounts) ? 'account' : 'username',
|
208 |
+
'account' => '',
|
209 |
'username' => '',
|
210 |
'hashtag' => '',
|
211 |
'blocked_users' => '',
|
212 |
'attachment' => 0,
|
213 |
'template' => 'slider',
|
214 |
+
'images_link' => 'image_link',
|
215 |
'custom_url' => '',
|
216 |
'orderby' => 'rand',
|
217 |
+
'images_number' => 20,
|
218 |
'columns' => 4,
|
219 |
'refresh_hour' => 5,
|
220 |
'image_size' => 'standard',
|
223 |
'no_pin' => 0,
|
224 |
'controls' => 'prev_next',
|
225 |
'animation' => 'slide',
|
226 |
+
'caption_words' => 20,
|
227 |
'slidespeed' => 7000,
|
228 |
'description' => array( 'username', 'time','caption' ),
|
229 |
+
'support_author' => 0,
|
230 |
+
'gutter' => 0,
|
231 |
+
'masonry_image_width' => 200,
|
232 |
+
'slick_slides_to_show' => 3,
|
233 |
+
'slick_slides_padding' => 0,
|
234 |
+
'show_feed_header' => 1,
|
235 |
+
'highlight_offset' => 1,
|
236 |
+
'highlight_pattern' => 6,
|
237 |
);
|
238 |
|
239 |
$instance = wp_parse_args( (array) $instance, $defaults );
|
240 |
|
241 |
?>
|
242 |
+
<div class="jr-container">
|
243 |
+
<p>
|
244 |
+
<label for="<?php echo $this->get_field_id( 'title' ); ?>"><strong><?php _e('Title:', 'instagram-slider-widget'); ?></strong></label>
|
245 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" />
|
246 |
+
</p>
|
247 |
+
<p>
|
248 |
+
<strong><?php _e( 'Search Instagram for:', 'instagram-slider-widget' ); ?></strong>
|
249 |
+
<span class="jr-search-for-container">
|
250 |
+
<label class="jr-seach-for">
|
251 |
+
<input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="account" <?php checked( 'account', $instance['search_for'] ); ?> />
|
252 |
+
<?php _e( 'Account:', 'instagram-slider-widget' ); ?>
|
253 |
+
</label>
|
254 |
+
<?php $accounts = WIS_Plugin::app()->getOption( 'account_profiles');
|
255 |
+
|
256 |
+
if(count($accounts))
|
257 |
+
{?>
|
258 |
+
|
259 |
+
<select id="<?php echo $this->get_field_id( 'account' ); ?>" class="" name="<?php echo $this->get_field_name( 'account' ); ?>"><?php
|
260 |
+
foreach ($accounts as $acc)
|
261 |
+
{
|
262 |
+
$selected = $instance['account'] == $acc['username'] ? "selected='selected'" : "";
|
263 |
+
echo "<option value='{$acc['username']}' {$selected}>{$acc['username']}</option>";
|
264 |
+
}
|
265 |
+
?>
|
266 |
+
</select><?php
|
267 |
+
}
|
268 |
+
else{
|
269 |
+
echo "<a href='".admin_url('admin.php?page=settings-wisw')."'>".__('Add account in settings','instagram-slider-widget')."</a>";
|
270 |
+
}
|
271 |
+
?>
|
272 |
+
</span>
|
273 |
+
<span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="username" <?php checked( 'username', $instance['search_for'] ); ?> /> <?php _e( 'Username:', 'instagram-slider-widget' ); ?></label> <input id="<?php echo $this->get_field_id( 'username' ); ?>" class="inline-field-text" name="<?php echo $this->get_field_name( 'username' ); ?>" value="<?php echo $instance['username']; ?>" /></span>
|
274 |
+
<span class="jr-search-for-container"><label class="jr-seach-for"><input type="radio" id="<?php echo $this->get_field_id( 'search_for' ); ?>" name="<?php echo $this->get_field_name( 'search_for' ); ?>" value="hashtag" <?php checked( 'hashtag', $instance['search_for'] ); ?> /> <?php _e( 'Hashtag:', 'instagram-slider-widget' ); ?></label> <input id="<?php echo $this->get_field_id( 'hashtag' ); ?>" class="inline-field-text" name="<?php echo $this->get_field_name( 'hashtag' ); ?>" value="<?php echo $instance['hashtag']; ?>" placeholder="<?php _e('without # sign', 'instagram-slider-widget') ?>" /></span>
|
275 |
+
</p>
|
276 |
+
<p class="<?php if ( 'hashtag' != $instance['search_for'] ) echo 'hidden'; ?>">
|
277 |
+
<label for="<?php echo $this->get_field_id( 'blocked_users' ); ?>"><?php _e( 'Block Users', 'instagram-slider-widget' ); ?>:</label>
|
278 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'blocked_users' ); ?>" name="<?php echo $this->get_field_name( 'blocked_users' ); ?>" value="<?php echo $instance['blocked_users']; ?>" />
|
279 |
+
<span class="jr-description"><?php _e( 'Enter usernames separated by commas whose images you don\'t want to show', 'instagram-slider-widget' ); ?></span>
|
280 |
+
</p>
|
281 |
+
<p class="<?php if ( 'username' != $instance['search_for'] ) echo 'hidden'; ?>"><strong><?php _e( 'Save in Media Library: ', 'instagram-slider-widget' ); ?></strong>
|
282 |
+
|
283 |
+
<label class="switch" for="<?php echo $this->get_field_id( 'attachment' ); ?>">
|
284 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'attachment' ); ?>" name="<?php echo $this->get_field_name( 'attachment' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['attachment'] ); ?> /><span class="slider round"></span></label>
|
285 |
+
<br><span class="jr-description"><?php _e( ' Turn on to save Instagram Images into WordPress media library.', 'instagram-slider-widget') ?></span>
|
286 |
<?php
|
287 |
if ( isset ( $instance['username'] ) && !empty($instance['username'] ) ) {
|
288 |
echo '<br><button class="button action jr-delete-instagram-dupes" type="button" data-username="'.$instance['username'].'"><strong>Remove</strong> duplicate images for <strong>'.$instance['username'].'</strong></button><span class="jr-spinner"></span>';
|
290 |
wp_nonce_field( 'jr_delete_instagram_dupes', 'delete_insta_dupes_nonce' );
|
291 |
}
|
292 |
?>
|
293 |
+
</p>
|
294 |
+
<p id="img_to_show">
|
295 |
+
<label for="<?php echo $this->get_field_id( 'images_number' ); ?>"><strong><?php _e( 'Count of images to show:', 'instagram-slider-widget' ); ?></strong>
|
296 |
+
<input class="small-text" type="number" min="1" max="" id="<?php echo $this->get_field_id( 'images_number' ); ?>" name="<?php echo $this->get_field_name( 'images_number' ); ?>" value="<?php echo $instance['images_number']; ?>" />
|
297 |
+
<span class="jr-description">
|
298 |
+
<?php if(!$this->WIS->is_premium()) {
|
299 |
+
_e( 'Maximum 20 images in free version.', 'instagram-slider-widget' );
|
300 |
+
echo " ".sprintf( __( "More in <a href='%s'>PRO version</a>", 'instagram-slider-widget' ), $this->WIS->get_support()->get_pricing_url(true, "wis_widget_settings") );
|
301 |
+
}
|
302 |
+
?>
|
303 |
+
</span>
|
304 |
+
</label>
|
305 |
+
</p>
|
306 |
+
<p>
|
307 |
+
<label for="<?php echo $this->get_field_id( 'refresh_hour' ); ?>"><strong><?php _e( 'Check for new images every:', 'instagram-slider-widget' ); ?></strong>
|
308 |
+
<input class="small-text" type="number" min="1" max="200" id="<?php echo $this->get_field_id( 'refresh_hour' ); ?>" name="<?php echo $this->get_field_name( 'refresh_hour' ); ?>" value="<?php echo $instance['refresh_hour']; ?>" />
|
309 |
+
<span><?php _e('hours', 'instagram-slider-widget'); ?></span>
|
310 |
+
</label>
|
311 |
+
</p>
|
312 |
+
<p>
|
313 |
+
<strong><?php _e( 'Show feed header:', 'instagram-slider-widget' ); ?></strong>
|
314 |
+
<label class="switch" for="<?php echo $this->get_field_id( 'show_feed_header' ); ?>">
|
315 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'show_feed_header' ); ?>" name="<?php echo $this->get_field_name( 'show_feed_header' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['show_feed_header'] ); ?> />
|
316 |
+
<span class="slider round"></span>
|
317 |
+
</label>
|
318 |
+
</p>
|
319 |
+
<p>
|
320 |
+
<label for="<?php echo $this->get_field_id( 'template' ); ?>"><strong><?php _e( 'Template', 'instagram-slider-widget' ); ?></strong>
|
321 |
+
<select class="widefat" name="<?php echo $this->get_field_name( 'template' ); ?>" id="<?php echo $this->get_field_id( 'template' ); ?>">
|
322 |
+
<?php
|
323 |
+
if(count($sliders)) {
|
324 |
+
foreach ($sliders as $key => $slider) {
|
325 |
+
$selected = ($instance['template'] == $key) ? "selected='selected'" : '';
|
326 |
+
echo "<option value='{$key}' {$selected}>{$slider}</option>\n";
|
327 |
+
}
|
328 |
+
}
|
329 |
+
if(!$this->WIS->is_premium())
|
330 |
+
{
|
331 |
+
?>
|
332 |
+
<optgroup label="Available in PRO">
|
333 |
+
<option value='1' disabled="disabled">Slick</option>
|
334 |
+
<option value='2' disabled="disabled">Masonry</option>
|
335 |
+
<option value='3' disabled="disabled">Highlight</option>
|
336 |
+
</optgroup>
|
337 |
+
<?php
|
338 |
+
}
|
339 |
+
?>
|
340 |
+
</select>
|
341 |
+
</label>
|
342 |
+
</p>
|
343 |
+
<span id="masonry_notice" class="masonry_notice jr-description <?php if ( 'masonry' != $instance['template']) echo 'hidden'; ?>"><?php _e("Not recommended for <strong>sidebar</strong>")?></span>
|
344 |
+
<p class="<?php if ( 'thumbs' != $instance['template'] && 'thumbs-no-border' != $instance['template'] ) echo 'hidden'; ?>">
|
345 |
+
<label for="<?php echo $this->get_field_id( 'columns' ); ?>"><strong><?php _e( 'Number of Columns:', 'instagram-slider-widget' ); ?></strong>
|
346 |
+
<input class="small-text" id="<?php echo $this->get_field_id( 'columns' ); ?>" name="<?php echo $this->get_field_name( 'columns' ); ?>" value="<?php echo $instance['columns']; ?>" />
|
347 |
+
<span class='jr-description'><?php _e('max is 10 ( only for thumbnails template )', 'instagram-slider-widget'); ?></span>
|
348 |
+
</label>
|
349 |
+
</p>
|
350 |
+
<p class="masonry_settings <?php if ( 'masonry' != $instance['template']) echo 'hidden'; ?>">
|
351 |
+
<label for="<?php echo $this->get_field_id( 'gutter' ); ?>"><strong><?php _e( 'Vertical space between item elements:', 'instagram-slider-widget' ); ?></strong>
|
352 |
+
<input class="small-text" id="<?php echo $this->get_field_id( 'gutter' ); ?>" name="<?php echo $this->get_field_name( 'gutter' ); ?>" value="<?php echo $instance['gutter']; ?>" />
|
353 |
+
<span><?php _e('px', 'instagram-slider-widget'); ?></span>
|
354 |
+
</label>
|
355 |
+
<br>
|
356 |
+
<label for="<?php echo $this->get_field_id( 'masonry_image_width' ); ?>"><strong><?php _e( 'Image width:', 'instagram-slider-widget' ); ?></strong>
|
357 |
+
<input class="small-text" id="<?php echo $this->get_field_id( 'masonry_image_width' ); ?>" name="<?php echo $this->get_field_name( 'masonry_image_width' ); ?>" value="<?php echo $instance['masonry_image_width']; ?>" />
|
358 |
+
<span><?php _e('px', 'instagram-slider-widget'); ?></span>
|
359 |
+
</label>
|
360 |
+
</p>
|
361 |
+
<p class="slick_settings <?php if ( 'slick_slider' != $instance['template']) echo 'hidden'; ?>">
|
362 |
+
<label for="<?php echo $this->get_field_id( 'slick_slides_to_show' ); ?>"><strong><?php _e( 'Pictures per slide:', 'instagram-slider-widget' ); ?></strong>
|
363 |
+
<input class="small-text" id="<?php echo $this->get_field_id( 'slick_slides_to_show' ); ?>" name="<?php echo $this->get_field_name( 'slick_slides_to_show' ); ?>" value="<?php echo $instance['slick_slides_to_show']; ?>" />
|
364 |
+
<span><?php _e('pictures', 'instagram-slider-widget'); ?></span>
|
365 |
+
</label>
|
366 |
+
<br>
|
367 |
+
<strong><?php _e( 'Space between pictures:', 'instagram-slider-widget' ); ?></strong>
|
368 |
+
<label class="switch" for="<?php echo $this->get_field_id( 'slick_slides_padding' ); ?>">
|
369 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'slick_slides_padding' ); ?>" name="<?php echo $this->get_field_name( 'slick_slides_padding' ); ?>" type="checkbox" value="1" <?php checked( '1', $instance['slick_slides_padding'] ); ?> />
|
370 |
+
<span class="slider round"></span>
|
371 |
+
</label>
|
372 |
+
</p>
|
373 |
+
<p class="highlight_settings <?php if ( 'highlight' != $instance['template']) echo 'hidden'; ?>">
|
374 |
+
<label for="<?php echo $this->get_field_id( 'highlight_offset' ); ?>"><strong><?php _e( 'Offset', 'instagram-slider-widget' ); ?></strong>
|
375 |
+
<input type="number" min="1" class="small-text" id="<?php echo $this->get_field_id( 'highlight_offset' ); ?>" name="<?php echo $this->get_field_name( 'highlight_offset' ); ?>" value="<?php echo $instance['highlight_offset']; ?>" />
|
376 |
+
</label>
|
377 |
+
<br>
|
378 |
+
<label for="<?php echo $this->get_field_id( 'highlight_pattern' ); ?>"><strong><?php _e( 'Pattern', 'instagram-slider-widget' ); ?></strong>
|
379 |
+
<input type="number" min="0" class="small-text" id="<?php echo $this->get_field_id( 'highlight_pattern' ); ?>" name="<?php echo $this->get_field_name( 'highlight_pattern' ); ?>" value="<?php echo $instance['highlight_pattern']; ?>" />
|
380 |
+
</label>
|
381 |
+
</p>
|
382 |
+
<p class="slider_normal_settings jr-slider-options <?php if ( 'slider' != $instance['template'] || 'slider-overlay' != $instance['template'] ) echo 'hidden'; ?>">
|
383 |
+
|
384 |
+
<?php _e( 'Slider Navigation Controls:', 'instagram-slider-widget' ); ?><br>
|
385 |
+
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="prev_next" <?php checked( 'prev_next', $instance['controls'] ); ?> /> <?php _e( 'Prev & Next', 'instagram-slider-widget' ); ?></label>
|
386 |
+
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="numberless" <?php checked( 'numberless', $instance['controls'] ); ?> /> <?php _e( 'Dotted', 'instagram-slider-widget' ); ?></label>
|
387 |
+
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'controls' ); ?>" name="<?php echo $this->get_field_name( 'controls' ); ?>" value="none" <?php checked( 'none', $instance['controls'] ); ?> /> <?php _e( 'No Navigation', 'instagram-slider-widget' ); ?></label>
|
388 |
+
<br>
|
389 |
+
<?php _e( 'Slider Animation:', 'instagram-slider-widget' ); ?><br>
|
390 |
+
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="slide" <?php checked( 'slide', $instance['animation'] ); ?> /> <?php _e( 'Slide', 'instagram-slider-widget' ); ?></label>
|
391 |
+
<label class="jr-radio"><input type="radio" id="<?php echo $this->get_field_id( 'animation' ); ?>" name="<?php echo $this->get_field_name( 'animation' ); ?>" value="fade" <?php checked( 'fade', $instance['animation'] ); ?> /> <?php _e( 'Fade', 'instagram-slider-widget' ); ?></label>
|
392 |
+
<br>
|
393 |
+
<label for="<?php echo $this->get_field_id( 'slidespeed' ); ?>"><?php _e( 'Slide Speed:', 'instagram-slider-widget' ); ?>
|
394 |
+
<input type="number" min="1000" max="10000" step="100" class="small-text" id="<?php echo $this->get_field_id( 'slidespeed' ); ?>" name="<?php echo $this->get_field_name( 'slidespeed' ); ?>" value="<?php echo $instance['slidespeed']; ?>" />
|
395 |
+
<span><?php _e('milliseconds', 'instagram-slider-widget'); ?></span>
|
396 |
+
<span class='jr-description'><?php _e('1000 milliseconds = 1 second', 'instagram-slider-widget'); ?></span>
|
397 |
+
</label>
|
398 |
+
<label for="<?php echo $this->get_field_id('description'); ?>"><?php _e( 'Slider Text Description:', 'instagram-slider-widget' ); ?></label>
|
399 |
+
<select size=3 class='widefat' id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>[]" multiple="multiple">
|
400 |
+
<option class="<?php if ( 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value='username' <?php $this->selected( $instance['description'], 'username' ); ?>><?php _e( 'Username', 'instagram-slider-widget'); ?></option>
|
401 |
+
<option value='time'<?php $this->selected( $instance['description'], 'time' ); ?>><?php _e( 'Time', 'instagram-slider-widget'); ?></option>
|
402 |
+
<option value='caption'<?php $this->selected( $instance['description'], 'caption' ); ?>><?php _e( 'Caption', 'instagram-slider-widget'); ?></option>
|
403 |
+
</select>
|
404 |
+
<span class="jr-description"><?php _e( 'Hold ctrl and click the fields you want to show/hide on your slider. Leave all unselected to hide them all. Default all selected.', 'instagram-slider-widget') ?></span>
|
405 |
+
</p>
|
406 |
+
<p class="words_in_caption <?php if (
|
407 |
+
'thumbs' == $instance['template'] ||
|
408 |
+
'thumbs-no-border' == $instance['template'] ||
|
409 |
+
'highlight' == $instance['template'] ||
|
410 |
+
'slick_slider' == $instance['template']
|
411 |
+
) echo 'hidden';?>">
|
412 |
+
<label for="<?php echo $this->get_field_id( 'caption_words' ); ?>"><strong><?php _e( 'Number of words in caption:', 'instagram-slider-widget' ); ?></strong>
|
413 |
+
<input class="small-text" type="number" min="0" max="200" id="<?php echo $this->get_field_id( 'caption_words' ); ?>" name="<?php echo $this->get_field_name( 'caption_words' ); ?>" value="<?php echo $instance['caption_words']; ?>" />
|
414 |
+
</label>
|
415 |
+
</p>
|
416 |
+
<p>
|
417 |
+
<label for="<?php echo $this->get_field_id( 'image_size' ); ?>"><strong><?php _e( 'Image format', 'instagram-slider-widget' ); ?></strong></label>
|
418 |
+
<select class="widefat" id="<?php echo $this->get_field_id( 'image_size' ); ?>" name="<?php echo $this->get_field_name( 'image_size' ); ?>">
|
419 |
+
<option value="thumbnail" <?php echo ($instance['image_size'] == 'thumbnail') ? ' selected="selected"' : ''; ?>><?php _e( 'Thumbnail - 150x150', 'instagram-slider-widget' ); ?></option>
|
420 |
+
<option value="low" <?php echo ($instance['image_size'] == 'low') ? ' selected="selected"' : ''; ?>><?php _e( 'Low - 320x320', 'instagram-slider-widget' ); ?></option>
|
421 |
+
<option value="standard" <?php echo ($instance['image_size'] == 'standard') ? ' selected="selected"' : ''; ?>><?php _e( 'Standard - 640x640', 'instagram-slider-widget' ); ?></option>
|
422 |
+
<option value="full" <?php echo ($instance['image_size'] == 'full') ? ' selected="selected"' : ''; ?>><?php _e( 'Full Size', 'instagram-slider-widget' ); ?></option>
|
423 |
+
</select>
|
424 |
+
</p>
|
425 |
+
<p>
|
426 |
+
<label for="<?php echo $this->get_field_id( 'orderby' ); ?>"><strong><?php _e( 'Order by', 'instagram-slider-widget' ); ?></strong>
|
427 |
+
<select class="widefat" name="<?php echo $this->get_field_name( 'orderby' ); ?>" id="<?php echo $this->get_field_id( 'orderby' ); ?>">
|
428 |
+
<option value="date-ASC" <?php selected( $instance['orderby'], 'date-ASC', true); ?>><?php _e( 'Date - Ascending', 'instagram-slider-widget' ); ?></option>
|
429 |
+
<option value="date-DESC" <?php selected( $instance['orderby'], 'date-DESC', true); ?>><?php _e( 'Date - Descending', 'instagram-slider-widget' ); ?></option>
|
430 |
+
<option value="popular-ASC" <?php selected( $instance['orderby'], 'popular-ASC', true); ?>><?php _e( 'Popularity - Ascending', 'instagram-slider-widget' ); ?></option>
|
431 |
+
<option value="popular-DESC" <?php selected( $instance['orderby'], 'popular-DESC', true); ?>><?php _e( 'Popularity - Descending', 'instagram-slider-widget' ); ?></option>
|
432 |
+
<option value="rand" <?php selected( $instance['orderby'], 'rand', true); ?>><?php _e( 'Random', 'instagram-slider-widget' ); ?></option>
|
433 |
+
</select>
|
434 |
+
</label>
|
435 |
+
</p>
|
436 |
+
<p>
|
437 |
+
<label for="<?php echo $this->get_field_id( 'images_link' ); ?>"><strong><?php _e( 'Link to', 'instagram-slider-widget' ); ?></strong>
|
438 |
+
<select class="widefat" name="<?php echo $this->get_field_name( 'images_link' ); ?>" id="<?php echo $this->get_field_id( 'images_link' ); ?>">
|
439 |
+
<option value="image_link" <?php selected( $instance['images_link'], 'image_link', true); ?>><?php _e( 'Instagram Image', 'instagram-slider-widget' ); ?></option>
|
440 |
+
<option class="<?php if ( 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value="user_url" <?php selected( $instance['images_link'], 'user_url', true); ?>><?php _e( 'Instagram Profile', 'instagram-slider-widget' ); ?></option>
|
441 |
+
<option value="image_url" <?php selected( $instance['images_link'], 'image_url', true); ?>><?php _e( 'Image URL', 'instagram-slider-widget' ); ?></option>
|
442 |
+
<option class="<?php if ( ( !$instance['attachment'] ) || 'hashtag' == $instance['search_for'] ) echo 'hidden'; ?>" value="attachment" <?php selected( $instance['images_link'], 'attachment', true); ?>><?php _e( 'Attachment Page', 'instagram-slider-widget' ); ?></option>
|
443 |
+
<option value="custom_url" <?php selected( $instance['images_link'], 'custom_url', true ); ?>><?php _e( 'Custom Link', 'instagram-slider-widget' ); ?></option>
|
444 |
+
<option value="none" <?php selected( $instance['images_link'], 'none', true); ?>><?php _e( 'None', 'instagram-slider-widget' ); ?></option>
|
445 |
+
</select>
|
446 |
+
</label>
|
447 |
+
</p>
|
448 |
+
<p class="<?php if ( 'custom_url' != $instance['images_link'] ) echo 'hidden'; ?>">
|
449 |
+
<label for="<?php echo $this->get_field_id( 'custom_url' ); ?>"><?php _e( 'Custom link:', 'instagram-slider-widget'); ?></label>
|
450 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'custom_url' ); ?>" name="<?php echo $this->get_field_name( 'custom_url' ); ?>" value="<?php echo $instance['custom_url']; ?>" />
|
451 |
+
<span><?php _e('* use this field only if the above option is set to <strong>Custom Link</strong>', 'instagram-slider-widget'); ?></span>
|
452 |
+
</p>
|
453 |
+
<!--<p>
|
454 |
+
<strong>Advanced Options</strong>
|
455 |
<?php
|
456 |
+
/* $advanced_class = '';
|
457 |
$advanced_text = '[ - Close ]';
|
458 |
if ( '' == trim( $instance['image_link_rel'] ) && '' == trim( $instance['image_link_class'] ) && '' == trim( $instance['image_size'] ) ) {
|
459 |
+
$advanced_class = 'hidden';
|
460 |
$advanced_text = '[ + Open ]';
|
461 |
}
|
462 |
+
*/?>
|
463 |
+
<a href="#" class="jr-advanced"><?php /*echo $advanced_text; */?></a>
|
464 |
+
</p>-->
|
465 |
+
<!-- <div class="jr-advanced-input <?php /*echo $advanced_class;*/ ?>">
|
466 |
+
<div class="jr-image-options">
|
467 |
+
<h4 class="jr-advanced-title"><?php /*_e( 'Advanced Image Options', 'instagram-slider-widget'); */?></h4>
|
468 |
+
<p>
|
469 |
+
<label for="<?php /*echo $this->get_field_id( 'image_link_rel' ); */?>"><?php /*_e( 'Image Link rel attribute', 'instagram-slider-widget' ); */?>:</label>
|
470 |
+
<input class="widefat" id="<?php /*echo $this->get_field_id( 'image_link_rel' ); */?>" name="<?php /*echo $this->get_field_name( 'image_link_rel' ); */?>" value="<?php /*echo $instance['image_link_rel']; */?>" />
|
471 |
+
<span class="jr-description"><?php /*_e( 'Specifies the relationship between the current page and the linked website', 'instagram-slider-widget' ); */?></span>
|
472 |
+
</p>
|
473 |
+
<p>
|
474 |
+
<label for="<?php /*echo $this->get_field_id( 'image_link_class' ); */?>"><?php /*_e( 'Image Link class', 'instagram-slider-widget' ); */?>:</label>
|
475 |
+
<input class="widefat" id="<?php /*echo $this->get_field_id( 'image_link_class' ); */?>" name="<?php /*echo $this->get_field_name( 'image_link_class' ); */?>" value="<?php /*echo $instance['image_link_class']; */?>" />
|
476 |
+
<span class="jr-description"><?php /*_e( 'Usefull if you are using jQuery lightbox plugins to open links', 'instagram-slider-widget' ); */?></span>
|
477 |
+
</p>
|
478 |
+
<p><strong><?php /*_e( 'Disable Pinning:', 'instagram-slider-widget' ); */?></strong>
|
479 |
+
<label class="switch" for="<?php /*echo $this->get_field_id( 'no_pin' ); */?>">
|
480 |
+
<input class="widefat" id="<?php /*echo $this->get_field_id( 'no_pin' ); */?>" name="<?php /*echo $this->get_field_name( 'no_pin' ); */?>" type="checkbox" value="1" <?php /*checked( '1', $instance['no_pin'] ); */?> /><span class="slider round"></span></label>
|
481 |
+
<br><span class="jr-description"><?php /*_e( 'Disable pinning for Pinterest on all images from this widget!', 'instagram-slider-widget') */?></span>
|
482 |
+
</p>
|
483 |
+
</div>
|
484 |
+
</div>-->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
485 |
<?php $widget_id = preg_replace( '/[^0-9]/', '', $this->id ); if ( $widget_id != '' ) : ?>
|
486 |
+
<p>
|
487 |
+
<label for="jr_insta_shortcode"><?php _e('Shortcode of this Widget:', 'instagram-slider-widget'); ?></label>
|
488 |
+
<input id="jr_insta_shortcode" onclick="this.setSelectionRange(0, this.value.length)" type="text" class="widefat" value="[jr_instagram id="<?php echo $widget_id ?>"]" readonly="readonly" style="border:none; color:black; font-family:monospace;">
|
489 |
+
<span class="jr-description"><?php _e( 'Use this shortcode in any page or post to display images with this widget configuration!', 'instagram-slider-widget') ?></span>
|
490 |
+
</p>
|
491 |
<?php endif; ?>
|
492 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
493 |
<?php
|
494 |
}
|
495 |
|
531 |
* @return void
|
532 |
*/
|
533 |
public function instagram_images( $args ) {
|
534 |
+
echo $this->display_images( $args );
|
535 |
}
|
536 |
|
537 |
/**
|
539 |
* @param [type] $username [description]
|
540 |
* @param [type] $refresh_hour [description]
|
541 |
* @param [type] $images [description]
|
|
|
542 |
*/
|
543 |
public function jr_cron_trigger( $username, $refresh_hour, $images ) {
|
544 |
$search_for = array();
|
554 |
* @return string
|
555 |
*/
|
556 |
private function display_images( $args ) {
|
557 |
+
$account = isset( $args['account'] ) && !empty( $args['account'] ) ? $args['account'] : false;
|
558 |
+
$username = isset( $args['username'] ) && !empty( $args['username'] ) ? str_replace( '@', '', $args['username'] ) : false;
|
559 |
$hashtag = isset( $args['hashtag'] ) && !empty( $args['hashtag'] ) ? str_replace( '#', '', $args['hashtag'] ) : false;
|
560 |
$blocked_users = isset( $args['blocked_users'] ) && !empty( $args['blocked_users'] ) ? $args['blocked_users'] : false;
|
561 |
$attachment = isset( $args['attachment'] ) ? true : false;
|
563 |
$orderby = isset( $args['orderby'] ) ? $args['orderby'] : 'rand';
|
564 |
$images_link = isset( $args['images_link'] ) ? $args['images_link'] : 'image_url';
|
565 |
$custom_url = isset( $args['custom_url'] ) ? $args['custom_url'] : '';
|
566 |
+
$images_number = isset( $args['images_number'] ) ? absint( $args['images_number'] ) : 20;
|
567 |
$columns = isset( $args['columns'] ) ? absint( $args['columns'] ) : 4;
|
568 |
$refresh_hour = isset( $args['refresh_hour'] ) ? absint( $args['refresh_hour'] ) : 5;
|
569 |
$image_size = isset( $args['image_size'] ) ? $args['image_size'] : 'standard';
|
572 |
$image_link_class = isset( $args['image_link_class'] ) ? $args['image_link_class'] : '';
|
573 |
$controls = isset( $args['controls'] ) ? $args['controls'] : 'prev_next';
|
574 |
$animation = isset( $args['animation'] ) ? $args['animation'] : 'slide';
|
575 |
+
$caption_words = isset( $args['caption_words'] ) ? $args['caption_words'] : 20;
|
576 |
$slidespeed = isset( $args['slidespeed'] ) ? $args['slidespeed'] : 7000;
|
577 |
$description = isset( $args['description'] ) ? $args['description'] : array();
|
578 |
$widget_id = isset( $args['widget_id'] ) ? $args['widget_id'] : preg_replace( '/[^0-9]/', '', $this->id );
|
579 |
$powered_by_link = isset( $args['support_author'] ) ? true : false;
|
580 |
+
$gutter = isset( $args['gutter'] ) ? $args['gutter'] : 0;
|
581 |
+
$masonry_image_width = isset( $args['masonry_image_width'] ) ? $args['masonry_image_width'] : 200;
|
582 |
+
$slick_slides_to_show = isset( $args['slick_slides_to_show'] ) ? $args['slick_slides_to_show'] : 3;
|
583 |
+
$slick_slides_padding = isset( $args['slick_slides_padding'] ) ? $args['slick_slides_padding'] : 0;
|
584 |
+
$show_feed_header = isset( $args['show_feed_header'] ) ? $args['show_feed_header'] : 0;
|
585 |
+
$highlight_offset = isset( $args['highlight_offset'] ) ? $args['highlight_offset'] : 1;
|
586 |
+
$highlight_pattern = isset( $args['highlight_pattern'] ) ? $args['highlight_pattern'] : 6;
|
587 |
|
588 |
if ( !empty( $description ) && !is_array( $description ) ) {
|
589 |
$description = explode( ',', $description );
|
593 |
$search = 'hashtag';
|
594 |
$search_for['hashtag'] = $hashtag;
|
595 |
$search_for['blocked_users'] = $blocked_users;
|
596 |
+
}
|
597 |
+
elseif(isset ( $args['search_for'] ) && $args['search_for'] == 'account' ) {
|
598 |
+
$search = 'account';
|
599 |
+
$search_for['account'] = $account;
|
600 |
} else {
|
601 |
$search = 'user';
|
602 |
$search_for['username'] = $username;
|
606 |
$refresh_hour = 5;
|
607 |
}
|
608 |
|
609 |
+
|
610 |
$template_args = array(
|
611 |
'search_for' => $search,
|
612 |
'attachment' => $attachment,
|
614 |
'link_rel' => $image_link_rel,
|
615 |
'link_class' => $image_link_class,
|
616 |
'no_pin' => $no_pin,
|
617 |
+
'caption_words' => $caption_words,
|
618 |
+
'masonry_image_width' => $masonry_image_width,
|
619 |
+
'slick_slides_padding' => $slick_slides_padding,
|
620 |
+
'slick_slides_to_show' => $slick_slides_to_show,
|
621 |
+
'highlight_offset' => $highlight_offset,
|
622 |
+
'highlight_pattern' => $highlight_pattern,
|
623 |
+
|
624 |
);
|
625 |
|
626 |
$images_div_class = 'jr-insta-thumb';
|
634 |
$control_nav = ( $controls == 'numberless' ) ? 'true': 'false';
|
635 |
$ul_class = 'slides';
|
636 |
|
637 |
+
if( $template == 'slider' ) {
|
638 |
$images_div_class = 'pllexislider pllexislider-normal instaslider-nr-'. $widget_id;
|
639 |
$slider_script =
|
640 |
"<script type='text/javascript'>" . "\n" .
|
649 |
" });" . "\n" .
|
650 |
" });" . "\n" .
|
651 |
"</script>" . "\n";
|
652 |
+
}
|
653 |
+
if ( $template == 'slick_slider' || $template == 'masonry' || $template == 'highlight') {
|
654 |
+
//return $this->pro_display_images($args);
|
655 |
+
return apply_filters( 'wis/pro/display_images', "", $args, $this );
|
656 |
+
} else {
|
657 |
$images_div_class = 'pllexislider pllexislider-overlay instaslider-nr-'. $widget_id;
|
658 |
$slider_script =
|
659 |
"<script type='text/javascript'>" . "\n" .
|
668 |
" start: function(slider){" . "\n" .
|
669 |
" slider.hover(" . "\n" .
|
670 |
" function () {" . "\n" .
|
671 |
+
" slider.find('.pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeIn();" . "\n" .
|
672 |
" }," . "\n" .
|
673 |
" function () {" . "\n" .
|
674 |
+
" slider.find('.pllex-control-nav, .pllex-direction-nav').stop(true,true).fadeOut();" . "\n" .
|
675 |
" }" . "\n" .
|
676 |
" );" . "\n" .
|
677 |
" }" . "\n" .
|
681 |
}
|
682 |
}
|
683 |
|
684 |
+
//$account = $accounts[$images_data[0]['username']];
|
685 |
+
$images_div = '';
|
686 |
+
$images_ul = "<ul class='no-bullet {$ul_class}' id='slides'>\n";
|
687 |
|
688 |
+
$output = '';
|
689 |
+
$output .= __( 'No images found! <br> Try some other hashtag or username', 'instagram-slider-widget' );
|
690 |
|
691 |
if ( ( $search == 'user' && $attachment ) ) {
|
692 |
|
732 |
|
733 |
$instagram_images = new WP_Query( $query_args );
|
734 |
|
735 |
+
//if ( $instagram_images->have_posts() ) {
|
736 |
+
if ( false ) {
|
737 |
|
738 |
$output = $slider_script . $images_div . $images_ul;
|
739 |
|
760 |
|
761 |
endwhile;
|
762 |
|
763 |
+
$output .= "</ul>\n</div>";
|
764 |
|
765 |
} else {
|
766 |
|
767 |
$images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
|
768 |
|
769 |
if ( is_array( $images_data ) && !empty( $images_data ) ) {
|
770 |
+
if(isset($images_data['error']))
|
771 |
+
{
|
772 |
+
return $images_data['error'];
|
773 |
+
}
|
774 |
|
775 |
if ( $orderby != 'rand' ) {
|
776 |
|
797 |
$template_args['link_to'] = $custom_url;
|
798 |
}
|
799 |
|
800 |
+
$template_args['type'] = $image_data['type'];
|
801 |
$template_args['image'] = $image_data['sizes'][$image_size];
|
802 |
$template_args['caption'] = $image_data['caption'];
|
803 |
$template_args['timestamp'] = $image_data['timestamp'];
|
807 |
$output .= $this->get_template( $template, $template_args );
|
808 |
}
|
809 |
|
810 |
+
$output .= "</ul>\n</div>";
|
811 |
}
|
812 |
|
813 |
}
|
817 |
} else {
|
818 |
|
819 |
$images_data = $this->instagram_data( $search_for, $refresh_hour, $images_number, false );
|
820 |
+
$accounts = WIS_Plugin::app()->getOption( 'account_profiles');
|
821 |
+
$account = $accounts[$images_data[0]['username']];
|
822 |
+
$images_div = '';
|
823 |
+
if($account){
|
824 |
+
$account_data = $account;
|
825 |
+
} else {
|
826 |
+
$data = WIS_Plugin::app()->getOption('profiles_data_by_username');
|
827 |
+
$data = $data['entry_data']['ProfilePage']['0']['graphql']['user'];
|
828 |
+
$account_data = array(
|
829 |
+
'username' => $data['username'],
|
830 |
+
'profile_picture' => $data['profile_pic_url'],
|
831 |
+
'counts' => array(
|
832 |
+
'media' => $data['edge_owner_to_timeline_media']['count'],
|
833 |
+
'followed_by' => $data['edge_followed_by']['count']
|
834 |
+
),
|
835 |
+
);
|
836 |
+
}
|
837 |
+
|
838 |
+
if($show_feed_header && !isset($search_for['hashtag']) ){
|
839 |
+
$images_div .= $this->render_layout_template('feed_header_template', $account_data);
|
840 |
+
}
|
841 |
+
$images_div .= "<div class='{$images_div_class}'>\n";
|
842 |
if ( is_array( $images_data ) && !empty( $images_data ) ) {
|
843 |
+
if(isset($images_data['error'])) {
|
844 |
+
return $images_data['error'];
|
845 |
+
}
|
846 |
|
847 |
if ( $orderby != 'rand' ) {
|
848 |
|
870 |
$template_args['link_to'] = $custom_url;
|
871 |
}
|
872 |
|
873 |
+
$template_args['type'] = $image_data['type'];
|
874 |
$template_args['image'] = $image_data['sizes'][$image_size];
|
875 |
$template_args['caption'] = $image_data['caption'];
|
876 |
$template_args['timestamp'] = $image_data['timestamp'];
|
879 |
$output .= $this->get_template( $template, $template_args );
|
880 |
}
|
881 |
|
882 |
+
$output .= "</ul>\n</div>";
|
883 |
}
|
884 |
}
|
885 |
|
887 |
|
888 |
}
|
889 |
|
890 |
+
/**
|
891 |
+
* Method renders layout template
|
892 |
+
*
|
893 |
+
* @param string $template_name Template name without ".php"
|
894 |
+
*
|
895 |
+
* @param array $args Template arguments
|
896 |
+
*
|
897 |
+
* @return false|string
|
898 |
+
*/
|
899 |
+
private function render_layout_template( $template_name, $args ) {
|
900 |
+
$path = WIS_PLUGIN_DIR."/html_templates/$template_name.php";
|
901 |
+
if(file_exists($path)){
|
902 |
+
ob_start();
|
903 |
+
include $path;
|
904 |
+
return ob_get_clean();
|
905 |
+
} else {
|
906 |
+
return 'This template does not exist!';
|
907 |
+
}
|
908 |
+
}
|
909 |
|
910 |
/**
|
911 |
* Function to display Templates styles
|
919 |
|
920 |
$link_to = isset( $args['link_to'] ) ? $args['link_to'] : false;
|
921 |
$image_url = isset( $args['image'] ) ? $args['image'] : false;
|
922 |
+
$type = isset( $args['type'] ) ? $args['type'] : '';
|
923 |
|
924 |
+
if ( ( $args['search_for'] == 'user' && $args['attachment'] !== true ) || ( $args['search_for'] == 'account' && $args['attachment'] !== true ) || $args['search_for'] == 'hashtag' ) {
|
925 |
$caption = $args['caption'];
|
926 |
$time = $args['timestamp'];
|
927 |
$username = $args['username'];
|
933 |
}
|
934 |
|
935 |
$short_caption = wp_trim_words( $caption, 10, '' );
|
936 |
+
$short_caption = strip_tags($short_caption);
|
937 |
+
|
938 |
$caption = wp_trim_words( $caption, $args['caption_words'], '' );
|
939 |
$nopin = ( 1 == $args['no_pin'] ) ? 'nopin="nopin"' : '';
|
940 |
|
941 |
+
$image_src = "<img src=$image_url $nopin class=$type>";
|
942 |
$image_output = $image_src;
|
943 |
|
944 |
if ( $link_to ) {
|
945 |
+
$image_output = "<a href=$link_to target=_blank";
|
946 |
|
947 |
if ( ! empty( $args['link_rel'] ) ) {
|
948 |
+
$image_output .= " rel={$args['link_rel']}";
|
949 |
}
|
950 |
|
951 |
if ( ! empty( $args['link_class'] ) ) {
|
952 |
+
$image_output .= " class={$args['link_class']}";
|
953 |
}
|
954 |
+
$image_output .= "> $image_src</a>";
|
955 |
}
|
956 |
|
957 |
$output = '';
|
958 |
|
959 |
+
if( $template == 'slider' ) {
|
960 |
+
$output .= "<li style='border:0;' >";
|
|
|
|
|
961 |
|
962 |
$output .= $image_output;
|
963 |
|
964 |
if ( is_array( $args['description'] ) && count( $args['description'] ) >= 1 ) {
|
965 |
|
966 |
+
$output .= "<div class='jr-insta-datacontainer' style=''>\n";
|
967 |
|
968 |
+
if ( in_array( 'username', $args['description'] ) && $username ) {
|
969 |
+
|
970 |
+
$output .= "<span class='jr-insta-username'>by <a rel='nofollow' href='https://www.instagram.com/{$username}/' style='color:black; font-weight: 600' target='_blank'>{$username}</a></span>\n";
|
971 |
+
}
|
972 |
if ( $time && in_array( 'time', $args['description'] ) ) {
|
973 |
$time = human_time_diff( $time );
|
974 |
+
$output .= "<strong><span class='jr-insta-time pull-right' style='font-size: 0.9em'>{$time} ago</span></strong>\n";
|
975 |
+
$output .= "<br>";
|
|
|
|
|
976 |
}
|
977 |
|
978 |
+
|
979 |
if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
|
980 |
+
$caption = preg_replace( '/\@([a-z0-9А-Яа-я_-]+)/u', ' <a href="https://www.instagram.com/$1/" rel="nofollow" style="color:black; font-weight: 600" target="_blank">@$1</a> ', $caption );
|
981 |
+
$caption = preg_replace( '/\#([a-zA-Z0-9А-Яа-я_-]+)/u', ' <a href="https://www.instagram.com/explore/tags/$1/" style="color:black; font-weight: 600" rel="nofollow" target="_blank">$0</a> ', $caption);
|
982 |
+
$output .= "<span class='jr-insta-caption' style='text-align: left !important;'>{$caption}</span>\n";
|
983 |
}
|
984 |
|
985 |
$output .= "</div>\n";
|
986 |
}
|
987 |
|
988 |
$output .= "</li>";
|
|
|
989 |
// Template : Slider with text Overlay on mouse over
|
990 |
} elseif ( $template == 'slider-overlay' ) {
|
991 |
+
$output .= "<li class='".$type."'>";
|
|
|
992 |
|
993 |
$output .= $image_output;
|
994 |
|
1010 |
if ( $caption != '' && in_array( 'caption', $args['description'] ) ) {
|
1011 |
$caption = preg_replace( '/@([a-z0-9_]+)/i', ' <a href="https://www.instagram.com/$1/" rel="nofollow" target="_blank">@$1</a> ', $caption );
|
1012 |
$caption = preg_replace( '/\#([a-zA-Z0-9_-]+)/i', ' <a href="https://www.instagram.com/explore/tags/$1/" rel="nofollow" target="_blank">$0</a> ', $caption);
|
1013 |
+
$output .= "<span class='jr-insta-caption' style='text-align: left !important;'>{$caption}</span>\n";
|
1014 |
}
|
1015 |
|
1016 |
$output .= "</div>\n";
|
1022 |
|
1023 |
// Template : Thumbnails no text
|
1024 |
} elseif ( $template == 'thumbs' || $template == 'thumbs-no-border' ) {
|
1025 |
+
$output .= "<li class='".$type."'>";
|
|
|
1026 |
$output .= $image_output;
|
1027 |
$output .= "</li>";
|
1028 |
|
1037 |
|
1038 |
/**
|
1039 |
* Trigger refresh for new data
|
1040 |
+
* @param bool $instaData
|
1041 |
* @param array $old_args
|
1042 |
* @param array $new_args
|
1043 |
+
* @return bool
|
1044 |
*/
|
1045 |
private function trigger_refresh_data( $instaData, $old_args, $new_args ) {
|
1046 |
|
1074 |
return false;
|
1075 |
}
|
1076 |
|
|
|
1077 |
/**
|
1078 |
+
* Get data from instagram by username
|
1079 |
+
* @param string $username
|
1080 |
+
* @return array
|
1081 |
*/
|
1082 |
+
private function get_data_by_username( $username ) {
|
1083 |
|
1084 |
+
$url = str_replace( '{username}', urlencode( trim( $username ) ), self::USERNAME_URL );
|
1085 |
+
$response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
|
1086 |
|
1087 |
+
if(strstr( $response['body'], '-cx-PRIVATE-Page__main' )) {
|
1088 |
+
return ['error' => __( 'Account not found or for this account there are restrictions on Instagram by age', 'instagram-slider-widget' )];
|
1089 |
+
}
|
|
|
|
|
|
|
|
|
1090 |
|
1091 |
+
$json = str_replace( 'window._sharedData = ', '', strstr( $response['body'], 'window._sharedData = ' ) );
|
1092 |
+
|
1093 |
+
// Compatibility for version of php where strstr() doesnt accept third parameter
|
1094 |
+
if ( version_compare( PHP_VERSION, '5.3.0', '>=' ) ) {
|
1095 |
+
$json = strstr( $json, '</script>', true );
|
1096 |
+
} else {
|
1097 |
+
$json = substr( $json, 0, strpos( $json, '</script>' ) );
|
1098 |
}
|
1099 |
+
$json = rtrim( $json, ';' );
|
|
|
1100 |
|
1101 |
+
// Function json_last_error() is not available before PHP * 5.3.0 version
|
1102 |
+
if ( function_exists( 'json_last_error' ) ) {
|
1103 |
|
1104 |
+
( $results = json_decode( $json, true ) ) && json_last_error() == JSON_ERROR_NONE;
|
1105 |
+
|
1106 |
+
} else {
|
1107 |
+
$results = json_decode( $json, true );
|
1108 |
+
}
|
1109 |
+
|
1110 |
+
return $results;
|
1111 |
+
}
|
|
|
|
|
1112 |
|
1113 |
+
/**
|
1114 |
+
* Stores the fetched data from instagram in WordPress DB using transients
|
1115 |
+
*
|
1116 |
+
* @param string $username Instagram Username to fetch images from
|
1117 |
+
* @param string $cache_hours Cache hours for transient
|
1118 |
+
* @param string $nr_images Nr of images to fetch from instagram
|
1119 |
+
*
|
1120 |
+
* @return array of localy saved instagram data
|
1121 |
+
* @throws \Exception
|
1122 |
+
*/
|
1123 |
+
public function instagram_data( $search_for, $cache_hours, $nr_images, $attachment ) {
|
1124 |
+
|
1125 |
+
//$nr_images = $nr_images <= 12 ? $nr_images : 12;
|
1126 |
+
$blocked_users = isset( $search_for['blocked_users'] ) && !empty( $search_for['blocked_users'] ) ? str_replace( '@', '', $search_for['blocked_users'] ) : false;
|
1127 |
+
if ( isset( $search_for['account'] ) && !empty( $search_for['account'] ) ) {
|
1128 |
+
$search = 'account';
|
1129 |
+
$search_string = $search_for['account'];
|
1130 |
+
} elseif ( isset( $search_for['username'] ) && !empty( $search_for['username'] ) ) {
|
1131 |
$search = 'user';
|
1132 |
$search_string = $search_for['username'];
|
1133 |
} elseif ( isset( $search_for['hashtag'] ) && !empty( $search_for['hashtag'] ) ) {
|
1162 |
|
1163 |
if ( 'user' == $search ) {
|
1164 |
|
1165 |
+
$results = $this->get_data_by_username($search_string);
|
1166 |
+
if(isset($results['error'])) return $results['error'];
|
1167 |
+
|
1168 |
+
WIS_Plugin::app()->updateOption('profiles_data_by_username', $results);
|
1169 |
+
// ************************************
|
1170 |
+
// if instagram not return list of posts
|
1171 |
+
// ************************************
|
1172 |
+
$is_instaLoginPage = !isset($results['entry_data']['ProfilePage']);
|
1173 |
+
if($is_instaLoginPage)
|
1174 |
+
{
|
1175 |
+
return ['error' => __( 'Instagram requires authorization to view a user profile. Use autorized account in widget settings', 'instagram-slider-widget' )];
|
1176 |
}
|
1177 |
+
// ************************************
|
1178 |
+
}
|
1179 |
+
elseif ( 'account' == $search )
|
1180 |
+
{
|
1181 |
+
$nr_images = !$this->WIS->is_premium() && $nr_images > 20 ? 20 : $nr_images;
|
1182 |
+
$account = $this->getAccountById( $search_string);
|
1183 |
+
$args = array(
|
1184 |
+
'body' => array(
|
1185 |
+
'access_token' => $account['token'],
|
1186 |
+
'count' => $nr_images,
|
1187 |
+
)
|
1188 |
+
);
|
1189 |
+
$response = wp_remote_get( self::USERS_SELF_MEDIA_URL , $args );
|
1190 |
+
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
1191 |
+
$media = json_decode( wp_remote_retrieve_body( $response ), true );
|
1192 |
+
$results = $media['data'];
|
1193 |
+
$results = apply_filters('wis/images/count', $results, $media, $nr_images);
|
1194 |
+
|
1195 |
+
if(!count($results))
|
1196 |
+
return ['error' => __( 'There are no publications in this account yet', 'instagram-slider-widget' )];
|
1197 |
+
}
|
1198 |
+
|
1199 |
+
//Обновляем данные профиля: подписчики, количество постов
|
1200 |
+
$this->update_account_profiles( $account['token']);
|
1201 |
+
|
1202 |
+
}
|
1203 |
+
else {
|
1204 |
$url = str_replace( '{tag}', urlencode( trim( $search_string ) ), self::TAG_URL );
|
1205 |
$response = wp_remote_get( $url, array( 'sslverify' => false, 'timeout' => 60 ) );
|
1206 |
$results = json_decode( $response['body'], true );
|
1218 |
|
1219 |
if ( 'user' == $search ) {
|
1220 |
$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'] : array();
|
1221 |
+
} elseif( 'account' == $search ) {
|
1222 |
+
$entry_data = $results;
|
1223 |
} else {
|
1224 |
$entry_data = isset( $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] ) ? $results['graphql']['hashtag']['edge_hashtag_to_media']['edges'] : array();
|
1225 |
}
|
1226 |
|
1227 |
if ( empty( $entry_data ) ) {
|
1228 |
+
return ['error' => __( 'No images found', 'instagram-slider-widget' )];
|
1229 |
}
|
1230 |
|
1231 |
+
foreach ( $entry_data as $current => $result )
|
1232 |
+
{
|
1233 |
+
if( 'account' !== $search ) $result = $result['node'];
|
1234 |
|
1235 |
if ( 'hashtag' == $search ) {
|
1236 |
|
1239 |
continue;
|
1240 |
}
|
1241 |
}
|
1242 |
+
/*
|
1243 |
if ( $result['is_video'] == true ) {
|
1244 |
$nr_images++;
|
1245 |
continue;
|
1246 |
}
|
1247 |
+
*/
|
1248 |
|
1249 |
if ( $current >= $nr_images ) {
|
1250 |
break;
|
1251 |
}
|
1252 |
|
1253 |
+
if ( 'account' == $search ) {
|
1254 |
+
$image_data = $this->to_media_model_from_account( $result );
|
1255 |
+
}
|
1256 |
+
else
|
1257 |
+
$image_data = $this->media_model( $result );
|
1258 |
|
1259 |
if ( 'user' == $search ) {
|
1260 |
$image_data['username'] = $search_string;
|
1261 |
}
|
1262 |
|
1263 |
+
if ( ( $search == 'hashtag' ) || ( $search == 'user' && !$attachment ) || ( $search == 'account' && !$attachment ) ) {
|
1264 |
|
1265 |
$instaData[] = $image_data;
|
1266 |
|
1319 |
return $instaData;
|
1320 |
}
|
1321 |
|
|
|
1322 |
/**
|
1323 |
* @param string $imageUrl
|
1324 |
*
|
1363 |
$medias_model['id'] = $value;
|
1364 |
break;
|
1365 |
case 'code':
|
1366 |
+
case '__typename':
|
1367 |
+
$medias_model['type'] = $value;
|
1368 |
+
break;
|
1369 |
case 'shortcode':
|
1370 |
$medias_model['code'] = $value;
|
1371 |
$medias_model['link'] = 'https://www.instagram.com/p/'. $value . '/';
|
1423 |
return $medias_model;
|
1424 |
}
|
1425 |
|
1426 |
+
/**
|
1427 |
+
* Media Model from account
|
1428 |
+
* @param array $media From API
|
1429 |
+
* @return array To plugin format
|
1430 |
+
*/
|
1431 |
+
private function to_media_model_from_account( $media ) {
|
1432 |
+
|
1433 |
+
$m = array();
|
1434 |
+
$value = $media;
|
1435 |
+
switch ($value['type'])
|
1436 |
+
{
|
1437 |
+
case 'image':
|
1438 |
+
$m['type'] = 'GraphImage';
|
1439 |
+
break;
|
1440 |
+
case 'video':
|
1441 |
+
$m['type'] = 'GraphVideo';
|
1442 |
+
break;
|
1443 |
+
case 'carousel':
|
1444 |
+
$m['type'] = 'GraphSidecar';
|
1445 |
+
break;
|
1446 |
+
}
|
1447 |
+
|
1448 |
+
$m['id'] = $value['id'];
|
1449 |
+
$m['caption'] = $this->sanitize( $value['caption']['text'] );
|
1450 |
+
//$m['code'] = $value;
|
1451 |
+
$m['link'] = $value['link'];
|
1452 |
+
$m['comment_count'] = $value['comments']['count'];
|
1453 |
+
$m['user_id'] = $value['user']['id'];
|
1454 |
+
$m['timestamp'] = $value['created_time'];
|
1455 |
+
$m['height'] = $value['images']['standard_resolution']['height'];
|
1456 |
+
$m['width'] = $value['images']['standard_resolution']['width'];
|
1457 |
+
$m['url'] = $value['images']['standard_resolution']['url'];
|
1458 |
+
$m['likes_count'] = $value['likes']['count'];
|
1459 |
+
$m['popularity'] = (int) ( $m['comment_count'] ) + ( $m['likes_count'] );
|
1460 |
+
$m['sizes']['thumbnail'] = $value['images']['thumbnail']['url'];
|
1461 |
+
$m['sizes']['low'] = $value['images']['low_resolution']['url'];
|
1462 |
+
$m['sizes']['standard'] = $value['images']['standard_resolution']['url'];
|
1463 |
+
$m['sizes']['full'] = $value['images']['standard_resolution']['url'];
|
1464 |
+
$m['username'] = $value['user']['username'];
|
1465 |
+
|
1466 |
+
return $m;
|
1467 |
+
}
|
1468 |
|
1469 |
/**
|
1470 |
* Remove Duplicates
|
1528 |
wp_send_json( $return );
|
1529 |
}
|
1530 |
|
1531 |
+
/**
|
1532 |
+
* Ajax Call to add account by token
|
1533 |
+
*
|
1534 |
+
* @return void
|
1535 |
+
* @throws \Exception
|
1536 |
+
*/
|
1537 |
+
public function add_account_by_token() {
|
1538 |
+
if ( isset( $_POST['token'] ) && ! empty( $_POST['token'] ) ) {
|
1539 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
1540 |
+
wp_die( - 1 );
|
1541 |
+
} else {
|
1542 |
+
check_ajax_referer( 'addAccountByToken' );
|
1543 |
+
|
1544 |
+
$this->update_account_profiles( $_POST['token']);
|
1545 |
+
wp_die('OK');
|
1546 |
+
}
|
1547 |
+
}
|
1548 |
+
}
|
1549 |
+
|
1550 |
+
/**
|
1551 |
+
* Ajax Call to delete account
|
1552 |
+
* @return void
|
1553 |
+
*/
|
1554 |
+
public function delete_account() {
|
1555 |
+
if ( isset( $_POST['item_id'] ) && ! empty( $_POST['item_id'] ) ) {
|
1556 |
+
if ( ! current_user_can( 'manage_options' ) ) {
|
1557 |
+
wp_die( - 1 );
|
1558 |
+
} else {
|
1559 |
+
check_ajax_referer( 'wis_nonce' );
|
1560 |
+
|
1561 |
+
$accounts = WIS_Plugin::app()->getPopulateOption( 'account_profiles');
|
1562 |
+
$accounts_new = array();
|
1563 |
+
foreach($accounts as $name => $acc) { if($acc['id'] !== $_POST['item_id']) $accounts_new[$name] = $acc; }
|
1564 |
+
WIS_Plugin::app()->updatePopulateOption( 'account_profiles', $accounts_new);
|
1565 |
+
|
1566 |
+
wp_send_json_success(__('Account deleted successfully', 'instagram-slider-widget'));
|
1567 |
+
}
|
1568 |
+
}
|
1569 |
+
}
|
1570 |
+
|
1571 |
+
/**
|
1572 |
+
* Get Account data by USERNAME from option in wp_options
|
1573 |
+
*
|
1574 |
+
* @param string id
|
1575 |
+
*
|
1576 |
+
* @return array
|
1577 |
+
*/
|
1578 |
+
public function getAccountById($name)
|
1579 |
+
{
|
1580 |
+
$token = WIS_Plugin::app()->getOption( 'account_profiles' );
|
1581 |
+
return $token[$name];
|
1582 |
+
}
|
1583 |
+
|
1584 |
/**
|
1585 |
* Get Instagram Ids from Usernames into array
|
1586 |
* @param string $usernames Comma separated string with instagram users
|
1600 |
continue;
|
1601 |
}
|
1602 |
|
1603 |
+
$results = $this->get_data_by_username($user);
|
1604 |
+
if ( $results && is_array( $results ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1605 |
|
1606 |
+
$results = $results['entry_data']['ProfilePage']['0']['graphql']['user'];
|
1607 |
+
$user_id = isset( $results['id'] ) ? $results['id'] : false;
|
1608 |
|
1609 |
+
if ( $user_id ) {
|
1610 |
|
1611 |
+
$user_ids[$user] = $user_id;
|
1612 |
|
1613 |
+
set_transient( 'jr_insta_user_ids', $user_ids );
|
1614 |
+
}
|
1615 |
+
}
|
|
|
|
|
|
|
1616 |
}
|
1617 |
}
|
1618 |
|
1748 |
return $a['popularity'] < $b['popularity'];
|
1749 |
}
|
1750 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1751 |
/**
|
1752 |
* Sanitize 4-byte UTF8 chars; no full utf8mb4 support in drupal7+mysql stack.
|
1753 |
* This solution runs in O(n) time BUT assumes that all incoming input is
|
1794 |
return $input;
|
1795 |
}
|
1796 |
|
1797 |
+
/**
|
1798 |
+
* @param $token
|
1799 |
+
*
|
1800 |
+
* @return bool
|
1801 |
+
*/
|
1802 |
+
private function update_account_profiles($token) {
|
1803 |
+
$args = array(
|
1804 |
+
'body' => array(
|
1805 |
+
'access_token' => $token,
|
1806 |
+
)
|
1807 |
+
);
|
1808 |
+
$response = wp_remote_get( self::USERS_SELF_URL, $args);
|
1809 |
+
if ( 200 == wp_remote_retrieve_response_code( $response ) ) {
|
1810 |
+
$user_profile = array();
|
1811 |
+
$user_profile = apply_filters( 'wis/account/profiles', $user_profile );
|
1812 |
+
|
1813 |
+
$user = json_decode( wp_remote_retrieve_body( $response ), true );
|
1814 |
+
$user['data']['token'] = $token;
|
1815 |
+
$user_profile[$user['data']['username']] = $user['data'];
|
1816 |
+
WIS_Plugin::app()->updateOption( 'account_profiles', $user_profile);
|
1817 |
+
return true;
|
1818 |
+
}
|
1819 |
+
return false;
|
1820 |
+
}
|
1821 |
+
|
1822 |
} // end of class WIS_InstagramSlider
|
1823 |
+
?>
|
{libs/factory/adverts/assets/js → includes}/index.php
RENAMED
File without changes
|
instaram_slider.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: Social Slider Widget
|
4 |
-
Plugin URI: https://cm-wp.com/instagram-slider-widget
|
5 |
-
Version: 1.
|
6 |
Description: Social Slider Widget is a responsive slider widget that shows 12 latest images from a public Instagram user and up to 18 images from a hashtag.
|
7 |
Author: creativemotion
|
8 |
Author URI: https://cm-wp.com/
|
@@ -22,7 +22,7 @@ require_once( dirname( __FILE__ ) . '/libs/factory/core/includes/class-factory-r
|
|
22 |
|
23 |
$plugin_info = array(
|
24 |
'prefix' => 'wis_', // Префикс для базы данных и полей формы. Строка должна соответствовать условию [A-z0-9_].
|
25 |
-
'plugin_name' => '
|
26 |
'plugin_title' => __( 'Social Slider Widget', 'instagram-slider-widget' ), // Название плагина. То же что и Plugin Name. Используется в интерфейсе и сообщениях.
|
27 |
'plugin_text_domain' => 'instagram-slider-widget', // Идентификатор перевода, указывается в load_plugin_textdomain()
|
28 |
|
@@ -52,13 +52,14 @@ $plugin_info = array(
|
|
52 |
|
53 |
// Настройка премиум плагина
|
54 |
// Сюда входят настройки лицензирования и премиум обновлений плагина и его надстройки
|
55 |
-
'has_premium' =>
|
56 |
'license_settings' => array(
|
57 |
-
'
|
58 |
-
'
|
59 |
-
'
|
60 |
-
'
|
61 |
-
'
|
|
|
62 |
// Настройка обновлений премиум плагина
|
63 |
'updates_settings' => array(
|
64 |
'maybe_rollback' => true, // Можно ли делать откат к предыдущей версии плагина?
|
@@ -79,15 +80,15 @@ $plugin_info = array(
|
|
79 |
// Подключаемые модуль фреймворка
|
80 |
// Необходимые для ускоренной разработки продуктов Webcrfatic
|
81 |
'load_factory_modules' => array(
|
82 |
-
array( 'libs/factory/bootstrap', '
|
83 |
-
array( 'libs/factory/forms', '
|
84 |
-
array( 'libs/factory/pages', '
|
85 |
-
array( 'libs/factory/freemius', '
|
86 |
-
array( 'libs/factory/adverts', '
|
87 |
)
|
88 |
);
|
89 |
|
90 |
-
$wis_compatibility = new
|
91 |
'plugin_already_activate' => defined( 'WIS_PLUGIN_ACTIVE' ),
|
92 |
'required_php_version' => '5.4',
|
93 |
'required_wp_version' => '4.2.0',
|
@@ -144,10 +145,11 @@ try {
|
|
144 |
add_action( 'network_admin_notices', $wis_plugin_error_func );
|
145 |
}
|
146 |
|
|
|
147 |
/*******************************************************************************/
|
148 |
/**
|
149 |
* On widgets Init register Widget
|
150 |
*/
|
151 |
-
require_once "includes/class-wis_instagram_slider.php";
|
152 |
add_action( 'widgets_init', array( 'WIS_InstagramSlider', 'register_widget' ) );
|
153 |
?>
|
1 |
<?php
|
2 |
/*
|
3 |
Plugin Name: Social Slider Widget
|
4 |
+
Plugin URI: https://cm-wp.com/instagram-slider-widget
|
5 |
+
Version: 1.6.3
|
6 |
Description: Social Slider Widget is a responsive slider widget that shows 12 latest images from a public Instagram user and up to 18 images from a hashtag.
|
7 |
Author: creativemotion
|
8 |
Author URI: https://cm-wp.com/
|
22 |
|
23 |
$plugin_info = array(
|
24 |
'prefix' => 'wis_', // Префикс для базы данных и полей формы. Строка должна соответствовать условию [A-z0-9_].
|
25 |
+
'plugin_name' => 'wisw', // Кодовое название плагина, используется как уникальный идентификатор. Строка должна соответствовать условию [A-z0-9_].
|
26 |
'plugin_title' => __( 'Social Slider Widget', 'instagram-slider-widget' ), // Название плагина. То же что и Plugin Name. Используется в интерфейсе и сообщениях.
|
27 |
'plugin_text_domain' => 'instagram-slider-widget', // Идентификатор перевода, указывается в load_plugin_textdomain()
|
28 |
|
52 |
|
53 |
// Настройка премиум плагина
|
54 |
// Сюда входят настройки лицензирования и премиум обновлений плагина и его надстройки
|
55 |
+
'has_premium' => true, // Есть ли у текущего плагина премиум? Если false, премиум модуль загружен не будет
|
56 |
'license_settings' => array(
|
57 |
+
'has_updates' => true,
|
58 |
+
'provider' => 'freemius', // Тип лицензионного поставщика, может быть freemius, codecanyon, templatemonster
|
59 |
+
'slug' => 'instagram-slider-widget-premium', // Слаг плагина в выбранном поставщике лицензий и обновлений
|
60 |
+
'plugin_id' => '4272', // ID плагина в freemius.com
|
61 |
+
'public_key' => 'pk_5152229a4aba03187267a8bc88874', // Публичный ключ плагина в freemius.com
|
62 |
+
'price' => 39, // Минимальная цена плагина, выводится в рекламных блоках
|
63 |
// Настройка обновлений премиум плагина
|
64 |
'updates_settings' => array(
|
65 |
'maybe_rollback' => true, // Можно ли делать откат к предыдущей версии плагина?
|
80 |
// Подключаемые модуль фреймворка
|
81 |
// Необходимые для ускоренной разработки продуктов Webcrfatic
|
82 |
'load_factory_modules' => array(
|
83 |
+
array( 'libs/factory/bootstrap', 'factory_bootstrap_423', 'admin' ), // Модуль позволяет использовать различные js виджеты и стили оформление форм.
|
84 |
+
array( 'libs/factory/forms', 'factory_forms_420', 'admin' ), // Модуль позволяет быстро создавать формы и готовые поля настроек
|
85 |
+
array( 'libs/factory/pages', 'factory_pages_422', 'admin' ), // Модуль позволяет создавать страницы плагина, в том числе шаблонизированные страницы
|
86 |
+
array( 'libs/factory/freemius', 'factory_freemius_110', 'all' ), // Модуль для работы с freemius.com, содержит api библиотеку и провайдеры для премиум менеджера
|
87 |
+
array( 'libs/factory/adverts', 'factory_adverts_104', 'admin') // Модуль для показа рекламы в админпанели Wordpress, вся реклама вытягивается через API Creative Motion
|
88 |
)
|
89 |
);
|
90 |
|
91 |
+
$wis_compatibility = new Wbcr_Factory422_Requirements( __FILE__, array_merge( $plugin_info, array(
|
92 |
'plugin_already_activate' => defined( 'WIS_PLUGIN_ACTIVE' ),
|
93 |
'required_php_version' => '5.4',
|
94 |
'required_wp_version' => '4.2.0',
|
145 |
add_action( 'network_admin_notices', $wis_plugin_error_func );
|
146 |
}
|
147 |
|
148 |
+
define('WIS_INSTAGRAM_CLIENT_ID', '217c51471f2f4e11abaeaef4a12b99a4');
|
149 |
/*******************************************************************************/
|
150 |
/**
|
151 |
* On widgets Init register Widget
|
152 |
*/
|
153 |
+
require_once WIS_PLUGIN_DIR."/includes/class-wis_instagram_slider.php";
|
154 |
add_action( 'widgets_init', array( 'WIS_InstagramSlider', 'register_widget' ) );
|
155 |
?>
|
languages/index.php
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
languages/instagram-slider-widget-en_US.mo
ADDED
Binary file
|
languages/instagram-slider-widget-en_US.po
ADDED
@@ -0,0 +1,628 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Social Slider Widget\n"
|
4 |
+
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2019-11-08 05:43+0000\n"
|
6 |
+
"PO-Revision-Date: 2019-11-08 05:46+0000\n"
|
7 |
+
"Last-Translator: admin <webtemyk@yandex.ru>\n"
|
8 |
+
"Language-Team: \n"
|
9 |
+
"Language: en_US\n"
|
10 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
11 |
+
"MIME-Version: 1.0\n"
|
12 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
+
"Content-Transfer-Encoding: 8bit\n"
|
14 |
+
"X-Generator: Loco https://localise.biz/\n"
|
15 |
+
"X-Loco-Version: 2.3.1; wp-5.2.4"
|
16 |
+
|
17 |
+
#: includes/class-wis_instagram_slider.php:283
|
18 |
+
msgid " Turn on to save Instagram Images into WordPress media library."
|
19 |
+
msgstr ""
|
20 |
+
|
21 |
+
#: includes/class-wis_instagram_slider.php:450
|
22 |
+
msgid ""
|
23 |
+
"* use this field only if the above option is set to <strong>Custom "
|
24 |
+
"Link</strong>"
|
25 |
+
msgstr ""
|
26 |
+
|
27 |
+
#: includes/class-wis_instagram_slider.php:94
|
28 |
+
msgid ""
|
29 |
+
"1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. "
|
30 |
+
"Copy the shortocde generated at the bottom of the widget form and use it on "
|
31 |
+
"posts or pages."
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
#: includes/class-wis_instagram_slider.php:394
|
35 |
+
msgid "1000 milliseconds = 1 second"
|
36 |
+
msgstr ""
|
37 |
+
|
38 |
+
#: admin/views/tab-license.php:134
|
39 |
+
#, php-format
|
40 |
+
msgid ""
|
41 |
+
"<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
|
42 |
+
"premium version and get the license key to activate it now!"
|
43 |
+
msgstr ""
|
44 |
+
|
45 |
+
#: includes/class-wis_instagram_slider.php:422
|
46 |
+
msgid ""
|
47 |
+
"<strong>Square - Cropped</strong> - option will show square cropped images "
|
48 |
+
"in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display "
|
49 |
+
"the original user uploaded image size."
|
50 |
+
msgstr ""
|
51 |
+
|
52 |
+
#: includes/class-wis_instagram_slider.php:42
|
53 |
+
msgid "A widget that displays a slider with instagram images "
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
+
#: admin/pages/about.php:44
|
57 |
+
msgid "About"
|
58 |
+
msgstr ""
|
59 |
+
|
60 |
+
#: admin/pages/about.php:43
|
61 |
+
msgid "About Social Slider Widget"
|
62 |
+
msgstr ""
|
63 |
+
|
64 |
+
#: includes/class-wis_instagram_slider.php:1552
|
65 |
+
msgid "Account deleted successfully"
|
66 |
+
msgstr ""
|
67 |
+
|
68 |
+
#: includes/class-wis_instagram_slider.php:1131
|
69 |
+
msgid ""
|
70 |
+
"Account not found or for this account there are restrictions on Instagram by "
|
71 |
+
"age"
|
72 |
+
msgstr ""
|
73 |
+
|
74 |
+
#: includes/class-wis_instagram_slider.php:250
|
75 |
+
msgid "Account:"
|
76 |
+
msgstr ""
|
77 |
+
|
78 |
+
#: admin/views/tab-settings.php:51
|
79 |
+
msgid "Action"
|
80 |
+
msgstr ""
|
81 |
+
|
82 |
+
#: admin/views/tab-license.php:11
|
83 |
+
#, php-format
|
84 |
+
msgid "Activate %s"
|
85 |
+
msgstr ""
|
86 |
+
|
87 |
+
#: admin/views/tab-license.php:84
|
88 |
+
msgid "active sites"
|
89 |
+
msgstr ""
|
90 |
+
|
91 |
+
#: admin/views/tab-settings.php:32 admin/views/tab-settings.php:36
|
92 |
+
msgid "Add Account"
|
93 |
+
msgstr ""
|
94 |
+
|
95 |
+
#: includes/class-wis_instagram_slider.php:267
|
96 |
+
msgid "Add account in settings"
|
97 |
+
msgstr ""
|
98 |
+
|
99 |
+
#: includes/class-wis-plugin.php:127
|
100 |
+
msgid "Are you sure want to delete this account?"
|
101 |
+
msgstr ""
|
102 |
+
|
103 |
+
#: includes/class-wis_instagram_slider.php:441
|
104 |
+
msgid "Attachment Page"
|
105 |
+
msgstr ""
|
106 |
+
|
107 |
+
#: admin/views/tab-about.php:149
|
108 |
+
msgid "BENEFITS"
|
109 |
+
msgstr ""
|
110 |
+
|
111 |
+
#: includes/class-wis_instagram_slider.php:275
|
112 |
+
msgid "Block Users"
|
113 |
+
msgstr ""
|
114 |
+
|
115 |
+
#: admin/views/tab-license.php:138
|
116 |
+
#, php-format
|
117 |
+
msgid ""
|
118 |
+
"Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
|
119 |
+
"this page</a> and login using the e-mail address associated with your "
|
120 |
+
"purchase."
|
121 |
+
msgstr ""
|
122 |
+
|
123 |
+
#: includes/class-wis_instagram_slider.php:400
|
124 |
+
msgid "Caption"
|
125 |
+
msgstr ""
|
126 |
+
|
127 |
+
#: includes/class-wis_instagram_slider.php:305
|
128 |
+
msgid "Check for new images every:"
|
129 |
+
msgstr ""
|
130 |
+
|
131 |
+
#: includes/class-wis_instagram_slider.php:293
|
132 |
+
msgid "Count of images to show:"
|
133 |
+
msgstr ""
|
134 |
+
|
135 |
+
#. Author of the plugin
|
136 |
+
msgid "creativemotion"
|
137 |
+
msgstr ""
|
138 |
+
|
139 |
+
#: includes/class-wis_instagram_slider.php:442
|
140 |
+
msgid "Custom Link"
|
141 |
+
msgstr ""
|
142 |
+
|
143 |
+
#: includes/class-wis_instagram_slider.php:448
|
144 |
+
msgid "Custom link:"
|
145 |
+
msgstr ""
|
146 |
+
|
147 |
+
#: includes/class-wis_instagram_slider.php:427
|
148 |
+
msgid "Date - Ascending"
|
149 |
+
msgstr ""
|
150 |
+
|
151 |
+
#: includes/class-wis_instagram_slider.php:428
|
152 |
+
msgid "Date - Descending"
|
153 |
+
msgstr ""
|
154 |
+
|
155 |
+
#: admin/views/tab-license.php:105
|
156 |
+
msgid "day(s)"
|
157 |
+
msgstr ""
|
158 |
+
|
159 |
+
#: admin/views/tab-settings.php:72
|
160 |
+
msgid "Delete"
|
161 |
+
msgstr ""
|
162 |
+
|
163 |
+
#: admin/views/tab-license.php:31
|
164 |
+
msgid "Delete Key"
|
165 |
+
msgstr ""
|
166 |
+
|
167 |
+
#: admin/views/tab-about.php:123
|
168 |
+
msgid ""
|
169 |
+
"Display Instagram feeds in widgets, posts, pages, or anywhere else using "
|
170 |
+
"shortcodes."
|
171 |
+
msgstr ""
|
172 |
+
|
173 |
+
#: admin/views/tab-license.php:72
|
174 |
+
msgid "domain"
|
175 |
+
msgstr ""
|
176 |
+
|
177 |
+
#: includes/class-wis_instagram_slider.php:384
|
178 |
+
msgid "Dotted"
|
179 |
+
msgstr ""
|
180 |
+
|
181 |
+
#: includes/class-wis_instagram_slider.php:277
|
182 |
+
msgid "Enter usernames separated by commas whose images you don't want to show"
|
183 |
+
msgstr ""
|
184 |
+
|
185 |
+
#: admin/views/tab-license.php:94
|
186 |
+
msgid "EXPIRED!"
|
187 |
+
msgstr ""
|
188 |
+
|
189 |
+
#: includes/class-wis_instagram_slider.php:389
|
190 |
+
msgid "Fade"
|
191 |
+
msgstr ""
|
192 |
+
|
193 |
+
#: admin/views/tab-about.php:128
|
194 |
+
msgid "FEATURES"
|
195 |
+
msgstr ""
|
196 |
+
|
197 |
+
#: admin/views/tab-about.php:200
|
198 |
+
msgid "FEEDBACK AND SUPPORT"
|
199 |
+
msgstr ""
|
200 |
+
|
201 |
+
#: includes/class-wis_instagram_slider.php:420
|
202 |
+
msgid "Full Size"
|
203 |
+
msgstr ""
|
204 |
+
|
205 |
+
#: admin/pages/settings.php:148
|
206 |
+
msgid "General"
|
207 |
+
msgstr ""
|
208 |
+
|
209 |
+
#: includes/class-wis_instagram_slider.php:272
|
210 |
+
msgid "Hashtag:"
|
211 |
+
msgstr ""
|
212 |
+
|
213 |
+
#: admin/views/tab-license.php:120
|
214 |
+
msgid "Have a key to activate the plugin? Paste it here:"
|
215 |
+
msgstr ""
|
216 |
+
|
217 |
+
#: admin/views/tab-license.php:118
|
218 |
+
msgid "Have a key to activate the premium version? Paste it here:"
|
219 |
+
msgstr ""
|
220 |
+
|
221 |
+
#: includes/class-wis_instagram_slider.php:402
|
222 |
+
msgid ""
|
223 |
+
"Hold ctrl and click the fields you want to show/hide on your slider. Leave "
|
224 |
+
"all unselected to hide them all. Default all selected."
|
225 |
+
msgstr ""
|
226 |
+
|
227 |
+
#: includes/class-wis_instagram_slider.php:307
|
228 |
+
msgid "hours"
|
229 |
+
msgstr ""
|
230 |
+
|
231 |
+
#. Author URI of the plugin
|
232 |
+
msgid "https://cm-wp.com/"
|
233 |
+
msgstr ""
|
234 |
+
|
235 |
+
#. URI of the plugin
|
236 |
+
msgid "https://cm-wp.com/instagram-slider-widget"
|
237 |
+
msgstr ""
|
238 |
+
|
239 |
+
#: admin/views/tab-settings.php:47
|
240 |
+
msgid "ID"
|
241 |
+
msgstr ""
|
242 |
+
|
243 |
+
#: admin/views/tab-settings.php:46
|
244 |
+
msgid "Image"
|
245 |
+
msgstr ""
|
246 |
+
|
247 |
+
#: includes/class-wis_instagram_slider.php:415
|
248 |
+
msgid "Image format"
|
249 |
+
msgstr ""
|
250 |
+
|
251 |
+
#: includes/class-wis_instagram_slider.php:440
|
252 |
+
msgid "Image URL"
|
253 |
+
msgstr ""
|
254 |
+
|
255 |
+
#: includes/class-wis_instagram_slider.php:354
|
256 |
+
msgid "Image width:"
|
257 |
+
msgstr ""
|
258 |
+
|
259 |
+
#: admin/pages/settings.php:158
|
260 |
+
msgid "Instagram account"
|
261 |
+
msgstr ""
|
262 |
+
|
263 |
+
#: includes/class-wis_instagram_slider.php:438
|
264 |
+
msgid "Instagram Image"
|
265 |
+
msgstr ""
|
266 |
+
|
267 |
+
#: admin/pages/settings.php:166
|
268 |
+
msgid "Instagram password"
|
269 |
+
msgstr ""
|
270 |
+
|
271 |
+
#: includes/class-wis_instagram_slider.php:439
|
272 |
+
msgid "Instagram Profile"
|
273 |
+
msgstr ""
|
274 |
+
|
275 |
+
#: includes/class-wis_instagram_slider.php:1161
|
276 |
+
msgid ""
|
277 |
+
"Instagram requires authorization to view a user profile. Use autorized "
|
278 |
+
"account in widget settings"
|
279 |
+
msgstr ""
|
280 |
+
|
281 |
+
#: admin/pages/license.php:90
|
282 |
+
msgid "License"
|
283 |
+
msgstr ""
|
284 |
+
|
285 |
+
#: admin/ajax/check-license.php:39
|
286 |
+
msgid ""
|
287 |
+
"License key is empty or license key too long (license key is 32 characters "
|
288 |
+
"long)"
|
289 |
+
msgstr ""
|
290 |
+
|
291 |
+
#: admin/pages/license.php:91
|
292 |
+
msgid "License of Social Slider Widget"
|
293 |
+
msgstr ""
|
294 |
+
|
295 |
+
#: admin/ajax/check-license.php:27
|
296 |
+
msgid "Licensing action not passed or this action is prohibited!"
|
297 |
+
msgstr ""
|
298 |
+
|
299 |
+
#: includes/class-wis_instagram_slider.php:436
|
300 |
+
msgid "Link to"
|
301 |
+
msgstr ""
|
302 |
+
|
303 |
+
#: includes/class-wis_instagram_slider.php:418
|
304 |
+
msgid "Low - 320x320"
|
305 |
+
msgstr ""
|
306 |
+
|
307 |
+
#: includes/class-wis_instagram_slider.php:345
|
308 |
+
msgid "max is 10 ( only for thumbnails template )"
|
309 |
+
msgstr ""
|
310 |
+
|
311 |
+
#: includes/class-wis_instagram_slider.php:297
|
312 |
+
msgid "Maximum 20 images in free version."
|
313 |
+
msgstr ""
|
314 |
+
|
315 |
+
#: includes/class-wis_instagram_slider.php:393
|
316 |
+
msgid "milliseconds"
|
317 |
+
msgstr ""
|
318 |
+
|
319 |
+
#: admin/views/tab-settings.php:33
|
320 |
+
#, php-format
|
321 |
+
msgid "More accounts in <a href='%s'>PRO version</a>"
|
322 |
+
msgstr ""
|
323 |
+
|
324 |
+
#: includes/class-wis_instagram_slider.php:298
|
325 |
+
#, php-format
|
326 |
+
msgid "More in <a href='%s'>PRO version</a>"
|
327 |
+
msgstr ""
|
328 |
+
|
329 |
+
#: admin/views/tab-settings.php:49
|
330 |
+
msgid "Name"
|
331 |
+
msgstr ""
|
332 |
+
|
333 |
+
#: includes/class-wis_instagram_slider.php:1214
|
334 |
+
msgid "No images found"
|
335 |
+
msgstr ""
|
336 |
+
|
337 |
+
#: includes/class-wis_instagram_slider.php:688
|
338 |
+
msgid "No images found! <br> Try some other hashtag or username"
|
339 |
+
msgstr ""
|
340 |
+
|
341 |
+
#: includes/class-wis_instagram_slider.php:385
|
342 |
+
msgid "No Navigation"
|
343 |
+
msgstr ""
|
344 |
+
|
345 |
+
#: includes/class-wis_instagram_slider.php:443
|
346 |
+
msgid "None"
|
347 |
+
msgstr ""
|
348 |
+
|
349 |
+
#: includes/class-wis_instagram_slider.php:1100
|
350 |
+
msgid "Nothing to search for"
|
351 |
+
msgstr ""
|
352 |
+
|
353 |
+
#: includes/class-wis_instagram_slider.php:343
|
354 |
+
msgid "Number of Columns:"
|
355 |
+
msgstr ""
|
356 |
+
|
357 |
+
#: includes/class-wis_instagram_slider.php:410
|
358 |
+
msgid "Number of words in caption:"
|
359 |
+
msgstr ""
|
360 |
+
|
361 |
+
#: admin/views/tab-license.php:82
|
362 |
+
msgid "of"
|
363 |
+
msgstr ""
|
364 |
+
|
365 |
+
#: includes/class-wis_instagram_slider.php:372
|
366 |
+
msgid "Offset"
|
367 |
+
msgstr ""
|
368 |
+
|
369 |
+
#: includes/class-wis_instagram_slider.php:425
|
370 |
+
msgid "Order by"
|
371 |
+
msgstr ""
|
372 |
+
|
373 |
+
#: admin/pages/settings.php:168
|
374 |
+
msgid "Password of your Instagram account"
|
375 |
+
msgstr ""
|
376 |
+
|
377 |
+
#: includes/class-wis_instagram_slider.php:376
|
378 |
+
msgid "Pattern"
|
379 |
+
msgstr ""
|
380 |
+
|
381 |
+
#: includes/class-wis_instagram_slider.php:362
|
382 |
+
msgid "pictures"
|
383 |
+
msgstr ""
|
384 |
+
|
385 |
+
#: includes/class-wis_instagram_slider.php:360
|
386 |
+
msgid "Pictures per slide:"
|
387 |
+
msgstr ""
|
388 |
+
|
389 |
+
#: admin/views/tab-license.php:76
|
390 |
+
msgid "plan"
|
391 |
+
msgstr ""
|
392 |
+
|
393 |
+
#: admin/views/tab-license.php:95
|
394 |
+
msgid "please update the key"
|
395 |
+
msgstr ""
|
396 |
+
|
397 |
+
#: includes/class-wis_instagram_slider.php:429
|
398 |
+
msgid "Popularity - Ascending"
|
399 |
+
msgstr ""
|
400 |
+
|
401 |
+
#: includes/class-wis_instagram_slider.php:430
|
402 |
+
msgid "Popularity - Descending"
|
403 |
+
msgstr ""
|
404 |
+
|
405 |
+
#: includes/class-wis_instagram_slider.php:383
|
406 |
+
msgid "Prev & Next"
|
407 |
+
msgstr ""
|
408 |
+
|
409 |
+
#: admin/views/tab-about.php:163
|
410 |
+
msgid "PRO VERSION"
|
411 |
+
msgstr ""
|
412 |
+
|
413 |
+
#: admin/views/tab-license.php:54
|
414 |
+
msgid ""
|
415 |
+
"Public License is a GPLv2 compatible license allowing you to change and use "
|
416 |
+
"this version of the plugin for free. Please keep in mind this license covers "
|
417 |
+
"only free edition of the plugin. Premium versions are distributed with other "
|
418 |
+
"type of a license."
|
419 |
+
msgstr ""
|
420 |
+
|
421 |
+
#: includes/class-wis_instagram_slider.php:351
|
422 |
+
#: includes/class-wis_instagram_slider.php:356
|
423 |
+
msgid "px"
|
424 |
+
msgstr ""
|
425 |
+
|
426 |
+
#: includes/class-wis_instagram_slider.php:431
|
427 |
+
msgid "Random"
|
428 |
+
msgstr ""
|
429 |
+
|
430 |
+
#: admin/views/tab-license.php:107
|
431 |
+
msgid "remained"
|
432 |
+
msgstr ""
|
433 |
+
|
434 |
+
#: includes/class-wis_instagram_slider.php:279
|
435 |
+
msgid "Save in Media Library: "
|
436 |
+
msgstr ""
|
437 |
+
|
438 |
+
#: includes/class-wis_instagram_slider.php:246
|
439 |
+
msgid "Search Instagram for:"
|
440 |
+
msgstr ""
|
441 |
+
|
442 |
+
#: admin/pages/settings.php:108
|
443 |
+
msgid "Settings"
|
444 |
+
msgstr ""
|
445 |
+
|
446 |
+
#: admin/pages/settings.php:107
|
447 |
+
msgid "Settings of Social Slider Widget"
|
448 |
+
msgstr ""
|
449 |
+
|
450 |
+
#: includes/class-wis_instagram_slider.php:486
|
451 |
+
msgid "Shortcode of this Widget:"
|
452 |
+
msgstr ""
|
453 |
+
|
454 |
+
#: includes/class-wis_instagram_slider.php:311
|
455 |
+
msgid "Show feed header:"
|
456 |
+
msgstr ""
|
457 |
+
|
458 |
+
#: includes/class-wis_instagram_slider.php:388
|
459 |
+
msgid "Slide"
|
460 |
+
msgstr ""
|
461 |
+
|
462 |
+
#: includes/class-wis_instagram_slider.php:391
|
463 |
+
msgid "Slide Speed:"
|
464 |
+
msgstr ""
|
465 |
+
|
466 |
+
#: includes/class-wis_instagram_slider.php:387
|
467 |
+
msgid "Slider Animation:"
|
468 |
+
msgstr ""
|
469 |
+
|
470 |
+
#: includes/class-wis_instagram_slider.php:382
|
471 |
+
msgid "Slider Navigation Controls:"
|
472 |
+
msgstr ""
|
473 |
+
|
474 |
+
#: includes/class-wis_instagram_slider.php:396
|
475 |
+
msgid "Slider Text Description:"
|
476 |
+
msgstr ""
|
477 |
+
|
478 |
+
#: includes/class-wis_instagram_slider.php:40
|
479 |
+
#: includes/class-wis_instagram_slider.php:204
|
480 |
+
msgid "Social Slider"
|
481 |
+
msgstr ""
|
482 |
+
|
483 |
+
#: includes/class-wis_instagram_slider.php:92
|
484 |
+
msgid "Social Slider - Shortcode Generator"
|
485 |
+
msgstr ""
|
486 |
+
|
487 |
+
#. Name of the plugin
|
488 |
+
#: instaram_slider.php:26 admin/views/tab-about.php:122
|
489 |
+
msgid "Social Slider Widget"
|
490 |
+
msgstr ""
|
491 |
+
|
492 |
+
#. Description of the plugin
|
493 |
+
msgid ""
|
494 |
+
"Social Slider Widget is a responsive slider widget that shows 12 latest "
|
495 |
+
"images from a public Instagram user and up to 18 images from a hashtag."
|
496 |
+
msgstr ""
|
497 |
+
|
498 |
+
#: admin/pages/widgets.php:107 admin/pages/widgets.php:108
|
499 |
+
msgid "Social Slider Widgets"
|
500 |
+
msgstr ""
|
501 |
+
|
502 |
+
#: includes/class-wis_instagram_slider.php:365
|
503 |
+
msgid "Space between pictures:"
|
504 |
+
msgstr ""
|
505 |
+
|
506 |
+
#: includes/class-wis_instagram_slider.php:419
|
507 |
+
msgid "Standard - 640x640"
|
508 |
+
msgstr ""
|
509 |
+
|
510 |
+
#: admin/views/tab-license.php:126
|
511 |
+
msgid "Submit Key"
|
512 |
+
msgstr ""
|
513 |
+
|
514 |
+
#: admin/ajax/check-license.php:55
|
515 |
+
msgid "Subscription success cancelled"
|
516 |
+
msgstr ""
|
517 |
+
|
518 |
+
#: admin/views/tab-license.php:35
|
519 |
+
msgid "Synchronization"
|
520 |
+
msgstr ""
|
521 |
+
|
522 |
+
#: includes/class-wis_instagram_slider.php:318
|
523 |
+
msgid "Template"
|
524 |
+
msgstr ""
|
525 |
+
|
526 |
+
#: admin/ajax/check-license.php:51
|
527 |
+
msgid "The license has been updated"
|
528 |
+
msgstr ""
|
529 |
+
|
530 |
+
#: admin/ajax/check-license.php:47
|
531 |
+
msgid "The license is deactivated"
|
532 |
+
msgstr ""
|
533 |
+
|
534 |
+
#: includes/class-wis_instagram_slider.php:1182
|
535 |
+
msgid "There are no publications in this account yet"
|
536 |
+
msgstr ""
|
537 |
+
|
538 |
+
#: includes/class-wis_instagram_slider.php:417
|
539 |
+
msgid "Thumbnail - 150x150"
|
540 |
+
msgstr ""
|
541 |
+
|
542 |
+
#: includes/class-wis_instagram_slider.php:399
|
543 |
+
msgid "Time"
|
544 |
+
msgstr ""
|
545 |
+
|
546 |
+
#: includes/class-wis_instagram_slider.php:242
|
547 |
+
msgid "Title:"
|
548 |
+
msgstr ""
|
549 |
+
|
550 |
+
#: admin/views/tab-settings.php:50
|
551 |
+
msgid "Token"
|
552 |
+
msgstr ""
|
553 |
+
|
554 |
+
#: admin/views/tab-license.php:22
|
555 |
+
#, php-format
|
556 |
+
msgid "Upgrade to Premium for $%s"
|
557 |
+
msgstr ""
|
558 |
+
|
559 |
+
#: includes/class-wis_instagram_slider.php:488
|
560 |
+
msgid ""
|
561 |
+
"Use this shortcode in any page or post to display images with this widget "
|
562 |
+
"configuration!"
|
563 |
+
msgstr ""
|
564 |
+
|
565 |
+
#: admin/views/tab-settings.php:48
|
566 |
+
msgid "User"
|
567 |
+
msgstr ""
|
568 |
+
|
569 |
+
#: includes/class-wis_instagram_slider.php:398
|
570 |
+
msgid "Username"
|
571 |
+
msgstr ""
|
572 |
+
|
573 |
+
#: admin/pages/settings.php:160
|
574 |
+
msgid "Username of your Instagram account"
|
575 |
+
msgstr ""
|
576 |
+
|
577 |
+
#: includes/class-wis_instagram_slider.php:271
|
578 |
+
msgid "Username:"
|
579 |
+
msgstr ""
|
580 |
+
|
581 |
+
#: admin/views/tab-license.php:89
|
582 |
+
msgid "version"
|
583 |
+
msgstr ""
|
584 |
+
|
585 |
+
#: includes/class-wis_instagram_slider.php:349
|
586 |
+
msgid "Vertical space between item elements:"
|
587 |
+
msgstr ""
|
588 |
+
|
589 |
+
#: admin/views/tab-about.php:209
|
590 |
+
msgid "WHY DO YOU NEED IT?"
|
591 |
+
msgstr ""
|
592 |
+
|
593 |
+
#: admin/pages/widgets.php:109
|
594 |
+
msgid "Widgets"
|
595 |
+
msgstr ""
|
596 |
+
|
597 |
+
#: includes/class-wis_instagram_slider.php:272
|
598 |
+
msgid "without # sign"
|
599 |
+
msgstr ""
|
600 |
+
|
601 |
+
#: admin/views/tab-settings.php:21
|
602 |
+
msgid ""
|
603 |
+
"Without authorization Instagram limits the number of requests, and after "
|
604 |
+
"exceeding the limit asks to log in, so an error is displayed that no images "
|
605 |
+
"were found."
|
606 |
+
msgstr ""
|
607 |
+
|
608 |
+
#: admin/views/tab-license.php:58
|
609 |
+
msgid ""
|
610 |
+
"You use a paid subscription for the plugin updates. In case you don’t want "
|
611 |
+
"to receive paid updates, please, click <a data-action=\"unsubscribe\" "
|
612 |
+
"class=\"wis-control-btn\" href=\"#\">cancel subscription</a>"
|
613 |
+
msgstr ""
|
614 |
+
|
615 |
+
#: admin/views/tab-license.php:25
|
616 |
+
#, php-format
|
617 |
+
msgid "Your current license for %1$s:"
|
618 |
+
msgstr ""
|
619 |
+
|
620 |
+
#: admin/ajax/check-license.php:42
|
621 |
+
msgid "Your license has been successfully activated"
|
622 |
+
msgstr ""
|
623 |
+
|
624 |
+
#: admin/views/tab-license.php:64
|
625 |
+
msgid ""
|
626 |
+
"Your license has expired, please extend the license to get updates and "
|
627 |
+
"support."
|
628 |
+
msgstr ""
|
languages/instagram-slider-widget-ru_RU.mo
ADDED
Binary file
|
languages/instagram-slider-widget-ru_RU.po
ADDED
@@ -0,0 +1,644 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Social Slider Widget\n"
|
4 |
+
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2019-11-08 05:43+0000\n"
|
6 |
+
"PO-Revision-Date: 2019-11-08 07:03+0000\n"
|
7 |
+
"Last-Translator: admin <webtemyk@yandex.ru>\n"
|
8 |
+
"Language-Team: Русский\n"
|
9 |
+
"Language: ru_RU\n"
|
10 |
+
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && "
|
11 |
+
"n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2);\n"
|
12 |
+
"MIME-Version: 1.0\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"X-Generator: Loco https://localise.biz/\n"
|
16 |
+
"X-Loco-Version: 2.3.1; wp-5.2.4"
|
17 |
+
|
18 |
+
#: includes/class-wis_instagram_slider.php:283
|
19 |
+
msgid " Turn on to save Instagram Images into WordPress media library."
|
20 |
+
msgstr "Сохранять изображения в медиабиблиотеке Wordpress"
|
21 |
+
|
22 |
+
#: includes/class-wis_instagram_slider.php:450
|
23 |
+
msgid ""
|
24 |
+
"* use this field only if the above option is set to <strong>Custom "
|
25 |
+
"Link</strong>"
|
26 |
+
msgstr ""
|
27 |
+
"* используйте это поле только в том случае, если для параметра выше задано "
|
28 |
+
"значение <strong>Произвольная ссылка</strong>"
|
29 |
+
|
30 |
+
#: includes/class-wis_instagram_slider.php:94
|
31 |
+
msgid ""
|
32 |
+
"1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. "
|
33 |
+
"Copy the shortocde generated at the bottom of the widget form and use it on "
|
34 |
+
"posts or pages."
|
35 |
+
msgstr ""
|
36 |
+
"1. Перетащите Social Slider Widget сюда. 2. Заполните поля и нажмите "
|
37 |
+
"Сохранить. 3. Скопируйте шорткод, созданный в нижней части формы виджета, и "
|
38 |
+
"используйте его в постах или страницах."
|
39 |
+
|
40 |
+
#: includes/class-wis_instagram_slider.php:394
|
41 |
+
msgid "1000 milliseconds = 1 second"
|
42 |
+
msgstr "1000 миллисекунд = 1 секунда"
|
43 |
+
|
44 |
+
#: admin/views/tab-license.php:134
|
45 |
+
#, php-format
|
46 |
+
msgid ""
|
47 |
+
"<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
|
48 |
+
"premium version and get the license key to activate it now!"
|
49 |
+
msgstr ""
|
50 |
+
"<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Узнайте больше</a> о "
|
51 |
+
"премиум версии и получите лицензионный ключ, чтобы активировать его сейчас!"
|
52 |
+
|
53 |
+
#: includes/class-wis_instagram_slider.php:422
|
54 |
+
msgid ""
|
55 |
+
"<strong>Square - Cropped</strong> - option will show square cropped images "
|
56 |
+
"in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display "
|
57 |
+
"the original user uploaded image size."
|
58 |
+
msgstr ""
|
59 |
+
|
60 |
+
#: includes/class-wis_instagram_slider.php:42
|
61 |
+
msgid "A widget that displays a slider with instagram images "
|
62 |
+
msgstr "Виджет, который отображает слайдер с изображениями instagram"
|
63 |
+
|
64 |
+
#: admin/pages/about.php:44
|
65 |
+
msgid "About"
|
66 |
+
msgstr "О плагине"
|
67 |
+
|
68 |
+
#: admin/pages/about.php:43
|
69 |
+
msgid "About Social Slider Widget"
|
70 |
+
msgstr "Описание Social Slider Widget"
|
71 |
+
|
72 |
+
#: includes/class-wis_instagram_slider.php:1552
|
73 |
+
msgid "Account deleted successfully"
|
74 |
+
msgstr ""
|
75 |
+
|
76 |
+
#: includes/class-wis_instagram_slider.php:1131
|
77 |
+
msgid ""
|
78 |
+
"Account not found or for this account there are restrictions on Instagram by "
|
79 |
+
"age"
|
80 |
+
msgstr ""
|
81 |
+
"Аккаунт не найден или для этого аккаунта действуют возрастные ограничения"
|
82 |
+
|
83 |
+
#: includes/class-wis_instagram_slider.php:250
|
84 |
+
msgid "Account:"
|
85 |
+
msgstr "Аккаунт:"
|
86 |
+
|
87 |
+
#: admin/views/tab-settings.php:51
|
88 |
+
msgid "Action"
|
89 |
+
msgstr "Действия"
|
90 |
+
|
91 |
+
#: admin/views/tab-license.php:11
|
92 |
+
#, php-format
|
93 |
+
msgid "Activate %s"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
#: admin/views/tab-license.php:84
|
97 |
+
msgid "active sites"
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: admin/views/tab-settings.php:32 admin/views/tab-settings.php:36
|
101 |
+
msgid "Add Account"
|
102 |
+
msgstr "Добавить аккаунт"
|
103 |
+
|
104 |
+
#: includes/class-wis_instagram_slider.php:267
|
105 |
+
msgid "Add account in settings"
|
106 |
+
msgstr "Добавить аккаунт в настройках"
|
107 |
+
|
108 |
+
#: includes/class-wis-plugin.php:127
|
109 |
+
msgid "Are you sure want to delete this account?"
|
110 |
+
msgstr "Вы уверена, что хотите удалить этот аккаунт?"
|
111 |
+
|
112 |
+
#: includes/class-wis_instagram_slider.php:441
|
113 |
+
msgid "Attachment Page"
|
114 |
+
msgstr ""
|
115 |
+
|
116 |
+
#: admin/views/tab-about.php:149
|
117 |
+
msgid "BENEFITS"
|
118 |
+
msgstr ""
|
119 |
+
|
120 |
+
#: includes/class-wis_instagram_slider.php:275
|
121 |
+
msgid "Block Users"
|
122 |
+
msgstr "Заблокированные пользователи"
|
123 |
+
|
124 |
+
#: admin/views/tab-license.php:138
|
125 |
+
#, php-format
|
126 |
+
msgid ""
|
127 |
+
"Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
|
128 |
+
"this page</a> and login using the e-mail address associated with your "
|
129 |
+
"purchase."
|
130 |
+
msgstr ""
|
131 |
+
|
132 |
+
#: includes/class-wis_instagram_slider.php:400
|
133 |
+
msgid "Caption"
|
134 |
+
msgstr "Заголовок"
|
135 |
+
|
136 |
+
#: includes/class-wis_instagram_slider.php:305
|
137 |
+
msgid "Check for new images every:"
|
138 |
+
msgstr "Проверять новые изображения каждые:"
|
139 |
+
|
140 |
+
#: includes/class-wis_instagram_slider.php:293
|
141 |
+
msgid "Count of images to show:"
|
142 |
+
msgstr "Кол-во изображений для показа:"
|
143 |
+
|
144 |
+
#. Author of the plugin
|
145 |
+
msgid "creativemotion"
|
146 |
+
msgstr "creativemotion"
|
147 |
+
|
148 |
+
#: includes/class-wis_instagram_slider.php:442
|
149 |
+
msgid "Custom Link"
|
150 |
+
msgstr "Произвольная ссылка"
|
151 |
+
|
152 |
+
#: includes/class-wis_instagram_slider.php:448
|
153 |
+
msgid "Custom link:"
|
154 |
+
msgstr "Произвольная ссылка:"
|
155 |
+
|
156 |
+
#: includes/class-wis_instagram_slider.php:427
|
157 |
+
msgid "Date - Ascending"
|
158 |
+
msgstr "Дата - по возрастанию"
|
159 |
+
|
160 |
+
#: includes/class-wis_instagram_slider.php:428
|
161 |
+
msgid "Date - Descending"
|
162 |
+
msgstr "Дата - по убыванию"
|
163 |
+
|
164 |
+
#: admin/views/tab-license.php:105
|
165 |
+
msgid "day(s)"
|
166 |
+
msgstr ""
|
167 |
+
|
168 |
+
#: admin/views/tab-settings.php:72
|
169 |
+
msgid "Delete"
|
170 |
+
msgstr ""
|
171 |
+
|
172 |
+
#: admin/views/tab-license.php:31
|
173 |
+
msgid "Delete Key"
|
174 |
+
msgstr ""
|
175 |
+
|
176 |
+
#: admin/views/tab-about.php:123
|
177 |
+
msgid ""
|
178 |
+
"Display Instagram feeds in widgets, posts, pages, or anywhere else using "
|
179 |
+
"shortcodes."
|
180 |
+
msgstr ""
|
181 |
+
|
182 |
+
#: admin/views/tab-license.php:72
|
183 |
+
msgid "domain"
|
184 |
+
msgstr ""
|
185 |
+
|
186 |
+
#: includes/class-wis_instagram_slider.php:384
|
187 |
+
msgid "Dotted"
|
188 |
+
msgstr ""
|
189 |
+
|
190 |
+
#: includes/class-wis_instagram_slider.php:277
|
191 |
+
msgid "Enter usernames separated by commas whose images you don't want to show"
|
192 |
+
msgstr ""
|
193 |
+
"Введите имена пользователей, разделенные запятыми, изображения которых вы не "
|
194 |
+
"хотите показывать"
|
195 |
+
|
196 |
+
#: admin/views/tab-license.php:94
|
197 |
+
msgid "EXPIRED!"
|
198 |
+
msgstr ""
|
199 |
+
|
200 |
+
#: includes/class-wis_instagram_slider.php:389
|
201 |
+
msgid "Fade"
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
+
#: admin/views/tab-about.php:128
|
205 |
+
msgid "FEATURES"
|
206 |
+
msgstr ""
|
207 |
+
|
208 |
+
#: admin/views/tab-about.php:200
|
209 |
+
msgid "FEEDBACK AND SUPPORT"
|
210 |
+
msgstr ""
|
211 |
+
|
212 |
+
#: includes/class-wis_instagram_slider.php:420
|
213 |
+
msgid "Full Size"
|
214 |
+
msgstr ""
|
215 |
+
|
216 |
+
#: admin/pages/settings.php:148
|
217 |
+
msgid "General"
|
218 |
+
msgstr ""
|
219 |
+
|
220 |
+
#: includes/class-wis_instagram_slider.php:272
|
221 |
+
msgid "Hashtag:"
|
222 |
+
msgstr "Хэштэг:"
|
223 |
+
|
224 |
+
#: admin/views/tab-license.php:120
|
225 |
+
msgid "Have a key to activate the plugin? Paste it here:"
|
226 |
+
msgstr ""
|
227 |
+
|
228 |
+
#: admin/views/tab-license.php:118
|
229 |
+
msgid "Have a key to activate the premium version? Paste it here:"
|
230 |
+
msgstr ""
|
231 |
+
|
232 |
+
#: includes/class-wis_instagram_slider.php:402
|
233 |
+
msgid ""
|
234 |
+
"Hold ctrl and click the fields you want to show/hide on your slider. Leave "
|
235 |
+
"all unselected to hide them all. Default all selected."
|
236 |
+
msgstr ""
|
237 |
+
|
238 |
+
#: includes/class-wis_instagram_slider.php:307
|
239 |
+
msgid "hours"
|
240 |
+
msgstr "часов"
|
241 |
+
|
242 |
+
#. Author URI of the plugin
|
243 |
+
msgid "https://cm-wp.com/"
|
244 |
+
msgstr ""
|
245 |
+
|
246 |
+
#. URI of the plugin
|
247 |
+
msgid "https://cm-wp.com/instagram-slider-widget"
|
248 |
+
msgstr ""
|
249 |
+
|
250 |
+
#: admin/views/tab-settings.php:47
|
251 |
+
msgid "ID"
|
252 |
+
msgstr ""
|
253 |
+
|
254 |
+
#: admin/views/tab-settings.php:46
|
255 |
+
msgid "Image"
|
256 |
+
msgstr "Аватар"
|
257 |
+
|
258 |
+
#: includes/class-wis_instagram_slider.php:415
|
259 |
+
msgid "Image format"
|
260 |
+
msgstr "Формат изображения"
|
261 |
+
|
262 |
+
#: includes/class-wis_instagram_slider.php:440
|
263 |
+
msgid "Image URL"
|
264 |
+
msgstr "Ссылка на изображение"
|
265 |
+
|
266 |
+
#: includes/class-wis_instagram_slider.php:354
|
267 |
+
msgid "Image width:"
|
268 |
+
msgstr "Ширина изображения:"
|
269 |
+
|
270 |
+
#: admin/pages/settings.php:158
|
271 |
+
msgid "Instagram account"
|
272 |
+
msgstr ""
|
273 |
+
|
274 |
+
#: includes/class-wis_instagram_slider.php:438
|
275 |
+
msgid "Instagram Image"
|
276 |
+
msgstr "Страница поста"
|
277 |
+
|
278 |
+
#: admin/pages/settings.php:166
|
279 |
+
msgid "Instagram password"
|
280 |
+
msgstr ""
|
281 |
+
|
282 |
+
#: includes/class-wis_instagram_slider.php:439
|
283 |
+
msgid "Instagram Profile"
|
284 |
+
msgstr "Страница Инстаграм"
|
285 |
+
|
286 |
+
#: includes/class-wis_instagram_slider.php:1161
|
287 |
+
msgid ""
|
288 |
+
"Instagram requires authorization to view a user profile. Use autorized "
|
289 |
+
"account in widget settings"
|
290 |
+
msgstr ""
|
291 |
+
|
292 |
+
#: admin/pages/license.php:90
|
293 |
+
msgid "License"
|
294 |
+
msgstr ""
|
295 |
+
|
296 |
+
#: admin/ajax/check-license.php:39
|
297 |
+
msgid ""
|
298 |
+
"License key is empty or license key too long (license key is 32 characters "
|
299 |
+
"long)"
|
300 |
+
msgstr ""
|
301 |
+
|
302 |
+
#: admin/pages/license.php:91
|
303 |
+
msgid "License of Social Slider Widget"
|
304 |
+
msgstr ""
|
305 |
+
|
306 |
+
#: admin/ajax/check-license.php:27
|
307 |
+
msgid "Licensing action not passed or this action is prohibited!"
|
308 |
+
msgstr ""
|
309 |
+
|
310 |
+
#: includes/class-wis_instagram_slider.php:436
|
311 |
+
msgid "Link to"
|
312 |
+
msgstr "Ссылка на:"
|
313 |
+
|
314 |
+
#: includes/class-wis_instagram_slider.php:418
|
315 |
+
msgid "Low - 320x320"
|
316 |
+
msgstr ""
|
317 |
+
|
318 |
+
#: includes/class-wis_instagram_slider.php:345
|
319 |
+
msgid "max is 10 ( only for thumbnails template )"
|
320 |
+
msgstr "максимум 10 (только для шаблона thumbnails)"
|
321 |
+
|
322 |
+
#: includes/class-wis_instagram_slider.php:297
|
323 |
+
msgid "Maximum 20 images in free version."
|
324 |
+
msgstr "Максимум 20 изображений в бесплатной версии"
|
325 |
+
|
326 |
+
#: includes/class-wis_instagram_slider.php:393
|
327 |
+
msgid "milliseconds"
|
328 |
+
msgstr "миллисекунд"
|
329 |
+
|
330 |
+
#: admin/views/tab-settings.php:33
|
331 |
+
#, php-format
|
332 |
+
msgid "More accounts in <a href='%s'>PRO version</a>"
|
333 |
+
msgstr "Больше аккаунтов в <a href='%s'>PRO версии</a>"
|
334 |
+
|
335 |
+
#: includes/class-wis_instagram_slider.php:298
|
336 |
+
#, php-format
|
337 |
+
msgid "More in <a href='%s'>PRO version</a>"
|
338 |
+
msgstr "Больше в <a href='%s'>PRO версии</a>"
|
339 |
+
|
340 |
+
#: admin/views/tab-settings.php:49
|
341 |
+
msgid "Name"
|
342 |
+
msgstr "Имя"
|
343 |
+
|
344 |
+
#: includes/class-wis_instagram_slider.php:1214
|
345 |
+
msgid "No images found"
|
346 |
+
msgstr ""
|
347 |
+
|
348 |
+
#: includes/class-wis_instagram_slider.php:688
|
349 |
+
msgid "No images found! <br> Try some other hashtag or username"
|
350 |
+
msgstr ""
|
351 |
+
|
352 |
+
#: includes/class-wis_instagram_slider.php:385
|
353 |
+
msgid "No Navigation"
|
354 |
+
msgstr ""
|
355 |
+
|
356 |
+
#: includes/class-wis_instagram_slider.php:443
|
357 |
+
msgid "None"
|
358 |
+
msgstr ""
|
359 |
+
|
360 |
+
#: includes/class-wis_instagram_slider.php:1100
|
361 |
+
msgid "Nothing to search for"
|
362 |
+
msgstr ""
|
363 |
+
|
364 |
+
#: includes/class-wis_instagram_slider.php:343
|
365 |
+
msgid "Number of Columns:"
|
366 |
+
msgstr "Кол-во колонок:"
|
367 |
+
|
368 |
+
#: includes/class-wis_instagram_slider.php:410
|
369 |
+
msgid "Number of words in caption:"
|
370 |
+
msgstr "Кол-во слов в тексте:"
|
371 |
+
|
372 |
+
#: admin/views/tab-license.php:82
|
373 |
+
msgid "of"
|
374 |
+
msgstr ""
|
375 |
+
|
376 |
+
#: includes/class-wis_instagram_slider.php:372
|
377 |
+
msgid "Offset"
|
378 |
+
msgstr ""
|
379 |
+
|
380 |
+
#: includes/class-wis_instagram_slider.php:425
|
381 |
+
msgid "Order by"
|
382 |
+
msgstr "Сортировка"
|
383 |
+
|
384 |
+
#: admin/pages/settings.php:168
|
385 |
+
msgid "Password of your Instagram account"
|
386 |
+
msgstr ""
|
387 |
+
|
388 |
+
#: includes/class-wis_instagram_slider.php:376
|
389 |
+
msgid "Pattern"
|
390 |
+
msgstr ""
|
391 |
+
|
392 |
+
#: includes/class-wis_instagram_slider.php:362
|
393 |
+
msgid "pictures"
|
394 |
+
msgstr "изображений"
|
395 |
+
|
396 |
+
#: includes/class-wis_instagram_slider.php:360
|
397 |
+
msgid "Pictures per slide:"
|
398 |
+
msgstr "Изображений на слайд:"
|
399 |
+
|
400 |
+
#: admin/views/tab-license.php:76
|
401 |
+
msgid "plan"
|
402 |
+
msgstr ""
|
403 |
+
|
404 |
+
#: admin/views/tab-license.php:95
|
405 |
+
msgid "please update the key"
|
406 |
+
msgstr ""
|
407 |
+
|
408 |
+
#: includes/class-wis_instagram_slider.php:429
|
409 |
+
msgid "Popularity - Ascending"
|
410 |
+
msgstr "Популярность - по возрастанию"
|
411 |
+
|
412 |
+
#: includes/class-wis_instagram_slider.php:430
|
413 |
+
msgid "Popularity - Descending"
|
414 |
+
msgstr "Популярность - по убыванию"
|
415 |
+
|
416 |
+
#: includes/class-wis_instagram_slider.php:383
|
417 |
+
msgid "Prev & Next"
|
418 |
+
msgstr ""
|
419 |
+
|
420 |
+
#: admin/views/tab-about.php:163
|
421 |
+
msgid "PRO VERSION"
|
422 |
+
msgstr ""
|
423 |
+
|
424 |
+
#: admin/views/tab-license.php:54
|
425 |
+
msgid ""
|
426 |
+
"Public License is a GPLv2 compatible license allowing you to change and use "
|
427 |
+
"this version of the plugin for free. Please keep in mind this license covers "
|
428 |
+
"only free edition of the plugin. Premium versions are distributed with other "
|
429 |
+
"type of a license."
|
430 |
+
msgstr ""
|
431 |
+
|
432 |
+
#: includes/class-wis_instagram_slider.php:351
|
433 |
+
#: includes/class-wis_instagram_slider.php:356
|
434 |
+
msgid "px"
|
435 |
+
msgstr ""
|
436 |
+
|
437 |
+
#: includes/class-wis_instagram_slider.php:431
|
438 |
+
msgid "Random"
|
439 |
+
msgstr "Рандом"
|
440 |
+
|
441 |
+
#: admin/views/tab-license.php:107
|
442 |
+
msgid "remained"
|
443 |
+
msgstr ""
|
444 |
+
|
445 |
+
#: includes/class-wis_instagram_slider.php:279
|
446 |
+
msgid "Save in Media Library: "
|
447 |
+
msgstr "Сохранять в медиабиблиотеке:"
|
448 |
+
|
449 |
+
#: includes/class-wis_instagram_slider.php:246
|
450 |
+
msgid "Search Instagram for:"
|
451 |
+
msgstr "Искать в Instagram по:"
|
452 |
+
|
453 |
+
#: admin/pages/settings.php:108
|
454 |
+
msgid "Settings"
|
455 |
+
msgstr "Настройки"
|
456 |
+
|
457 |
+
#: admin/pages/settings.php:107
|
458 |
+
msgid "Settings of Social Slider Widget"
|
459 |
+
msgstr "Настройки Social Slider Widget"
|
460 |
+
|
461 |
+
#: includes/class-wis_instagram_slider.php:486
|
462 |
+
msgid "Shortcode of this Widget:"
|
463 |
+
msgstr "Шорткод виджета:"
|
464 |
+
|
465 |
+
#: includes/class-wis_instagram_slider.php:311
|
466 |
+
msgid "Show feed header:"
|
467 |
+
msgstr "Отображать шапку:"
|
468 |
+
|
469 |
+
#: includes/class-wis_instagram_slider.php:388
|
470 |
+
msgid "Slide"
|
471 |
+
msgstr ""
|
472 |
+
|
473 |
+
#: includes/class-wis_instagram_slider.php:391
|
474 |
+
msgid "Slide Speed:"
|
475 |
+
msgstr ""
|
476 |
+
|
477 |
+
#: includes/class-wis_instagram_slider.php:387
|
478 |
+
msgid "Slider Animation:"
|
479 |
+
msgstr ""
|
480 |
+
|
481 |
+
#: includes/class-wis_instagram_slider.php:382
|
482 |
+
msgid "Slider Navigation Controls:"
|
483 |
+
msgstr ""
|
484 |
+
|
485 |
+
#: includes/class-wis_instagram_slider.php:396
|
486 |
+
msgid "Slider Text Description:"
|
487 |
+
msgstr ""
|
488 |
+
|
489 |
+
#: includes/class-wis_instagram_slider.php:40
|
490 |
+
#: includes/class-wis_instagram_slider.php:204
|
491 |
+
msgid "Social Slider"
|
492 |
+
msgstr ""
|
493 |
+
|
494 |
+
#: includes/class-wis_instagram_slider.php:92
|
495 |
+
msgid "Social Slider - Shortcode Generator"
|
496 |
+
msgstr ""
|
497 |
+
|
498 |
+
#. Name of the plugin
|
499 |
+
#: instaram_slider.php:26 admin/views/tab-about.php:122
|
500 |
+
msgid "Social Slider Widget"
|
501 |
+
msgstr ""
|
502 |
+
|
503 |
+
#. Description of the plugin
|
504 |
+
msgid ""
|
505 |
+
"Social Slider Widget is a responsive slider widget that shows 12 latest "
|
506 |
+
"images from a public Instagram user and up to 18 images from a hashtag."
|
507 |
+
msgstr ""
|
508 |
+
|
509 |
+
#: admin/pages/widgets.php:107 admin/pages/widgets.php:108
|
510 |
+
msgid "Social Slider Widgets"
|
511 |
+
msgstr ""
|
512 |
+
|
513 |
+
#: includes/class-wis_instagram_slider.php:365
|
514 |
+
msgid "Space between pictures:"
|
515 |
+
msgstr "Расстояние между изображениями:"
|
516 |
+
|
517 |
+
#: includes/class-wis_instagram_slider.php:419
|
518 |
+
msgid "Standard - 640x640"
|
519 |
+
msgstr ""
|
520 |
+
|
521 |
+
#: admin/views/tab-license.php:126
|
522 |
+
msgid "Submit Key"
|
523 |
+
msgstr ""
|
524 |
+
|
525 |
+
#: admin/ajax/check-license.php:55
|
526 |
+
msgid "Subscription success cancelled"
|
527 |
+
msgstr ""
|
528 |
+
|
529 |
+
#: admin/views/tab-license.php:35
|
530 |
+
msgid "Synchronization"
|
531 |
+
msgstr ""
|
532 |
+
|
533 |
+
#: includes/class-wis_instagram_slider.php:318
|
534 |
+
msgid "Template"
|
535 |
+
msgstr "Шаблон"
|
536 |
+
|
537 |
+
#: admin/ajax/check-license.php:51
|
538 |
+
msgid "The license has been updated"
|
539 |
+
msgstr ""
|
540 |
+
|
541 |
+
#: admin/ajax/check-license.php:47
|
542 |
+
msgid "The license is deactivated"
|
543 |
+
msgstr ""
|
544 |
+
|
545 |
+
#: includes/class-wis_instagram_slider.php:1182
|
546 |
+
msgid "There are no publications in this account yet"
|
547 |
+
msgstr ""
|
548 |
+
|
549 |
+
#: includes/class-wis_instagram_slider.php:417
|
550 |
+
msgid "Thumbnail - 150x150"
|
551 |
+
msgstr ""
|
552 |
+
|
553 |
+
#: includes/class-wis_instagram_slider.php:399
|
554 |
+
msgid "Time"
|
555 |
+
msgstr ""
|
556 |
+
|
557 |
+
#: includes/class-wis_instagram_slider.php:242
|
558 |
+
msgid "Title:"
|
559 |
+
msgstr "Заголовок:"
|
560 |
+
|
561 |
+
#: admin/views/tab-settings.php:50
|
562 |
+
msgid "Token"
|
563 |
+
msgstr "Токен"
|
564 |
+
|
565 |
+
#: admin/views/tab-license.php:22
|
566 |
+
#, php-format
|
567 |
+
msgid "Upgrade to Premium for $%s"
|
568 |
+
msgstr ""
|
569 |
+
|
570 |
+
#: includes/class-wis_instagram_slider.php:488
|
571 |
+
msgid ""
|
572 |
+
"Use this shortcode in any page or post to display images with this widget "
|
573 |
+
"configuration!"
|
574 |
+
msgstr ""
|
575 |
+
"Используйте этот шорткод на любой странице или посте для отображения "
|
576 |
+
"изображений с этой конфигурацией виджета."
|
577 |
+
|
578 |
+
#: admin/views/tab-settings.php:48
|
579 |
+
msgid "User"
|
580 |
+
msgstr "Аккаунт"
|
581 |
+
|
582 |
+
#: includes/class-wis_instagram_slider.php:398
|
583 |
+
msgid "Username"
|
584 |
+
msgstr ""
|
585 |
+
|
586 |
+
#: admin/pages/settings.php:160
|
587 |
+
msgid "Username of your Instagram account"
|
588 |
+
msgstr ""
|
589 |
+
|
590 |
+
#: includes/class-wis_instagram_slider.php:271
|
591 |
+
msgid "Username:"
|
592 |
+
msgstr "Имя аккаунта:"
|
593 |
+
|
594 |
+
#: admin/views/tab-license.php:89
|
595 |
+
msgid "version"
|
596 |
+
msgstr ""
|
597 |
+
|
598 |
+
#: includes/class-wis_instagram_slider.php:349
|
599 |
+
msgid "Vertical space between item elements:"
|
600 |
+
msgstr "Вертикальное расстояние между элементами:"
|
601 |
+
|
602 |
+
#: admin/views/tab-about.php:209
|
603 |
+
msgid "WHY DO YOU NEED IT?"
|
604 |
+
msgstr ""
|
605 |
+
|
606 |
+
#: admin/pages/widgets.php:109
|
607 |
+
msgid "Widgets"
|
608 |
+
msgstr "Виджеты"
|
609 |
+
|
610 |
+
#: includes/class-wis_instagram_slider.php:272
|
611 |
+
msgid "without # sign"
|
612 |
+
msgstr "без #"
|
613 |
+
|
614 |
+
#: admin/views/tab-settings.php:21
|
615 |
+
msgid ""
|
616 |
+
"Without authorization Instagram limits the number of requests, and after "
|
617 |
+
"exceeding the limit asks to log in, so an error is displayed that no images "
|
618 |
+
"were found."
|
619 |
+
msgstr ""
|
620 |
+
"Без авторизации Instagram ограничивает количество запросов, а после "
|
621 |
+
"превышения лимита просит войти в систему, поэтому выводится сообщение, что "
|
622 |
+
"изображения не найдены."
|
623 |
+
|
624 |
+
#: admin/views/tab-license.php:58
|
625 |
+
msgid ""
|
626 |
+
"You use a paid subscription for the plugin updates. In case you don’t want "
|
627 |
+
"to receive paid updates, please, click <a data-action=\"unsubscribe\" "
|
628 |
+
"class=\"wis-control-btn\" href=\"#\">cancel subscription</a>"
|
629 |
+
msgstr ""
|
630 |
+
|
631 |
+
#: admin/views/tab-license.php:25
|
632 |
+
#, php-format
|
633 |
+
msgid "Your current license for %1$s:"
|
634 |
+
msgstr ""
|
635 |
+
|
636 |
+
#: admin/ajax/check-license.php:42
|
637 |
+
msgid "Your license has been successfully activated"
|
638 |
+
msgstr ""
|
639 |
+
|
640 |
+
#: admin/views/tab-license.php:64
|
641 |
+
msgid ""
|
642 |
+
"Your license has expired, please extend the license to get updates and "
|
643 |
+
"support."
|
644 |
+
msgstr ""
|
languages/instagram-slider-widget.pot
ADDED
@@ -0,0 +1,629 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#, fuzzy
|
2 |
+
msgid ""
|
3 |
+
msgstr ""
|
4 |
+
"Project-Id-Version: Social Slider Widget\n"
|
5 |
+
"Report-Msgid-Bugs-To: \n"
|
6 |
+
"POT-Creation-Date: 2019-11-08 05:43+0000\n"
|
7 |
+
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
8 |
+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
9 |
+
"Language-Team: \n"
|
10 |
+
"Language: \n"
|
11 |
+
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
12 |
+
"MIME-Version: 1.0\n"
|
13 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
14 |
+
"Content-Transfer-Encoding: 8bit\n"
|
15 |
+
"X-Generator: Loco https://localise.biz/\n"
|
16 |
+
"X-Loco-Version: 2.3.1; wp-5.2.4"
|
17 |
+
|
18 |
+
#: includes/class-wis_instagram_slider.php:283
|
19 |
+
msgid " Turn on to save Instagram Images into WordPress media library."
|
20 |
+
msgstr ""
|
21 |
+
|
22 |
+
#: includes/class-wis_instagram_slider.php:450
|
23 |
+
msgid ""
|
24 |
+
"* use this field only if the above option is set to <strong>Custom "
|
25 |
+
"Link</strong>"
|
26 |
+
msgstr ""
|
27 |
+
|
28 |
+
#: includes/class-wis_instagram_slider.php:94
|
29 |
+
msgid ""
|
30 |
+
"1. Drag Social Slider Widget here. 2. Fill in the fields and hit save. 3. "
|
31 |
+
"Copy the shortocde generated at the bottom of the widget form and use it on "
|
32 |
+
"posts or pages."
|
33 |
+
msgstr ""
|
34 |
+
|
35 |
+
#: includes/class-wis_instagram_slider.php:394
|
36 |
+
msgid "1000 milliseconds = 1 second"
|
37 |
+
msgstr ""
|
38 |
+
|
39 |
+
#: admin/views/tab-license.php:134
|
40 |
+
#, php-format
|
41 |
+
msgid ""
|
42 |
+
"<a href=\"%s\" target=\"_blank\" rel=\"noopener\">Lean more</a> about the "
|
43 |
+
"premium version and get the license key to activate it now!"
|
44 |
+
msgstr ""
|
45 |
+
|
46 |
+
#: includes/class-wis_instagram_slider.php:422
|
47 |
+
msgid ""
|
48 |
+
"<strong>Square - Cropped</strong> - option will show square cropped images "
|
49 |
+
"in 640x640 pixels. <br/><strong>Original - No Crop</strong> - will display "
|
50 |
+
"the original user uploaded image size."
|
51 |
+
msgstr ""
|
52 |
+
|
53 |
+
#: includes/class-wis_instagram_slider.php:42
|
54 |
+
msgid "A widget that displays a slider with instagram images "
|
55 |
+
msgstr ""
|
56 |
+
|
57 |
+
#: admin/pages/about.php:44
|
58 |
+
msgid "About"
|
59 |
+
msgstr ""
|
60 |
+
|
61 |
+
#: admin/pages/about.php:43
|
62 |
+
msgid "About Social Slider Widget"
|
63 |
+
msgstr ""
|
64 |
+
|
65 |
+
#: includes/class-wis_instagram_slider.php:1552
|
66 |
+
msgid "Account deleted successfully"
|
67 |
+
msgstr ""
|
68 |
+
|
69 |
+
#: includes/class-wis_instagram_slider.php:1131
|
70 |
+
msgid ""
|
71 |
+
"Account not found or for this account there are restrictions on Instagram by "
|
72 |
+
"age"
|
73 |
+
msgstr ""
|
74 |
+
|
75 |
+
#: includes/class-wis_instagram_slider.php:250
|
76 |
+
msgid "Account:"
|
77 |
+
msgstr ""
|
78 |
+
|
79 |
+
#: admin/views/tab-settings.php:51
|
80 |
+
msgid "Action"
|
81 |
+
msgstr ""
|
82 |
+
|
83 |
+
#: admin/views/tab-license.php:11
|
84 |
+
#, php-format
|
85 |
+
msgid "Activate %s"
|
86 |
+
msgstr ""
|
87 |
+
|
88 |
+
#: admin/views/tab-license.php:84
|
89 |
+
msgid "active sites"
|
90 |
+
msgstr ""
|
91 |
+
|
92 |
+
#: admin/views/tab-settings.php:32 admin/views/tab-settings.php:36
|
93 |
+
msgid "Add Account"
|
94 |
+
msgstr ""
|
95 |
+
|
96 |
+
#: includes/class-wis_instagram_slider.php:267
|
97 |
+
msgid "Add account in settings"
|
98 |
+
msgstr ""
|
99 |
+
|
100 |
+
#: includes/class-wis-plugin.php:127
|
101 |
+
msgid "Are you sure want to delete this account?"
|
102 |
+
msgstr ""
|
103 |
+
|
104 |
+
#: includes/class-wis_instagram_slider.php:441
|
105 |
+
msgid "Attachment Page"
|
106 |
+
msgstr ""
|
107 |
+
|
108 |
+
#: admin/views/tab-about.php:149
|
109 |
+
msgid "BENEFITS"
|
110 |
+
msgstr ""
|
111 |
+
|
112 |
+
#: includes/class-wis_instagram_slider.php:275
|
113 |
+
msgid "Block Users"
|
114 |
+
msgstr ""
|
115 |
+
|
116 |
+
#: admin/views/tab-license.php:138
|
117 |
+
#, php-format
|
118 |
+
msgid ""
|
119 |
+
"Can’t find your key? Go to <a href=\"%s\" target=\"_blank\" rel=\"noopener\">"
|
120 |
+
"this page</a> and login using the e-mail address associated with your "
|
121 |
+
"purchase."
|
122 |
+
msgstr ""
|
123 |
+
|
124 |
+
#: includes/class-wis_instagram_slider.php:400
|
125 |
+
msgid "Caption"
|
126 |
+
msgstr ""
|
127 |
+
|
128 |
+
#: includes/class-wis_instagram_slider.php:305
|
129 |
+
msgid "Check for new images every:"
|
130 |
+
msgstr ""
|
131 |
+
|
132 |
+
#: includes/class-wis_instagram_slider.php:293
|
133 |
+
msgid "Count of images to show:"
|
134 |
+
msgstr ""
|
135 |
+
|
136 |
+
#. Author of the plugin
|
137 |
+
msgid "creativemotion"
|
138 |
+
msgstr ""
|
139 |
+
|
140 |
+
#: includes/class-wis_instagram_slider.php:442
|
141 |
+
msgid "Custom Link"
|
142 |
+
msgstr ""
|
143 |
+
|
144 |
+
#: includes/class-wis_instagram_slider.php:448
|
145 |
+
msgid "Custom link:"
|
146 |
+
msgstr ""
|
147 |
+
|
148 |
+
#: includes/class-wis_instagram_slider.php:427
|
149 |
+
msgid "Date - Ascending"
|
150 |
+
msgstr ""
|
151 |
+
|
152 |
+
#: includes/class-wis_instagram_slider.php:428
|
153 |
+
msgid "Date - Descending"
|
154 |
+
msgstr ""
|
155 |
+
|
156 |
+
#: admin/views/tab-license.php:105
|
157 |
+
msgid "day(s)"
|
158 |
+
msgstr ""
|
159 |
+
|
160 |
+
#: admin/views/tab-settings.php:72
|
161 |
+
msgid "Delete"
|
162 |
+
msgstr ""
|
163 |
+
|
164 |
+
#: admin/views/tab-license.php:31
|
165 |
+
msgid "Delete Key"
|
166 |
+
msgstr ""
|
167 |
+
|
168 |
+
#: admin/views/tab-about.php:123
|
169 |
+
msgid ""
|
170 |
+
"Display Instagram feeds in widgets, posts, pages, or anywhere else using "
|
171 |
+
"shortcodes."
|
172 |
+
msgstr ""
|
173 |
+
|
174 |
+
#: admin/views/tab-license.php:72
|
175 |
+
msgid "domain"
|
176 |
+
msgstr ""
|
177 |
+
|
178 |
+
#: includes/class-wis_instagram_slider.php:384
|
179 |
+
msgid "Dotted"
|
180 |
+
msgstr ""
|
181 |
+
|
182 |
+
#: includes/class-wis_instagram_slider.php:277
|
183 |
+
msgid "Enter usernames separated by commas whose images you don't want to show"
|
184 |
+
msgstr ""
|
185 |
+
|
186 |
+
#: admin/views/tab-license.php:94
|
187 |
+
msgid "EXPIRED!"
|
188 |
+
msgstr ""
|
189 |
+
|
190 |
+
#: includes/class-wis_instagram_slider.php:389
|
191 |
+
msgid "Fade"
|
192 |
+
msgstr ""
|
193 |
+
|
194 |
+
#: admin/views/tab-about.php:128
|
195 |
+
msgid "FEATURES"
|
196 |
+
msgstr ""
|
197 |
+
|
198 |
+
#: admin/views/tab-about.php:200
|
199 |
+
msgid "FEEDBACK AND SUPPORT"
|
200 |
+
msgstr ""
|
201 |
+
|
202 |
+
#: includes/class-wis_instagram_slider.php:420
|
203 |
+
msgid "Full Size"
|
204 |
+
msgstr ""
|
205 |
+
|
206 |
+
#: admin/pages/settings.php:148
|
207 |
+
msgid "General"
|
208 |
+
msgstr ""
|
209 |
+
|
210 |
+
#: includes/class-wis_instagram_slider.php:272
|
211 |
+
msgid "Hashtag:"
|
212 |
+
msgstr ""
|
213 |
+
|
214 |
+
#: admin/views/tab-license.php:120
|
215 |
+
msgid "Have a key to activate the plugin? Paste it here:"
|
216 |
+
msgstr ""
|
217 |
+
|
218 |
+
#: admin/views/tab-license.php:118
|
219 |
+
msgid "Have a key to activate the premium version? Paste it here:"
|
220 |
+
msgstr ""
|
221 |
+
|
222 |
+
#: includes/class-wis_instagram_slider.php:402
|
223 |
+
msgid ""
|
224 |
+
"Hold ctrl and click the fields you want to show/hide on your slider. Leave "
|
225 |
+
"all unselected to hide them all. Default all selected."
|
226 |
+
msgstr ""
|
227 |
+
|
228 |
+
#: includes/class-wis_instagram_slider.php:307
|
229 |
+
msgid "hours"
|
230 |
+
msgstr ""
|
231 |
+
|
232 |
+
#. Author URI of the plugin
|
233 |
+
msgid "https://cm-wp.com/"
|
234 |
+
msgstr ""
|
235 |
+
|
236 |
+
#. URI of the plugin
|
237 |
+
msgid "https://cm-wp.com/instagram-slider-widget"
|
238 |
+
msgstr ""
|
239 |
+
|
240 |
+
#: admin/views/tab-settings.php:47
|
241 |
+
msgid "ID"
|
242 |
+
msgstr ""
|
243 |
+
|
244 |
+
#: admin/views/tab-settings.php:46
|
245 |
+
msgid "Image"
|
246 |
+
msgstr ""
|
247 |
+
|
248 |
+
#: includes/class-wis_instagram_slider.php:415
|
249 |
+
msgid "Image format"
|
250 |
+
msgstr ""
|
251 |
+
|
252 |
+
#: includes/class-wis_instagram_slider.php:440
|
253 |
+
msgid "Image URL"
|
254 |
+
msgstr ""
|
255 |
+
|
256 |
+
#: includes/class-wis_instagram_slider.php:354
|
257 |
+
msgid "Image width:"
|
258 |
+
msgstr ""
|
259 |
+
|
260 |
+
#: admin/pages/settings.php:158
|
261 |
+
msgid "Instagram account"
|
262 |
+
msgstr ""
|
263 |
+
|
264 |
+
#: includes/class-wis_instagram_slider.php:438
|
265 |
+
msgid "Instagram Image"
|
266 |
+
msgstr ""
|
267 |
+
|
268 |
+
#: admin/pages/settings.php:166
|
269 |
+
msgid "Instagram password"
|
270 |
+
msgstr ""
|
271 |
+
|
272 |
+
#: includes/class-wis_instagram_slider.php:439
|
273 |
+
msgid "Instagram Profile"
|
274 |
+
msgstr ""
|
275 |
+
|
276 |
+
#: includes/class-wis_instagram_slider.php:1161
|
277 |
+
msgid ""
|
278 |
+
"Instagram requires authorization to view a user profile. Use autorized "
|
279 |
+
"account in widget settings"
|
280 |
+
msgstr ""
|
281 |
+
|
282 |
+
#: admin/pages/license.php:90
|
283 |
+
msgid "License"
|
284 |
+
msgstr ""
|
285 |
+
|
286 |
+
#: admin/ajax/check-license.php:39
|
287 |
+
msgid ""
|
288 |
+
"License key is empty or license key too long (license key is 32 characters "
|
289 |
+
"long)"
|
290 |
+
msgstr ""
|
291 |
+
|
292 |
+
#: admin/pages/license.php:91
|
293 |
+
msgid "License of Social Slider Widget"
|
294 |
+
msgstr ""
|
295 |
+
|
296 |
+
#: admin/ajax/check-license.php:27
|
297 |
+
msgid "Licensing action not passed or this action is prohibited!"
|
298 |
+
msgstr ""
|
299 |
+
|
300 |
+
#: includes/class-wis_instagram_slider.php:436
|
301 |
+
msgid "Link to"
|
302 |
+
msgstr ""
|
303 |
+
|
304 |
+
#: includes/class-wis_instagram_slider.php:418
|
305 |
+
msgid "Low - 320x320"
|
306 |
+
msgstr ""
|
307 |
+
|
308 |
+
#: includes/class-wis_instagram_slider.php:345
|
309 |
+
msgid "max is 10 ( only for thumbnails template )"
|
310 |
+
msgstr ""
|
311 |
+
|
312 |
+
#: includes/class-wis_instagram_slider.php:297
|
313 |
+
msgid "Maximum 20 images in free version."
|
314 |
+
msgstr ""
|
315 |
+
|
316 |
+
#: includes/class-wis_instagram_slider.php:393
|
317 |
+
msgid "milliseconds"
|
318 |
+
msgstr ""
|
319 |
+
|
320 |
+
#: admin/views/tab-settings.php:33
|
321 |
+
#, php-format
|
322 |
+
msgid "More accounts in <a href='%s'>PRO version</a>"
|
323 |
+
msgstr ""
|
324 |
+
|
325 |
+
#: includes/class-wis_instagram_slider.php:298
|
326 |
+
#, php-format
|
327 |
+
msgid "More in <a href='%s'>PRO version</a>"
|
328 |
+
msgstr ""
|
329 |
+
|
330 |
+
#: admin/views/tab-settings.php:49
|
331 |
+
msgid "Name"
|
332 |
+
msgstr ""
|
333 |
+
|
334 |
+
#: includes/class-wis_instagram_slider.php:1214
|
335 |
+
msgid "No images found"
|
336 |
+
msgstr ""
|
337 |
+
|
338 |
+
#: includes/class-wis_instagram_slider.php:688
|
339 |
+
msgid "No images found! <br> Try some other hashtag or username"
|
340 |
+
msgstr ""
|
341 |
+
|
342 |
+
#: includes/class-wis_instagram_slider.php:385
|
343 |
+
msgid "No Navigation"
|
344 |
+
msgstr ""
|
345 |
+
|
346 |
+
#: includes/class-wis_instagram_slider.php:443
|
347 |
+
msgid "None"
|
348 |
+
msgstr ""
|
349 |
+
|
350 |
+
#: includes/class-wis_instagram_slider.php:1100
|
351 |
+
msgid "Nothing to search for"
|
352 |
+
msgstr ""
|
353 |
+
|
354 |
+
#: includes/class-wis_instagram_slider.php:343
|
355 |
+
msgid "Number of Columns:"
|
356 |
+
msgstr ""
|
357 |
+
|
358 |
+
#: includes/class-wis_instagram_slider.php:410
|
359 |
+
msgid "Number of words in caption:"
|
360 |
+
msgstr ""
|
361 |
+
|
362 |
+
#: admin/views/tab-license.php:82
|
363 |
+
msgid "of"
|
364 |
+
msgstr ""
|
365 |
+
|
366 |
+
#: includes/class-wis_instagram_slider.php:372
|
367 |
+
msgid "Offset"
|
368 |
+
msgstr ""
|
369 |
+
|
370 |
+
#: includes/class-wis_instagram_slider.php:425
|
371 |
+
msgid "Order by"
|
372 |
+
msgstr ""
|
373 |
+
|
374 |
+
#: admin/pages/settings.php:168
|
375 |
+
msgid "Password of your Instagram account"
|
376 |
+
msgstr ""
|
377 |
+
|
378 |
+
#: includes/class-wis_instagram_slider.php:376
|
379 |
+
msgid "Pattern"
|
380 |
+
msgstr ""
|
381 |
+
|
382 |
+
#: includes/class-wis_instagram_slider.php:362
|
383 |
+
msgid "pictures"
|
384 |
+
msgstr ""
|
385 |
+
|
386 |
+
#: includes/class-wis_instagram_slider.php:360
|
387 |
+
msgid "Pictures per slide:"
|
388 |
+
msgstr ""
|
389 |
+
|
390 |
+
#: admin/views/tab-license.php:76
|
391 |
+
msgid "plan"
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
#: admin/views/tab-license.php:95
|
395 |
+
msgid "please update the key"
|
396 |
+
msgstr ""
|
397 |
+
|
398 |
+
#: includes/class-wis_instagram_slider.php:429
|
399 |
+
msgid "Popularity - Ascending"
|
400 |
+
msgstr ""
|
401 |
+
|
402 |
+
#: includes/class-wis_instagram_slider.php:430
|
403 |
+
msgid "Popularity - Descending"
|
404 |
+
msgstr ""
|
405 |
+
|
406 |
+
#: includes/class-wis_instagram_slider.php:383
|
407 |
+
msgid "Prev & Next"
|
408 |
+
msgstr ""
|
409 |
+
|
410 |
+
#: admin/views/tab-about.php:163
|
411 |
+
msgid "PRO VERSION"
|
412 |
+
msgstr ""
|
413 |
+
|
414 |
+
#: admin/views/tab-license.php:54
|
415 |
+
msgid ""
|
416 |
+
"Public License is a GPLv2 compatible license allowing you to change and use "
|
417 |
+
"this version of the plugin for free. Please keep in mind this license covers "
|
418 |
+
"only free edition of the plugin. Premium versions are distributed with other "
|
419 |
+
"type of a license."
|
420 |
+
msgstr ""
|
421 |
+
|
422 |
+
#: includes/class-wis_instagram_slider.php:351
|
423 |
+
#: includes/class-wis_instagram_slider.php:356
|
424 |
+
msgid "px"
|
425 |
+
msgstr ""
|
426 |
+
|
427 |
+
#: includes/class-wis_instagram_slider.php:431
|
428 |
+
msgid "Random"
|
429 |
+
msgstr ""
|
430 |
+
|
431 |
+
#: admin/views/tab-license.php:107
|
432 |
+
msgid "remained"
|
433 |
+
msgstr ""
|
434 |
+
|
435 |
+
#: includes/class-wis_instagram_slider.php:279
|
436 |
+
msgid "Save in Media Library: "
|
437 |
+
msgstr ""
|
438 |
+
|
439 |
+
#: includes/class-wis_instagram_slider.php:246
|
440 |
+
msgid "Search Instagram for:"
|
441 |
+
msgstr ""
|
442 |
+
|
443 |
+
#: admin/pages/settings.php:108
|
444 |
+
msgid "Settings"
|
445 |
+
msgstr ""
|
446 |
+
|
447 |
+
#: admin/pages/settings.php:107
|
448 |
+
msgid "Settings of Social Slider Widget"
|
449 |
+
msgstr ""
|
450 |
+
|
451 |
+
#: includes/class-wis_instagram_slider.php:486
|
452 |
+
msgid "Shortcode of this Widget:"
|
453 |
+
msgstr ""
|
454 |
+
|
455 |
+
#: includes/class-wis_instagram_slider.php:311
|
456 |
+
msgid "Show feed header:"
|
457 |
+
msgstr ""
|
458 |
+
|
459 |
+
#: includes/class-wis_instagram_slider.php:388
|
460 |
+
msgid "Slide"
|
461 |
+
msgstr ""
|
462 |
+
|
463 |
+
#: includes/class-wis_instagram_slider.php:391
|
464 |
+
msgid "Slide Speed:"
|
465 |
+
msgstr ""
|
466 |
+
|
467 |
+
#: includes/class-wis_instagram_slider.php:387
|
468 |
+
msgid "Slider Animation:"
|
469 |
+
msgstr ""
|
470 |
+
|
471 |
+
#: includes/class-wis_instagram_slider.php:382
|
472 |
+
msgid "Slider Navigation Controls:"
|
473 |
+
msgstr ""
|
474 |
+
|
475 |
+
#: includes/class-wis_instagram_slider.php:396
|
476 |
+
msgid "Slider Text Description:"
|
477 |
+
msgstr ""
|
478 |
+
|
479 |
+
#: includes/class-wis_instagram_slider.php:40
|
480 |
+
#: includes/class-wis_instagram_slider.php:204
|
481 |
+
msgid "Social Slider"
|
482 |
+
msgstr ""
|
483 |
+
|
484 |
+
#: includes/class-wis_instagram_slider.php:92
|
485 |
+
msgid "Social Slider - Shortcode Generator"
|
486 |
+
msgstr ""
|
487 |
+
|
488 |
+
#. Name of the plugin
|
489 |
+
#: instaram_slider.php:26 admin/views/tab-about.php:122
|
490 |
+
msgid "Social Slider Widget"
|
491 |
+
msgstr ""
|
492 |
+
|
493 |
+
#. Description of the plugin
|
494 |
+
msgid ""
|
495 |
+
"Social Slider Widget is a responsive slider widget that shows 12 latest "
|
496 |
+
"images from a public Instagram user and up to 18 images from a hashtag."
|
497 |
+
msgstr ""
|
498 |
+
|
499 |
+
#: admin/pages/widgets.php:107 admin/pages/widgets.php:108
|
500 |
+
msgid "Social Slider Widgets"
|
501 |
+
msgstr ""
|
502 |
+
|
503 |
+
#: includes/class-wis_instagram_slider.php:365
|
504 |
+
msgid "Space between pictures:"
|
505 |
+
msgstr ""
|
506 |
+
|
507 |
+
#: includes/class-wis_instagram_slider.php:419
|
508 |
+
msgid "Standard - 640x640"
|
509 |
+
msgstr ""
|
510 |
+
|
511 |
+
#: admin/views/tab-license.php:126
|
512 |
+
msgid "Submit Key"
|
513 |
+
msgstr ""
|
514 |
+
|
515 |
+
#: admin/ajax/check-license.php:55
|
516 |
+
msgid "Subscription success cancelled"
|
517 |
+
msgstr ""
|
518 |
+
|
519 |
+
#: admin/views/tab-license.php:35
|
520 |
+
msgid "Synchronization"
|
521 |
+
msgstr ""
|
522 |
+
|
523 |
+
#: includes/class-wis_instagram_slider.php:318
|
524 |
+
msgid "Template"
|
525 |
+
msgstr ""
|
526 |
+
|
527 |
+
#: admin/ajax/check-license.php:51
|
528 |
+
msgid "The license has been updated"
|
529 |
+
msgstr ""
|
530 |
+
|
531 |
+
#: admin/ajax/check-license.php:47
|
532 |
+
msgid "The license is deactivated"
|
533 |
+
msgstr ""
|
534 |
+
|
535 |
+
#: includes/class-wis_instagram_slider.php:1182
|
536 |
+
msgid "There are no publications in this account yet"
|
537 |
+
msgstr ""
|
538 |
+
|
539 |
+
#: includes/class-wis_instagram_slider.php:417
|
540 |
+
msgid "Thumbnail - 150x150"
|
541 |
+
msgstr ""
|
542 |
+
|
543 |
+
#: includes/class-wis_instagram_slider.php:399
|
544 |
+
msgid "Time"
|
545 |
+
msgstr ""
|
546 |
+
|
547 |
+
#: includes/class-wis_instagram_slider.php:242
|
548 |
+
msgid "Title:"
|
549 |
+
msgstr ""
|
550 |
+
|
551 |
+
#: admin/views/tab-settings.php:50
|
552 |
+
msgid "Token"
|
553 |
+
msgstr ""
|
554 |
+
|
555 |
+
#: admin/views/tab-license.php:22
|
556 |
+
#, php-format
|
557 |
+
msgid "Upgrade to Premium for $%s"
|
558 |
+
msgstr ""
|
559 |
+
|
560 |
+
#: includes/class-wis_instagram_slider.php:488
|
561 |
+
msgid ""
|
562 |
+
"Use this shortcode in any page or post to display images with this widget "
|
563 |
+
"configuration!"
|
564 |
+
msgstr ""
|
565 |
+
|
566 |
+
#: admin/views/tab-settings.php:48
|
567 |
+
msgid "User"
|
568 |
+
msgstr ""
|
569 |
+
|
570 |
+
#: includes/class-wis_instagram_slider.php:398
|
571 |
+
msgid "Username"
|
572 |
+
msgstr ""
|
573 |
+
|
574 |
+
#: admin/pages/settings.php:160
|
575 |
+
msgid "Username of your Instagram account"
|
576 |
+
msgstr ""
|
577 |
+
|
578 |
+
#: includes/class-wis_instagram_slider.php:271
|
579 |
+
msgid "Username:"
|
580 |
+
msgstr ""
|
581 |
+
|
582 |
+
#: admin/views/tab-license.php:89
|
583 |
+
msgid "version"
|
584 |
+
msgstr ""
|
585 |
+
|
586 |
+
#: includes/class-wis_instagram_slider.php:349
|
587 |
+
msgid "Vertical space between item elements:"
|
588 |
+
msgstr ""
|
589 |
+
|
590 |
+
#: admin/views/tab-about.php:209
|
591 |
+
msgid "WHY DO YOU NEED IT?"
|
592 |
+
msgstr ""
|
593 |
+
|
594 |
+
#: admin/pages/widgets.php:109
|
595 |
+
msgid "Widgets"
|
596 |
+
msgstr ""
|
597 |
+
|
598 |
+
#: includes/class-wis_instagram_slider.php:272
|
599 |
+
msgid "without # sign"
|
600 |
+
msgstr ""
|
601 |
+
|
602 |
+
#: admin/views/tab-settings.php:21
|
603 |
+
msgid ""
|
604 |
+
"Without authorization Instagram limits the number of requests, and after "
|
605 |
+
"exceeding the limit asks to log in, so an error is displayed that no images "
|
606 |
+
"were found."
|
607 |
+
msgstr ""
|
608 |
+
|
609 |
+
#: admin/views/tab-license.php:58
|
610 |
+
msgid ""
|
611 |
+
"You use a paid subscription for the plugin updates. In case you don’t want "
|
612 |
+
"to receive paid updates, please, click <a data-action=\"unsubscribe\" "
|
613 |
+
"class=\"wis-control-btn\" href=\"#\">cancel subscription</a>"
|
614 |
+
msgstr ""
|
615 |
+
|
616 |
+
#: admin/views/tab-license.php:25
|
617 |
+
#, php-format
|
618 |
+
msgid "Your current license for %1$s:"
|
619 |
+
msgstr ""
|
620 |
+
|
621 |
+
#: admin/ajax/check-license.php:42
|
622 |
+
msgid "Your license has been successfully activated"
|
623 |
+
msgstr ""
|
624 |
+
|
625 |
+
#: admin/views/tab-license.php:64
|
626 |
+
msgid ""
|
627 |
+
"Your license has expired, please extend the license to get updates and "
|
628 |
+
"support."
|
629 |
+
msgstr ""
|
libs/factory/adverts/assets/js/script.js
DELETED
@@ -1,13 +0,0 @@
|
|
1 |
-
jQuery(document).ready( function($) {
|
2 |
-
// Отправдяем запрос на маркировку нотиса, если пользователь его закрыл
|
3 |
-
$( '.wbcr-advt-notice' ).click( function() {
|
4 |
-
$.post(
|
5 |
-
ajaxurl,
|
6 |
-
{
|
7 |
-
action: 'wbcr_advt_mark_notice'
|
8 |
-
},
|
9 |
-
function(data) {
|
10 |
-
}
|
11 |
-
);
|
12 |
-
});
|
13 |
-
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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_104\Base;
|
4 |
|
5 |
/**
|
6 |
* Factory Adverts
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if ( defined( 'FACTORY_ADVERTS_104_LOADED' ) || ( defined( 'FACTORY_ADVERTS_BLOCK' ) && FACTORY_ADVERTS_BLOCK ) ) {
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
# Устанавливаем константу, что модуль уже загружен
|
28 |
+
define( 'FACTORY_ADVERTS_104_LOADED', true );
|
29 |
|
30 |
# Устанавливаем версию модуля
|
31 |
+
define( 'FACTORY_ADVERTS_104_VERSION', '1.0.4' );
|
32 |
|
33 |
# Регистрируем тектовый домен, для интернализации интерфейса модуля
|
34 |
+
load_plugin_textdomain( 'wbcr_factory_adverts_104', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
|
35 |
|
36 |
# Устанавливаем директорию модуля
|
37 |
+
define( 'FACTORY_ADVERTS_104_DIR', dirname( __FILE__ ) );
|
38 |
|
39 |
# Устанавливаем url модуля
|
40 |
+
define( 'FACTORY_ADVERTS_104_URL', plugins_url( null, __FILE__ ) );
|
41 |
|
42 |
+
require_once( FACTORY_ADVERTS_104_DIR . '/includes/class-rest-request.php' );
|
43 |
+
require_once( FACTORY_ADVERTS_104_DIR . '/includes/class-base.php' );
|
44 |
|
45 |
/**
|
46 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
47 |
*/
|
48 |
+
add_action( 'wbcr_factory_adverts_104_plugin_created', function ( $plugin ) {
|
49 |
+
$plugin->set_adverts_manager( "WBCR\Factory_Adverts_104\Base" );
|
50 |
} );
|
libs/factory/adverts/includes/class-adverts-base.php
DELETED
@@ -1,261 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WBCR\Factory_Adverts_102;
|
4 |
-
|
5 |
-
// Exit if accessed directly
|
6 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
-
exit;
|
8 |
-
}
|
9 |
-
|
10 |
-
/**
|
11 |
-
* Base class for adverts module.
|
12 |
-
*
|
13 |
-
* Contains methods for retrieving banner data for a specific position.
|
14 |
-
* With this class user cat get advert content for a specific position.
|
15 |
-
* This class use functional design pattern.
|
16 |
-
* It used in the main plugin file. Also some methods may used in any place of plugin.
|
17 |
-
*
|
18 |
-
* Example (main plugin file):
|
19 |
-
* // FRAMEWORK MODULES
|
20 |
-
* 'load_factory_modules' => array(
|
21 |
-
* ...
|
22 |
-
* array( 'libs/factory/adverts', 'factory_adverts_102', 'admin' ),
|
23 |
-
* ),
|
24 |
-
*
|
25 |
-
* if ( is_admin() ) {
|
26 |
-
* global $wbcr_PLUGIN_NAME_adinserter;
|
27 |
-
*
|
28 |
-
* $wbcr_PLUGIN_NAME_adinserter = new WBCR\Factory_Adverts_102\Base(
|
29 |
-
* __FILE__,
|
30 |
-
* array_merge(
|
31 |
-
* $plugin_info,
|
32 |
-
* array(
|
33 |
-
* 'dashboard_widget' => true, // show dashboard widget (default: false)
|
34 |
-
* 'right_sidebar' => true, // show adverts sidebar (default: false)
|
35 |
-
* 'notice' => true, // show notice message (default: false)
|
36 |
-
* )
|
37 |
-
* )
|
38 |
-
* );
|
39 |
-
* }
|
40 |
-
*
|
41 |
-
* Example (in any place):
|
42 |
-
* <?php
|
43 |
-
* global $wbcr_PLUGIN_NAME_adinserter;
|
44 |
-
* echo $wbcr_PLUGIN_NAME_adinserter->get_adverts( 'right_sidebar' );
|
45 |
-
* ?>
|
46 |
-
*
|
47 |
-
* Replace in the variable the phrase PLUGIN_NAME with the current plugin name!
|
48 |
-
*
|
49 |
-
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
50 |
-
* @since 1.0.0 Added
|
51 |
-
* @package factory-adverts
|
52 |
-
* @copyright (c) 2019 Webcraftic Ltd
|
53 |
-
*/
|
54 |
-
class Base {
|
55 |
-
|
56 |
-
/*
|
57 |
-
* Contain array data with the plugin information and the module settings.
|
58 |
-
* Mainly used to get the name of the plugin and how to get the adverts blocks.
|
59 |
-
*
|
60 |
-
* @since 1.0.0 Added
|
61 |
-
*
|
62 |
-
* @var array Example: array(
|
63 |
-
* 'prefix' => 'wbcr_inp_',
|
64 |
-
* 'plugin_name' => 'wbcr_insert_php',
|
65 |
-
* 'plugin_title' => 'Woody ad snippets',
|
66 |
-
* 'plugin_text_domain' => 'insert-php',
|
67 |
-
* 'dashboard_widget' => true,
|
68 |
-
* 'right_sidebar' => true,
|
69 |
-
* 'notice' => true,
|
70 |
-
* ...
|
71 |
-
* )
|
72 |
-
*
|
73 |
-
*/
|
74 |
-
private $data = [];
|
75 |
-
|
76 |
-
/**
|
77 |
-
* Wbcr_Factory_Adinserter constructor.
|
78 |
-
*
|
79 |
-
* - Store plugin information and settings.
|
80 |
-
* - Add filter and actions.
|
81 |
-
* - Include dashboard widget.
|
82 |
-
*
|
83 |
-
* @since 1.0.0 Added
|
84 |
-
*
|
85 |
-
* @param string $plugin_path Path to plugin base file
|
86 |
-
* @param array $data Array data with plugin information and settings (@see $data property example)
|
87 |
-
*/
|
88 |
-
public function __construct( $plugin_path, $data ) {
|
89 |
-
$this->data = $data;
|
90 |
-
|
91 |
-
add_filter( 'wbcr/factory/pages/impressive/widgets', [ $this, 'register_widgets' ], 10, 3 );
|
92 |
-
|
93 |
-
add_action( 'init', [ $this, 'add_notices' ] );
|
94 |
-
add_action( 'admin_enqueue_scripts', [ $this, 'enqueue_scripts' ] );
|
95 |
-
add_action( 'wp_ajax_wbcr_advt_mark_notice', [ $this, 'mark_notice' ] );
|
96 |
-
|
97 |
-
$this->include_dashboard();
|
98 |
-
}
|
99 |
-
|
100 |
-
/**
|
101 |
-
* Include dashboard widget
|
102 |
-
*
|
103 |
-
* Include functionality the output of the widget on the dashboard.
|
104 |
-
* Only one dashboard widget must be shown for some plugins with this setting (dashboard_widget).
|
105 |
-
*
|
106 |
-
* @since 1.0.0 Added
|
107 |
-
*/
|
108 |
-
private function include_dashboard() {
|
109 |
-
if ( isset( $this->data['dashboard_widget'] ) && $this->data['dashboard_widget'] && ! defined( 'FACTORY_ADVERTS_DASHBOARD_WIDGET' ) ) {
|
110 |
-
/**
|
111 |
-
* Dashboard widget is displays.
|
112 |
-
*
|
113 |
-
* Used only in this function.
|
114 |
-
*
|
115 |
-
* @since 1.0.0
|
116 |
-
* @var boolean Notes that the dashboard widget already displays.
|
117 |
-
*/
|
118 |
-
define( 'FACTORY_ADVERTS_DASHBOARD_WIDGET', true );
|
119 |
-
require_once FACTORY_ADVERTS_102_DIR . '/includes/class-adverts-dashboard-widget.php';
|
120 |
-
|
121 |
-
new Dashboard_Widget( $this->data['plugin_name'] );
|
122 |
-
}
|
123 |
-
}
|
124 |
-
|
125 |
-
/**
|
126 |
-
* Get advert content for selected position.
|
127 |
-
*
|
128 |
-
* @since 1.0.0 Added
|
129 |
-
*
|
130 |
-
* @param string $position The position for advert
|
131 |
-
*
|
132 |
-
* @return string
|
133 |
-
*/
|
134 |
-
private function get_content( $position ) {
|
135 |
-
$request = new Rest_Request( $this->data['plugin_name'], $position );
|
136 |
-
|
137 |
-
return $request->get_content();
|
138 |
-
}
|
139 |
-
|
140 |
-
/**
|
141 |
-
* Register widgets.
|
142 |
-
*
|
143 |
-
* Depending on the settings, register new widgets.
|
144 |
-
*
|
145 |
-
* @since 1.0.0 Added
|
146 |
-
*
|
147 |
-
* @param array $widgets Already existing registered widgets
|
148 |
-
* @param string $position Position for the widget
|
149 |
-
* @param string $plugin Plugin object for which the hook is run
|
150 |
-
*
|
151 |
-
* @return array array(
|
152 |
-
* 'adverts_widget' => '<p></p>',
|
153 |
-
* 'businnes_suggetion' => '<p></p>',
|
154 |
-
* 'support' => '<p></p>',
|
155 |
-
* ...
|
156 |
-
* )
|
157 |
-
*/
|
158 |
-
public function register_widgets( $widgets, $position, $plugin ) {
|
159 |
-
if ( $plugin->getPluginName() == $this->data['plugin_name'] && ! empty( $this->data ) && 'right' == $position ) {
|
160 |
-
if ( isset( $this->data['right_sidebar'] ) && $this->data['right_sidebar'] ) {
|
161 |
-
$content = $this->get_content( 'right_sidebar' );
|
162 |
-
|
163 |
-
$widgets['adverts_widget'] = $content;
|
164 |
-
}
|
165 |
-
|
166 |
-
if ( isset( $this->data['businnes_suggetion'] ) && $this->data['businnes_suggetion'] ) {
|
167 |
-
$content = $this->get_content( 'businnes_suggetion' );
|
168 |
-
|
169 |
-
$widgets['businnes_suggetion'] = $content;
|
170 |
-
}
|
171 |
-
|
172 |
-
if ( isset( $this->data['support'] ) && $this->data['support'] ) {
|
173 |
-
$content = $this->get_content( 'support' );
|
174 |
-
|
175 |
-
$widgets['support'] = $content;
|
176 |
-
}
|
177 |
-
}
|
178 |
-
|
179 |
-
return $widgets;
|
180 |
-
}
|
181 |
-
|
182 |
-
/**
|
183 |
-
* Add notice message.
|
184 |
-
*
|
185 |
-
* Only one notice must be shown for some plugins with this setting (notice).
|
186 |
-
*
|
187 |
-
* @since 1.0.0 Added
|
188 |
-
*/
|
189 |
-
public function add_notices() {
|
190 |
-
if ( isset( $this->data['notice'] ) && $this->data['notice'] && ! defined( 'FACTORY_ADINSERTER_NOTICE' ) ) {
|
191 |
-
/**
|
192 |
-
* Notice is displays.
|
193 |
-
*
|
194 |
-
* Used only in this function.
|
195 |
-
*
|
196 |
-
* @since 1.0.0
|
197 |
-
* @var boolean Notes that the notice already displays.
|
198 |
-
*/
|
199 |
-
define( 'FACTORY_ADINSERTER_NOTICE', true );
|
200 |
-
|
201 |
-
$content = $this->get_content( 'notice' );
|
202 |
-
$hash = md5( $content );
|
203 |
-
|
204 |
-
/* If the notice has not been closed by the user or the content of the notice has changed,
|
205 |
-
then we show the notice. */
|
206 |
-
if ( ! get_option( 'wbcr-advt-notice-' . $this->data['plugin_name'] ) || get_option( 'wbcr-advt-notice-hash-' . $this->data['plugin_name'] ) != $hash ) {
|
207 |
-
update_option( 'wbcr-advt-notice-' . $this->data['plugin_name'], false );
|
208 |
-
update_option( 'wbcr-advt-notice-hash-' . $this->data['plugin_name'], $hash );
|
209 |
-
add_action( 'admin_notices', function () {
|
210 |
-
echo $this->get_content( 'notice' );
|
211 |
-
} );
|
212 |
-
}
|
213 |
-
}
|
214 |
-
}
|
215 |
-
|
216 |
-
/**
|
217 |
-
* Add javascript file.
|
218 |
-
*
|
219 |
-
* File contains code for intercept the click event and post ajax request.
|
220 |
-
*
|
221 |
-
* @since 1.0.0 Added
|
222 |
-
*/
|
223 |
-
public function enqueue_scripts() {
|
224 |
-
if ( isset( $this->data['notice'] ) && $this->data['notice'] && ! get_option( 'wbcr-advt-notice-' . $this->data['plugin_name'] ) ) {
|
225 |
-
wp_enqueue_script( 'factory-adverts-notice', FACTORY_ADVERTS_102_URL . '/assets/js/script.js' );
|
226 |
-
}
|
227 |
-
}
|
228 |
-
|
229 |
-
/**
|
230 |
-
* Mark notice closed for this plugin.
|
231 |
-
*
|
232 |
-
* Callback for ajax action. Execute when user close the notice.
|
233 |
-
*
|
234 |
-
* @since 1.0.0 Added
|
235 |
-
* @see enqueue_scripts()
|
236 |
-
*/
|
237 |
-
public function mark_notice() {
|
238 |
-
update_option( 'wbcr-advt-notice-' . $this->data['plugin_name'], true );
|
239 |
-
exit();
|
240 |
-
}
|
241 |
-
|
242 |
-
/**
|
243 |
-
* Directly get advert content for selected position.
|
244 |
-
*
|
245 |
-
* @since 1.0.0 Added
|
246 |
-
*
|
247 |
-
* @param string $position Custom position name
|
248 |
-
*
|
249 |
-
* @return string
|
250 |
-
*/
|
251 |
-
public function get_adverts( $position ) {
|
252 |
-
$content = '';
|
253 |
-
|
254 |
-
if ( $position ) {
|
255 |
-
$content = $this->get_content( $position );
|
256 |
-
}
|
257 |
-
|
258 |
-
return $content;
|
259 |
-
}
|
260 |
-
|
261 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/adverts/includes/class-adverts-dashboard-widget.php
DELETED
@@ -1,107 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WBCR\Factory_Adverts_102;
|
4 |
-
|
5 |
-
// Exit if accessed directly
|
6 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
-
exit;
|
8 |
-
}
|
9 |
-
|
10 |
-
/**
|
11 |
-
* Adverts Dashboard Widget.
|
12 |
-
*
|
13 |
-
* Adds a widget with a banner or a list of news.
|
14 |
-
*
|
15 |
-
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
16 |
-
* @since 1.0.0 Added
|
17 |
-
* @package factory-adverts
|
18 |
-
* @copyright (c) 2019 Webcraftic Ltd
|
19 |
-
*/
|
20 |
-
class Dashboard_Widget extends Rest_Request {
|
21 |
-
|
22 |
-
/**
|
23 |
-
* Dashboard_Widget constructor.
|
24 |
-
*
|
25 |
-
* Call parent constructor. Registration hooks.
|
26 |
-
*
|
27 |
-
* @since 1.0.0 Added
|
28 |
-
*
|
29 |
-
* @param string $plugin_name Plugin name from parameter plugin_name
|
30 |
-
*/
|
31 |
-
public function __construct( $plugin_name ) {
|
32 |
-
parent::__construct( $plugin_name, 'dashboard' );
|
33 |
-
|
34 |
-
$this->register_hooks();
|
35 |
-
}
|
36 |
-
|
37 |
-
/**
|
38 |
-
* Registration hooks.
|
39 |
-
*
|
40 |
-
* @since 1.0.0 Added
|
41 |
-
*/
|
42 |
-
public function register_hooks() {
|
43 |
-
add_action( 'wp_dashboard_setup', array( $this, 'add_dashboard_widgets' ) );
|
44 |
-
}
|
45 |
-
|
46 |
-
/**
|
47 |
-
* Add the News widget to the dashboard.
|
48 |
-
*
|
49 |
-
* @since 1.0.0 Added
|
50 |
-
*/
|
51 |
-
public function add_dashboard_widgets() {
|
52 |
-
$widget_id = 'wbcr-adinserter-dashboard-widget';
|
53 |
-
wp_add_dashboard_widget(
|
54 |
-
$widget_id,
|
55 |
-
__( 'News', '' ),
|
56 |
-
array( $this, 'dashboard_widget_adverts' )
|
57 |
-
);
|
58 |
-
|
59 |
-
/**
|
60 |
-
* Set dashboard widget first in order
|
61 |
-
*
|
62 |
-
* @since 1.2.3 Added
|
63 |
-
*/
|
64 |
-
global $wp_meta_boxes;
|
65 |
-
|
66 |
-
$normal_core = $wp_meta_boxes['dashboard']['normal']['core'];
|
67 |
-
$widget_backup = array( $widget_id => $normal_core[ $widget_id ] );
|
68 |
-
unset( $normal_core[ $widget_id ] );
|
69 |
-
$sorted_core = array_merge( $widget_backup, $normal_core );
|
70 |
-
|
71 |
-
$wp_meta_boxes['dashboard']['normal']['core'] = $sorted_core;
|
72 |
-
}
|
73 |
-
|
74 |
-
/**
|
75 |
-
* Create the function to output the contents of the Dashboard Widget.
|
76 |
-
*
|
77 |
-
* @since 1.0.0 Added
|
78 |
-
*/
|
79 |
-
public function dashboard_widget_adverts() {
|
80 |
-
$content = $this->get_content();
|
81 |
-
if ( ! empty( $content ) ) {
|
82 |
-
?>
|
83 |
-
<div class="wordpress-news hide-if-no-js">
|
84 |
-
<?php $this->show_adverts( $content ); ?>
|
85 |
-
</div>
|
86 |
-
<?php
|
87 |
-
}
|
88 |
-
}
|
89 |
-
|
90 |
-
/**
|
91 |
-
* Output advert content.
|
92 |
-
*
|
93 |
-
* @since 1.0.0 Added
|
94 |
-
*
|
95 |
-
* @param $content string
|
96 |
-
*/
|
97 |
-
public function show_adverts( $content ) {
|
98 |
-
if ( ! empty( $content ) ) :
|
99 |
-
?>
|
100 |
-
<div class="rss-widget">
|
101 |
-
<?php echo $content; ?>
|
102 |
-
</div>
|
103 |
-
<?php
|
104 |
-
endif;
|
105 |
-
}
|
106 |
-
|
107 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
libs/factory/adverts/includes/class-adverts-rest-request.php
DELETED
@@ -1,180 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
namespace WBCR\Factory_Adverts_102;
|
4 |
-
|
5 |
-
// Exit if accessed directly
|
6 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
-
exit;
|
8 |
-
}
|
9 |
-
|
10 |
-
/**
|
11 |
-
* Factory request class.
|
12 |
-
*
|
13 |
-
* Performs a server request, retrieves banner data and stores it in the cache.
|
14 |
-
*
|
15 |
-
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
16 |
-
* @since 1.0.0 Added
|
17 |
-
* @package factory-adverts
|
18 |
-
* @copyright (c) 2019 Webcraftic Ltd
|
19 |
-
*/
|
20 |
-
class Rest_Request {
|
21 |
-
|
22 |
-
/**
|
23 |
-
* Rest route path.
|
24 |
-
*
|
25 |
-
* Define rest route path for rest request.
|
26 |
-
*
|
27 |
-
* @since 1.0.0
|
28 |
-
* @var string
|
29 |
-
* @uses do_rest_request()
|
30 |
-
*/
|
31 |
-
const FACTORY_ADVERTS_REST_ROUTE = '/adverds/v1/advt';
|
32 |
-
|
33 |
-
/**
|
34 |
-
* Plugin name.
|
35 |
-
*
|
36 |
-
* Set on class initialization from parameter plugin_name.
|
37 |
-
* Used as query parameter in rest request.
|
38 |
-
*
|
39 |
-
* @since 1.0.0 Added
|
40 |
-
*
|
41 |
-
* @var string
|
42 |
-
*/
|
43 |
-
private $plugin_name = '';
|
44 |
-
|
45 |
-
/**
|
46 |
-
* Adverts position.
|
47 |
-
*
|
48 |
-
* Position for advert (dashboard_widget, right_sidebar, notice, businnes_suggetion, support)
|
49 |
-
*
|
50 |
-
* Set on class initialization.
|
51 |
-
* Used as query parameter in rest request.
|
52 |
-
*
|
53 |
-
* @since 1.0.0 Added
|
54 |
-
*
|
55 |
-
* @var string
|
56 |
-
*/
|
57 |
-
private $ad_position = '';
|
58 |
-
|
59 |
-
/**
|
60 |
-
* Request constructor.
|
61 |
-
*
|
62 |
-
* Variable initialization.
|
63 |
-
*
|
64 |
-
* @since 1.0.0 Added
|
65 |
-
*
|
66 |
-
* @param string $plugin_name Plugin name from parameter plugin_name
|
67 |
-
* @param string $position Position for advert
|
68 |
-
*/
|
69 |
-
public function __construct( $plugin_name, $position ) {
|
70 |
-
$this->plugin_name = $plugin_name;
|
71 |
-
$this->ad_position = $position;
|
72 |
-
}
|
73 |
-
|
74 |
-
/**
|
75 |
-
* Get key for cached data.
|
76 |
-
*
|
77 |
-
* Used for store and get cached data for current plugin and position.
|
78 |
-
*
|
79 |
-
* @since 1.0.0 Added
|
80 |
-
*
|
81 |
-
* @return string
|
82 |
-
*/
|
83 |
-
private function get_key() {
|
84 |
-
return md5( self::FACTORY_ADVERTS_REST_ROUTE . $this->plugin_name . $this->ad_position );
|
85 |
-
}
|
86 |
-
|
87 |
-
/**
|
88 |
-
* Get data from cache.
|
89 |
-
*
|
90 |
-
* If data in the cache, not empty and not expired, then get data from cache. Or get data from server.
|
91 |
-
*
|
92 |
-
* @since 1.0.0 Added
|
93 |
-
*
|
94 |
-
* @return mixed array(
|
95 |
-
* 'plugin' => 'wbcr_insert_php',
|
96 |
-
* 'content' => '<p></p>',
|
97 |
-
* 'expires' => 1563542199,
|
98 |
-
* );
|
99 |
-
*/
|
100 |
-
private function get_cache() {
|
101 |
-
|
102 |
-
$cached_data = defined( 'FACTORY_ADVERTS_DEBUG' ) && FACTORY_ADVERTS_DEBUG ? false : get_option( $this->get_key() );
|
103 |
-
|
104 |
-
if ( empty( $cached_data ) || ! isset( $cached_data['expires'] ) || ! isset( $cached_data['content'] ) || empty( $cached_data['expires'] ) || $cached_data['expires'] <= current_time( 'timestamp' ) ) {
|
105 |
-
$data = $this->do_rest_request();
|
106 |
-
|
107 |
-
if ( ! empty( $data ) && isset( $data['content'] ) && isset( $data['expires'] ) ) {
|
108 |
-
update_option( $this->get_key(), $data );
|
109 |
-
}
|
110 |
-
} else {
|
111 |
-
$data = $cached_data;
|
112 |
-
}
|
113 |
-
|
114 |
-
return $data;
|
115 |
-
}
|
116 |
-
|
117 |
-
/**
|
118 |
-
* Get adverts content.
|
119 |
-
*
|
120 |
-
* @since 1.0.0 Added
|
121 |
-
*
|
122 |
-
* @return string
|
123 |
-
*/
|
124 |
-
public function get_content() {
|
125 |
-
$content = '';
|
126 |
-
|
127 |
-
$data = $this->get_cache();
|
128 |
-
|
129 |
-
if ( $data && isset( $data['content'] ) ) {
|
130 |
-
$content = $data['content'];
|
131 |
-
}
|
132 |
-
|
133 |
-
return $content;
|
134 |
-
}
|
135 |
-
|
136 |
-
/**
|
137 |
-
* Performs rest api request.
|
138 |
-
*
|
139 |
-
* If defined WBCR_ADINSERTER_REST_URL, then data requested from the remote server.
|
140 |
-
* Otherwise data will be requested from the same server.
|
141 |
-
* Defined in boot.php
|
142 |
-
*
|
143 |
-
* In some case on the server (Apache) in the .htaccess must be set
|
144 |
-
* RewriteRule ^wp-json/(.*)[?](.*) /?rest_route=/$1&$2 [L]
|
145 |
-
*
|
146 |
-
* @since 1.0.0 Added
|
147 |
-
*
|
148 |
-
* @return mixed array(
|
149 |
-
* 'plugin' => 'wbcr_insert_php',
|
150 |
-
* 'content' => '<p></p>',
|
151 |
-
* 'expires' => 1563542199,
|
152 |
-
* );
|
153 |
-
*/
|
154 |
-
private function do_rest_request() {
|
155 |
-
$empty_data = [
|
156 |
-
'plugin' => $this->plugin_name,
|
157 |
-
'content' => '',
|
158 |
-
'expires' => current_time( 'timestamp' ) + 60 * 60,
|
159 |
-
];
|
160 |
-
|
161 |
-
$url = site_url();
|
162 |
-
if ( defined( 'WBCR_ADINSERTER_REST_URL' ) && '' != WBCR_ADINSERTER_REST_URL ) {
|
163 |
-
$url = WBCR_ADINSERTER_REST_URL;
|
164 |
-
}
|
165 |
-
|
166 |
-
// Remote rest request
|
167 |
-
$url = rtrim( $url, '/' ) . '/wp-json' . self::FACTORY_ADVERTS_REST_ROUTE;
|
168 |
-
$url = add_query_arg( 'plugin', $this->plugin_name, $url );
|
169 |
-
$url = add_query_arg( 'position', $this->ad_position, $url );
|
170 |
-
|
171 |
-
$response = wp_remote_get( $url );
|
172 |
-
|
173 |
-
$code = wp_remote_retrieve_response_code( $response );
|
174 |
-
$body = wp_remote_retrieve_body( $response );
|
175 |
-
$data = (array) json_decode( $body );
|
176 |
-
|
177 |
-
return 200 == $code && $data && isset( $data['expires'] ) ? $data : $empty_data;
|
178 |
-
}
|
179 |
-
|
180 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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' ) ) {
|
@@ -15,6 +15,8 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
15 |
* This class use functional design pattern.
|
16 |
*
|
17 |
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
|
|
|
|
18 |
* @since 1.0.0 Added
|
19 |
* @package factory-adverts
|
20 |
* @copyright (c) 2019 Webcraftic Ltd
|
@@ -26,7 +28,7 @@ class Base {
|
|
26 |
*
|
27 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
28 |
* @since 1.0.1
|
29 |
-
* @var \
|
30 |
*/
|
31 |
private $plugin;
|
32 |
|
@@ -37,10 +39,6 @@ class Base {
|
|
37 |
* @since 1.0.0 Added
|
38 |
*
|
39 |
* @var array Example: array(
|
40 |
-
* 'prefix' => 'wbcr_inp_',
|
41 |
-
* 'plugin_name' => 'wbcr_insert_php',
|
42 |
-
* 'plugin_title' => 'Woody ad snippets',
|
43 |
-
* 'plugin_text_domain' => 'insert-php',
|
44 |
* 'dashboard_widget' => true,
|
45 |
* 'right_sidebar' => true,
|
46 |
* 'notice' => true,
|
@@ -55,7 +53,7 @@ class Base {
|
|
55 |
*
|
56 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
57 |
* @since 1.0.1
|
58 |
-
* @var \WBCR\
|
59 |
*/
|
60 |
private $api;
|
61 |
|
@@ -84,9 +82,9 @@ class Base {
|
|
84 |
*
|
85 |
* @since 1.0.0 Added
|
86 |
*
|
87 |
-
* @param \
|
88 |
*/
|
89 |
-
public function __construct( \
|
90 |
$this->plugin = $plugin;
|
91 |
|
92 |
$this->settings = wp_parse_args( $settings, [
|
@@ -100,7 +98,7 @@ class Base {
|
|
100 |
$this->api = new Creative_Motion_API( $this->plugin );
|
101 |
|
102 |
add_filter( 'wbcr/factory/pages/impressive/widgets', [ $this, 'register_plugin_widgets' ], 10, 3 );
|
103 |
-
add_action( '
|
104 |
add_action( 'current_screen', [ $this, 'register_dashboard_widget' ], 10, 2 );
|
105 |
}
|
106 |
|
@@ -215,7 +213,6 @@ class Base {
|
|
215 |
'id' => 'adverts_debug',
|
216 |
'type' => 'error',
|
217 |
'dismissible' => false,
|
218 |
-
'where' => [ 'plugins', 'themes', 'dashboard', 'edit' ],
|
219 |
'dismiss_expires' => 0,
|
220 |
'text' => '<p><b>' . $this->plugin->getPluginTitle() . '</b>:<br>' . $debug_message . '</p>'
|
221 |
];
|
@@ -230,7 +227,6 @@ class Base {
|
|
230 |
'id' => 'adverts_' . $hash,
|
231 |
'type' => 'success',
|
232 |
'dismissible' => true,
|
233 |
-
'where' => [ 'plugins', 'themes', 'dashboard', 'edit' ],
|
234 |
'dismiss_expires' => 0,
|
235 |
'text' => '<p><b>' . $this->plugin->getPluginTitle() . '</b>:<br>' . $notice_content . '</p>'
|
236 |
];
|
@@ -251,7 +247,7 @@ class Base {
|
|
251 |
if ( $this->settings['dashboard_widget'] && current_user_can( 'manage_options' ) ) {
|
252 |
$current_screen = get_current_screen();
|
253 |
|
254 |
-
if (
|
255 |
return;
|
256 |
}
|
257 |
|
@@ -261,7 +257,7 @@ class Base {
|
|
261 |
$content = $this->get_debug_message( 'dashboard_widget' );
|
262 |
}
|
263 |
|
264 |
-
require_once
|
265 |
new Dashboard_Widget( $this->plugin, $content );
|
266 |
}
|
267 |
}
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Adverts_104;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
15 |
* This class use functional design pattern.
|
16 |
*
|
17 |
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
18 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
19 |
+
*
|
20 |
* @since 1.0.0 Added
|
21 |
* @package factory-adverts
|
22 |
* @copyright (c) 2019 Webcraftic Ltd
|
28 |
*
|
29 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
30 |
* @since 1.0.1
|
31 |
+
* @var \Wbcr_Factory422_Plugin
|
32 |
*/
|
33 |
private $plugin;
|
34 |
|
39 |
* @since 1.0.0 Added
|
40 |
*
|
41 |
* @var array Example: array(
|
|
|
|
|
|
|
|
|
42 |
* 'dashboard_widget' => true,
|
43 |
* 'right_sidebar' => true,
|
44 |
* 'notice' => true,
|
53 |
*
|
54 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
55 |
* @since 1.0.1
|
56 |
+
* @var \WBCR\Factory_Adverts_104\Creative_Motion_API
|
57 |
*/
|
58 |
private $api;
|
59 |
|
82 |
*
|
83 |
* @since 1.0.0 Added
|
84 |
*
|
85 |
+
* @param \Wbcr_Factory422_Plugin $plugin
|
86 |
*/
|
87 |
+
public function __construct( \Wbcr_Factory422_Plugin $plugin, $settings ) {
|
88 |
$this->plugin = $plugin;
|
89 |
|
90 |
$this->settings = wp_parse_args( $settings, [
|
98 |
$this->api = new Creative_Motion_API( $this->plugin );
|
99 |
|
100 |
add_filter( 'wbcr/factory/pages/impressive/widgets', [ $this, 'register_plugin_widgets' ], 10, 3 );
|
101 |
+
add_action( 'wbcr/factory/admin_notices', [ $this, 'register_plugin_notice' ], 10, 2 );
|
102 |
add_action( 'current_screen', [ $this, 'register_dashboard_widget' ], 10, 2 );
|
103 |
}
|
104 |
|
213 |
'id' => 'adverts_debug',
|
214 |
'type' => 'error',
|
215 |
'dismissible' => false,
|
|
|
216 |
'dismiss_expires' => 0,
|
217 |
'text' => '<p><b>' . $this->plugin->getPluginTitle() . '</b>:<br>' . $debug_message . '</p>'
|
218 |
];
|
227 |
'id' => 'adverts_' . $hash,
|
228 |
'type' => 'success',
|
229 |
'dismissible' => true,
|
|
|
230 |
'dismiss_expires' => 0,
|
231 |
'text' => '<p><b>' . $this->plugin->getPluginTitle() . '</b>:<br>' . $notice_content . '</p>'
|
232 |
];
|
247 |
if ( $this->settings['dashboard_widget'] && current_user_can( 'manage_options' ) ) {
|
248 |
$current_screen = get_current_screen();
|
249 |
|
250 |
+
if ( ! in_array( $current_screen->id, [ 'dashboard', 'dashboard-network' ] ) ) {
|
251 |
return;
|
252 |
}
|
253 |
|
257 |
$content = $this->get_debug_message( 'dashboard_widget' );
|
258 |
}
|
259 |
|
260 |
+
require_once FACTORY_ADVERTS_104_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' ) ) {
|
@@ -13,6 +13,8 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
13 |
* Adds a widget with a banner or a list of news.
|
14 |
*
|
15 |
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
|
|
|
|
16 |
* @since 1.0.0 Added
|
17 |
* @package factory-adverts
|
18 |
* @copyright (c) 2019 Webcraftic Ltd
|
@@ -33,7 +35,7 @@ class Dashboard_Widget {
|
|
33 |
*
|
34 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
35 |
* @since 1.0.1
|
36 |
-
* @var \
|
37 |
*/
|
38 |
private $plugin;
|
39 |
|
@@ -44,15 +46,21 @@ class Dashboard_Widget {
|
|
44 |
*
|
45 |
* @since 1.0.0 Added
|
46 |
*
|
47 |
-
* @param \
|
48 |
* @param string $content
|
49 |
*/
|
50 |
-
public function __construct( \
|
51 |
|
52 |
$this->plugin = $plugin;
|
53 |
$this->content = $content;
|
54 |
|
55 |
if ( ! empty( $this->content ) ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
add_action( 'wp_dashboard_setup', [ $this, 'add_dashboard_widgets' ], 999 );
|
57 |
}
|
58 |
}
|
@@ -63,8 +71,6 @@ class Dashboard_Widget {
|
|
63 |
* @since 1.0.0 Added
|
64 |
*/
|
65 |
public function add_dashboard_widgets() {
|
66 |
-
global $wp_meta_boxes;
|
67 |
-
|
68 |
$widget_id = 'wbcr-factory-adverts-widget';
|
69 |
|
70 |
wp_add_dashboard_widget( $widget_id, $this->plugin->getPluginTitle() . ' News', [
|
@@ -72,13 +78,7 @@ class Dashboard_Widget {
|
|
72 |
'print_widget_content'
|
73 |
] );
|
74 |
|
75 |
-
|
76 |
-
$normal_core = $wp_meta_boxes['dashboard']['normal']['core'];
|
77 |
-
$widget_backup = [ $widget_id => $normal_core[ $widget_id ] ];
|
78 |
-
unset( $normal_core[ $widget_id ] );
|
79 |
-
$sorted_core = array_merge( $widget_backup, $normal_core );
|
80 |
-
|
81 |
-
$wp_meta_boxes['dashboard']['normal']['core'] = $sorted_core;
|
82 |
}
|
83 |
|
84 |
/**
|
@@ -96,4 +96,30 @@ class Dashboard_Widget {
|
|
96 |
<?php
|
97 |
|
98 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
99 |
}
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Adverts_104;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
13 |
* Adds a widget with a banner or a list of news.
|
14 |
*
|
15 |
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
16 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
17 |
+
*
|
18 |
* @since 1.0.0 Added
|
19 |
* @package factory-adverts
|
20 |
* @copyright (c) 2019 Webcraftic Ltd
|
35 |
*
|
36 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
37 |
* @since 1.0.1
|
38 |
+
* @var \Wbcr_Factory422_Plugin
|
39 |
*/
|
40 |
private $plugin;
|
41 |
|
46 |
*
|
47 |
* @since 1.0.0 Added
|
48 |
*
|
49 |
+
* @param \Wbcr_Factory422_Plugin $plugin
|
50 |
* @param string $content
|
51 |
*/
|
52 |
+
public function __construct( \Wbcr_Factory422_Plugin $plugin, $content ) {
|
53 |
|
54 |
$this->plugin = $plugin;
|
55 |
$this->content = $content;
|
56 |
|
57 |
if ( ! empty( $this->content ) ) {
|
58 |
+
if ( $this->plugin->isNetworkActive() && $this->plugin->isNetworkAdmin() ) {
|
59 |
+
add_action( 'wp_network_dashboard_setup', [ $this, 'add_dashboard_widgets' ], 999 );
|
60 |
+
|
61 |
+
return;
|
62 |
+
}
|
63 |
+
|
64 |
add_action( 'wp_dashboard_setup', [ $this, 'add_dashboard_widgets' ], 999 );
|
65 |
}
|
66 |
}
|
71 |
* @since 1.0.0 Added
|
72 |
*/
|
73 |
public function add_dashboard_widgets() {
|
|
|
|
|
74 |
$widget_id = 'wbcr-factory-adverts-widget';
|
75 |
|
76 |
wp_add_dashboard_widget( $widget_id, $this->plugin->getPluginTitle() . ' News', [
|
78 |
'print_widget_content'
|
79 |
] );
|
80 |
|
81 |
+
$this->sort_dashboard_widgets( $widget_id );
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
}
|
83 |
|
84 |
/**
|
96 |
<?php
|
97 |
|
98 |
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Сортируем виджеты на странице дашбоард
|
102 |
+
*
|
103 |
+
* Виджеты должны быть в таком порядке, чтобы наш виджет был выше всех.
|
104 |
+
*
|
105 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
106 |
+
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
107 |
+
*
|
108 |
+
* @since 1.0.2 Добавлена поддержка мультисайтов
|
109 |
+
* @since 1.0.0 Добавлен
|
110 |
+
*
|
111 |
+
* @param string $widget_id ID нашего виджета
|
112 |
+
*/
|
113 |
+
private function sort_dashboard_widgets( $widget_id ) {
|
114 |
+
global $wp_meta_boxes;
|
115 |
+
|
116 |
+
$location = $this->plugin->isNetworkAdmin() ? 'dashboard-network' : 'dashboard';
|
117 |
+
|
118 |
+
$normal_core = $wp_meta_boxes[ $location ]['normal']['core'];
|
119 |
+
$widget_backup = [ $widget_id => $normal_core[ $widget_id ] ];
|
120 |
+
unset( $normal_core[ $widget_id ] );
|
121 |
+
$sorted_core = array_merge( $widget_backup, $normal_core );
|
122 |
+
|
123 |
+
$wp_meta_boxes['dashboard']['normal']['core'] = $sorted_core;
|
124 |
+
}
|
125 |
}
|
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' ) ) {
|
@@ -12,7 +12,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
*
|
13 |
* Performs a server request, retrieves banner data and stores it in the cache.
|
14 |
*
|
15 |
-
* @author Alexander Kovalev <alex.kovalevv@gmail.com
|
16 |
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
17 |
*
|
18 |
* @since 1.0.1 Изменил имя класса и доработал его.
|
@@ -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 |
|
@@ -77,9 +77,9 @@ class Creative_Motion_API {
|
|
77 |
*
|
78 |
* @since 1.0.0 Added
|
79 |
*
|
80 |
-
* @param \
|
81 |
*/
|
82 |
-
public function __construct( \
|
83 |
$this->plugin = $plugin;
|
84 |
}
|
85 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Adverts_104;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
*
|
13 |
* Performs a server request, retrieves banner data and stores it in the cache.
|
14 |
*
|
15 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
16 |
* @author Alexander Vitkalov <nechin.va@gmail.com>
|
17 |
*
|
18 |
* @since 1.0.1 Изменил имя класса и доработал его.
|
65 |
*
|
66 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
67 |
* @since 1.0.1
|
68 |
+
* @var \Wbcr_Factory422_Plugin
|
69 |
*/
|
70 |
private $plugin;
|
71 |
|
77 |
*
|
78 |
* @since 1.0.0 Added
|
79 |
*
|
80 |
+
* @param \Wbcr_Factory422_Plugin $plugin_name
|
81 |
*/
|
82 |
+
public function __construct( \Wbcr_Factory422_Plugin $plugin ) {
|
83 |
$this->plugin = $plugin;
|
84 |
}
|
85 |
|
libs/factory/adverts/langs/{wbcr_factory_adverts_102-ru_RU.mo → wbcr_factory_adverts_104-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/adverts/langs/{wbcr_factory_adverts_102-ru_RU.po → wbcr_factory_adverts_104-ru_RU.po}
RENAMED
File without changes
|
libs/factory/adverts/readme.txt
DELETED
@@ -1,98 +0,0 @@
|
|
1 |
-
=== Plugin Name ===
|
2 |
-
Contributors: nechii
|
3 |
-
Tags: ad, advertisment, module
|
4 |
-
Requires at least: 4.2
|
5 |
-
Tested up to: 5.2
|
6 |
-
Stable tag: 1.2.0
|
7 |
-
Requires PHP: 5.4
|
8 |
-
|
9 |
-
Module adds ad units to plugins.
|
10 |
-
|
11 |
-
== Description ==
|
12 |
-
|
13 |
-
The module allows you to add the specified ad blocks to the plugins.
|
14 |
-
|
15 |
-
Managing and storing the content of each block occurs in special side plugin.
|
16 |
-
|
17 |
-
To add the necessary blocks, you need to add the following code to the main plugin file:
|
18 |
-
if ( is_admin() ) {
|
19 |
-
global $wbcr_plugin_name_adinserter;
|
20 |
-
|
21 |
-
$wbcr_plugin_name_adinserter = new WBCR\Factory_Adverts_000\Base(
|
22 |
-
__FILE__,
|
23 |
-
array_merge(
|
24 |
-
$plugin_info,
|
25 |
-
array(
|
26 |
-
'dashboard_widget' => true, // show dashboard widget (default: false)
|
27 |
-
'right_sidebar' => true, // show adverts sidebar (default: false)
|
28 |
-
'notice' => true, // show notice message (default: false)
|
29 |
-
)
|
30 |
-
)
|
31 |
-
);
|
32 |
-
}
|
33 |
-
In this example, three ad blocks will be added: dashboard_widget, right_sidebar and notice.
|
34 |
-
|
35 |
-
It is possible to add an ad block manually. To do this, in the specific place of the code you need to insert the following code:
|
36 |
-
global $wbcr_plugin_name_adinserter;
|
37 |
-
echo $wbcr_plugin_name_adinserter->get_adverts( 'right_sidebar' );
|
38 |
-
In this example will be displayed content for ad block 'right_sidebar';
|
39 |
-
|
40 |
-
== Changelog ==
|
41 |
-
|
42 |
-
= 1.2.3 =
|
43 |
-
* Set dashboard widget first in order
|
44 |
-
|
45 |
-
= 1.2.2 =
|
46 |
-
* Changed the name of a global variable and its use rule
|
47 |
-
|
48 |
-
= 1.2.1 =
|
49 |
-
* Moved constant for rest request url from wp-config.php to boot.php
|
50 |
-
|
51 |
-
= 1.2.0 =
|
52 |
-
* Removed rest request. Only get request available.
|
53 |
-
* Cleaning and refactoring code.
|
54 |
-
|
55 |
-
= 1.1.0 =
|
56 |
-
* Add new notice functions.
|
57 |
-
* Cleaning and refactoring code.
|
58 |
-
|
59 |
-
= 1.0.0 =
|
60 |
-
* Cleaning and refactoring code.
|
61 |
-
* Add doc blocks.
|
62 |
-
* Some fixes and changes.
|
63 |
-
|
64 |
-
= 0.9.0 =
|
65 |
-
* Added new blocks.
|
66 |
-
* Fixed widget functions.
|
67 |
-
|
68 |
-
= 0.8.0 =
|
69 |
-
* Added notice block.
|
70 |
-
* Added constants for unique dashboard notice.
|
71 |
-
* Fixed widget functions.
|
72 |
-
|
73 |
-
= 0.7.0 =
|
74 |
-
* Added constants for unique dashboard widget.
|
75 |
-
* Fixed widget functions.
|
76 |
-
|
77 |
-
= 0.6.0 =
|
78 |
-
* Improve widget functions.
|
79 |
-
* Fixed cache functions.
|
80 |
-
|
81 |
-
= 0.5.0 =
|
82 |
-
* Added default rest response.
|
83 |
-
* Fixed rest request.
|
84 |
-
|
85 |
-
= 0.4.0 =
|
86 |
-
* Fixed rest request response.
|
87 |
-
* Fixed base functions.
|
88 |
-
|
89 |
-
= 0.3.0 =
|
90 |
-
* Improve rest request.
|
91 |
-
* Fixed requests functions.
|
92 |
-
|
93 |
-
= 0.2.0 =
|
94 |
-
* Added expiration time for cached data.
|
95 |
-
* Fixed cache functions.
|
96 |
-
|
97 |
-
= 0.1.0 =
|
98 |
-
* Version with base functions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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-423 .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-423 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-423 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-423 .factory-accordion-item{display:none}.factory-bootstrap-423 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-423 .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-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .pagination>.active>span:hover{background-color:#c7a589;border-color:#b78a66}
|
libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-421 article,.factory-bootstrap-421 aside,.factory-bootstrap-421 details,.factory-bootstrap-421 figcaption,.factory-bootstrap-421 figure,.factory-bootstrap-421 footer,.factory-bootstrap-421 header,.factory-bootstrap-421 hgroup,.factory-bootstrap-421 main,.factory-bootstrap-421 nav,.factory-bootstrap-421 section,.factory-bootstrap-421 summary{display:block}.factory-bootstrap-421 audio,.factory-bootstrap-421 canvas,.factory-bootstrap-421 video{display:inline-block}.factory-bootstrap-421 audio:not([controls]){display:none;height:0}.factory-bootstrap-421 [hidden],.factory-bootstrap-421 template{display:none}.factory-bootstrap-421 body{margin:0}.factory-bootstrap-421 a{background:0 0}.factory-bootstrap-421 a:focus{outline:thin dotted}.factory-bootstrap-421 a:active,.factory-bootstrap-421 a:hover{outline:0}.factory-bootstrap-421 h1{margin:.67em 0}.factory-bootstrap-421 b,.factory-bootstrap-421 strong{font-weight:700}.factory-bootstrap-421 dfn{font-style:italic}.factory-bootstrap-421 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-421 mark{color:#000;background:#ff0}.factory-bootstrap-421 code,.factory-bootstrap-421 kbd,.factory-bootstrap-421 pre,.factory-bootstrap-421 samp{font-size:1em}.factory-bootstrap-421 pre{white-space:pre-wrap}.factory-bootstrap-421 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-421 sub,.factory-bootstrap-421 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-421 sup{top:-.5em}.factory-bootstrap-421 sub{bottom:-.25em}.factory-bootstrap-421 img{border:0}.factory-bootstrap-421 svg:not(:root){overflow:hidden}.factory-bootstrap-421 figure{margin:0}.factory-bootstrap-421 button,.factory-bootstrap-421 input,.factory-bootstrap-421 select,.factory-bootstrap-421 textarea{margin:0}.factory-bootstrap-421 button,.factory-bootstrap-421 select{text-transform:none}.factory-bootstrap-421 select{padding-right:4px!important}.factory-bootstrap-421 button,.factory-bootstrap-421 input[type=reset],.factory-bootstrap-421 input[type=submit],html .factory-bootstrap-421 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-421 button[disabled],html .factory-bootstrap-421 input[disabled]{cursor:default}.factory-bootstrap-421 input[type=checkbox],.factory-bootstrap-421 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-421 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-421 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-421 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-421 button::-moz-focus-inner,.factory-bootstrap-421 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-421 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-421 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-421 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-421 a,.factory-bootstrap-421 a:visited{text-decoration:underline}.factory-bootstrap-421 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-421 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-421 a[href^="javascript:"]:after,.factory-bootstrap-421 a[href^="#"]:after{content:""}.factory-bootstrap-421 blockquote,.factory-bootstrap-421 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-421 thead{display:table-header-group}.factory-bootstrap-421 img,.factory-bootstrap-421 tr{page-break-inside:avoid}.factory-bootstrap-421 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-421 h2,.factory-bootstrap-421 h3,.factory-bootstrap-421 p{orphans:3;widows:3}.factory-bootstrap-421 h2,.factory-bootstrap-421 h3{page-break-after:avoid}.factory-bootstrap-421 select{background:#fff!important}.factory-bootstrap-421 .navbar{display:none}.factory-bootstrap-421 .table td,.factory-bootstrap-421 .table th{background-color:#fff!important}.factory-bootstrap-421 .btn>.caret,.factory-bootstrap-421 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-421 .label{border:1px solid #000}.factory-bootstrap-421 .table{border-collapse:collapse!important}.factory-bootstrap-421 .table-bordered td,.factory-bootstrap-421 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-421 *,.factory-bootstrap-421 :after,.factory-bootstrap-421 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-421{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-421 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-421 button,.factory-bootstrap-421 input,.factory-bootstrap-421 select,.factory-bootstrap-421 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-421 img{vertical-align:middle}.factory-bootstrap-421 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-421 .img-rounded{border-radius:6px}.factory-bootstrap-421 .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-421 .img-circle{border-radius:50%}.factory-bootstrap-421 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-421 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-421 .h1,.factory-bootstrap-421 .h2,.factory-bootstrap-421 .h3,.factory-bootstrap-421 .h4,.factory-bootstrap-421 .h5,.factory-bootstrap-421 .h6,.factory-bootstrap-421 h1,.factory-bootstrap-421 h2,.factory-bootstrap-421 h3,.factory-bootstrap-421 h4,.factory-bootstrap-421 h5,.factory-bootstrap-421 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-421 .h1 .small,.factory-bootstrap-421 .h1 small,.factory-bootstrap-421 .h2 .small,.factory-bootstrap-421 .h2 small,.factory-bootstrap-421 .h3 .small,.factory-bootstrap-421 .h3 small,.factory-bootstrap-421 .h4 .small,.factory-bootstrap-421 .h4 small,.factory-bootstrap-421 .h5 .small,.factory-bootstrap-421 .h5 small,.factory-bootstrap-421 .h6 .small,.factory-bootstrap-421 .h6 small,.factory-bootstrap-421 h1 .small,.factory-bootstrap-421 h1 small,.factory-bootstrap-421 h2 .small,.factory-bootstrap-421 h2 small,.factory-bootstrap-421 h3 .small,.factory-bootstrap-421 h3 small,.factory-bootstrap-421 h4 .small,.factory-bootstrap-421 h4 small,.factory-bootstrap-421 h5 .small,.factory-bootstrap-421 h5 small,.factory-bootstrap-421 h6 .small,.factory-bootstrap-421 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-421 h1,.factory-bootstrap-421 h2,.factory-bootstrap-421 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-421 h1 .small,.factory-bootstrap-421 h1 small,.factory-bootstrap-421 h2 .small,.factory-bootstrap-421 h2 small,.factory-bootstrap-421 h3 .small,.factory-bootstrap-421 h3 small{font-size:65%}.factory-bootstrap-421 h4,.factory-bootstrap-421 h5,.factory-bootstrap-421 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-421 h4 .small,.factory-bootstrap-421 h4 small,.factory-bootstrap-421 h5 .small,.factory-bootstrap-421 h5 small,.factory-bootstrap-421 h6 .small,.factory-bootstrap-421 h6 small{font-size:75%}.factory-bootstrap-421 .h1,.factory-bootstrap-421 h1{font-size:36px}.factory-bootstrap-421 .h2,.factory-bootstrap-421 h2{font-size:30px}.factory-bootstrap-421 .h3,.factory-bootstrap-421 h3{font-size:24px}.factory-bootstrap-421 .h4,.factory-bootstrap-421 h4{font-size:18px}.factory-bootstrap-421 .h5,.factory-bootstrap-421 h5{font-size:14px}.factory-bootstrap-421 .h6,.factory-bootstrap-421 h6{font-size:12px}.factory-bootstrap-421 p{margin:0 0 10px}.factory-bootstrap-421 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-421 .small,.factory-bootstrap-421 small{font-size:85%}.factory-bootstrap-421 cite{font-style:normal}.factory-bootstrap-421 .text-muted{color:#999}.factory-bootstrap-421 .text-primary{color:#428bca}.factory-bootstrap-421 .text-primary:hover{color:#3071a9}.factory-bootstrap-421 .text-warning{color:#8a6d3b}.factory-bootstrap-421 .text-warning:hover{color:#66512c}.factory-bootstrap-421 .text-danger{color:#a94442}.factory-bootstrap-421 .text-danger:hover{color:#843534}.factory-bootstrap-421 .text-success{color:#3c763d}.factory-bootstrap-421 .text-success:hover{color:#2b542c}.factory-bootstrap-421 .text-info{color:#31708f}.factory-bootstrap-421 .text-info:hover{color:#245269}.factory-bootstrap-421 .text-left{text-align:left}.factory-bootstrap-421 .text-right{text-align:right}.factory-bootstrap-421 .text-center{text-align:center}.factory-bootstrap-421 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-421 ol,.factory-bootstrap-421 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-421 ol ol,.factory-bootstrap-421 ol ul,.factory-bootstrap-421 ul ol,.factory-bootstrap-421 ul ul{margin-bottom:0}.factory-bootstrap-421 .list-inline,.factory-bootstrap-421 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-421 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-421 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-421 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-421 dd,.factory-bootstrap-421 dt{line-height:1.428571429}.factory-bootstrap-421 dt{font-weight:700}.factory-bootstrap-421 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-421 abbr[data-original-title],.factory-bootstrap-421 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-421 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-421 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-421 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-421 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-421 blockquote .small,.factory-bootstrap-421 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-421 blockquote .small:before,.factory-bootstrap-421 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-421 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-421 blockquote.pull-right .small,.factory-bootstrap-421 blockquote.pull-right p,.factory-bootstrap-421 blockquote.pull-right small{text-align:right}.factory-bootstrap-421 blockquote.pull-right .small:before,.factory-bootstrap-421 blockquote.pull-right small:before{content:''}.factory-bootstrap-421 blockquote.pull-right .small:after,.factory-bootstrap-421 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-421 blockquote:after,.factory-bootstrap-421 blockquote:before{content:""}.factory-bootstrap-421 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-421 code,.factory-bootstrap-421 kbd,.factory-bootstrap-421 pre,.factory-bootstrap-421 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-421 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-421 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-421 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-421 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-421 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-421 .container:after,.factory-bootstrap-421 .container:before{display:table;content:" "}.factory-bootstrap-421 .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-421 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-421 .row:after,.factory-bootstrap-421 .row:before{display:table;content:" "}.factory-bootstrap-421 .row:after{clear:both}.factory-bootstrap-421 .col-lg-1,.factory-bootstrap-421 .col-lg-10,.factory-bootstrap-421 .col-lg-11,.factory-bootstrap-421 .col-lg-12,.factory-bootstrap-421 .col-lg-2,.factory-bootstrap-421 .col-lg-3,.factory-bootstrap-421 .col-lg-4,.factory-bootstrap-421 .col-lg-5,.factory-bootstrap-421 .col-lg-6,.factory-bootstrap-421 .col-lg-7,.factory-bootstrap-421 .col-lg-8,.factory-bootstrap-421 .col-lg-9,.factory-bootstrap-421 .col-md-1,.factory-bootstrap-421 .col-md-10,.factory-bootstrap-421 .col-md-11,.factory-bootstrap-421 .col-md-12,.factory-bootstrap-421 .col-md-2,.factory-bootstrap-421 .col-md-3,.factory-bootstrap-421 .col-md-4,.factory-bootstrap-421 .col-md-5,.factory-bootstrap-421 .col-md-6,.factory-bootstrap-421 .col-md-7,.factory-bootstrap-421 .col-md-8,.factory-bootstrap-421 .col-md-9,.factory-bootstrap-421 .col-sm-1,.factory-bootstrap-421 .col-sm-10,.factory-bootstrap-421 .col-sm-11,.factory-bootstrap-421 .col-sm-12,.factory-bootstrap-421 .col-sm-2,.factory-bootstrap-421 .col-sm-3,.factory-bootstrap-421 .col-sm-4,.factory-bootstrap-421 .col-sm-5,.factory-bootstrap-421 .col-sm-6,.factory-bootstrap-421 .col-sm-7,.factory-bootstrap-421 .col-sm-8,.factory-bootstrap-421 .col-sm-9,.factory-bootstrap-421 .col-xs-1,.factory-bootstrap-421 .col-xs-10,.factory-bootstrap-421 .col-xs-11,.factory-bootstrap-421 .col-xs-12,.factory-bootstrap-421 .col-xs-2,.factory-bootstrap-421 .col-xs-3,.factory-bootstrap-421 .col-xs-4,.factory-bootstrap-421 .col-xs-5,.factory-bootstrap-421 .col-xs-6,.factory-bootstrap-421 .col-xs-7,.factory-bootstrap-421 .col-xs-8,.factory-bootstrap-421 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-421 .col-xs-1,.factory-bootstrap-421 .col-xs-10,.factory-bootstrap-421 .col-xs-11,.factory-bootstrap-421 .col-xs-12,.factory-bootstrap-421 .col-xs-2,.factory-bootstrap-421 .col-xs-3,.factory-bootstrap-421 .col-xs-4,.factory-bootstrap-421 .col-xs-5,.factory-bootstrap-421 .col-xs-6,.factory-bootstrap-421 .col-xs-7,.factory-bootstrap-421 .col-xs-8,.factory-bootstrap-421 .col-xs-9{float:left}.factory-bootstrap-421 .col-xs-12{width:100%}.factory-bootstrap-421 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-421 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-421 .col-xs-9{width:75%}.factory-bootstrap-421 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-421 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-421 .col-xs-6{width:50%}.factory-bootstrap-421 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-421 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-421 .col-xs-3{width:25%}.factory-bootstrap-421 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-421 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-421 .col-xs-pull-12{right:100%}.factory-bootstrap-421 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-421 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-421 .col-xs-pull-9{right:75%}.factory-bootstrap-421 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-421 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-421 .col-xs-pull-6{right:50%}.factory-bootstrap-421 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-421 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-421 .col-xs-pull-3{right:25%}.factory-bootstrap-421 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-421 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-421 .col-xs-pull-0{right:0}.factory-bootstrap-421 .col-xs-push-12{left:100%}.factory-bootstrap-421 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-421 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-421 .col-xs-push-9{left:75%}.factory-bootstrap-421 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-421 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-421 .col-xs-push-6{left:50%}.factory-bootstrap-421 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-421 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-421 .col-xs-push-3{left:25%}.factory-bootstrap-421 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-421 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-421 .col-xs-push-0{left:0}.factory-bootstrap-421 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-421 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-421 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-421 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-421 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-421 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-421 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-421 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-421 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-421 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-421 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-421 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-421 .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-421 table{max-width:100%;background-color:transparent}.factory-bootstrap-421 th{text-align:left}.factory-bootstrap-421 .table{width:100%;margin-bottom:20px}.factory-bootstrap-421 .table>tbody>tr>td,.factory-bootstrap-421 .table>tbody>tr>th,.factory-bootstrap-421 .table>tfoot>tr>td,.factory-bootstrap-421 .table>tfoot>tr>th,.factory-bootstrap-421 .table>thead>tr>td,.factory-bootstrap-421 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-421 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-421 .table>caption+thead>tr:first-child>td,.factory-bootstrap-421 .table>caption+thead>tr:first-child>th,.factory-bootstrap-421 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-421 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-421 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-421 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-421 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-421 .table .table{background-color:#fff}.factory-bootstrap-421 .table-condensed>tbody>tr>td,.factory-bootstrap-421 .table-condensed>tbody>tr>th,.factory-bootstrap-421 .table-condensed>tfoot>tr>td,.factory-bootstrap-421 .table-condensed>tfoot>tr>th,.factory-bootstrap-421 .table-condensed>thead>tr>td,.factory-bootstrap-421 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-421 .table-bordered,.factory-bootstrap-421 .table-bordered>tbody>tr>td,.factory-bootstrap-421 .table-bordered>tbody>tr>th,.factory-bootstrap-421 .table-bordered>tfoot>tr>td,.factory-bootstrap-421 .table-bordered>tfoot>tr>th,.factory-bootstrap-421 .table-bordered>thead>tr>td,.factory-bootstrap-421 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-421 .table-bordered>thead>tr>td,.factory-bootstrap-421 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-421 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-421 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-421 .table-hover>tbody>tr:hover>td,.factory-bootstrap-421 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-421 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-421 table td[class*=col-],.factory-bootstrap-421 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-421 .table>tbody>.active>td,.factory-bootstrap-421 .table>tbody>.active>th,.factory-bootstrap-421 .table>tbody>tr>.active,.factory-bootstrap-421 .table>tfoot>.active>td,.factory-bootstrap-421 .table>tfoot>.active>th,.factory-bootstrap-421 .table>tfoot>tr>.active,.factory-bootstrap-421 .table>thead>.active>td,.factory-bootstrap-421 .table>thead>.active>th,.factory-bootstrap-421 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-421 .table-hover>tbody>.active:hover>td,.factory-bootstrap-421 .table-hover>tbody>.active:hover>th,.factory-bootstrap-421 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-421 .table>tbody>.success>td,.factory-bootstrap-421 .table>tbody>.success>th,.factory-bootstrap-421 .table>tbody>tr>.success,.factory-bootstrap-421 .table>tfoot>.success>td,.factory-bootstrap-421 .table>tfoot>.success>th,.factory-bootstrap-421 .table>tfoot>tr>.success,.factory-bootstrap-421 .table>thead>.success>td,.factory-bootstrap-421 .table>thead>.success>th,.factory-bootstrap-421 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-421 .table-hover>tbody>.success:hover>td,.factory-bootstrap-421 .table-hover>tbody>.success:hover>th,.factory-bootstrap-421 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-421 .table>tbody>.danger>td,.factory-bootstrap-421 .table>tbody>.danger>th,.factory-bootstrap-421 .table>tbody>tr>.danger,.factory-bootstrap-421 .table>tfoot>.danger>td,.factory-bootstrap-421 .table>tfoot>.danger>th,.factory-bootstrap-421 .table>tfoot>tr>.danger,.factory-bootstrap-421 .table>thead>.danger>td,.factory-bootstrap-421 .table>thead>.danger>th,.factory-bootstrap-421 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-421 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-421 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-421 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-421 .table>tbody>.warning>td,.factory-bootstrap-421 .table>tbody>.warning>th,.factory-bootstrap-421 .table>tbody>tr>.warning,.factory-bootstrap-421 .table>tfoot>.warning>td,.factory-bootstrap-421 .table>tfoot>.warning>th,.factory-bootstrap-421 .table>tfoot>tr>.warning,.factory-bootstrap-421 .table>thead>.warning>td,.factory-bootstrap-421 .table>thead>.warning>th,.factory-bootstrap-421 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-421 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-421 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-421 .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-421 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-421 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-421 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-421 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-421 input[type=checkbox],.factory-bootstrap-421 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-421 input[type=file]{display:block}.factory-bootstrap-421 select[multiple],.factory-bootstrap-421 select[size]{height:auto}.factory-bootstrap-421 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-421 input[type=checkbox]:focus,.factory-bootstrap-421 input[type=file]:focus,.factory-bootstrap-421 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-421 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-421 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-421 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-421 .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-421 .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-421 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-421 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-421 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-421 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-421 .form-control[disabled],.factory-bootstrap-421 .form-control[readonly],.factory-bootstrap-421 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-421 textarea.form-control{height:auto}.factory-bootstrap-421 .form-group{margin-bottom:15px}.factory-bootstrap-421 .checkbox,.factory-bootstrap-421 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-421 .checkbox label,.factory-bootstrap-421 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-421 .checkbox input[type=checkbox],.factory-bootstrap-421 .checkbox-inline input[type=checkbox],.factory-bootstrap-421 .radio input[type=radio],.factory-bootstrap-421 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-421 .checkbox+.checkbox,.factory-bootstrap-421 .radio+.radio{margin-top:-5px}.factory-bootstrap-421 .checkbox-inline,.factory-bootstrap-421 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-421 .checkbox-inline+.checkbox-inline,.factory-bootstrap-421 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-421 .checkbox-inline[disabled],.factory-bootstrap-421 .checkbox[disabled],.factory-bootstrap-421 .radio-inline[disabled],.factory-bootstrap-421 .radio[disabled],.factory-bootstrap-421 fieldset[disabled] .checkbox,.factory-bootstrap-421 fieldset[disabled] .checkbox-inline,.factory-bootstrap-421 fieldset[disabled] .radio,.factory-bootstrap-421 fieldset[disabled] .radio-inline,.factory-bootstrap-421 fieldset[disabled] input[type=checkbox],.factory-bootstrap-421 fieldset[disabled] input[type=radio],.factory-bootstrap-421 input[type=checkbox][disabled],.factory-bootstrap-421 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-421 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-421 textarea.input-sm{height:auto}.factory-bootstrap-421 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-421 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-421 textarea.input-lg{height:auto}.factory-bootstrap-421 .has-warning .checkbox,.factory-bootstrap-421 .has-warning .checkbox-inline,.factory-bootstrap-421 .has-warning .control-label,.factory-bootstrap-421 .has-warning .help-block,.factory-bootstrap-421 .has-warning .radio,.factory-bootstrap-421 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-421 .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-421 .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-421 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-421 .has-error .checkbox,.factory-bootstrap-421 .has-error .checkbox-inline,.factory-bootstrap-421 .has-error .control-label,.factory-bootstrap-421 .has-error .help-block,.factory-bootstrap-421 .has-error .radio,.factory-bootstrap-421 .has-error .radio-inline{color:#a94442}.factory-bootstrap-421 .controls{display:block}.factory-bootstrap-421 .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-421 .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-421 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-421 .has-success .checkbox,.factory-bootstrap-421 .has-success .checkbox-inline,.factory-bootstrap-421 .has-success .control-label,.factory-bootstrap-421 .has-success .help-block,.factory-bootstrap-421 .has-success .radio,.factory-bootstrap-421 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-421 .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-421 .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-421 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-421 .form-control-static{margin-bottom:0}.factory-bootstrap-421 .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-421 .form-horizontal .checkbox,.factory-bootstrap-421 .form-horizontal .checkbox-inline,.factory-bootstrap-421 .form-horizontal .control-label,.factory-bootstrap-421 .form-horizontal .radio,.factory-bootstrap-421 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-421 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-421 .form-horizontal .checkbox,.factory-bootstrap-421 .form-horizontal .radio{min-height:27px}.factory-bootstrap-421 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-421 .form-horizontal .form-group:after,.factory-bootstrap-421 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-421 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-421 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-421 .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-421 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-421 .btn{text-decoration:none}.factory-bootstrap-421 .btn:focus,.factory-bootstrap-421 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-421 .btn.disabled,.factory-bootstrap-421 .btn[disabled],.factory-bootstrap-421 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-421 .btn-default.active,.factory-bootstrap-421 .btn-default:active,.factory-bootstrap-421 .btn-default:focus,.factory-bootstrap-421 .btn-default:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-421 .btn-default.active,.factory-bootstrap-421 .btn-default:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-421 .btn-default.disabled,.factory-bootstrap-421 .btn-default.disabled.active,.factory-bootstrap-421 .btn-default.disabled:active,.factory-bootstrap-421 .btn-default.disabled:focus,.factory-bootstrap-421 .btn-default.disabled:hover,.factory-bootstrap-421 .btn-default[disabled],.factory-bootstrap-421 .btn-default[disabled].active,.factory-bootstrap-421 .btn-default[disabled]:active,.factory-bootstrap-421 .btn-default[disabled]:focus,.factory-bootstrap-421 .btn-default[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-default,.factory-bootstrap-421 fieldset[disabled] .btn-default.active,.factory-bootstrap-421 fieldset[disabled] .btn-default:active,.factory-bootstrap-421 fieldset[disabled] .btn-default:focus,.factory-bootstrap-421 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-421 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-421 .btn-primary.active,.factory-bootstrap-421 .btn-primary:active,.factory-bootstrap-421 .btn-primary:focus,.factory-bootstrap-421 .btn-primary:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-421 .btn-primary.active,.factory-bootstrap-421 .btn-primary:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-421 .btn-primary.disabled,.factory-bootstrap-421 .btn-primary.disabled.active,.factory-bootstrap-421 .btn-primary.disabled:active,.factory-bootstrap-421 .btn-primary.disabled:focus,.factory-bootstrap-421 .btn-primary.disabled:hover,.factory-bootstrap-421 .btn-primary[disabled],.factory-bootstrap-421 .btn-primary[disabled].active,.factory-bootstrap-421 .btn-primary[disabled]:active,.factory-bootstrap-421 .btn-primary[disabled]:focus,.factory-bootstrap-421 .btn-primary[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-primary,.factory-bootstrap-421 fieldset[disabled] .btn-primary.active,.factory-bootstrap-421 fieldset[disabled] .btn-primary:active,.factory-bootstrap-421 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-421 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-421 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-421 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-421 .btn-warning.active,.factory-bootstrap-421 .btn-warning:active,.factory-bootstrap-421 .btn-warning:focus,.factory-bootstrap-421 .btn-warning:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-421 .btn-warning.active,.factory-bootstrap-421 .btn-warning:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-421 .btn-warning.disabled,.factory-bootstrap-421 .btn-warning.disabled.active,.factory-bootstrap-421 .btn-warning.disabled:active,.factory-bootstrap-421 .btn-warning.disabled:focus,.factory-bootstrap-421 .btn-warning.disabled:hover,.factory-bootstrap-421 .btn-warning[disabled],.factory-bootstrap-421 .btn-warning[disabled].active,.factory-bootstrap-421 .btn-warning[disabled]:active,.factory-bootstrap-421 .btn-warning[disabled]:focus,.factory-bootstrap-421 .btn-warning[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-warning,.factory-bootstrap-421 fieldset[disabled] .btn-warning.active,.factory-bootstrap-421 fieldset[disabled] .btn-warning:active,.factory-bootstrap-421 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-421 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-421 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-421 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-421 .btn-success.active,.factory-bootstrap-421 .btn-success:active,.factory-bootstrap-421 .btn-success:focus,.factory-bootstrap-421 .btn-success:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-421 .btn-success.active,.factory-bootstrap-421 .btn-success:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-421 .btn-success.disabled,.factory-bootstrap-421 .btn-success.disabled.active,.factory-bootstrap-421 .btn-success.disabled:active,.factory-bootstrap-421 .btn-success.disabled:focus,.factory-bootstrap-421 .btn-success.disabled:hover,.factory-bootstrap-421 .btn-success[disabled],.factory-bootstrap-421 .btn-success[disabled].active,.factory-bootstrap-421 .btn-success[disabled]:active,.factory-bootstrap-421 .btn-success[disabled]:focus,.factory-bootstrap-421 .btn-success[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-success,.factory-bootstrap-421 fieldset[disabled] .btn-success.active,.factory-bootstrap-421 fieldset[disabled] .btn-success:active,.factory-bootstrap-421 fieldset[disabled] .btn-success:focus,.factory-bootstrap-421 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-421 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-421 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-421 .btn-info.active,.factory-bootstrap-421 .btn-info:active,.factory-bootstrap-421 .btn-info:focus,.factory-bootstrap-421 .btn-info:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-421 .btn-info.active,.factory-bootstrap-421 .btn-info:active,.factory-bootstrap-421 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-421 .btn-info.disabled,.factory-bootstrap-421 .btn-info.disabled.active,.factory-bootstrap-421 .btn-info.disabled:active,.factory-bootstrap-421 .btn-info.disabled:focus,.factory-bootstrap-421 .btn-info.disabled:hover,.factory-bootstrap-421 .btn-info[disabled],.factory-bootstrap-421 .btn-info[disabled].active,.factory-bootstrap-421 .btn-info[disabled]:active,.factory-bootstrap-421 .btn-info[disabled]:focus,.factory-bootstrap-421 .btn-info[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-info,.factory-bootstrap-421 fieldset[disabled] .btn-info.active,.factory-bootstrap-421 fieldset[disabled] .btn-info:active,.factory-bootstrap-421 fieldset[disabled] .btn-info:focus,.factory-bootstrap-421 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-421 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-421 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-421 .btn-link,.factory-bootstrap-421 .btn-link:active,.factory-bootstrap-421 .btn-link[disabled],.factory-bootstrap-421 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-421 .btn-link,.factory-bootstrap-421 .btn-link:active,.factory-bootstrap-421 .btn-link:focus,.factory-bootstrap-421 .btn-link:hover{border-color:transparent}.factory-bootstrap-421 .btn-link:focus,.factory-bootstrap-421 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-421 .btn-link[disabled]:focus,.factory-bootstrap-421 .btn-link[disabled]:hover,.factory-bootstrap-421 fieldset[disabled] .btn-link:focus,.factory-bootstrap-421 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-421 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-421 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-421 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-421 input[type=button].btn-block,.factory-bootstrap-421 input[type=reset].btn-block,.factory-bootstrap-421 input[type=submit].btn-block{width:100%}.factory-bootstrap-421 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-421 .fade.in{opacity:1}.factory-bootstrap-421 .collapse{display:none}.factory-bootstrap-421 .collapse.in{display:block}.factory-bootstrap-421 .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-421 .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-421 .glyphicon:empty{width:1em}.factory-bootstrap-421 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-421 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-421 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-421 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-421 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-421 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-421 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-421 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-421 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-421 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-421 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-421 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-421 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-421 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-421 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-421 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-421 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-421 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-421 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-421 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-421 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-421 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-421 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-421 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-421 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-421 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-421 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-421 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-421 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-421 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-421 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-421 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-421 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-421 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-421 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-421 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-421 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-421 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-421 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-421 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-421 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-421 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-421 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-421 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-421 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-421 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-421 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-421 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-421 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-421 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-421 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-421 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-421 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-421 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-421 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-421 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-421 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-421 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-421 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-421 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-421 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-421 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-421 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-421 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-421 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-421 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-421 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-421 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-421 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-421 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-421 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-421 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-421 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-421 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-421 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-421 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-421 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-421 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-421 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-421 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-421 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-421 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-421 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-421 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-421 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-421 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-421 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-421 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-421 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-421 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-421 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-421 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-421 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-421 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-421 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-421 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-421 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-421 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-421 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-421 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-421 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-421 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-421 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-421 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-421 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-421 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-421 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-421 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-421 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-421 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-421 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-421 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-421 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-421 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-421 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-421 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-421 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-421 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-421 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-421 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-421 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-421 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-421 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-421 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-421 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-421 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-421 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-421 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-421 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-421 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-421 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-421 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-421 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-421 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-421 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-421 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-421 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-421 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-421 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-421 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-421 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-421 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-421 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-421 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-421 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-421 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-421 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-421 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-421 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-421 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-421 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-421 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-421 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-421 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-421 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-421 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-421 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-421 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-421 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-421 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-421 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-421 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-421 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-421 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-421 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-421 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-421 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-421 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-421 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-421 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-421 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-421 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-421 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-421 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-421 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-421 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-421 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-421 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-421 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-421 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-421 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-421 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-421 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-421 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-421 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-421 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-421 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-421 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-421 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-421 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-421 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-421 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-421 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-421 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-421 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-421 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-421 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-421 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-421 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-421 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-421 .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-421 .dropdown{position:relative}.factory-bootstrap-421 .dropdown-toggle:focus{outline:0}.factory-bootstrap-421 .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-421 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-421 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-421 .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-421 .dropdown-menu>li>a:focus,.factory-bootstrap-421 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-421 .dropdown-menu>.active>a,.factory-bootstrap-421 .dropdown-menu>.active>a:focus,.factory-bootstrap-421 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-421 .dropdown-menu>.disabled>a,.factory-bootstrap-421 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-421 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-421 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-421 .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-421 .open>.dropdown-menu{display:block}.factory-bootstrap-421 .open>a{outline:0}.factory-bootstrap-421 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-421 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-421 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-421 .dropup .caret,.factory-bootstrap-421 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-421 .dropup .dropdown-menu,.factory-bootstrap-421 .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-421 .btn-group,.factory-bootstrap-421 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-421 .btn-group-vertical>.btn,.factory-bootstrap-421 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-421 .btn-group-vertical>.btn.active,.factory-bootstrap-421 .btn-group-vertical>.btn:active,.factory-bootstrap-421 .btn-group-vertical>.btn:focus,.factory-bootstrap-421 .btn-group-vertical>.btn:hover,.factory-bootstrap-421 .btn-group>.btn.active,.factory-bootstrap-421 .btn-group>.btn:active,.factory-bootstrap-421 .btn-group>.btn:focus,.factory-bootstrap-421 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-421 .btn-group-vertical>.btn:focus,.factory-bootstrap-421 .btn-group>.btn:focus{outline:0}.factory-bootstrap-421 .btn-group .btn+.btn,.factory-bootstrap-421 .btn-group .btn+.btn-group,.factory-bootstrap-421 .btn-group .btn-group+.btn,.factory-bootstrap-421 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-421 .btn-toolbar:after,.factory-bootstrap-421 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-421 .btn-toolbar:after{clear:both}.factory-bootstrap-421 .btn-toolbar .btn-group{float:left}.factory-bootstrap-421 .btn-toolbar>.btn+.btn,.factory-bootstrap-421 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-421 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-421 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-421 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-421 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-421 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-421 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-421 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .btn-group>.btn-group{float:left}.factory-bootstrap-421 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-421 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-421 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-421 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .btn-group .dropdown-toggle:active,.factory-bootstrap-421 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-421 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-421 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-421 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-421 .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-421 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-421 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-421 .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-421 .btn .caret{margin-left:0}.factory-bootstrap-421 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-421 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-421 .btn-group-vertical>.btn,.factory-bootstrap-421 .btn-group-vertical>.btn-group,.factory-bootstrap-421 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-421 .btn-group-vertical>.btn-group:after,.factory-bootstrap-421 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-421 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-421 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-421 .btn-group-vertical>.btn+.btn,.factory-bootstrap-421 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-421 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-421 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-421 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-421 .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-421 .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-421 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-421 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-421 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-421 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-421 .btn-group-justified>.btn,.factory-bootstrap-421 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-421 .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-421 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-421 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-421 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-421 .input-group-lg>.form-control,.factory-bootstrap-421 .input-group-lg>.input-group-addon,.factory-bootstrap-421 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-421 select.input-group-lg>.form-control,.factory-bootstrap-421 select.input-group-lg>.input-group-addon,.factory-bootstrap-421 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-421 textarea.input-group-lg>.form-control,.factory-bootstrap-421 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-421 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-421 .input-group-sm>.form-control,.factory-bootstrap-421 .input-group-sm>.input-group-addon,.factory-bootstrap-421 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-421 select.input-group-sm>.form-control,.factory-bootstrap-421 select.input-group-sm>.input-group-addon,.factory-bootstrap-421 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-421 textarea.input-group-sm>.form-control,.factory-bootstrap-421 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-421 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-421 .input-group .form-control,.factory-bootstrap-421 .input-group-addon,.factory-bootstrap-421 .input-group-btn{display:table-cell}.factory-bootstrap-421 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-421 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-421 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-421 .input-group-addon,.factory-bootstrap-421 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-421 .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-421 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-421 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-421 .input-group-addon input[type=checkbox],.factory-bootstrap-421 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-421 .input-group .form-control:first-child,.factory-bootstrap-421 .input-group-addon:first-child,.factory-bootstrap-421 .input-group-btn:first-child>.btn,.factory-bootstrap-421 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-421 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-421 .input-group-addon:first-child{border-right:0}.factory-bootstrap-421 .input-group .form-control:last-child,.factory-bootstrap-421 .input-group-addon:last-child,.factory-bootstrap-421 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-421 .input-group-btn:last-child>.btn,.factory-bootstrap-421 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .input-group-addon:last-child{border-left:0}.factory-bootstrap-421 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-421 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-421 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-421 .input-group-btn>.btn{position:relative}.factory-bootstrap-421 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-421 .input-group-btn>.btn:active,.factory-bootstrap-421 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-421 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-421 .nav:after,.factory-bootstrap-421 .nav:before{display:table;content:" "}.factory-bootstrap-421 .nav:after{clear:both}.factory-bootstrap-421 .nav>li{position:relative;display:block}.factory-bootstrap-421 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-421 .nav>li>a:focus,.factory-bootstrap-421 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-421 .nav>li.disabled>a{color:#999}.factory-bootstrap-421 .nav>li.disabled>a:focus,.factory-bootstrap-421 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-421 .nav .open>a,.factory-bootstrap-421 .nav .open>a:focus,.factory-bootstrap-421 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-421 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-421 .nav>li>a>img{max-width:none}.factory-bootstrap-421 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-421 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-421 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-421 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-421 .nav-tabs>li.active>a,.factory-bootstrap-421 .nav-tabs>li.active>a:focus,.factory-bootstrap-421 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-421 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-421 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-421 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-421 .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-421 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-421 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-421 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-421 .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-421 .nav-pills>li{float:left}.factory-bootstrap-421 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-421 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-421 .nav-pills>li.active>a,.factory-bootstrap-421 .nav-pills>li.active>a:focus,.factory-bootstrap-421 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-421 .nav-stacked>li{float:none}.factory-bootstrap-421 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-421 .nav-justified{width:100%}.factory-bootstrap-421 .nav-justified>li{float:none}.factory-bootstrap-421 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-421 .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-421 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-421 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-421 .nav-tabs-justified>.active>a,.factory-bootstrap-421 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-421 .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-421 .tab-content>.tab-pane{display:none}.factory-bootstrap-421 .tab-content>.active{display:block}.factory-bootstrap-421 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-421 .navbar:after,.factory-bootstrap-421 .navbar:before{display:table;content:" "}.factory-bootstrap-421 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-421 .navbar-header:after,.factory-bootstrap-421 .navbar-header:before{display:table;content:" "}.factory-bootstrap-421 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-421 .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-421 .navbar-collapse:after,.factory-bootstrap-421 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-421 .navbar-collapse:after{clear:both}.factory-bootstrap-421 .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-421 .container>.navbar-collapse,.factory-bootstrap-421 .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-421 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-421 .navbar-fixed-bottom,.factory-bootstrap-421 .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-421 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-421 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-421 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-421 .navbar-brand:focus,.factory-bootstrap-421 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-421 .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-421 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-421 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-421 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-421 .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-421 .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-421 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-421 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-421 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-421 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-421 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-421 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-421 .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-421 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-421 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-421 .navbar-default .navbar-brand:focus,.factory-bootstrap-421 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-421 .navbar-default .navbar-nav>li>a,.factory-bootstrap-421 .navbar-default .navbar-text{color:#777}.factory-bootstrap-421 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-421 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-421 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-421 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-421 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-421 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-421 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-421 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-421 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-421 .navbar-default .navbar-toggle:focus,.factory-bootstrap-421 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-421 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-421 .navbar-default .navbar-collapse,.factory-bootstrap-421 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-421 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-421 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-421 .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-421 .navbar-default .navbar-link{color:#777}.factory-bootstrap-421 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-421 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-421 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-421 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-421 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-421 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-421 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-421 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-421 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-421 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-421 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-421 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-421 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-421 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-421 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-421 .navbar-inverse .navbar-collapse,.factory-bootstrap-421 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-421 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-421 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-421 .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-421 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-421 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-421 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-421 .breadcrumb>li{display:inline-block}.factory-bootstrap-421 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-421 .breadcrumb>.active{color:#999}.factory-bootstrap-421 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-421 .pagination>li{display:inline}.factory-bootstrap-421 .pagination>li>a,.factory-bootstrap-421 .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-421 .pagination>li:first-child>a,.factory-bootstrap-421 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-421 .pagination>li:last-child>a,.factory-bootstrap-421 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-421 .pagination>li>a:focus,.factory-bootstrap-421 .pagination>li>a:hover,.factory-bootstrap-421 .pagination>li>span:focus,.factory-bootstrap-421 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-421 .pagination>.active>a,.factory-bootstrap-421 .pagination>.active>a:focus,.factory-bootstrap-421 .pagination>.active>a:hover,.factory-bootstrap-421 .pagination>.active>span,.factory-bootstrap-421 .pagination>.active>span:focus,.factory-bootstrap-421 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-421 .pagination>.disabled>a,.factory-bootstrap-421 .pagination>.disabled>a:focus,.factory-bootstrap-421 .pagination>.disabled>a:hover,.factory-bootstrap-421 .pagination>.disabled>span,.factory-bootstrap-421 .pagination>.disabled>span:focus,.factory-bootstrap-421 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-421 .pagination-lg>li>a,.factory-bootstrap-421 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-421 .pagination-lg>li:first-child>a,.factory-bootstrap-421 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-421 .pagination-lg>li:last-child>a,.factory-bootstrap-421 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-421 .pagination-sm>li>a,.factory-bootstrap-421 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-421 .pagination-sm>li:first-child>a,.factory-bootstrap-421 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-421 .pagination-sm>li:last-child>a,.factory-bootstrap-421 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-421 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-421 .pager:after,.factory-bootstrap-421 .pager:before{display:table;content:" "}.factory-bootstrap-421 .pager:after{clear:both}.factory-bootstrap-421 .pager li{display:inline}.factory-bootstrap-421 .pager li>a,.factory-bootstrap-421 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-421 .pager li>a:focus,.factory-bootstrap-421 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-421 .pager .next>a,.factory-bootstrap-421 .pager .next>span{float:right}.factory-bootstrap-421 .pager .previous>a,.factory-bootstrap-421 .pager .previous>span{float:left}.factory-bootstrap-421 .pager .disabled>a,.factory-bootstrap-421 .pager .disabled>a:focus,.factory-bootstrap-421 .pager .disabled>a:hover,.factory-bootstrap-421 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-421 .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-421 .label[href]:focus,.factory-bootstrap-421 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-421 .label:empty{display:none}.factory-bootstrap-421 .btn .label{position:relative;top:-1px}.factory-bootstrap-421 .label-default{background-color:#999}.factory-bootstrap-421 .label-default[href]:focus,.factory-bootstrap-421 .label-default[href]:hover{background-color:gray}.factory-bootstrap-421 .label-primary{background-color:#428bca}.factory-bootstrap-421 .label-primary[href]:focus,.factory-bootstrap-421 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-421 .label-success{background-color:#5cb85c}.factory-bootstrap-421 .label-success[href]:focus,.factory-bootstrap-421 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-421 .label-info{background-color:#5bc0de}.factory-bootstrap-421 .label-info[href]:focus,.factory-bootstrap-421 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-421 .label-warning{background-color:#f0ad4e}.factory-bootstrap-421 .label-warning[href]:focus,.factory-bootstrap-421 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-421 .label-danger{background-color:#d9534f}.factory-bootstrap-421 .label-danger[href]:focus,.factory-bootstrap-421 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-421 .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-421 .badge:empty{display:none}.factory-bootstrap-421 .btn .badge{position:relative;top:-1px}.factory-bootstrap-421 a.badge:focus,.factory-bootstrap-421 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-421 .nav-pills>.active>a>.badge,.factory-bootstrap-421 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-421 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-421 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-421 .jumbotron .h1,.factory-bootstrap-421 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-421 .jumbotron p{line-height:1.4}.factory-bootstrap-421 .container .jumbotron{border-radius:6px}.factory-bootstrap-421 .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-421 .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-421 .thumbnail a>img,.factory-bootstrap-421 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-421 a.thumbnail.active,.factory-bootstrap-421 a.thumbnail:focus,.factory-bootstrap-421 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-421 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-421 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-421 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-421 .alert .alert-link{font-weight:700}.factory-bootstrap-421 .alert>p,.factory-bootstrap-421 .alert>ul{margin-bottom:0}.factory-bootstrap-421 .alert>p+p{margin-top:5px}.factory-bootstrap-421 .alert-dismissable{padding-right:35px}.factory-bootstrap-421 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-421 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-421 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-421 .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-421 .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-421 .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-421 .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-421 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-421 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-421 .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-421 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-421 .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-421 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-421 .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-421 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-421 .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-421 .media,.factory-bootstrap-421 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-421 .media,.factory-bootstrap-421 .media .media{margin-top:15px}.factory-bootstrap-421 .media:first-child{margin-top:0}.factory-bootstrap-421 .media-object{display:block}.factory-bootstrap-421 .media-heading{margin:0 0 5px}.factory-bootstrap-421 .media>.pull-left{margin-right:10px}.factory-bootstrap-421 .media>.pull-right{margin-left:10px}.factory-bootstrap-421 .media-list{padding-left:0;list-style:none}.factory-bootstrap-421 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-421 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-421 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-421 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-421 .list-group-item>.badge{float:right}.factory-bootstrap-421 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-421 a.list-group-item{color:#555}.factory-bootstrap-421 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-421 a.list-group-item:focus,.factory-bootstrap-421 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-421 a.list-group-item.active,.factory-bootstrap-421 a.list-group-item.active:focus,.factory-bootstrap-421 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-421 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-421 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-421 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-421 a.list-group-item.active .list-group-item-text,.factory-bootstrap-421 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-421 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-421 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-421 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-421 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-421 .panel-body{padding:15px}.factory-bootstrap-421 .panel-body:after,.factory-bootstrap-421 .panel-body:before{display:table;content:" "}.factory-bootstrap-421 .panel-body:after{clear:both}.factory-bootstrap-421 .panel>.list-group{margin-bottom:0}.factory-bootstrap-421 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-421 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-421 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-421 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-421 .panel>.table,.factory-bootstrap-421 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-421 .panel>.panel-body+.table,.factory-bootstrap-421 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-421 .panel>.table>tbody:first-child td,.factory-bootstrap-421 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-421 .panel>.table-bordered,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-421 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-421 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-421 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-421 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-421 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-421 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-421 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-421 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-421 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-421 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-421 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-421 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-421 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-421 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-421 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-421 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-421 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-421 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-421 .panel-title>a{color:inherit}.factory-bootstrap-421 .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-421 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-421 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-421 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-421 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-421 .panel-group .panel-footer{border-top:0}.factory-bootstrap-421 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-421 .panel-default{border-color:#ddd}.factory-bootstrap-421 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-421 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-421 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-421 .panel-primary{border-color:#428bca}.factory-bootstrap-421 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-421 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-421 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-421 .panel-success{border-color:#d6e9c6}.factory-bootstrap-421 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-421 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-421 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-421 .panel-warning{border-color:#faebcc}.factory-bootstrap-421 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-421 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-421 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-421 .panel-danger{border-color:#ebccd1}.factory-bootstrap-421 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-421 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-421 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-421 .panel-info{border-color:#bce8f1}.factory-bootstrap-421 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-421 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-421 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-421 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-421 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-421 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-421 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-421 .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-421 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-421 .close:focus,.factory-bootstrap-421 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-421 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-421 .modal-open{overflow:hidden}.factory-bootstrap-421 .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-421 .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-421 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-421 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-421 .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-421 .modal-backdrop,.factory-bootstrap-421-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-421 .modal-backdrop.fade,.factory-bootstrap-421-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-421 .modal-backdrop.in,.factory-bootstrap-421-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-421 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-421 .modal-header .close{margin-top:-2px}.factory-bootstrap-421 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-421 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-421 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-421 .modal-footer:after,.factory-bootstrap-421 .modal-footer:before{display:table;content:" "}.factory-bootstrap-421 .modal-footer:after{clear:both}.factory-bootstrap-421 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-421 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-421 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-421 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-421 .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-421 .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-421 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-421 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-421 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-421 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-421 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-421 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-421 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-421 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-421 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-421 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-421 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-421 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-421 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-421 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-421 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-421 .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-421 .popover.top{margin-top:-10px}.factory-bootstrap-421 .popover.right{margin-left:10px}.factory-bootstrap-421 .popover.bottom{margin-top:10px}.factory-bootstrap-421 .popover.left{margin-left:-10px}.factory-bootstrap-421 .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-421 .popover-content{padding:9px 14px}.factory-bootstrap-421 .popover .arrow,.factory-bootstrap-421 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-421 .popover .arrow{border-width:11px}.factory-bootstrap-421 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-421 .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-421 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-421 .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-421 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-421 .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-421 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-421 .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-421 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-421 .carousel{position:relative}.factory-bootstrap-421 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-421 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-421 .carousel-inner>.item>a>img,.factory-bootstrap-421 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-421 .carousel-inner>.active,.factory-bootstrap-421 .carousel-inner>.next,.factory-bootstrap-421 .carousel-inner>.prev{display:block}.factory-bootstrap-421 .carousel-inner>.active{left:0}.factory-bootstrap-421 .carousel-inner>.next,.factory-bootstrap-421 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-421 .carousel-inner>.next{left:100%}.factory-bootstrap-421 .carousel-inner>.prev{left:-100%}.factory-bootstrap-421 .carousel-inner>.next.left,.factory-bootstrap-421 .carousel-inner>.prev.right{left:0}.factory-bootstrap-421 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-421 .carousel-inner>.active.right{left:100%}.factory-bootstrap-421 .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-421 .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-421 .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-421 .carousel-control:focus,.factory-bootstrap-421 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-421 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-421 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-421 .carousel-control .icon-next,.factory-bootstrap-421 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-421 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-421 .carousel-control .icon-prev{left:50%}.factory-bootstrap-421 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-421 .carousel-control .icon-next{right:50%}.factory-bootstrap-421 .carousel-control .icon-next,.factory-bootstrap-421 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-421 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-421 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-421 .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-421 .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-421 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-421 .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-421 .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-421 .clearfix:after,.factory-bootstrap-421 .clearfix:before{display:table;content:" "}.factory-bootstrap-421 .clearfix:after{clear:both}.factory-bootstrap-421 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-421 .pull-right{float:right!important}.factory-bootstrap-421 .pull-left{float:left!important}.factory-bootstrap-421 .hide{display:none!important}.factory-bootstrap-421 .show{display:block!important}.factory-bootstrap-421 .invisible{visibility:hidden}.factory-bootstrap-421 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-421 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-421 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-421 .visible-lg,.factory-bootstrap-421 .visible-md,.factory-bootstrap-421 .visible-sm,.factory-bootstrap-421 .visible-xs,.factory-bootstrap-421 td.visible-lg,.factory-bootstrap-421 td.visible-md,.factory-bootstrap-421 td.visible-sm,.factory-bootstrap-421 td.visible-xs,.factory-bootstrap-421 th.visible-lg,.factory-bootstrap-421 th.visible-md,.factory-bootstrap-421 th.visible-sm,.factory-bootstrap-421 th.visible-xs,.factory-bootstrap-421 tr.visible-lg,.factory-bootstrap-421 tr.visible-md,.factory-bootstrap-421 tr.visible-sm,.factory-bootstrap-421 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-421 .hidden-xs{display:block!important}.factory-bootstrap-421 table.hidden-xs{display:table}.factory-bootstrap-421 tr.hidden-xs{display:table-row!important}.factory-bootstrap-421 td.hidden-xs,.factory-bootstrap-421 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-421 .hidden-sm{display:block!important}.factory-bootstrap-421 table.hidden-sm{display:table}.factory-bootstrap-421 tr.hidden-sm{display:table-row!important}.factory-bootstrap-421 td.hidden-sm,.factory-bootstrap-421 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-421 .hidden-md{display:block!important}.factory-bootstrap-421 table.hidden-md{display:table}.factory-bootstrap-421 tr.hidden-md{display:table-row!important}.factory-bootstrap-421 td.hidden-md,.factory-bootstrap-421 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-421 .hidden-lg{display:block!important}.factory-bootstrap-421 table.hidden-lg{display:table}.factory-bootstrap-421 tr.hidden-lg{display:table-row!important}.factory-bootstrap-421 td.hidden-lg,.factory-bootstrap-421 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-421 .hidden-lg.hidden-xs,.factory-bootstrap-421 td.hidden-lg.hidden-xs,.factory-bootstrap-421 th.hidden-lg.hidden-xs,.factory-bootstrap-421 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-421 .hidden-lg.hidden-sm,.factory-bootstrap-421 td.hidden-lg.hidden-sm,.factory-bootstrap-421 th.hidden-lg.hidden-sm,.factory-bootstrap-421 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-421 .hidden-lg.hidden-md,.factory-bootstrap-421 td.hidden-lg.hidden-md,.factory-bootstrap-421 th.hidden-lg.hidden-md,.factory-bootstrap-421 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-421 .hidden-lg,.factory-bootstrap-421 td.hidden-lg,.factory-bootstrap-421 th.hidden-lg,.factory-bootstrap-421 tr.hidden-lg{display:none!important}}.factory-bootstrap-421 .visible-print,.factory-bootstrap-421 td.visible-print,.factory-bootstrap-421 th.visible-print,.factory-bootstrap-421 tr.visible-print{display:none!important}@media print{.factory-bootstrap-421 .visible-print{display:block!important}.factory-bootstrap-421 table.visible-print{display:table}.factory-bootstrap-421 tr.visible-print{display:table-row!important}.factory-bootstrap-421 td.visible-print,.factory-bootstrap-421 th.visible-print{display:table-cell!important}.factory-bootstrap-421 .hidden-print,.factory-bootstrap-421 td.hidden-print,.factory-bootstrap-421 th.hidden-print,.factory-bootstrap-421 tr.hidden-print{display:none!important}}/*!
|
12 |
* Factory Default Bootstrap Theme
|
13 |
*
|
14 |
* The code is based on Bootstrap v2.1.1
|
@@ -22,4 +22,4 @@
|
|
22 |
*
|
23 |
* @package factory-bootstrap
|
24 |
* @since 1.0.0
|
25 |
-
*/.factory-bootstrap-421 .btn-danger,.factory-bootstrap-421 .btn-default,.factory-bootstrap-421 .btn-info,.factory-bootstrap-421 .btn-primary,.factory-bootstrap-421 .btn-success,.factory-bootstrap-421 .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-421 .btn-danger.active,.factory-bootstrap-421 .btn-danger:active,.factory-bootstrap-421 .btn-default.active,.factory-bootstrap-421 .btn-default:active,.factory-bootstrap-421 .btn-info.active,.factory-bootstrap-421 .btn-info:active,.factory-bootstrap-421 .btn-primary.active,.factory-bootstrap-421 .btn-primary:active,.factory-bootstrap-421 .btn-success.active,.factory-bootstrap-421 .btn-success:active,.factory-bootstrap-421 .btn-warning.active,.factory-bootstrap-421 .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-421 .btn.active,.factory-bootstrap-421 .btn:active{background-image:none}.factory-bootstrap-421 .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-421 .btn-default.active,.factory-bootstrap-421 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-421 .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-421 .btn-gold:focus,.factory-bootstrap-421 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-421 .btn-gold.active,.factory-bootstrap-421 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-421 .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-421 .btn-primary:focus,.factory-bootstrap-421 .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-421 .btn-primary.active,.factory-bootstrap-421 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-421 .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-421 .btn-success:focus,.factory-bootstrap-421 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-421 .btn-success.active,.factory-bootstrap-421 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-421 .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-421 .btn-warning:focus,.factory-bootstrap-421 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-421 .btn-warning.active,.factory-bootstrap-421 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-421 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-421 .btn-danger.active,.factory-bootstrap-421 .btn-danger:active,.factory-bootstrap-421 .btn-danger:focus,.factory-bootstrap-421 .btn-danger:hover,.factory-bootstrap-421 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-421 .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-421 .btn-info:focus,.factory-bootstrap-421 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-421 .btn-info.active,.factory-bootstrap-421 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-421 .img-thumbnail,.factory-bootstrap-421 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-421 .dropdown-menu>li>a:focus,.factory-bootstrap-421 .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-421 .dropdown-menu>.active>a,.factory-bootstrap-421 .dropdown-menu>.active>a:focus,.factory-bootstrap-421 .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-421 .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-421 .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-421 .navbar-brand,.factory-bootstrap-421 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-421 .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-421 .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-421 .navbar-inverse .navbar-brand,.factory-bootstrap-421 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-421 .navbar-fixed-bottom,.factory-bootstrap-421 .navbar-fixed-top,.factory-bootstrap-421 .navbar-static-top{border-radius:0}.factory-bootstrap-421 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-421 .alert .actions{padding-top:10px}.factory-bootstrap-421 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-421 .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-421 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-421 .alert-normal,.factory-bootstrap-421 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-421 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-421 .alert-danger a:not(.btn),.factory-bootstrap-421 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .list-group-item.active,.factory-bootstrap-421 .list-group-item.active:focus,.factory-bootstrap-421 .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-421 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .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-421 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-421 .factory-hidden{display:none}.factory-bootstrap-421 .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-423 article,.factory-bootstrap-423 aside,.factory-bootstrap-423 details,.factory-bootstrap-423 figcaption,.factory-bootstrap-423 figure,.factory-bootstrap-423 footer,.factory-bootstrap-423 header,.factory-bootstrap-423 hgroup,.factory-bootstrap-423 main,.factory-bootstrap-423 nav,.factory-bootstrap-423 section,.factory-bootstrap-423 summary{display:block}.factory-bootstrap-423 audio,.factory-bootstrap-423 canvas,.factory-bootstrap-423 video{display:inline-block}.factory-bootstrap-423 audio:not([controls]){display:none;height:0}.factory-bootstrap-423 [hidden],.factory-bootstrap-423 template{display:none}.factory-bootstrap-423 body{margin:0}.factory-bootstrap-423 a{background:0 0}.factory-bootstrap-423 a:focus{outline:thin dotted}.factory-bootstrap-423 a:active,.factory-bootstrap-423 a:hover{outline:0}.factory-bootstrap-423 h1{margin:.67em 0}.factory-bootstrap-423 b,.factory-bootstrap-423 strong{font-weight:700}.factory-bootstrap-423 dfn{font-style:italic}.factory-bootstrap-423 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-423 mark{color:#000;background:#ff0}.factory-bootstrap-423 code,.factory-bootstrap-423 kbd,.factory-bootstrap-423 pre,.factory-bootstrap-423 samp{font-size:1em}.factory-bootstrap-423 pre{white-space:pre-wrap}.factory-bootstrap-423 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-423 sub,.factory-bootstrap-423 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-423 sup{top:-.5em}.factory-bootstrap-423 sub{bottom:-.25em}.factory-bootstrap-423 img{border:0}.factory-bootstrap-423 svg:not(:root){overflow:hidden}.factory-bootstrap-423 figure{margin:0}.factory-bootstrap-423 button,.factory-bootstrap-423 input,.factory-bootstrap-423 select,.factory-bootstrap-423 textarea{margin:0}.factory-bootstrap-423 button,.factory-bootstrap-423 select{text-transform:none}.factory-bootstrap-423 select{padding-right:4px!important}.factory-bootstrap-423 button,.factory-bootstrap-423 input[type=reset],.factory-bootstrap-423 input[type=submit],html .factory-bootstrap-423 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-423 button[disabled],html .factory-bootstrap-423 input[disabled]{cursor:default}.factory-bootstrap-423 input[type=checkbox],.factory-bootstrap-423 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-423 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-423 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-423 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-423 button::-moz-focus-inner,.factory-bootstrap-423 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-423 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-423 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-423 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-423 a,.factory-bootstrap-423 a:visited{text-decoration:underline}.factory-bootstrap-423 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-423 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-423 a[href^="javascript:"]:after,.factory-bootstrap-423 a[href^="#"]:after{content:""}.factory-bootstrap-423 blockquote,.factory-bootstrap-423 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-423 thead{display:table-header-group}.factory-bootstrap-423 img,.factory-bootstrap-423 tr{page-break-inside:avoid}.factory-bootstrap-423 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-423 h2,.factory-bootstrap-423 h3,.factory-bootstrap-423 p{orphans:3;widows:3}.factory-bootstrap-423 h2,.factory-bootstrap-423 h3{page-break-after:avoid}.factory-bootstrap-423 select{background:#fff!important}.factory-bootstrap-423 .navbar{display:none}.factory-bootstrap-423 .table td,.factory-bootstrap-423 .table th{background-color:#fff!important}.factory-bootstrap-423 .btn>.caret,.factory-bootstrap-423 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-423 .label{border:1px solid #000}.factory-bootstrap-423 .table{border-collapse:collapse!important}.factory-bootstrap-423 .table-bordered td,.factory-bootstrap-423 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-423 *,.factory-bootstrap-423 :after,.factory-bootstrap-423 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-423{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-423 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-423 button,.factory-bootstrap-423 input,.factory-bootstrap-423 select,.factory-bootstrap-423 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-423 img{vertical-align:middle}.factory-bootstrap-423 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-423 .img-rounded{border-radius:6px}.factory-bootstrap-423 .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-423 .img-circle{border-radius:50%}.factory-bootstrap-423 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-423 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-423 .h1,.factory-bootstrap-423 .h2,.factory-bootstrap-423 .h3,.factory-bootstrap-423 .h4,.factory-bootstrap-423 .h5,.factory-bootstrap-423 .h6,.factory-bootstrap-423 h1,.factory-bootstrap-423 h2,.factory-bootstrap-423 h3,.factory-bootstrap-423 h4,.factory-bootstrap-423 h5,.factory-bootstrap-423 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-423 .h1 .small,.factory-bootstrap-423 .h1 small,.factory-bootstrap-423 .h2 .small,.factory-bootstrap-423 .h2 small,.factory-bootstrap-423 .h3 .small,.factory-bootstrap-423 .h3 small,.factory-bootstrap-423 .h4 .small,.factory-bootstrap-423 .h4 small,.factory-bootstrap-423 .h5 .small,.factory-bootstrap-423 .h5 small,.factory-bootstrap-423 .h6 .small,.factory-bootstrap-423 .h6 small,.factory-bootstrap-423 h1 .small,.factory-bootstrap-423 h1 small,.factory-bootstrap-423 h2 .small,.factory-bootstrap-423 h2 small,.factory-bootstrap-423 h3 .small,.factory-bootstrap-423 h3 small,.factory-bootstrap-423 h4 .small,.factory-bootstrap-423 h4 small,.factory-bootstrap-423 h5 .small,.factory-bootstrap-423 h5 small,.factory-bootstrap-423 h6 .small,.factory-bootstrap-423 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-423 h1,.factory-bootstrap-423 h2,.factory-bootstrap-423 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-423 h1 .small,.factory-bootstrap-423 h1 small,.factory-bootstrap-423 h2 .small,.factory-bootstrap-423 h2 small,.factory-bootstrap-423 h3 .small,.factory-bootstrap-423 h3 small{font-size:65%}.factory-bootstrap-423 h4,.factory-bootstrap-423 h5,.factory-bootstrap-423 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-423 h4 .small,.factory-bootstrap-423 h4 small,.factory-bootstrap-423 h5 .small,.factory-bootstrap-423 h5 small,.factory-bootstrap-423 h6 .small,.factory-bootstrap-423 h6 small{font-size:75%}.factory-bootstrap-423 .h1,.factory-bootstrap-423 h1{font-size:36px}.factory-bootstrap-423 .h2,.factory-bootstrap-423 h2{font-size:30px}.factory-bootstrap-423 .h3,.factory-bootstrap-423 h3{font-size:24px}.factory-bootstrap-423 .h4,.factory-bootstrap-423 h4{font-size:18px}.factory-bootstrap-423 .h5,.factory-bootstrap-423 h5{font-size:14px}.factory-bootstrap-423 .h6,.factory-bootstrap-423 h6{font-size:12px}.factory-bootstrap-423 p{margin:0 0 10px}.factory-bootstrap-423 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-423 .small,.factory-bootstrap-423 small{font-size:85%}.factory-bootstrap-423 cite{font-style:normal}.factory-bootstrap-423 .text-muted{color:#999}.factory-bootstrap-423 .text-primary{color:#428bca}.factory-bootstrap-423 .text-primary:hover{color:#3071a9}.factory-bootstrap-423 .text-warning{color:#8a6d3b}.factory-bootstrap-423 .text-warning:hover{color:#66512c}.factory-bootstrap-423 .text-danger{color:#a94442}.factory-bootstrap-423 .text-danger:hover{color:#843534}.factory-bootstrap-423 .text-success{color:#3c763d}.factory-bootstrap-423 .text-success:hover{color:#2b542c}.factory-bootstrap-423 .text-info{color:#31708f}.factory-bootstrap-423 .text-info:hover{color:#245269}.factory-bootstrap-423 .text-left{text-align:left}.factory-bootstrap-423 .text-right{text-align:right}.factory-bootstrap-423 .text-center{text-align:center}.factory-bootstrap-423 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-423 ol,.factory-bootstrap-423 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-423 ol ol,.factory-bootstrap-423 ol ul,.factory-bootstrap-423 ul ol,.factory-bootstrap-423 ul ul{margin-bottom:0}.factory-bootstrap-423 .list-inline,.factory-bootstrap-423 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-423 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-423 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-423 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-423 dd,.factory-bootstrap-423 dt{line-height:1.428571429}.factory-bootstrap-423 dt{font-weight:700}.factory-bootstrap-423 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-423 abbr[data-original-title],.factory-bootstrap-423 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-423 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-423 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-423 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-423 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-423 blockquote .small,.factory-bootstrap-423 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-423 blockquote .small:before,.factory-bootstrap-423 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-423 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-423 blockquote.pull-right .small,.factory-bootstrap-423 blockquote.pull-right p,.factory-bootstrap-423 blockquote.pull-right small{text-align:right}.factory-bootstrap-423 blockquote.pull-right .small:before,.factory-bootstrap-423 blockquote.pull-right small:before{content:''}.factory-bootstrap-423 blockquote.pull-right .small:after,.factory-bootstrap-423 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-423 blockquote:after,.factory-bootstrap-423 blockquote:before{content:""}.factory-bootstrap-423 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-423 code,.factory-bootstrap-423 kbd,.factory-bootstrap-423 pre,.factory-bootstrap-423 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-423 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-423 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-423 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-423 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-423 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-423 .container:after,.factory-bootstrap-423 .container:before{display:table;content:" "}.factory-bootstrap-423 .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-423 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-423 .row:after,.factory-bootstrap-423 .row:before{display:table;content:" "}.factory-bootstrap-423 .row:after{clear:both}.factory-bootstrap-423 .col-lg-1,.factory-bootstrap-423 .col-lg-10,.factory-bootstrap-423 .col-lg-11,.factory-bootstrap-423 .col-lg-12,.factory-bootstrap-423 .col-lg-2,.factory-bootstrap-423 .col-lg-3,.factory-bootstrap-423 .col-lg-4,.factory-bootstrap-423 .col-lg-5,.factory-bootstrap-423 .col-lg-6,.factory-bootstrap-423 .col-lg-7,.factory-bootstrap-423 .col-lg-8,.factory-bootstrap-423 .col-lg-9,.factory-bootstrap-423 .col-md-1,.factory-bootstrap-423 .col-md-10,.factory-bootstrap-423 .col-md-11,.factory-bootstrap-423 .col-md-12,.factory-bootstrap-423 .col-md-2,.factory-bootstrap-423 .col-md-3,.factory-bootstrap-423 .col-md-4,.factory-bootstrap-423 .col-md-5,.factory-bootstrap-423 .col-md-6,.factory-bootstrap-423 .col-md-7,.factory-bootstrap-423 .col-md-8,.factory-bootstrap-423 .col-md-9,.factory-bootstrap-423 .col-sm-1,.factory-bootstrap-423 .col-sm-10,.factory-bootstrap-423 .col-sm-11,.factory-bootstrap-423 .col-sm-12,.factory-bootstrap-423 .col-sm-2,.factory-bootstrap-423 .col-sm-3,.factory-bootstrap-423 .col-sm-4,.factory-bootstrap-423 .col-sm-5,.factory-bootstrap-423 .col-sm-6,.factory-bootstrap-423 .col-sm-7,.factory-bootstrap-423 .col-sm-8,.factory-bootstrap-423 .col-sm-9,.factory-bootstrap-423 .col-xs-1,.factory-bootstrap-423 .col-xs-10,.factory-bootstrap-423 .col-xs-11,.factory-bootstrap-423 .col-xs-12,.factory-bootstrap-423 .col-xs-2,.factory-bootstrap-423 .col-xs-3,.factory-bootstrap-423 .col-xs-4,.factory-bootstrap-423 .col-xs-5,.factory-bootstrap-423 .col-xs-6,.factory-bootstrap-423 .col-xs-7,.factory-bootstrap-423 .col-xs-8,.factory-bootstrap-423 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-423 .col-xs-1,.factory-bootstrap-423 .col-xs-10,.factory-bootstrap-423 .col-xs-11,.factory-bootstrap-423 .col-xs-12,.factory-bootstrap-423 .col-xs-2,.factory-bootstrap-423 .col-xs-3,.factory-bootstrap-423 .col-xs-4,.factory-bootstrap-423 .col-xs-5,.factory-bootstrap-423 .col-xs-6,.factory-bootstrap-423 .col-xs-7,.factory-bootstrap-423 .col-xs-8,.factory-bootstrap-423 .col-xs-9{float:left}.factory-bootstrap-423 .col-xs-12{width:100%}.factory-bootstrap-423 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-423 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-423 .col-xs-9{width:75%}.factory-bootstrap-423 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-423 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-423 .col-xs-6{width:50%}.factory-bootstrap-423 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-423 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-423 .col-xs-3{width:25%}.factory-bootstrap-423 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-423 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-423 .col-xs-pull-12{right:100%}.factory-bootstrap-423 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-423 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-423 .col-xs-pull-9{right:75%}.factory-bootstrap-423 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-423 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-423 .col-xs-pull-6{right:50%}.factory-bootstrap-423 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-423 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-423 .col-xs-pull-3{right:25%}.factory-bootstrap-423 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-423 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-423 .col-xs-pull-0{right:0}.factory-bootstrap-423 .col-xs-push-12{left:100%}.factory-bootstrap-423 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-423 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-423 .col-xs-push-9{left:75%}.factory-bootstrap-423 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-423 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-423 .col-xs-push-6{left:50%}.factory-bootstrap-423 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-423 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-423 .col-xs-push-3{left:25%}.factory-bootstrap-423 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-423 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-423 .col-xs-push-0{left:0}.factory-bootstrap-423 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-423 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-423 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-423 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-423 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-423 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-423 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-423 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-423 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-423 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-423 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-423 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-423 .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-423 table{max-width:100%;background-color:transparent}.factory-bootstrap-423 th{text-align:left}.factory-bootstrap-423 .table{width:100%;margin-bottom:20px}.factory-bootstrap-423 .table>tbody>tr>td,.factory-bootstrap-423 .table>tbody>tr>th,.factory-bootstrap-423 .table>tfoot>tr>td,.factory-bootstrap-423 .table>tfoot>tr>th,.factory-bootstrap-423 .table>thead>tr>td,.factory-bootstrap-423 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-423 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-423 .table>caption+thead>tr:first-child>td,.factory-bootstrap-423 .table>caption+thead>tr:first-child>th,.factory-bootstrap-423 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-423 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-423 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-423 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-423 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-423 .table .table{background-color:#fff}.factory-bootstrap-423 .table-condensed>tbody>tr>td,.factory-bootstrap-423 .table-condensed>tbody>tr>th,.factory-bootstrap-423 .table-condensed>tfoot>tr>td,.factory-bootstrap-423 .table-condensed>tfoot>tr>th,.factory-bootstrap-423 .table-condensed>thead>tr>td,.factory-bootstrap-423 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-423 .table-bordered,.factory-bootstrap-423 .table-bordered>tbody>tr>td,.factory-bootstrap-423 .table-bordered>tbody>tr>th,.factory-bootstrap-423 .table-bordered>tfoot>tr>td,.factory-bootstrap-423 .table-bordered>tfoot>tr>th,.factory-bootstrap-423 .table-bordered>thead>tr>td,.factory-bootstrap-423 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-423 .table-bordered>thead>tr>td,.factory-bootstrap-423 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-423 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-423 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-423 .table-hover>tbody>tr:hover>td,.factory-bootstrap-423 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-423 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-423 table td[class*=col-],.factory-bootstrap-423 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-423 .table>tbody>.active>td,.factory-bootstrap-423 .table>tbody>.active>th,.factory-bootstrap-423 .table>tbody>tr>.active,.factory-bootstrap-423 .table>tfoot>.active>td,.factory-bootstrap-423 .table>tfoot>.active>th,.factory-bootstrap-423 .table>tfoot>tr>.active,.factory-bootstrap-423 .table>thead>.active>td,.factory-bootstrap-423 .table>thead>.active>th,.factory-bootstrap-423 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-423 .table-hover>tbody>.active:hover>td,.factory-bootstrap-423 .table-hover>tbody>.active:hover>th,.factory-bootstrap-423 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-423 .table>tbody>.success>td,.factory-bootstrap-423 .table>tbody>.success>th,.factory-bootstrap-423 .table>tbody>tr>.success,.factory-bootstrap-423 .table>tfoot>.success>td,.factory-bootstrap-423 .table>tfoot>.success>th,.factory-bootstrap-423 .table>tfoot>tr>.success,.factory-bootstrap-423 .table>thead>.success>td,.factory-bootstrap-423 .table>thead>.success>th,.factory-bootstrap-423 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-423 .table-hover>tbody>.success:hover>td,.factory-bootstrap-423 .table-hover>tbody>.success:hover>th,.factory-bootstrap-423 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-423 .table>tbody>.danger>td,.factory-bootstrap-423 .table>tbody>.danger>th,.factory-bootstrap-423 .table>tbody>tr>.danger,.factory-bootstrap-423 .table>tfoot>.danger>td,.factory-bootstrap-423 .table>tfoot>.danger>th,.factory-bootstrap-423 .table>tfoot>tr>.danger,.factory-bootstrap-423 .table>thead>.danger>td,.factory-bootstrap-423 .table>thead>.danger>th,.factory-bootstrap-423 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-423 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-423 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-423 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-423 .table>tbody>.warning>td,.factory-bootstrap-423 .table>tbody>.warning>th,.factory-bootstrap-423 .table>tbody>tr>.warning,.factory-bootstrap-423 .table>tfoot>.warning>td,.factory-bootstrap-423 .table>tfoot>.warning>th,.factory-bootstrap-423 .table>tfoot>tr>.warning,.factory-bootstrap-423 .table>thead>.warning>td,.factory-bootstrap-423 .table>thead>.warning>th,.factory-bootstrap-423 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-423 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-423 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-423 .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-423 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-423 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-423 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-423 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-423 input[type=checkbox],.factory-bootstrap-423 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-423 input[type=file]{display:block}.factory-bootstrap-423 select[multiple],.factory-bootstrap-423 select[size]{height:auto}.factory-bootstrap-423 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-423 input[type=checkbox]:focus,.factory-bootstrap-423 input[type=file]:focus,.factory-bootstrap-423 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-423 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-423 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-423 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-423 .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-423 .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-423 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-423 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-423 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-423 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-423 .form-control[disabled],.factory-bootstrap-423 .form-control[readonly],.factory-bootstrap-423 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-423 textarea.form-control{height:auto}.factory-bootstrap-423 .form-group{margin-bottom:15px}.factory-bootstrap-423 .checkbox,.factory-bootstrap-423 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-423 .checkbox label,.factory-bootstrap-423 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-423 .checkbox input[type=checkbox],.factory-bootstrap-423 .checkbox-inline input[type=checkbox],.factory-bootstrap-423 .radio input[type=radio],.factory-bootstrap-423 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-423 .checkbox+.checkbox,.factory-bootstrap-423 .radio+.radio{margin-top:-5px}.factory-bootstrap-423 .checkbox-inline,.factory-bootstrap-423 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-423 .checkbox-inline+.checkbox-inline,.factory-bootstrap-423 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-423 .checkbox-inline[disabled],.factory-bootstrap-423 .checkbox[disabled],.factory-bootstrap-423 .radio-inline[disabled],.factory-bootstrap-423 .radio[disabled],.factory-bootstrap-423 fieldset[disabled] .checkbox,.factory-bootstrap-423 fieldset[disabled] .checkbox-inline,.factory-bootstrap-423 fieldset[disabled] .radio,.factory-bootstrap-423 fieldset[disabled] .radio-inline,.factory-bootstrap-423 fieldset[disabled] input[type=checkbox],.factory-bootstrap-423 fieldset[disabled] input[type=radio],.factory-bootstrap-423 input[type=checkbox][disabled],.factory-bootstrap-423 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-423 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-423 textarea.input-sm{height:auto}.factory-bootstrap-423 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-423 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-423 textarea.input-lg{height:auto}.factory-bootstrap-423 .has-warning .checkbox,.factory-bootstrap-423 .has-warning .checkbox-inline,.factory-bootstrap-423 .has-warning .control-label,.factory-bootstrap-423 .has-warning .help-block,.factory-bootstrap-423 .has-warning .radio,.factory-bootstrap-423 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-423 .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-423 .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-423 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-423 .has-error .checkbox,.factory-bootstrap-423 .has-error .checkbox-inline,.factory-bootstrap-423 .has-error .control-label,.factory-bootstrap-423 .has-error .help-block,.factory-bootstrap-423 .has-error .radio,.factory-bootstrap-423 .has-error .radio-inline{color:#a94442}.factory-bootstrap-423 .controls{display:block}.factory-bootstrap-423 .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-423 .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-423 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-423 .has-success .checkbox,.factory-bootstrap-423 .has-success .checkbox-inline,.factory-bootstrap-423 .has-success .control-label,.factory-bootstrap-423 .has-success .help-block,.factory-bootstrap-423 .has-success .radio,.factory-bootstrap-423 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-423 .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-423 .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-423 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-423 .form-control-static{margin-bottom:0}.factory-bootstrap-423 .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-423 .form-horizontal .checkbox,.factory-bootstrap-423 .form-horizontal .checkbox-inline,.factory-bootstrap-423 .form-horizontal .control-label,.factory-bootstrap-423 .form-horizontal .radio,.factory-bootstrap-423 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-423 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-423 .form-horizontal .checkbox,.factory-bootstrap-423 .form-horizontal .radio{min-height:27px}.factory-bootstrap-423 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-423 .form-horizontal .form-group:after,.factory-bootstrap-423 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-423 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-423 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-423 .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-423 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-423 .btn{text-decoration:none}.factory-bootstrap-423 .btn:focus,.factory-bootstrap-423 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-423 .btn.disabled,.factory-bootstrap-423 .btn[disabled],.factory-bootstrap-423 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-423 .btn-default.active,.factory-bootstrap-423 .btn-default:active,.factory-bootstrap-423 .btn-default:focus,.factory-bootstrap-423 .btn-default:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-423 .btn-default.active,.factory-bootstrap-423 .btn-default:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-423 .btn-default.disabled,.factory-bootstrap-423 .btn-default.disabled.active,.factory-bootstrap-423 .btn-default.disabled:active,.factory-bootstrap-423 .btn-default.disabled:focus,.factory-bootstrap-423 .btn-default.disabled:hover,.factory-bootstrap-423 .btn-default[disabled],.factory-bootstrap-423 .btn-default[disabled].active,.factory-bootstrap-423 .btn-default[disabled]:active,.factory-bootstrap-423 .btn-default[disabled]:focus,.factory-bootstrap-423 .btn-default[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-default,.factory-bootstrap-423 fieldset[disabled] .btn-default.active,.factory-bootstrap-423 fieldset[disabled] .btn-default:active,.factory-bootstrap-423 fieldset[disabled] .btn-default:focus,.factory-bootstrap-423 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-423 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-423 .btn-primary.active,.factory-bootstrap-423 .btn-primary:active,.factory-bootstrap-423 .btn-primary:focus,.factory-bootstrap-423 .btn-primary:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-423 .btn-primary.active,.factory-bootstrap-423 .btn-primary:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-423 .btn-primary.disabled,.factory-bootstrap-423 .btn-primary.disabled.active,.factory-bootstrap-423 .btn-primary.disabled:active,.factory-bootstrap-423 .btn-primary.disabled:focus,.factory-bootstrap-423 .btn-primary.disabled:hover,.factory-bootstrap-423 .btn-primary[disabled],.factory-bootstrap-423 .btn-primary[disabled].active,.factory-bootstrap-423 .btn-primary[disabled]:active,.factory-bootstrap-423 .btn-primary[disabled]:focus,.factory-bootstrap-423 .btn-primary[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-primary,.factory-bootstrap-423 fieldset[disabled] .btn-primary.active,.factory-bootstrap-423 fieldset[disabled] .btn-primary:active,.factory-bootstrap-423 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-423 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-423 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-423 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-423 .btn-warning.active,.factory-bootstrap-423 .btn-warning:active,.factory-bootstrap-423 .btn-warning:focus,.factory-bootstrap-423 .btn-warning:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-423 .btn-warning.active,.factory-bootstrap-423 .btn-warning:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-423 .btn-warning.disabled,.factory-bootstrap-423 .btn-warning.disabled.active,.factory-bootstrap-423 .btn-warning.disabled:active,.factory-bootstrap-423 .btn-warning.disabled:focus,.factory-bootstrap-423 .btn-warning.disabled:hover,.factory-bootstrap-423 .btn-warning[disabled],.factory-bootstrap-423 .btn-warning[disabled].active,.factory-bootstrap-423 .btn-warning[disabled]:active,.factory-bootstrap-423 .btn-warning[disabled]:focus,.factory-bootstrap-423 .btn-warning[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-warning,.factory-bootstrap-423 fieldset[disabled] .btn-warning.active,.factory-bootstrap-423 fieldset[disabled] .btn-warning:active,.factory-bootstrap-423 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-423 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-423 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-423 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-423 .btn-success.active,.factory-bootstrap-423 .btn-success:active,.factory-bootstrap-423 .btn-success:focus,.factory-bootstrap-423 .btn-success:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-423 .btn-success.active,.factory-bootstrap-423 .btn-success:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-423 .btn-success.disabled,.factory-bootstrap-423 .btn-success.disabled.active,.factory-bootstrap-423 .btn-success.disabled:active,.factory-bootstrap-423 .btn-success.disabled:focus,.factory-bootstrap-423 .btn-success.disabled:hover,.factory-bootstrap-423 .btn-success[disabled],.factory-bootstrap-423 .btn-success[disabled].active,.factory-bootstrap-423 .btn-success[disabled]:active,.factory-bootstrap-423 .btn-success[disabled]:focus,.factory-bootstrap-423 .btn-success[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-success,.factory-bootstrap-423 fieldset[disabled] .btn-success.active,.factory-bootstrap-423 fieldset[disabled] .btn-success:active,.factory-bootstrap-423 fieldset[disabled] .btn-success:focus,.factory-bootstrap-423 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-423 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-423 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-423 .btn-info.active,.factory-bootstrap-423 .btn-info:active,.factory-bootstrap-423 .btn-info:focus,.factory-bootstrap-423 .btn-info:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-423 .btn-info.active,.factory-bootstrap-423 .btn-info:active,.factory-bootstrap-423 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-423 .btn-info.disabled,.factory-bootstrap-423 .btn-info.disabled.active,.factory-bootstrap-423 .btn-info.disabled:active,.factory-bootstrap-423 .btn-info.disabled:focus,.factory-bootstrap-423 .btn-info.disabled:hover,.factory-bootstrap-423 .btn-info[disabled],.factory-bootstrap-423 .btn-info[disabled].active,.factory-bootstrap-423 .btn-info[disabled]:active,.factory-bootstrap-423 .btn-info[disabled]:focus,.factory-bootstrap-423 .btn-info[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-info,.factory-bootstrap-423 fieldset[disabled] .btn-info.active,.factory-bootstrap-423 fieldset[disabled] .btn-info:active,.factory-bootstrap-423 fieldset[disabled] .btn-info:focus,.factory-bootstrap-423 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-423 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-423 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-423 .btn-link,.factory-bootstrap-423 .btn-link:active,.factory-bootstrap-423 .btn-link[disabled],.factory-bootstrap-423 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-423 .btn-link,.factory-bootstrap-423 .btn-link:active,.factory-bootstrap-423 .btn-link:focus,.factory-bootstrap-423 .btn-link:hover{border-color:transparent}.factory-bootstrap-423 .btn-link:focus,.factory-bootstrap-423 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-423 .btn-link[disabled]:focus,.factory-bootstrap-423 .btn-link[disabled]:hover,.factory-bootstrap-423 fieldset[disabled] .btn-link:focus,.factory-bootstrap-423 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-423 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-423 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-423 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-423 input[type=button].btn-block,.factory-bootstrap-423 input[type=reset].btn-block,.factory-bootstrap-423 input[type=submit].btn-block{width:100%}.factory-bootstrap-423 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-423 .fade.in{opacity:1}.factory-bootstrap-423 .collapse{display:none}.factory-bootstrap-423 .collapse.in{display:block}.factory-bootstrap-423 .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-423 .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-423 .glyphicon:empty{width:1em}.factory-bootstrap-423 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-423 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-423 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-423 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-423 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-423 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-423 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-423 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-423 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-423 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-423 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-423 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-423 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-423 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-423 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-423 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-423 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-423 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-423 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-423 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-423 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-423 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-423 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-423 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-423 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-423 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-423 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-423 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-423 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-423 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-423 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-423 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-423 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-423 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-423 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-423 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-423 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-423 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-423 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-423 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-423 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-423 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-423 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-423 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-423 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-423 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-423 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-423 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-423 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-423 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-423 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-423 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-423 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-423 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-423 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-423 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-423 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-423 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-423 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-423 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-423 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-423 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-423 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-423 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-423 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-423 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-423 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-423 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-423 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-423 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-423 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-423 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-423 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-423 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-423 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-423 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-423 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-423 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-423 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-423 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-423 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-423 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-423 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-423 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-423 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-423 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-423 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-423 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-423 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-423 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-423 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-423 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-423 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-423 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-423 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-423 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-423 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-423 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-423 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-423 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-423 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-423 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-423 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-423 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-423 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-423 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-423 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-423 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-423 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-423 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-423 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-423 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-423 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-423 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-423 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-423 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-423 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-423 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-423 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-423 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-423 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-423 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-423 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-423 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-423 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-423 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-423 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-423 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-423 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-423 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-423 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-423 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-423 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-423 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-423 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-423 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-423 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-423 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-423 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-423 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-423 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-423 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-423 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-423 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-423 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-423 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-423 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-423 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-423 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-423 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-423 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-423 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-423 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-423 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-423 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-423 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-423 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-423 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-423 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-423 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-423 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-423 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-423 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-423 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-423 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-423 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-423 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-423 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-423 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-423 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-423 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-423 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-423 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-423 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-423 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-423 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-423 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-423 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-423 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-423 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-423 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-423 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-423 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-423 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-423 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-423 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-423 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-423 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-423 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-423 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-423 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-423 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-423 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-423 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-423 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-423 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-423 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-423 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-423 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-423 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-423 .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-423 .dropdown{position:relative}.factory-bootstrap-423 .dropdown-toggle:focus{outline:0}.factory-bootstrap-423 .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-423 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-423 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-423 .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-423 .dropdown-menu>li>a:focus,.factory-bootstrap-423 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-423 .dropdown-menu>.active>a,.factory-bootstrap-423 .dropdown-menu>.active>a:focus,.factory-bootstrap-423 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-423 .dropdown-menu>.disabled>a,.factory-bootstrap-423 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-423 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-423 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-423 .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-423 .open>.dropdown-menu{display:block}.factory-bootstrap-423 .open>a{outline:0}.factory-bootstrap-423 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-423 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-423 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-423 .dropup .caret,.factory-bootstrap-423 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-423 .dropup .dropdown-menu,.factory-bootstrap-423 .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-423 .btn-group,.factory-bootstrap-423 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-423 .btn-group-vertical>.btn,.factory-bootstrap-423 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-423 .btn-group-vertical>.btn.active,.factory-bootstrap-423 .btn-group-vertical>.btn:active,.factory-bootstrap-423 .btn-group-vertical>.btn:focus,.factory-bootstrap-423 .btn-group-vertical>.btn:hover,.factory-bootstrap-423 .btn-group>.btn.active,.factory-bootstrap-423 .btn-group>.btn:active,.factory-bootstrap-423 .btn-group>.btn:focus,.factory-bootstrap-423 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-423 .btn-group-vertical>.btn:focus,.factory-bootstrap-423 .btn-group>.btn:focus{outline:0}.factory-bootstrap-423 .btn-group .btn+.btn,.factory-bootstrap-423 .btn-group .btn+.btn-group,.factory-bootstrap-423 .btn-group .btn-group+.btn,.factory-bootstrap-423 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-423 .btn-toolbar:after,.factory-bootstrap-423 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-423 .btn-toolbar:after{clear:both}.factory-bootstrap-423 .btn-toolbar .btn-group{float:left}.factory-bootstrap-423 .btn-toolbar>.btn+.btn,.factory-bootstrap-423 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-423 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-423 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-423 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-423 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-423 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-423 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-423 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .btn-group>.btn-group{float:left}.factory-bootstrap-423 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-423 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-423 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-423 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .btn-group .dropdown-toggle:active,.factory-bootstrap-423 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-423 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-423 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-423 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-423 .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-423 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-423 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-423 .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-423 .btn .caret{margin-left:0}.factory-bootstrap-423 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-423 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-423 .btn-group-vertical>.btn,.factory-bootstrap-423 .btn-group-vertical>.btn-group,.factory-bootstrap-423 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-423 .btn-group-vertical>.btn-group:after,.factory-bootstrap-423 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-423 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-423 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-423 .btn-group-vertical>.btn+.btn,.factory-bootstrap-423 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-423 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-423 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-423 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-423 .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-423 .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-423 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-423 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-423 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-423 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-423 .btn-group-justified>.btn,.factory-bootstrap-423 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-423 .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-423 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-423 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-423 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-423 .input-group-lg>.form-control,.factory-bootstrap-423 .input-group-lg>.input-group-addon,.factory-bootstrap-423 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-423 select.input-group-lg>.form-control,.factory-bootstrap-423 select.input-group-lg>.input-group-addon,.factory-bootstrap-423 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-423 textarea.input-group-lg>.form-control,.factory-bootstrap-423 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-423 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-423 .input-group-sm>.form-control,.factory-bootstrap-423 .input-group-sm>.input-group-addon,.factory-bootstrap-423 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-423 select.input-group-sm>.form-control,.factory-bootstrap-423 select.input-group-sm>.input-group-addon,.factory-bootstrap-423 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-423 textarea.input-group-sm>.form-control,.factory-bootstrap-423 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-423 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-423 .input-group .form-control,.factory-bootstrap-423 .input-group-addon,.factory-bootstrap-423 .input-group-btn{display:table-cell}.factory-bootstrap-423 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-423 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-423 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-423 .input-group-addon,.factory-bootstrap-423 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-423 .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-423 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-423 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-423 .input-group-addon input[type=checkbox],.factory-bootstrap-423 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-423 .input-group .form-control:first-child,.factory-bootstrap-423 .input-group-addon:first-child,.factory-bootstrap-423 .input-group-btn:first-child>.btn,.factory-bootstrap-423 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-423 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-423 .input-group-addon:first-child{border-right:0}.factory-bootstrap-423 .input-group .form-control:last-child,.factory-bootstrap-423 .input-group-addon:last-child,.factory-bootstrap-423 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-423 .input-group-btn:last-child>.btn,.factory-bootstrap-423 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .input-group-addon:last-child{border-left:0}.factory-bootstrap-423 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-423 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-423 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-423 .input-group-btn>.btn{position:relative}.factory-bootstrap-423 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-423 .input-group-btn>.btn:active,.factory-bootstrap-423 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-423 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-423 .nav:after,.factory-bootstrap-423 .nav:before{display:table;content:" "}.factory-bootstrap-423 .nav:after{clear:both}.factory-bootstrap-423 .nav>li{position:relative;display:block}.factory-bootstrap-423 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-423 .nav>li>a:focus,.factory-bootstrap-423 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-423 .nav>li.disabled>a{color:#999}.factory-bootstrap-423 .nav>li.disabled>a:focus,.factory-bootstrap-423 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-423 .nav .open>a,.factory-bootstrap-423 .nav .open>a:focus,.factory-bootstrap-423 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-423 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-423 .nav>li>a>img{max-width:none}.factory-bootstrap-423 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-423 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-423 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-423 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-423 .nav-tabs>li.active>a,.factory-bootstrap-423 .nav-tabs>li.active>a:focus,.factory-bootstrap-423 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-423 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-423 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-423 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-423 .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-423 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-423 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-423 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-423 .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-423 .nav-pills>li{float:left}.factory-bootstrap-423 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-423 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-423 .nav-pills>li.active>a,.factory-bootstrap-423 .nav-pills>li.active>a:focus,.factory-bootstrap-423 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-423 .nav-stacked>li{float:none}.factory-bootstrap-423 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-423 .nav-justified{width:100%}.factory-bootstrap-423 .nav-justified>li{float:none}.factory-bootstrap-423 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-423 .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-423 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-423 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-423 .nav-tabs-justified>.active>a,.factory-bootstrap-423 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-423 .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-423 .tab-content>.tab-pane{display:none}.factory-bootstrap-423 .tab-content>.active{display:block}.factory-bootstrap-423 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-423 .navbar:after,.factory-bootstrap-423 .navbar:before{display:table;content:" "}.factory-bootstrap-423 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-423 .navbar-header:after,.factory-bootstrap-423 .navbar-header:before{display:table;content:" "}.factory-bootstrap-423 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-423 .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-423 .navbar-collapse:after,.factory-bootstrap-423 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-423 .navbar-collapse:after{clear:both}.factory-bootstrap-423 .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-423 .container>.navbar-collapse,.factory-bootstrap-423 .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-423 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-423 .navbar-fixed-bottom,.factory-bootstrap-423 .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-423 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-423 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-423 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-423 .navbar-brand:focus,.factory-bootstrap-423 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-423 .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-423 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-423 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-423 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-423 .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-423 .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-423 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-423 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-423 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-423 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-423 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-423 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-423 .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-423 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-423 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-423 .navbar-default .navbar-brand:focus,.factory-bootstrap-423 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-423 .navbar-default .navbar-nav>li>a,.factory-bootstrap-423 .navbar-default .navbar-text{color:#777}.factory-bootstrap-423 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-423 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-423 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-423 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-423 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-423 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-423 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-423 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-423 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-423 .navbar-default .navbar-toggle:focus,.factory-bootstrap-423 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-423 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-423 .navbar-default .navbar-collapse,.factory-bootstrap-423 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-423 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-423 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-423 .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-423 .navbar-default .navbar-link{color:#777}.factory-bootstrap-423 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-423 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-423 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-423 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-423 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-423 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-423 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-423 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-423 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-423 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-423 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-423 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-423 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-423 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-423 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-423 .navbar-inverse .navbar-collapse,.factory-bootstrap-423 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-423 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-423 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-423 .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-423 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-423 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-423 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-423 .breadcrumb>li{display:inline-block}.factory-bootstrap-423 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-423 .breadcrumb>.active{color:#999}.factory-bootstrap-423 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-423 .pagination>li{display:inline}.factory-bootstrap-423 .pagination>li>a,.factory-bootstrap-423 .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-423 .pagination>li:first-child>a,.factory-bootstrap-423 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-423 .pagination>li:last-child>a,.factory-bootstrap-423 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-423 .pagination>li>a:focus,.factory-bootstrap-423 .pagination>li>a:hover,.factory-bootstrap-423 .pagination>li>span:focus,.factory-bootstrap-423 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-423 .pagination>.disabled>a,.factory-bootstrap-423 .pagination>.disabled>a:focus,.factory-bootstrap-423 .pagination>.disabled>a:hover,.factory-bootstrap-423 .pagination>.disabled>span,.factory-bootstrap-423 .pagination>.disabled>span:focus,.factory-bootstrap-423 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-423 .pagination-lg>li>a,.factory-bootstrap-423 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-423 .pagination-lg>li:first-child>a,.factory-bootstrap-423 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-423 .pagination-lg>li:last-child>a,.factory-bootstrap-423 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-423 .pagination-sm>li>a,.factory-bootstrap-423 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-423 .pagination-sm>li:first-child>a,.factory-bootstrap-423 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-423 .pagination-sm>li:last-child>a,.factory-bootstrap-423 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-423 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-423 .pager:after,.factory-bootstrap-423 .pager:before{display:table;content:" "}.factory-bootstrap-423 .pager:after{clear:both}.factory-bootstrap-423 .pager li{display:inline}.factory-bootstrap-423 .pager li>a,.factory-bootstrap-423 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-423 .pager li>a:focus,.factory-bootstrap-423 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-423 .pager .next>a,.factory-bootstrap-423 .pager .next>span{float:right}.factory-bootstrap-423 .pager .previous>a,.factory-bootstrap-423 .pager .previous>span{float:left}.factory-bootstrap-423 .pager .disabled>a,.factory-bootstrap-423 .pager .disabled>a:focus,.factory-bootstrap-423 .pager .disabled>a:hover,.factory-bootstrap-423 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-423 .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-423 .label[href]:focus,.factory-bootstrap-423 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-423 .label:empty{display:none}.factory-bootstrap-423 .btn .label{position:relative;top:-1px}.factory-bootstrap-423 .label-default{background-color:#999}.factory-bootstrap-423 .label-default[href]:focus,.factory-bootstrap-423 .label-default[href]:hover{background-color:gray}.factory-bootstrap-423 .label-primary{background-color:#428bca}.factory-bootstrap-423 .label-primary[href]:focus,.factory-bootstrap-423 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-423 .label-success{background-color:#5cb85c}.factory-bootstrap-423 .label-success[href]:focus,.factory-bootstrap-423 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-423 .label-info{background-color:#5bc0de}.factory-bootstrap-423 .label-info[href]:focus,.factory-bootstrap-423 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-423 .label-warning{background-color:#f0ad4e}.factory-bootstrap-423 .label-warning[href]:focus,.factory-bootstrap-423 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-423 .label-danger{background-color:#d9534f}.factory-bootstrap-423 .label-danger[href]:focus,.factory-bootstrap-423 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-423 .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-423 .badge:empty{display:none}.factory-bootstrap-423 .btn .badge{position:relative;top:-1px}.factory-bootstrap-423 a.badge:focus,.factory-bootstrap-423 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-423 .nav-pills>.active>a>.badge,.factory-bootstrap-423 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-423 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-423 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-423 .jumbotron .h1,.factory-bootstrap-423 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-423 .jumbotron p{line-height:1.4}.factory-bootstrap-423 .container .jumbotron{border-radius:6px}.factory-bootstrap-423 .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-423 .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-423 .thumbnail a>img,.factory-bootstrap-423 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-423 a.thumbnail.active,.factory-bootstrap-423 a.thumbnail:focus,.factory-bootstrap-423 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-423 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-423 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-423 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-423 .alert .alert-link{font-weight:700}.factory-bootstrap-423 .alert>p,.factory-bootstrap-423 .alert>ul{margin-bottom:0}.factory-bootstrap-423 .alert>p+p{margin-top:5px}.factory-bootstrap-423 .alert-dismissable{padding-right:35px}.factory-bootstrap-423 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-423 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-423 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-423 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-423 .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-423 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-423 .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-423 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-423 .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-423 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-423 .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-423 .media,.factory-bootstrap-423 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-423 .media,.factory-bootstrap-423 .media .media{margin-top:15px}.factory-bootstrap-423 .media:first-child{margin-top:0}.factory-bootstrap-423 .media-object{display:block}.factory-bootstrap-423 .media-heading{margin:0 0 5px}.factory-bootstrap-423 .media>.pull-left{margin-right:10px}.factory-bootstrap-423 .media>.pull-right{margin-left:10px}.factory-bootstrap-423 .media-list{padding-left:0;list-style:none}.factory-bootstrap-423 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-423 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-423 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-423 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-423 .list-group-item>.badge{float:right}.factory-bootstrap-423 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-423 a.list-group-item{color:#555}.factory-bootstrap-423 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-423 a.list-group-item:focus,.factory-bootstrap-423 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-423 a.list-group-item.active,.factory-bootstrap-423 a.list-group-item.active:focus,.factory-bootstrap-423 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-423 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-423 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-423 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-423 a.list-group-item.active .list-group-item-text,.factory-bootstrap-423 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-423 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-423 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-423 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-423 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-423 .panel-body{padding:15px}.factory-bootstrap-423 .panel-body:after,.factory-bootstrap-423 .panel-body:before{display:table;content:" "}.factory-bootstrap-423 .panel-body:after{clear:both}.factory-bootstrap-423 .panel>.list-group{margin-bottom:0}.factory-bootstrap-423 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-423 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-423 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-423 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-423 .panel>.table,.factory-bootstrap-423 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-423 .panel>.panel-body+.table,.factory-bootstrap-423 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-423 .panel>.table>tbody:first-child td,.factory-bootstrap-423 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-423 .panel>.table-bordered,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-423 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-423 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-423 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-423 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-423 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-423 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-423 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-423 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-423 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-423 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-423 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-423 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-423 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-423 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-423 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-423 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-423 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-423 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-423 .panel-title>a{color:inherit}.factory-bootstrap-423 .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-423 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-423 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-423 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-423 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-423 .panel-group .panel-footer{border-top:0}.factory-bootstrap-423 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-423 .panel-default{border-color:#ddd}.factory-bootstrap-423 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-423 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-423 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-423 .panel-primary{border-color:#428bca}.factory-bootstrap-423 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-423 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-423 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-423 .panel-success{border-color:#d6e9c6}.factory-bootstrap-423 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-423 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-423 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-423 .panel-warning{border-color:#faebcc}.factory-bootstrap-423 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-423 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-423 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-423 .panel-danger{border-color:#ebccd1}.factory-bootstrap-423 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-423 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-423 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-423 .panel-info{border-color:#bce8f1}.factory-bootstrap-423 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-423 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-423 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-423 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-423 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-423 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-423 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-423 .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-423 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-423 .close:focus,.factory-bootstrap-423 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-423 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-423 .modal-open{overflow:hidden}.factory-bootstrap-423 .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-423 .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-423 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-423 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-423 .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-423 .modal-backdrop,.factory-bootstrap-423-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-423 .modal-backdrop.fade,.factory-bootstrap-423-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-423 .modal-backdrop.in,.factory-bootstrap-423-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-423 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-423 .modal-header .close{margin-top:-2px}.factory-bootstrap-423 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-423 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-423 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-423 .modal-footer:after,.factory-bootstrap-423 .modal-footer:before{display:table;content:" "}.factory-bootstrap-423 .modal-footer:after{clear:both}.factory-bootstrap-423 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-423 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-423 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-423 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-423 .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-423 .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-423 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-423 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-423 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-423 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-423 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-423 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-423 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-423 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-423 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-423 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-423 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-423 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-423 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-423 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-423 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-423 .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-423 .popover.top{margin-top:-10px}.factory-bootstrap-423 .popover.right{margin-left:10px}.factory-bootstrap-423 .popover.bottom{margin-top:10px}.factory-bootstrap-423 .popover.left{margin-left:-10px}.factory-bootstrap-423 .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-423 .popover-content{padding:9px 14px}.factory-bootstrap-423 .popover .arrow,.factory-bootstrap-423 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-423 .popover .arrow{border-width:11px}.factory-bootstrap-423 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-423 .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-423 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-423 .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-423 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-423 .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-423 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-423 .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-423 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-423 .carousel{position:relative}.factory-bootstrap-423 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-423 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-423 .carousel-inner>.item>a>img,.factory-bootstrap-423 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-423 .carousel-inner>.active,.factory-bootstrap-423 .carousel-inner>.next,.factory-bootstrap-423 .carousel-inner>.prev{display:block}.factory-bootstrap-423 .carousel-inner>.active{left:0}.factory-bootstrap-423 .carousel-inner>.next,.factory-bootstrap-423 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-423 .carousel-inner>.next{left:100%}.factory-bootstrap-423 .carousel-inner>.prev{left:-100%}.factory-bootstrap-423 .carousel-inner>.next.left,.factory-bootstrap-423 .carousel-inner>.prev.right{left:0}.factory-bootstrap-423 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-423 .carousel-inner>.active.right{left:100%}.factory-bootstrap-423 .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-423 .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-423 .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-423 .carousel-control:focus,.factory-bootstrap-423 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-423 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-423 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-423 .carousel-control .icon-next,.factory-bootstrap-423 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-423 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-423 .carousel-control .icon-prev{left:50%}.factory-bootstrap-423 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-423 .carousel-control .icon-next{right:50%}.factory-bootstrap-423 .carousel-control .icon-next,.factory-bootstrap-423 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-423 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-423 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-423 .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-423 .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-423 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-423 .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-423 .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-423 .clearfix:after,.factory-bootstrap-423 .clearfix:before{display:table;content:" "}.factory-bootstrap-423 .clearfix:after{clear:both}.factory-bootstrap-423 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-423 .pull-right{float:right!important}.factory-bootstrap-423 .pull-left{float:left!important}.factory-bootstrap-423 .hide{display:none!important}.factory-bootstrap-423 .show{display:block!important}.factory-bootstrap-423 .invisible{visibility:hidden}.factory-bootstrap-423 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-423 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-423 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-423 .visible-lg,.factory-bootstrap-423 .visible-md,.factory-bootstrap-423 .visible-sm,.factory-bootstrap-423 .visible-xs,.factory-bootstrap-423 td.visible-lg,.factory-bootstrap-423 td.visible-md,.factory-bootstrap-423 td.visible-sm,.factory-bootstrap-423 td.visible-xs,.factory-bootstrap-423 th.visible-lg,.factory-bootstrap-423 th.visible-md,.factory-bootstrap-423 th.visible-sm,.factory-bootstrap-423 th.visible-xs,.factory-bootstrap-423 tr.visible-lg,.factory-bootstrap-423 tr.visible-md,.factory-bootstrap-423 tr.visible-sm,.factory-bootstrap-423 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-423 .hidden-xs{display:block!important}.factory-bootstrap-423 table.hidden-xs{display:table}.factory-bootstrap-423 tr.hidden-xs{display:table-row!important}.factory-bootstrap-423 td.hidden-xs,.factory-bootstrap-423 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-423 .hidden-sm{display:block!important}.factory-bootstrap-423 table.hidden-sm{display:table}.factory-bootstrap-423 tr.hidden-sm{display:table-row!important}.factory-bootstrap-423 td.hidden-sm,.factory-bootstrap-423 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-423 .hidden-md{display:block!important}.factory-bootstrap-423 table.hidden-md{display:table}.factory-bootstrap-423 tr.hidden-md{display:table-row!important}.factory-bootstrap-423 td.hidden-md,.factory-bootstrap-423 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-423 .hidden-lg{display:block!important}.factory-bootstrap-423 table.hidden-lg{display:table}.factory-bootstrap-423 tr.hidden-lg{display:table-row!important}.factory-bootstrap-423 td.hidden-lg,.factory-bootstrap-423 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-423 .hidden-lg.hidden-xs,.factory-bootstrap-423 td.hidden-lg.hidden-xs,.factory-bootstrap-423 th.hidden-lg.hidden-xs,.factory-bootstrap-423 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-423 .hidden-lg.hidden-sm,.factory-bootstrap-423 td.hidden-lg.hidden-sm,.factory-bootstrap-423 th.hidden-lg.hidden-sm,.factory-bootstrap-423 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-423 .hidden-lg.hidden-md,.factory-bootstrap-423 td.hidden-lg.hidden-md,.factory-bootstrap-423 th.hidden-lg.hidden-md,.factory-bootstrap-423 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-423 .hidden-lg,.factory-bootstrap-423 td.hidden-lg,.factory-bootstrap-423 th.hidden-lg,.factory-bootstrap-423 tr.hidden-lg{display:none!important}}.factory-bootstrap-423 .visible-print,.factory-bootstrap-423 td.visible-print,.factory-bootstrap-423 th.visible-print,.factory-bootstrap-423 tr.visible-print{display:none!important}@media print{.factory-bootstrap-423 .visible-print{display:block!important}.factory-bootstrap-423 table.visible-print{display:table}.factory-bootstrap-423 tr.visible-print{display:table-row!important}.factory-bootstrap-423 td.visible-print,.factory-bootstrap-423 th.visible-print{display:table-cell!important}.factory-bootstrap-423 .hidden-print,.factory-bootstrap-423 td.hidden-print,.factory-bootstrap-423 th.hidden-print,.factory-bootstrap-423 tr.hidden-print{display:none!important}}/*!
|
12 |
* Factory Default Bootstrap Theme
|
13 |
*
|
14 |
* The code is based on Bootstrap v2.1.1
|
22 |
*
|
23 |
* @package factory-bootstrap
|
24 |
* @since 1.0.0
|
25 |
+
*/.factory-bootstrap-423 .btn-danger,.factory-bootstrap-423 .btn-default,.factory-bootstrap-423 .btn-info,.factory-bootstrap-423 .btn-primary,.factory-bootstrap-423 .btn-success,.factory-bootstrap-423 .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-423 .btn-danger.active,.factory-bootstrap-423 .btn-danger:active,.factory-bootstrap-423 .btn-default.active,.factory-bootstrap-423 .btn-default:active,.factory-bootstrap-423 .btn-info.active,.factory-bootstrap-423 .btn-info:active,.factory-bootstrap-423 .btn-primary.active,.factory-bootstrap-423 .btn-primary:active,.factory-bootstrap-423 .btn-success.active,.factory-bootstrap-423 .btn-success:active,.factory-bootstrap-423 .btn-warning.active,.factory-bootstrap-423 .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-423 .btn.active,.factory-bootstrap-423 .btn:active{background-image:none}.factory-bootstrap-423 .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-423 .btn-default.active,.factory-bootstrap-423 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-423 .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-423 .btn-gold:focus,.factory-bootstrap-423 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-423 .btn-gold.active,.factory-bootstrap-423 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .btn-primary.active,.factory-bootstrap-423 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-423 .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-423 .btn-success:focus,.factory-bootstrap-423 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-423 .btn-success.active,.factory-bootstrap-423 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-423 .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-423 .btn-warning:focus,.factory-bootstrap-423 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-423 .btn-warning.active,.factory-bootstrap-423 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-423 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-423 .btn-danger.active,.factory-bootstrap-423 .btn-danger:active,.factory-bootstrap-423 .btn-danger:focus,.factory-bootstrap-423 .btn-danger:hover,.factory-bootstrap-423 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-423 .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-423 .btn-info:focus,.factory-bootstrap-423 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-423 .btn-info.active,.factory-bootstrap-423 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-423 .img-thumbnail,.factory-bootstrap-423 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-423 .dropdown-menu>li>a:focus,.factory-bootstrap-423 .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-423 .dropdown-menu>.active>a,.factory-bootstrap-423 .dropdown-menu>.active>a:focus,.factory-bootstrap-423 .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-423 .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-423 .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-423 .navbar-brand,.factory-bootstrap-423 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-423 .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-423 .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-423 .navbar-inverse .navbar-brand,.factory-bootstrap-423 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-423 .navbar-fixed-bottom,.factory-bootstrap-423 .navbar-fixed-top,.factory-bootstrap-423 .navbar-static-top{border-radius:0}.factory-bootstrap-423 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-423 .alert .actions{padding-top:10px}.factory-bootstrap-423 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-423 .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-423 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-423 .alert-normal,.factory-bootstrap-423 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-423 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-423 .alert-danger a:not(.btn),.factory-bootstrap-423 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .list-group-item.active,.factory-bootstrap-423 .list-group-item.active:focus,.factory-bootstrap-423 .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-423 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-423 .factory-hidden{display:none}.factory-bootstrap-423 .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
@@ -12,4 +12,4 @@
|
|
12 |
* Datetimepicker for Bootstrap 3
|
13 |
* version : 4.17.47
|
14 |
* https://github.com/Eonasdan/bootstrap-datetimepicker/
|
15 |
-
*/.factory-bootstrap-
|
12 |
* Datetimepicker for Bootstrap 3
|
13 |
* version : 4.17.47
|
14 |
* https://github.com/Eonasdan/bootstrap-datetimepicker/
|
15 |
+
*/.factory-bootstrap-423 .bootstrap-datetimepicker-widget{list-style:none}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu{display:block;margin:2px 0;padding:4px;width:19em}@media (min-width:768px){.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:992px){.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}@media (min-width:1200px){.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.timepicker-sbs{width:38em}}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu:after,.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu:before{content:'';display:inline-block;position:absolute}.factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:before{left:auto;right:6px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.dropdown-menu.pull-right:after{left:auto;right:7px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .list-unstyled{margin:0}.factory-bootstrap-423 .bootstrap-datetimepicker-widget a[data-action]{padding:6px 0}.factory-bootstrap-423 .bootstrap-datetimepicker-widget a[data-action]:active{box-shadow:none}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .timepicker-hour,.factory-bootstrap-423 .bootstrap-datetimepicker-widget .timepicker-minute,.factory-bootstrap-423 .bootstrap-datetimepicker-widget .timepicker-second{width:54px;font-weight:700;font-size:1.2em;margin:0}.factory-bootstrap-423 .bootstrap-datetimepicker-widget button[data-action]{padding:6px}.factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .bootstrap-datetimepicker-widget .picker-switch{text-align:center}.factory-bootstrap-423 .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-423 .bootstrap-datetimepicker-widget .picker-switch td{padding:0;margin:0;height:auto;width:auto;line-height:inherit}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .picker-switch td span{line-height:2.5;height:2.5em;width:100%}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table{width:100%;margin:0}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th{text-align:center;border-radius:4px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th{height:20px;line-height:20px;width:20px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th.picker-switch{width:145px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th.disabled,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table th.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-423 .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-423 .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-423 .bootstrap-datetimepicker-widget table thead tr:first-child th{cursor:pointer}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table thead tr:first-child th:hover{background:#eee}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td{height:54px;line-height:54px;width:54px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.cw{font-size:.8em;height:20px;line-height:20px;color:#777}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.day{height:20px;line-height:20px;width:20px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.day:hover,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.hour:hover,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.minute:hover,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.second:hover{background:#eee;cursor:pointer}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.new,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.old{color:#777}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.today{position:relative}.factory-bootstrap-423 .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-423 .bootstrap-datetimepicker-widget table td.active,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.active:hover{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.active.today:before{border-bottom-color:#fff}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.disabled,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-423 .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-423 .bootstrap-datetimepicker-widget table td span:hover{background:#eee}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span.active{background-color:#337ab7;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span.old{color:#777}.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span.disabled,.factory-bootstrap-423 .bootstrap-datetimepicker-widget table td span.disabled:hover{background:0 0;color:#777;cursor:not-allowed}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.usetwentyfour td.hour{height:27px;line-height:27px}.factory-bootstrap-423 .bootstrap-datetimepicker-widget.wider{width:21em}.factory-bootstrap-423 .bootstrap-datetimepicker-widget .datepicker-decades .decade{line-height:1.8em!important}.factory-bootstrap-423 .input-group.date .input-group-addon{cursor:pointer}.factory-bootstrap-423 .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-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .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-423 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-423 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-423 .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-423 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-423 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-423 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-423 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-423 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-423 .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-423 .control-label{float:left;width:100%;text-align:left;position:relative;top:1px}#side-sortables .factory-bootstrap-423 .control-icon{float:left;margin:0 6px 0 0}#side-sortables .factory-bootstrap-423 input{float:right;position:relative;top:-25px}#side-sortables .factory-bootstrap-423 .col-sm-10{margin:0;width:100%}#side-sortables .factory-bootstrap-423 .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-423 .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-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .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-423 .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-423 .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-423 .btn-primary:focus,.factory-bootstrap-423 .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-423 .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-423 .btn-primary:disabled,.factory-bootstrap-423 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-423 .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-423 .pagination>.active>a,.factory-bootstrap-423 .pagination>.active>a:focus,.factory-bootstrap-423 .pagination>.active>a:hover,.factory-bootstrap-423 .pagination>.active>span,.factory-bootstrap-423 .pagination>.active>span:focus,.factory-bootstrap-423 .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-423 .factory-tab{overflow:hidden;margin-bottom:25px}.factory-bootstrap-423 .factory-tab .form-group{overflow:hidden}.factory-bootstrap-423 .factory-tab+.form-group{margin-top:30px}.factory-bootstrap-423 .nav-tabs a{text-decoration:none}.factory-bootstrap-423 .factory-align-horizontal .nav-tabs{border-bottom:0}.factory-bootstrap-423 .factory-align-vertical .factory-headers{float:left;width:150px}.factory-bootstrap-423 .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-423 .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-423 .factory-align-vertical .factory-bodies{min-height:250px;margin-left:150px}.factory-bootstrap-423 .factory-align-vertical .factory-bodies .actory-tab-item{clear:both}.factory-bootstrap-423 .form-horizontal .factory-align-vertical .form-group{margin-left:-5px}.factory-bootstrap-423 .factory-align-vertical .nav-tabs li{float:none}.factory-bootstrap-423 .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-423 .factory-align-vertical .nav-tabs>.active>a{border:1px solid #DDD!important;border-right:1px solid #fff!important}.factory-bootstrap-423 .factory-align-vertical .nav-tabs>li a:hover{color:#21759B;z-index:5;border-color:transparent}.factory-bootstrap-423 .factory-align-vertical .control-label{width:20%;max-width:140px}.factory-bootstrap-423 .factory-align-vertical .control-group{width:80%}.factory-bootstrap-423 .factory-align-vertical .control-group input[type=text],.factory-bootstrap-423 .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-423 .wp-editor-wrap *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-423 .wp-editor-wrap .button,.factory-bootstrap-423 .wp-editor-wrap input,.factory-bootstrap-423 .wp-editor-wrap textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-423 .switch-html,.factory-bootstrap-423 .switch-tmce{color:#777}.factory-bootstrap-423 .html-active .switch-html,.factory-bootstrap-423 .tmce-active .switch-tmce{color:#555}.factory-bootstrap-423 .switch-html:hover,.factory-bootstrap-423 .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-423 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-423 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-423 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-423 .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-423 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-423 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .factory-control-row{padding-left:105px;position:relative}.factory-bootstrap-423 .factory-control-row .factory-color-wrap{position:absolute;left:0;top:0}.factory-bootstrap-423 .factory-control-row .factory-opacity-wrap{width:100%}.factory-bootstrap-423 .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-423 .factory-color{position:relative}.factory-bootstrap-423 .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-423 .factory-color .factory-background,.factory-bootstrap-423 .factory-color .factory-pattern{cursor:pointer;height:26px;width:26px;position:absolute;border-radius:5px;background:transparent url(../../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-423 .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-423 .factory-dropdown-and-colors .factory-colors-wrap,.factory-bootstrap-423 .factory-dropdown-and-colors .factory-dropdown-wrap{display:inline-block}.factory-bootstrap-423 .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-423 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-423 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-423 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .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-423 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-423 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-423 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-423 .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-423 .factory-font .factory-control-row{padding:0;vertical-align:top}.factory-bootstrap-423 .factory-font .factory-color-wrap{position:static;display:inline-block;vertical-align:top}.factory-bootstrap-423 .factory-font .factory-size-wrap{display:inline-block;width:70px;vertical-align:top}.factory-bootstrap-423 .iris-picker{margin-top:10px}.factory-bootstrap-423 .factory-font .factory-family-wrap{padding-bottom:10px}.factory-bootstrap-423 .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-423 .factory-list li input{margin:0 5px 0 0;position:relative;top:1px;outline:0!important}.factory-bootstrap-423 .factory-list li span{vertical-align:bottom;line-height:100%}.factory-bootstrap-423 .factory-list .factory-error{position:relative;display:inline-block}.factory-bootstrap-423 .factory-list .factory-error i{color:#f47665;margin:0 7px 0 1px;cursor:help}.factory-bootstrap-423 .factory-list .factory-error-text{display:none;position:absolute;width:300px}.factory-bootstrap-423 .factory-list .factory-error-text,.factory-bootstrap-423 .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-423 .factory-list-error{padding:5px 10px;max-width:500px;display:inline-block}.factory-bootstrap-423 .factory-list-error i{margin:0 7px 0 1px}.factory-bootstrap-423 .factory-list .factory-error-text a{color:#fff;font-weight:700}.factory-bootstrap-423 .factory-list .factory-has-error:hover .factory-error-text{display:block}.factory-bootstrap-423 .factory-list .factory-has-error{cursor:default}.opanda-connect-buttons .opanda-has-error .opanda-error{display:inline-block}.factory-bootstrap-423 .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-423 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-423 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-423 .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-423 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-423 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-423 .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-423 .factory-pattern .factory-pattern-controls{vertical-align:middle}.factory-bootstrap-423 .factory-pattern .factory-preview-wrap{display:inline-block;vertical-align:middle}.factory-bootstrap-423 .factory-pattern .factory-preview{width:100px;height:26px;background:transparent url(../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-423 .factory-pattern .factory-preview.factory-empty{background:transparent url(../assets/images/color_picker_pattern.jpg) repeat!important}.factory-bootstrap-423 .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-423 .factory-pattern .factory-preview span:hover{background:#161616}.factory-bootstrap-423 .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-423 .factory-pattern.factory-patterns-panel-active .factory-preview span:after{border-top-color:transparent;border-bottom-color:#96a6a6;top:4px}.factory-bootstrap-423 .factory-pattern .factory-color-panel{padding:10px;margin-top:10px;background:rgba(255,255,255,.04);border-radius:3px;display:none}.factory-bootstrap-423 .factory-pattern.factory-color-panel-active .factory-color-panel{display:block}.factory-bootstrap-423 .factory-pattern .factory-color-label{margin-right:5px}.factory-bootstrap-423 .factory-pattern .factory-color,.factory-bootstrap-423 .factory-pattern .factory-color-label{display:inline-block;vertical-align:middle}.factory-bootstrap-423 .factory-pattern .factory-color-panel .factory-hint{margin-top:7px}.factory-bootstrap-423 .factory-pattern .factory-patterns-panel{display:none;margin-top:10px;padding:2px 0 0;border-top:1px solid #272727;overflow:visible}.factory-bootstrap-423 .factory-pattern .factory-patterns-group{clear:both;padding:2px 0 0;border-bottom:1px solid #272727;padding-bottom:10px}.factory-bootstrap-423 .factory-pattern .factory-patterns-group-title{margin-top:10px}.factory-bootstrap-423 .factory-pattern .factory-patterns-row{padding-top:10px}.factory-bootstrap-423 .factory-pattern.factory-patterns-panel-active .factory-patterns-panel{display:block}.factory-bootstrap-423 .factory-pattern .factory-patterns-item,.factory-bootstrap-423 .factory-pattern .factory-patterns-item div{width:46px;height:46px}.factory-bootstrap-423 .factory-pattern .factory-patterns-item{display:inline-block;cursor:pointer;position:relative;vertical-align:top}.factory-bootstrap-423 .factory-pattern .factory-patterns-item+.factory-patterns-item{margin-left:10px}.factory-bootstrap-423 .factory-pattern .factory-patterns-item div{position:absolute;border-radius:100%;border:4px solid #333}.factory-bootstrap-423 .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-423 .factory-pattern .factory-no-preview{background:#2f2f2f;line-height:46px;border-radius:100%;text-align:center;font-size:20px}.factory-bootstrap-423 .factory-pattern .factory-no-preview:hover{background:#333}.factory-bootstrap-423 .factory-pattern .factory-button .fa{font-size:14px;margin-right:1px}.factory-bootstrap-423 .factory-pattern .factory-button span{position:relative;top:-1px}.factory-bootstrap-423 .factory-pattern .factory-button+.factory-button{margin-left:3px}.factory-bootstrap-423 .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-423 .factory-from-radio-label,.factory-bootstrap-423 .factory-from-radio-label>span{-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;transition:all .3s}.factory-bootstrap-423 .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-423 .factory-from-radio-label:hover{background-color:#f5f2f2;border:1px solid rgba(0,0,0,.2)}.factory-bootstrap-423 .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-423 .factory-from-radio-label .factory-radio-color:checked+span{border:5px solid #fff}.factory-bootstrap-423 .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-423 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-423 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-423 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-423 .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-423 .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-423 .factory-gradient-picker-wrap{margin-bottom:20px}.factory-bootstrap-423 .gradientPicker-preview{width:100%;height:30px;border-radius:3px;background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-423 .factory-color-picker-container{display:none;padding-top:15px}.factory-bootstrap-423 .factory-point,.factory-bootstrap-423 .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-423 .factory-point-color{border-radius:0}.factory-bootstrap-423 .factory-point{background:transparent url(../../images/color_picker_pattern.jpg) repeat}.factory-bootstrap-423 .factory-current-point{-ms-transform:rotate(180deg);-webkit-transform:rotate(180deg);transform:rotate(180deg)}.factory-bootstrap-423 .factory-points{position:relative;height:10px;width:100%;cursor:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAYAAADAQbwGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJ1JREFUeNq8VAEKwCAITOn%2FX3ZzTBCxUicTBsvsOO9EIKJhAwCe5H0H4xBvLQgOegV8yZ8AZwJHc8zKI4c53bk6IGNqMH3GCJuMlkeG4p4G1e5Lq1KXatmCM7AdrbLLq7FC0agycx7oXOmk8%2FY%2FPNjRR7s6ZFHFqY5AcasLFDPtpAC7WH7aNkxgO9gdLNv3oWdKiKXX7r8bu6rlJcAA9ZRfMt5oHoIAAAAASUVORK5CYII%3D) 5 0,pointer}.factory-bootstrap-423 .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-423 .gradientPicker-iris-wrap .iris-border,.factory-bootstrap-423 .gradientPicker-iris-wrap .iris-picker{border:0;background:#111}.factory-bootstrap-423 .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-423 .factory-preset-gradient,.factory-bootstrap-423 .factory-secondary-color{width:22px;height:22px;border-radius:100%}.factory-bootstrap-423 .factory-preset-gradient{display:inline-block;cursor:pointer;margin-bottom:3px;position:relative}.factory-bootstrap-423 .factory-preset-gradient:hover{opacity:.9}.factory-bootstrap-423 .factory-preset-gradient+.factory-preset-gradient{margin-left:5px}.factory-bootstrap-423 .factory-secondary-color-wrap{width:11px;height:22px;position:absolute;overflow:hidden;right:0}.factory-bootstrap-423 .factory-secondary-color{position:absolute;left:-11px;background-color:red}.factory-bootstrap-423 .gradientPicker-filldirection{width:200px;margin-top:5px}.factory-bootstrap-423 .gradientPicker-ptConfig .color-chooser{float:left}.factory-bootstrap-423 .factory-color-picker-container .factory-slider{padding-left:75px;padding-right:60px;position:relative}.factory-bootstrap-423 .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-423 .factory-paddings-editor{padding-left:135px;height:90px;position:relative}.factory-bootstrap-423 .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-423 .factory-paddings-editor .factory-side{width:100%;height:100%;position:absolute}.factory-bootstrap-423 .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-423 .factory-paddings-editor .factory-side-center:hover{background-color:#c0cece}.factory-bootstrap-423 .factory-paddings-editor .factory-side-center.factory-active{background-color:#829595}.factory-bootstrap-423 .factory-paddings-editor .factory-side-top{height:30px;top:0;left:0}.factory-bootstrap-423 .factory-paddings-editor .factory-side-right{width:45px;top:0;right:0}.factory-bootstrap-423 .factory-paddings-editor .factory-side-bottom{height:30px;bottom:0;left:0}.factory-bootstrap-423 .factory-paddings-editor .factory-side-left{width:45px;top:0;left:0}.factory-bootstrap-423 .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-423 .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-423 .factory-paddings-editor .factory-visible-value em{font-style:normal}.factory-bootstrap-423 .factory-paddings-editor .factory-side-bottom,.factory-bootstrap-423 .factory-paddings-editor .factory-side-top{text-align:center;line-height:30px}.factory-bootstrap-423 .factory-paddings-editor .factory-side-left,.factory-bootstrap-423 .factory-paddings-editor .factory-side-right{line-height:90px;text-align:center}.factory-bootstrap-423 .factory-paddings-editor .factory-slider-container{font-style:italic}.factory-bootstrap-423 .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.factoryBootstrap423_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-423 .factory-accordion").factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_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
@@ -15,4 +15,4 @@
|
|
15 |
=========================================================
|
16 |
*/
|
17 |
!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");
|
18 |
-
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.
|
15 |
=========================================================
|
16 |
*/
|
17 |
!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");
|
18 |
+
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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_DatetimePickerControl}),function(a){a(function(){a(".factory-bootstrap-423 .factory-datetimepicker").factoryBootstrap423_DatetimePickerControl(),a(".factory-bootstrap-423 .factory-datetimepicker-range-0").factoryBootstrap423_DatetimePickerControl(),a(".factory-bootstrap-423 .factory-datetimepicker-range-1").factoryBootstrap423_DatetimePickerControl({useCurrent:!1}),a(".factory-bootstrap-423 .factory-datetimepicker-range-0").on("dp.change",function(b){a(".factory-bootstrap-423 .factory-datetimepicker-range-1").data("DateTimePicker").minDate(b.date)}),a(".factory-bootstrap-423 .factory-datetimepicker-range-1").on("dp.change",function(b){a(".factory-bootstrap-423 .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.factoryBootstrap423_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.factoryBootstrap423_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-423-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.factoryBootstrap423_modal;a.fn.factoryBootstrap423_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.factoryBootstrap423_modal.Constructor=b,a.fn.factoryBootstrap423_modal.noConflict=function(){return a.fn.factoryBootstrap423_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.factoryBootstrap423_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.attr("checked","checked"),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.removeAttr("checked"),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]&&(console.log(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.attr("checked","checked"),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.removeAttr("checked"),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]&&(console.log(l[m]),a(m).val(l[m]))}}}},this.executeEvents(this.$result)};a.fn.factoryBootstrap423_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.factoryBootstrap423_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-checkbox.factory-buttons-way").factoryBootstrap423_checkboxControl()})}(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-423 .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("factoryBootstrap423.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.factoryBootstrap423_iris(d),this.$picker.off("focus"),a(document).on("click.color.factory",function(){c.$picker.factoryBootstrap423_iris("hide")}),this.$picker.add(this.$background).on("click.color.factory",function(a){a.stopPropagation(),c.$picker.factoryBootstrap423_iris("show")})},togglePicker:function(){this.$element.hasClass("factory-picker-active")?this.hidePicker():this.showPicker()},hidePicker:function(){this.$element.removeClass("factory-picker-active"),this.$picker.factoryBootstrap423_iris("hide")},showPicker:function(){this.$element.addClass("factory-picker-active"),this.$picker.factoryBootstrap423_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("factoryBootstrap423_colorControl",a.factoryBootstrap423.colorControl),a(".factory-bootstrap-423 .factory-color").factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_dropdownAndColors.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-dropdown-and-colors").factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-dropdown").factoryBootstrap423_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("factoryBootstrap423.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("factoryBootstrap423_fontControl",a.factoryBootstrap423.fontControl),a(".factory-bootstrap-423 .factory-font").factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_gradientControl.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-gradient").factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_integerControl.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-integer").factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_listControl.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-list").factoryBootstrap423_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.factoryBootstrap423_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-423 .factory-multiple-textbox-group").factoryBootstrap423_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("factoryBootstrap423.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.factoryBootstrap423_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("factoryBootstrap423_patternControl",a.factoryBootstrap423.patternControl),a(".factory-bootstrap-423 .factory-pattern").factoryBootstrap423_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="factoryBootstrap423_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-423 .factory-more-link").factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_iris("show"),this.$colorPicker.factoryBootstrap423_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
@@ -10,4 +10,4 @@
|
|
10 |
/*! Iris Color Picker - v1.0.4 - 2013-11-18
|
11 |
* https://github.com/Automattic/Iris
|
12 |
* Copyright (c) 2013 Matt Wiebe; Licensed GPLv2 */
|
13 |
-
!function(a,b){function c(){var b,c;j?k="filter":(b=a('<div id="iris-gradtest" />'),c="linear-gradient(top,#fff,#000)",a.each(l,function(a,d){return b.css("backgroundImage",d+c),b.css("backgroundImage").match("gradient")?(k=a,!1):void 0}),k===!1&&(b.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),b.css("backgroundImage").match("gradient")&&(k="webkit")),b.remove())}function d(b,c){return b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),"webkit"===k?f(b,c):l[k]+"linear-gradient("+b+", "+c.join(", ")+")"}function e(b,c){var d,e,f,h,i,j,k,l,m;b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),d="top"===b?0:1,e=a(this),f=c.length-1,h="filter",i=1===d?"left":"top",j=1===d?"right":"bottom",k=1===d?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+k+":100%;"+i+":%start%;"+j+":%end%;"+h+':%filter%;" data-color:"%color%"></div>',m="","static"===e.css("position")&&e.css({position:"relative"}),c=g(c),a.each(c,function(a,b){var e,g,h;return a===f?!1:(e=c[a+1],void(b.stop!==e.stop&&(g=100-parseFloat(e.stop)+"%",b.octoHex=new Color(b.color).toIEOctoHex(),e.octoHex=new Color(e.color).toIEOctoHex(),h="progid:DXImageTransform.Microsoft.Gradient(GradientType="+d+", StartColorStr='"+b.octoHex+"', EndColorStr='"+e.octoHex+"')",m+=l.replace("%start%",b.stop).replace("%end%",g).replace("%filter%",h))))}),e.find(".iris-ie-gradient-shim").remove(),a(m).prependTo(e)}function f(b,c){var d=[];return b="top"===b?"0% 0%,0% 100%,":"0% 100%,100% 100%,",c=g(c),a.each(c,function(a,b){d.push("color-stop("+parseFloat(b.stop)/100+", "+b.color+")")}),"-webkit-gradient(linear,"+b+d.join(",")+")"}function g(b){var c=[],d=[],e=[],f=b.length-1;return a.each(b,function(a,b){var e=b,f=!1,g=b.match(/1?[0-9]{1,2}%$/);g&&(e=b.replace(/\s?1?[0-9]{1,2}%$/,""),f=g.shift()),c.push(e),d.push(f)}),d[0]===!1&&(d[0]="0%"),d[f]===!1&&(d[f]="100%"),d=h(d),a.each(d,function(a){e[a]={color:c[a],stop:d[a]}}),e}function h(b){var c,d,e,f,g=0,i=b.length-1,j=0,k=!1;if(b.length<=2||a.inArray(!1,b)<0)return b;for(;j<b.length-1;)k||b[j]!==!1?k&&b[j]!==!1&&(i=j,j=b.length):(g=j-1,k=!0),j++;for(d=i-g,f=parseInt(b[g].replace("%"),10),c=(parseFloat(b[i].replace("%"))-f)/d,j=g+1,e=1;i>j;)b[j]=f+e*c+"%",e++,j++;return h(b)}var i,j,k,l,m,n,o,p,q;return i='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',o=navigator.userAgent.toLowerCase(),p="Microsoft Internet Explorer"===navigator.appName,q=p?parseFloat(o.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,j=p&&10>q,k=!1,l=["-moz-","-webkit-","-o-","-ms-"],m='.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;top:none;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}',j&&7>=q?(a.fn.iris=a.noop,void(a.support.iris=!1)):(a.support.factoryBootstrap421_iris=!0,a.fn.factoryBootstrap421_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap421_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).factoryBootstrap421_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.factoryBootstrap421_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.factoryBootstrap421_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.factoryBootstrap421_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.factoryBootstrap421_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.factoryBootstrap421_iris",n),void a('<style id="iris-css">'+m+"</style>").appendTo("head"))}(jQuery);
|
10 |
/*! Iris Color Picker - v1.0.4 - 2013-11-18
|
11 |
* https://github.com/Automattic/Iris
|
12 |
* Copyright (c) 2013 Matt Wiebe; Licensed GPLv2 */
|
13 |
+
!function(a,b){function c(){var b,c;j?k="filter":(b=a('<div id="iris-gradtest" />'),c="linear-gradient(top,#fff,#000)",a.each(l,function(a,d){return b.css("backgroundImage",d+c),b.css("backgroundImage").match("gradient")?(k=a,!1):void 0}),k===!1&&(b.css("background","-webkit-gradient(linear,0% 0%,0% 100%,from(#fff),to(#000))"),b.css("backgroundImage").match("gradient")&&(k="webkit")),b.remove())}function d(b,c){return b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),"webkit"===k?f(b,c):l[k]+"linear-gradient("+b+", "+c.join(", ")+")"}function e(b,c){var d,e,f,h,i,j,k,l,m;b="top"===b?"top":"left",c=a.isArray(c)?c:Array.prototype.slice.call(arguments,1),d="top"===b?0:1,e=a(this),f=c.length-1,h="filter",i=1===d?"left":"top",j=1===d?"right":"bottom",k=1===d?"height":"width",l='<div class="iris-ie-gradient-shim" style="position:absolute;'+k+":100%;"+i+":%start%;"+j+":%end%;"+h+':%filter%;" data-color:"%color%"></div>',m="","static"===e.css("position")&&e.css({position:"relative"}),c=g(c),a.each(c,function(a,b){var e,g,h;return a===f?!1:(e=c[a+1],void(b.stop!==e.stop&&(g=100-parseFloat(e.stop)+"%",b.octoHex=new Color(b.color).toIEOctoHex(),e.octoHex=new Color(e.color).toIEOctoHex(),h="progid:DXImageTransform.Microsoft.Gradient(GradientType="+d+", StartColorStr='"+b.octoHex+"', EndColorStr='"+e.octoHex+"')",m+=l.replace("%start%",b.stop).replace("%end%",g).replace("%filter%",h))))}),e.find(".iris-ie-gradient-shim").remove(),a(m).prependTo(e)}function f(b,c){var d=[];return b="top"===b?"0% 0%,0% 100%,":"0% 100%,100% 100%,",c=g(c),a.each(c,function(a,b){d.push("color-stop("+parseFloat(b.stop)/100+", "+b.color+")")}),"-webkit-gradient(linear,"+b+d.join(",")+")"}function g(b){var c=[],d=[],e=[],f=b.length-1;return a.each(b,function(a,b){var e=b,f=!1,g=b.match(/1?[0-9]{1,2}%$/);g&&(e=b.replace(/\s?1?[0-9]{1,2}%$/,""),f=g.shift()),c.push(e),d.push(f)}),d[0]===!1&&(d[0]="0%"),d[f]===!1&&(d[f]="100%"),d=h(d),a.each(d,function(a){e[a]={color:c[a],stop:d[a]}}),e}function h(b){var c,d,e,f,g=0,i=b.length-1,j=0,k=!1;if(b.length<=2||a.inArray(!1,b)<0)return b;for(;j<b.length-1;)k||b[j]!==!1?k&&b[j]!==!1&&(i=j,j=b.length):(g=j-1,k=!0),j++;for(d=i-g,f=parseInt(b[g].replace("%"),10),c=(parseFloat(b[i].replace("%"))-f)/d,j=g+1,e=1;i>j;)b[j]=f+e*c+"%",e++,j++;return h(b)}var i,j,k,l,m,n,o,p,q;return i='<div class="iris-picker"><div class="iris-picker-inner"><div class="iris-square"><a class="iris-square-value" href="#"><span class="iris-square-handle ui-slider-handle"></span></a><div class="iris-square-inner iris-square-horiz"></div><div class="iris-square-inner iris-square-vert"></div></div><div class="iris-slider iris-strip"><div class="iris-slider-offset"></div></div></div></div>',o=navigator.userAgent.toLowerCase(),p="Microsoft Internet Explorer"===navigator.appName,q=p?parseFloat(o.match(/msie ([0-9]{1,}[\.0-9]{0,})/)[1]):0,j=p&&10>q,k=!1,l=["-moz-","-webkit-","-o-","-ms-"],m='.iris-picker{display:block;position:relative}.iris-picker,.iris-picker *{-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input+.iris-picker{margin-top:4px}.iris-error{background-color:#ffafaf}.iris-border{border-radius:3px;border:1px solid #aaa;width:200px;background-color:#fff}.iris-picker-inner{position:absolute;top:0;right:0;left:0;bottom:0}.iris-border .iris-picker-inner{top:10px;right:10px;left:10px;bottom:10px}.iris-picker .iris-square-inner{position:absolute;left:0;right:0;top:0;bottom:0}.iris-picker .iris-square,.iris-picker .iris-slider,.iris-picker .iris-square-inner,.iris-picker .iris-palette{border-radius:3px;box-shadow:inset 0 0 5px rgba(0,0,0,.4);height:100%;width:12.5%;float:left;margin-right:5%}.iris-picker .iris-square{width:76%;margin-right:10%;position:relative}.iris-picker .iris-square-inner{width:auto;margin:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-square-inner,.iris-ie-9 .iris-palette{box-shadow:none;border-radius:0}.iris-ie-9 .iris-square,.iris-ie-9 .iris-slider,.iris-ie-9 .iris-palette{outline:1px solid rgba(0,0,0,.1)}.iris-ie-lt9 .iris-square,.iris-ie-lt9 .iris-slider,.iris-ie-lt9 .iris-square-inner,.iris-ie-lt9 .iris-palette{outline:1px solid #aaa}.iris-ie-lt9 .iris-square .ui-slider-handle{outline:1px solid #aaa;background-color:#fff;-ms-filter:"alpha(Opacity=30)"}.iris-ie-lt9 .iris-square .iris-square-handle{background:0;border:3px solid #fff;-ms-filter:"alpha(Opacity=50)"}.iris-picker .iris-strip{margin-right:0;position:relative}.iris-picker .iris-strip .ui-slider-handle{position:absolute;background:0;margin:0;right:-3px;left:-3px;border:4px solid #aaa;border-width:4px 3px;width:auto;height:6px;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.iris-strip .ui-slider-handle:before{content:" ";position:absolute;left:-2px;right:-2px;top:-3px;bottom:-3px;border:2px solid #fff;border-radius:3px}.iris-picker .iris-slider-offset{position:absolute;top:11px;left:0;right:0;bottom:-3px;width:auto;height:auto;background:transparent;border:0;top:none;border-radius:0}.iris-picker .iris-square-handle{background:transparent;border:5px solid #aaa;border-radius:50%;border-color:rgba(128,128,128,.5);box-shadow:none;width:12px;height:12px;position:absolute;left:-10px;top:-10px;cursor:move;opacity:1;z-index:10}.iris-picker .ui-state-focus .iris-square-handle{opacity:.8}.iris-picker .iris-square-handle:hover{border-color:#999}.iris-picker .iris-square-value:focus .iris-square-handle{box-shadow:0 0 2px rgba(0,0,0,.75);opacity:.8}.iris-picker .iris-square-handle:hover::after{border-color:#fff}.iris-picker .iris-square-handle::after{position:absolute;bottom:-4px;right:-4px;left:-4px;top:-4px;border:3px solid #f9f9f9;border-color:rgba(255,255,255,.8);border-radius:50%;content:" "}.iris-picker .iris-square-value{width:8px;height:8px;position:absolute}.iris-ie-lt9 .iris-square-value,.iris-mozilla .iris-square-value{width:1px;height:1px}.iris-palette-container{position:absolute;bottom:0;left:0;margin:0;padding:0}.iris-border .iris-palette-container{left:10px;bottom:10px}.iris-picker .iris-palette{margin:0;cursor:pointer}',j&&7>=q?(a.fn.iris=a.noop,void(a.support.iris=!1)):(a.support.factoryBootstrap423_iris=!0,a.fn.factoryBootstrap423_gradient=function(){var b=arguments;return this.each(function(){j?e.apply(this,b):a(this).css("backgroundImage",d.apply(this,b))})},a.fn.factoryBootstrap423_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).factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_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.factoryBootstrap423_paddingsEditor.Constructor=b,a(function(){a(".factory-bootstrap-423 .factory-paddings-editor").factoryBootstrap423_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_423_LOADED' ) ) {
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
+
define( 'FACTORY_BOOTSTRAP_423_VERSION', '4.2.3' );
|
27 |
+
define( 'FACTORY_BOOTSTRAP_423_LOADED', true );
|
28 |
|
29 |
if ( ! defined( 'FACTORY_FLAT_ADMIN' ) ) {
|
30 |
define( 'FACTORY_FLAT_ADMIN', true );
|
31 |
}
|
32 |
|
33 |
+
define( 'FACTORY_BOOTSTRAP_423_DIR', dirname( __FILE__ ) );
|
34 |
+
define( 'FACTORY_BOOTSTRAP_423_URL', plugins_url( null, __FILE__ ) );
|
35 |
|
36 |
+
require_once( FACTORY_BOOTSTRAP_423_DIR . '/includes/functions.php' );
|
37 |
|
38 |
/**
|
39 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
40 |
*/
|
41 |
+
add_action( 'wbcr_factory_bootstrap_423_plugin_created', function ( $plugin ) {
|
42 |
+
$manager = new Wbcr_FactoryBootstrap423_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_FactoryBootstrap421_Manager {
|
|
51 |
*
|
52 |
* @since 1.0.0
|
53 |
*/
|
54 |
-
public function __construct(
|
55 |
$this->plugin = $plugin;
|
56 |
|
57 |
add_action( 'admin_enqueue_scripts', [ $this, 'loadAssets' ] );
|
@@ -111,8 +111,8 @@ class Wbcr_FactoryBootstrap421_Manager {
|
|
111 |
*/
|
112 |
public function loadAssets( $hook ) {
|
113 |
|
114 |
-
do_action( '
|
115 |
-
do_action( '
|
116 |
|
117 |
$dependencies = [];
|
118 |
if ( ! empty( $this->scripts ) ) {
|
@@ -142,8 +142,8 @@ class Wbcr_FactoryBootstrap421_Manager {
|
|
142 |
$color_name = get_user_meta( $user_id, 'admin_color', true );
|
143 |
|
144 |
if ( $color_name !== 'fresh' ) {
|
145 |
-
if ( file_exists(
|
146 |
-
wp_enqueue_style( 'wbcr-factory-bootstrap-
|
147 |
}
|
148 |
}
|
149 |
|
@@ -178,10 +178,10 @@ class Wbcr_FactoryBootstrap421_Manager {
|
|
178 |
if( !window.factory ) {
|
179 |
window.factory = {};
|
180 |
}
|
181 |
-
if( !window.factory.
|
182 |
-
window.factory.
|
183 |
}
|
184 |
-
window.factory.
|
185 |
primaryDark: '<?php echo $primary_dark ?>',
|
186 |
primaryLight: '<?php echo $primary_light ?>'
|
187 |
};
|
@@ -206,8 +206,8 @@ class Wbcr_FactoryBootstrap421_Manager {
|
|
206 |
$cache_enable = apply_filters( 'wbcr/factory/bootstrap/cache_enable', true );
|
207 |
|
208 |
$cache_id = md5( implode( ',', $this->scripts ) . $type . $this->plugin->getPluginVersion() );
|
209 |
-
$cache_dir_path =
|
210 |
-
$cache_dir_url =
|
211 |
|
212 |
$cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
|
213 |
$cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
|
@@ -234,7 +234,7 @@ class Wbcr_FactoryBootstrap421_Manager {
|
|
234 |
foreach ( $sripts as $script_to_load ) {
|
235 |
$script_to_load = sanitize_text_field( $script_to_load );
|
236 |
if ( $cache_enable && $cache_dir_exists ) {
|
237 |
-
$fname =
|
238 |
if ( file_exists( $fname ) ) {
|
239 |
$f = @fopen( $fname, 'r' );
|
240 |
$concat_files[] = @fread( $f, filesize( $fname ) );
|
@@ -242,9 +242,9 @@ class Wbcr_FactoryBootstrap421_Manager {
|
|
242 |
}
|
243 |
} else {
|
244 |
if ( $type == 'js' ) {
|
245 |
-
wp_enqueue_script( md5( $script_to_load ),
|
246 |
} else {
|
247 |
-
wp_enqueue_style( md5( $script_to_load ),
|
248 |
}
|
249 |
$is_first = false;
|
250 |
}
|
20 |
*
|
21 |
* @since 3.2.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryBootstrap423_Manager {
|
24 |
|
25 |
/**
|
26 |
* A plugin for which the manager was created.
|
27 |
*
|
28 |
* @since 3.2.0
|
29 |
+
* @var Wbcr_Factory422_Plugin
|
30 |
*/
|
31 |
public $plugin;
|
32 |
|
51 |
*
|
52 |
* @since 1.0.0
|
53 |
*/
|
54 |
+
public function __construct( Wbcr_Factory422_Plugin $plugin ) {
|
55 |
$this->plugin = $plugin;
|
56 |
|
57 |
add_action( 'admin_enqueue_scripts', [ $this, 'loadAssets' ] );
|
111 |
*/
|
112 |
public function loadAssets( $hook ) {
|
113 |
|
114 |
+
do_action( 'wbcr_factory_422_bootstrap_enqueue_scripts', $hook );
|
115 |
+
do_action( 'wbcr_factory_422_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook );
|
116 |
|
117 |
$dependencies = [];
|
118 |
if ( ! empty( $this->scripts ) ) {
|
142 |
$color_name = get_user_meta( $user_id, 'admin_color', true );
|
143 |
|
144 |
if ( $color_name !== 'fresh' ) {
|
145 |
+
if ( file_exists( FACTORY_BOOTSTRAP_423_DIR . '/assets/flat/css/bootstrap.' . $color_name . '.css' ) ) {
|
146 |
+
wp_enqueue_style( 'wbcr-factory-bootstrap-423-colors', FACTORY_BOOTSTRAP_423_URL . '/assets/flat/css/bootstrap.' . $color_name . '.css' );
|
147 |
}
|
148 |
}
|
149 |
|
178 |
if( !window.factory ) {
|
179 |
window.factory = {};
|
180 |
}
|
181 |
+
if( !window.factory.factoryBootstrap423 ) {
|
182 |
+
window.factory.factoryBootstrap423 = {};
|
183 |
}
|
184 |
+
window.factory.factoryBootstrap423.colors = {
|
185 |
primaryDark: '<?php echo $primary_dark ?>',
|
186 |
primaryLight: '<?php echo $primary_light ?>'
|
187 |
};
|
206 |
$cache_enable = apply_filters( 'wbcr/factory/bootstrap/cache_enable', true );
|
207 |
|
208 |
$cache_id = md5( implode( ',', $this->scripts ) . $type . $this->plugin->getPluginVersion() );
|
209 |
+
$cache_dir_path = FACTORY_BOOTSTRAP_423_DIR . '/assets/cache/';
|
210 |
+
$cache_dir_url = FACTORY_BOOTSTRAP_423_URL . '/assets/cache/';
|
211 |
|
212 |
$cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
|
213 |
$cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
|
234 |
foreach ( $sripts as $script_to_load ) {
|
235 |
$script_to_load = sanitize_text_field( $script_to_load );
|
236 |
if ( $cache_enable && $cache_dir_exists ) {
|
237 |
+
$fname = FACTORY_BOOTSTRAP_423_DIR . "/assets/$type-min/$script_to_load.min." . $type;
|
238 |
if ( file_exists( $fname ) ) {
|
239 |
$f = @fopen( $fname, 'r' );
|
240 |
$concat_files[] = @fread( $f, filesize( $fname ) );
|
242 |
}
|
243 |
} else {
|
244 |
if ( $type == 'js' ) {
|
245 |
+
wp_enqueue_script( md5( $script_to_load ), FACTORY_BOOTSTRAP_423_URL . "/assets/$type-min/$script_to_load.min." . $type, $is_first ? $dependencies : false, $this->plugin->getPluginVersion() );
|
246 |
} else {
|
247 |
+
wp_enqueue_style( md5( $script_to_load ), FACTORY_BOOTSTRAP_423_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion() );
|
248 |
}
|
249 |
$is_first = false;
|
250 |
}
|
libs/factory/core/boot.php
CHANGED
@@ -14,49 +14,49 @@ 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 |
|
58 |
-
require_once(
|
59 |
|
60 |
-
require_once(
|
61 |
-
require_once(
|
62 |
#endcomp
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if ( defined( 'FACTORY_422_LOADED' ) ) {
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
define( 'FACTORY_422_LOADED', true );
|
22 |
|
23 |
+
define( 'FACTORY_422_VERSION', '4.2.2' );
|
24 |
|
25 |
+
define( 'FACTORY_422_DIR', dirname( __FILE__ ) );
|
26 |
+
define( 'FACTORY_422_URL', plugins_url( null, __FILE__ ) );
|
27 |
|
28 |
+
load_plugin_textdomain( 'wbcr_factory_422', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
|
29 |
|
30 |
#comp merge
|
31 |
+
require_once( FACTORY_422_DIR . '/includes/functions.php' );
|
32 |
|
33 |
+
require_once( FACTORY_422_DIR . '/includes/entities/class-factory-paths.php' );
|
34 |
+
require_once( FACTORY_422_DIR . '/includes/entities/class-factory-support.php' );
|
35 |
|
36 |
+
require_once( FACTORY_422_DIR . '/includes/class-factory-requests.php' );
|
37 |
+
require_once( FACTORY_422_DIR . '/includes/class-factory-options.php' );
|
38 |
+
require_once( FACTORY_422_DIR . '/includes/class-factory-plugin-base.php' );
|
39 |
+
require_once( FACTORY_422_DIR . '/includes/class-factory-migrations.php' );
|
40 |
+
require_once( FACTORY_422_DIR . '/includes/class-factory-notices.php' );
|
41 |
|
42 |
// ASSETS
|
43 |
+
require_once( FACTORY_422_DIR . '/includes/assets-managment/class-factory-assets-list.php' );
|
44 |
+
require_once( FACTORY_422_DIR . '/includes/assets-managment/class-factory-script-list.php' );
|
45 |
+
require_once( FACTORY_422_DIR . '/includes/assets-managment/class-factory-style-list.php' );
|
46 |
|
47 |
// PREMIUM
|
48 |
+
require_once( FACTORY_422_DIR . '/includes/premium/class-factory-license-interface.php' );
|
49 |
+
require_once( FACTORY_422_DIR . '/includes/premium/class-factory-provider-abstract.php' );
|
50 |
+
require_once( FACTORY_422_DIR . '/includes/premium/class-factory-manager.php' );
|
51 |
|
52 |
// UPDATES
|
53 |
+
require_once( FACTORY_422_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php' );
|
54 |
+
require_once( FACTORY_422_DIR . '/includes/updates/repositories/class-factory-wordpress.php' );
|
55 |
+
require_once( FACTORY_422_DIR . '/includes/updates/class-factory-upgrader.php' );
|
56 |
+
require_once( FACTORY_422_DIR . '/includes/updates/class-factory-premium-upgrader.php' );
|
57 |
|
58 |
+
require_once( FACTORY_422_DIR . '/includes/class-factory-plugin-abstract.php' );
|
59 |
|
60 |
+
require_once( FACTORY_422_DIR . '/includes/activation/class-factory-activator.php' );
|
61 |
+
require_once( FACTORY_422_DIR . '/includes/activation/class-factory-update.php' );
|
62 |
#endcomp
|
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_Factory422_Activator {
|
23 |
|
24 |
/**
|
25 |
* Curent plugin.
|
26 |
*
|
27 |
+
* @var Wbcr_Factory422_Plugin
|
28 |
*/
|
29 |
public $plugin;
|
30 |
|
31 |
+
public function __construct( Wbcr_Factory422_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_Factory422_Update {
|
24 |
|
25 |
/**
|
26 |
* Current plugin
|
27 |
*
|
28 |
+
* @var Wbcr_Factory422_Plugin
|
29 |
*/
|
30 |
var $plugin;
|
31 |
|
32 |
+
public function __construct( Wbcr_Factory422_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_Factory420_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_Factory422_AssetsList {
|
23 |
|
24 |
protected $all = [];
|
25 |
public $header_place = [];
|
29 |
protected $default_place;
|
30 |
|
31 |
/**
|
32 |
+
* @var Wbcr_Factory422_Plugin
|
33 |
*/
|
34 |
protected $plugin;
|
35 |
|
36 |
/**
|
37 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
38 |
* @param bool $defaultIsFooter
|
39 |
*/
|
40 |
+
public function __construct( Wbcr_Factory422_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_Factory420_ScriptList extends Wbcr_Factory420_AssetsList {
|
|
149 |
* @param string $varname
|
150 |
* @param string $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_Factory422_ScriptList extends Wbcr_Factory422_AssetsList {
|
24 |
|
25 |
public $localize_data = [];
|
26 |
public $use_ajax = false;
|
149 |
* @param string $varname
|
150 |
* @param string $data
|
151 |
*
|
152 |
+
* @return Wbcr_Factory422_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_Factory422_StyleList extends Wbcr_Factory422_AssetsList {
|
24 |
|
25 |
/**
|
26 |
* Adds new items to the collection (default place).
|
libs/factory/core/includes/class-check-compatibility.php
CHANGED
@@ -82,12 +82,12 @@ if ( ! class_exists( 'Wbcr_Factory_Compatibility' ) ) {
|
|
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 ) {
|
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_422' ), $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_422' ), $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();
|
@@ -52,8 +52,8 @@ class Migrations {
|
|
52 |
add_action( "admin_init", [ $this, "check_migrations" ] );
|
53 |
|
54 |
add_action( "wbcr/factory/plugin_{$plugin_name}_activated", [ $this, 'activation_hook' ] );
|
55 |
-
add_action( "
|
56 |
-
add_action( "
|
57 |
}
|
58 |
}
|
59 |
|
@@ -129,14 +129,14 @@ class Migrations {
|
|
129 |
$fix_migration_error_url = add_query_arg( 'wbcr_factory_fix_migration_error', 1 );
|
130 |
|
131 |
$notice_text = $migration_error_text;
|
132 |
-
$notice_text .= "<br><br><a href='{$fix_migration_error_url}' class='button button-default'>" . __( 'I fixed, confirm migration', '
|
133 |
|
134 |
$notices[] = [
|
135 |
'id' => 'migration_debug_bar',
|
136 |
'type' => 'error',
|
137 |
'dismissible' => false,
|
138 |
'dismiss_expires' => 0,
|
139 |
-
'text' => '<p><b>' . $this->plugin->getPluginTitle() . ' ' . __( 'migration error', '
|
140 |
];
|
141 |
|
142 |
return $notices;
|
@@ -162,19 +162,19 @@ class Migrations {
|
|
162 |
|
163 |
$migrate_url = add_query_arg( 'wbcr_factory_test_migration', 1 );
|
164 |
|
165 |
-
$notice_text = __( "Plugin activated:", "
|
166 |
|
167 |
-
$notice_text .= __( "Old plugin version (debug):", "
|
168 |
-
$notice_text .= __( "Current plugin version:", "
|
169 |
-
$notice_text .= __( "Need migration:", "
|
170 |
-
$notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "
|
171 |
|
172 |
$notices[] = [
|
173 |
'id' => 'migration_debug_bar',
|
174 |
'type' => 'warning',
|
175 |
'dismissible' => false,
|
176 |
'dismiss_expires' => 0,
|
177 |
-
'text' => '<p><b style="color:red;">' . $this->plugin->getPluginTitle() . ' ' . __( 'migrations DEBUG bar', '
|
178 |
];
|
179 |
|
180 |
return $notices;
|
@@ -505,7 +505,7 @@ class Migrations {
|
|
505 |
$classes = [];
|
506 |
|
507 |
if ( ! function_exists( 'token_get_all' ) ) {
|
508 |
-
throw new Exception( __( 'There is no PHP Tokenizer extension installed on your server, you cannot use the token_get_all function.', '
|
509 |
}
|
510 |
|
511 |
$tokens = token_get_all( $phpCode );
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_422;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory422_Plugin;
|
7 |
|
8 |
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit;
|
35 |
/**
|
36 |
* Migrations constructor.
|
37 |
*
|
38 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
39 |
*
|
40 |
* @throws Exception
|
41 |
*/
|
42 |
+
public function __construct( Wbcr_Factory422_Plugin $plugin ) {
|
43 |
|
44 |
$this->plugin = $plugin;
|
45 |
$plugin_name = $plugin->getPluginName();
|
52 |
add_action( "admin_init", [ $this, "check_migrations" ] );
|
53 |
|
54 |
add_action( "wbcr/factory/plugin_{$plugin_name}_activated", [ $this, 'activation_hook' ] );
|
55 |
+
add_action( "wbcr/factory/admin_notices", [ $this, "debug_bar_notice" ], 10, 2 );
|
56 |
+
add_action( "wbcr/factory/admin_notices", [ $this, "migration_error_notice" ], 10, 2 );
|
57 |
}
|
58 |
}
|
59 |
|
129 |
$fix_migration_error_url = add_query_arg( 'wbcr_factory_fix_migration_error', 1 );
|
130 |
|
131 |
$notice_text = $migration_error_text;
|
132 |
+
$notice_text .= "<br><br><a href='{$fix_migration_error_url}' class='button button-default'>" . __( 'I fixed, confirm migration', 'wbcr_factory_422' ) . "</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_422' ) . '</b><br>' . $notice_text . '</p>'
|
140 |
];
|
141 |
|
142 |
return $notices;
|
162 |
|
163 |
$migrate_url = add_query_arg( 'wbcr_factory_test_migration', 1 );
|
164 |
|
165 |
+
$notice_text = __( "Plugin activated:", "wbcr_factory_422" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
|
166 |
|
167 |
+
$notice_text .= __( "Old plugin version (debug):", "wbcr_factory_422" ) . ' ' . $this->get_old_plugin_version() . "<br>";
|
168 |
+
$notice_text .= __( "Current plugin version:", "wbcr_factory_422" ) . ' ' . $this->get_current_plugin_version() . "<br>";
|
169 |
+
$notice_text .= __( "Need migration:", "wbcr_factory_422" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
|
170 |
+
$notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_422" ) . "</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_422' ) . '</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_422' ) );
|
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 |
//default notices
|
@@ -72,7 +72,7 @@ class Notices {
|
|
72 |
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
73 |
add_action( 'wp_ajax_' . $this->plugin->getPluginName() . '_dismiss_notice', [
|
74 |
$this,
|
75 |
-
'
|
76 |
] );
|
77 |
}
|
78 |
}
|
@@ -83,7 +83,18 @@ class Notices {
|
|
83 |
* хотя бы одно, соответствует условиям в параметре $notice['where'], то метод печает вспомогательные скрипты и уведомления.
|
84 |
*/
|
85 |
public function currentScreenAction() {
|
86 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
|
88 |
if ( count( $this->notices ) == 0 ) {
|
89 |
return;
|
@@ -99,22 +110,22 @@ class Notices {
|
|
99 |
|
100 |
$where = ! isset( $notice['where'] ) || empty( $notice['where'] ) ? $this->default_where : $notice['where'];
|
101 |
|
102 |
-
if ( in_array( $screen->base, $where ) && ! $this->
|
103 |
$has_notices = true;
|
104 |
break;
|
105 |
};
|
106 |
}
|
107 |
|
108 |
if ( $has_notices ) {
|
109 |
-
add_action( 'admin_footer', [ $this, '
|
110 |
|
111 |
if ( $this->plugin->isNetworkActive() ) {
|
112 |
if ( current_user_can( 'manage_network' ) ) {
|
113 |
-
add_action( 'network_admin_notices', [ $this, '
|
114 |
-
add_action( 'admin_notices', [ $this, '
|
115 |
}
|
116 |
} else {
|
117 |
-
add_action( 'admin_notices', [ $this, '
|
118 |
}
|
119 |
}
|
120 |
}
|
@@ -124,7 +135,7 @@ class Notices {
|
|
124 |
* Уведомления показываются только на определенных страницах через параметр $notice['where'],
|
125 |
* если уведомление ранее было скрыто или не соотвествует правилам $notice['where'], оно не будет показано!
|
126 |
*/
|
127 |
-
public function
|
128 |
if ( count( $this->notices ) == 0 ) {
|
129 |
return;
|
130 |
}
|
@@ -143,8 +154,8 @@ class Notices {
|
|
143 |
|
144 |
$where = ! isset( $notice['where'] ) || empty( $notice['where'] ) ? $this->default_where : $notice['where'];
|
145 |
|
146 |
-
if ( in_array( $screen->base, $where ) && ! $this->
|
147 |
-
$this->
|
148 |
};
|
149 |
}
|
150 |
}
|
@@ -162,37 +173,34 @@ class Notices {
|
|
162 |
* Пример time() + 3600 (1ч), уведомление будет скрыто на 1 час.
|
163 |
* $data['classes'] - Произвольный классы для контейнера уведомления.
|
164 |
*/
|
165 |
-
public function
|
166 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
return;
|
168 |
}
|
169 |
|
170 |
-
if ( ! isset( $data['text'] ) || empty( $data['text'] ) ) {
|
171 |
-
return;
|
172 |
-
}
|
173 |
-
|
174 |
-
$type = ! isset( $data['type'] ) || empty( $data['type'] ) ? 'error' : $data['type'];
|
175 |
-
|
176 |
-
$dismissible = ! isset( $data['dismissible'] ) || empty( $data['dismissible'] ) ? false : $data['dismissible'];
|
177 |
-
|
178 |
-
$dismiss_expires = ! isset( $data['dismiss_expires'] ) || empty( $data['dismiss_expires'] ) ? 0 : $data['dismiss_expires'];
|
179 |
-
|
180 |
-
$classes = ! isset( $data['classes'] ) || empty( $data['classes'] ) ? [] : $data['classes'];
|
181 |
-
|
182 |
$plugin_name = str_replace( '_', '-', $this->plugin->getPluginName() );
|
183 |
|
184 |
$classes = array_merge( [
|
185 |
'notice',
|
186 |
-
'notice-' . $type,
|
187 |
$plugin_name . '-factory-notice'
|
188 |
-
], $classes );
|
189 |
|
190 |
-
if ( $dismissible ) {
|
191 |
$classes[] = 'is-dismissible';
|
192 |
$classes[] = $plugin_name . '-factory-notice-dismiss';
|
193 |
}
|
194 |
?>
|
195 |
-
<div data-name="wbcr_factory_notice_
|
196 |
<?= $data['text'] ?>
|
197 |
</div>
|
198 |
<?php
|
@@ -202,19 +210,22 @@ class Notices {
|
|
202 |
* Когда пользователь нажимает кнопку закрыть уведомление,
|
203 |
* отправляется ajax запрос с вызовом текущего метода
|
204 |
*/
|
205 |
-
public function
|
|
|
|
|
|
|
|
|
206 |
check_admin_referer( $this->plugin->getPluginName() . '_factory_dismiss_notice', 'nonce' );
|
207 |
|
208 |
// Имя уведомления (идентификатор)
|
209 |
-
$name =
|
210 |
|
211 |
// Время в Unix timestamp, по истечению, которого уведомление снова будет показано
|
212 |
// Если передан 0, то уведомление будет скрыто навсегда
|
213 |
-
$expires =
|
214 |
|
215 |
if ( empty( $name ) ) {
|
216 |
-
|
217 |
-
exit;
|
218 |
}
|
219 |
|
220 |
$notices = $this->plugin->getPopulateOption( "factory_dismissed_notices", [] );
|
@@ -231,8 +242,7 @@ class Notices {
|
|
231 |
|
232 |
$this->plugin->updatePopulateOption( 'factory_dismissed_notices', $notices );
|
233 |
|
234 |
-
|
235 |
-
exit;
|
236 |
}
|
237 |
|
238 |
/**
|
@@ -240,7 +250,7 @@ class Notices {
|
|
240 |
* Печает в подвале страницы код, для взаимодействия с сервером через ajax,
|
241 |
* код используется при нажатии на кнопку закрыть уведомление. *
|
242 |
*/
|
243 |
-
public function
|
244 |
$plugin_name = str_replace( '_', '-', $this->plugin->getPluginName() );
|
245 |
|
246 |
?>
|
@@ -269,7 +279,7 @@ class Notices {
|
|
269 |
*
|
270 |
* @return bool
|
271 |
*/
|
272 |
-
protected function
|
273 |
if ( ! empty( $this->dissmised_notices ) && isset( $this->dissmised_notices[ 'wbcr_factory_notice_' . $notice_id ] ) ) {
|
274 |
$expires = (int) $this->dissmised_notices[ 'wbcr_factory_notice_' . $notice_id ];
|
275 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_422;
|
4 |
|
5 |
+
use Wbcr_Factory422_Plugin;
|
6 |
|
7 |
// Exit if accessed directly
|
8 |
if ( ! defined( 'ABSPATH' ) ) {
|
27 |
class Notices {
|
28 |
|
29 |
/**
|
30 |
+
* @var Wbcr_Factory422_Plugin
|
31 |
*/
|
32 |
protected $plugin;
|
33 |
/**
|
58 |
/**
|
59 |
* Инициализируем уведомлений сразу после загрузки модуля уведомлений
|
60 |
*
|
61 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
62 |
*/
|
63 |
public function __construct( $plugin ) {
|
64 |
//default notices
|
72 |
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
|
73 |
add_action( 'wp_ajax_' . $this->plugin->getPluginName() . '_dismiss_notice', [
|
74 |
$this,
|
75 |
+
'dismiss_notice'
|
76 |
] );
|
77 |
}
|
78 |
}
|
83 |
* хотя бы одно, соответствует условиям в параметре $notice['where'], то метод печает вспомогательные скрипты и уведомления.
|
84 |
*/
|
85 |
public function currentScreenAction() {
|
86 |
+
/**
|
87 |
+
* @since 2.1.2 - является устаревшим
|
88 |
+
*/
|
89 |
+
$this->notices = wbcr_factory_422_apply_filters_deprecated( 'wbcr_factory_notices_000_list', [
|
90 |
+
$this->notices,
|
91 |
+
$this->plugin->getPluginName(),
|
92 |
+
], '2.1.2', 'wbcr/factory/admin_notices' );
|
93 |
+
|
94 |
+
/**
|
95 |
+
* @since 2.1.2 - Добавлен, модуль factory_notices_000 был удален. Поэтому в этому хуке мы заменили префикс на factory_422
|
96 |
+
*/
|
97 |
+
$this->notices = apply_filters( 'wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName() );
|
98 |
|
99 |
if ( count( $this->notices ) == 0 ) {
|
100 |
return;
|
110 |
|
111 |
$where = ! isset( $notice['where'] ) || empty( $notice['where'] ) ? $this->default_where : $notice['where'];
|
112 |
|
113 |
+
if ( in_array( $screen->base, $where ) && ! $this->is_dissmissed( $notice['id'] ) ) {
|
114 |
$has_notices = true;
|
115 |
break;
|
116 |
};
|
117 |
}
|
118 |
|
119 |
if ( $has_notices ) {
|
120 |
+
add_action( 'admin_footer', [ $this, 'print_js_code' ] );
|
121 |
|
122 |
if ( $this->plugin->isNetworkActive() ) {
|
123 |
if ( current_user_can( 'manage_network' ) ) {
|
124 |
+
add_action( 'network_admin_notices', [ $this, 'show_notices' ] );
|
125 |
+
add_action( 'admin_notices', [ $this, 'show_notices' ] );
|
126 |
}
|
127 |
} else {
|
128 |
+
add_action( 'admin_notices', [ $this, 'show_notices' ] );
|
129 |
}
|
130 |
}
|
131 |
}
|
135 |
* Уведомления показываются только на определенных страницах через параметр $notice['where'],
|
136 |
* если уведомление ранее было скрыто или не соотвествует правилам $notice['where'], оно не будет показано!
|
137 |
*/
|
138 |
+
public function show_notices() {
|
139 |
if ( count( $this->notices ) == 0 ) {
|
140 |
return;
|
141 |
}
|
154 |
|
155 |
$where = ! isset( $notice['where'] ) || empty( $notice['where'] ) ? $this->default_where : $notice['where'];
|
156 |
|
157 |
+
if ( in_array( $screen->base, $where ) && ! $this->is_dissmissed( $notice['id'] ) ) {
|
158 |
+
$this->show_notice( $notice );
|
159 |
};
|
160 |
}
|
161 |
}
|
173 |
* Пример time() + 3600 (1ч), уведомление будет скрыто на 1 час.
|
174 |
* $data['classes'] - Произвольный классы для контейнера уведомления.
|
175 |
*/
|
176 |
+
public function show_notice( $data ) {
|
177 |
+
$settings = wp_parse_args( $data, [
|
178 |
+
'id' => null,
|
179 |
+
'text' => null,
|
180 |
+
'type' => 'error',
|
181 |
+
'dismissible' => false,
|
182 |
+
'dismiss_expires' => 0,
|
183 |
+
'classes' => []
|
184 |
+
] );
|
185 |
+
|
186 |
+
if ( empty( $settings['id'] ) || empty( $settings['text'] ) ) {
|
187 |
return;
|
188 |
}
|
189 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
190 |
$plugin_name = str_replace( '_', '-', $this->plugin->getPluginName() );
|
191 |
|
192 |
$classes = array_merge( [
|
193 |
'notice',
|
194 |
+
'notice-' . $settings['type'],
|
195 |
$plugin_name . '-factory-notice'
|
196 |
+
], $settings['classes'] );
|
197 |
|
198 |
+
if ( $settings['dismissible'] ) {
|
199 |
$classes[] = 'is-dismissible';
|
200 |
$classes[] = $plugin_name . '-factory-notice-dismiss';
|
201 |
}
|
202 |
?>
|
203 |
+
<div data-name="wbcr_factory_notice_<?php echo esc_attr( $data['id'] ) ?>" data-expires="<?= esc_attr( $settings['dismiss_expires'] ) ?>" data-nonce="<?php echo wp_create_nonce( $this->plugin->getPluginName() . '_factory_dismiss_notice' ); ?>" class="<?php echo esc_attr( implode( ' ', $classes ) ) ?>">
|
204 |
<?= $data['text'] ?>
|
205 |
</div>
|
206 |
<?php
|
210 |
* Когда пользователь нажимает кнопку закрыть уведомление,
|
211 |
* отправляется ajax запрос с вызовом текущего метода
|
212 |
*/
|
213 |
+
public function dismiss_notice() {
|
214 |
+
if ( ! current_user_can( 'activate_plugins' ) || ! current_user_can( 'edit_plugins' ) || ! current_user_can( 'install_plugins' ) ) {
|
215 |
+
wp_die( - 1, 403 );
|
216 |
+
}
|
217 |
+
|
218 |
check_admin_referer( $this->plugin->getPluginName() . '_factory_dismiss_notice', 'nonce' );
|
219 |
|
220 |
// Имя уведомления (идентификатор)
|
221 |
+
$name = $this->plugin->request->post( 'name', null, true );
|
222 |
|
223 |
// Время в Unix timestamp, по истечению, которого уведомление снова будет показано
|
224 |
// Если передан 0, то уведомление будет скрыто навсегда
|
225 |
+
$expires = $this->plugin->request->post( 'expires', 0, 'intval' );
|
226 |
|
227 |
if ( empty( $name ) ) {
|
228 |
+
wp_send_json_error( [ 'error_message' => 'You must pass the notification "Name"! Action was rejected.' ] );
|
|
|
229 |
}
|
230 |
|
231 |
$notices = $this->plugin->getPopulateOption( "factory_dismissed_notices", [] );
|
242 |
|
243 |
$this->plugin->updatePopulateOption( 'factory_dismissed_notices', $notices );
|
244 |
|
245 |
+
wp_send_json_success();
|
|
|
246 |
}
|
247 |
|
248 |
/**
|
250 |
* Печает в подвале страницы код, для взаимодействия с сервером через ajax,
|
251 |
* код используется при нажатии на кнопку закрыть уведомление. *
|
252 |
*/
|
253 |
+
public function print_js_code() {
|
254 |
$plugin_name = str_replace( '_', '-', $this->plugin->getPluginName() );
|
255 |
|
256 |
?>
|
279 |
*
|
280 |
* @return bool
|
281 |
*/
|
282 |
+
protected function is_dissmissed( $notice_id ) {
|
283 |
if ( ! empty( $this->dissmised_notices ) && isset( $this->dissmised_notices[ 'wbcr_factory_notice_' . $notice_id ] ) ) {
|
284 |
$expires = (int) $this->dissmised_notices[ 'wbcr_factory_notice_' . $notice_id ];
|
285 |
|
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_422;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
10 |
}
|
11 |
|
12 |
/**
|
13 |
+
* Трейт используется для расширения базового класса плагина Wbcr_Factory422_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 |
|
@@ -75,16 +75,18 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
75 |
* Ассоциативный массив со списком аддонов плагина. Аддоны плагина являются частью одного проекта,
|
76 |
* но не как отдельный плагин.
|
77 |
*
|
78 |
-
* @
|
|
|
|
|
79 |
*/
|
80 |
-
private $
|
81 |
|
82 |
/**
|
83 |
* The Adverts Manager class
|
84 |
*
|
85 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
86 |
* @since 4.1.9
|
87 |
-
* @var WBCR\
|
88 |
*/
|
89 |
private $adverts;
|
90 |
|
@@ -103,8 +105,8 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
103 |
|
104 |
parent::__construct( $plugin_path, $data );
|
105 |
|
106 |
-
$this->request = new
|
107 |
-
//$this->route = new
|
108 |
|
109 |
// INIT PLUGIN FRAMEWORK MODULES
|
110 |
// Framework modules should always be loaded first,
|
@@ -127,27 +129,27 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
127 |
|
128 |
// init actions
|
129 |
$this->register_plugin_hooks();
|
130 |
-
}
|
131 |
|
132 |
-
|
133 |
-
|
|
|
134 |
|
135 |
/**
|
136 |
* Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
|
137 |
* скриптов, стилей) фреймворка.
|
138 |
*
|
139 |
-
* @param
|
140 |
*/
|
141 |
-
public function setBootstap(
|
142 |
$this->bootstrap = $bootstrap;
|
143 |
}
|
144 |
|
145 |
/**
|
146 |
* Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
|
147 |
*
|
148 |
-
* @param
|
149 |
*/
|
150 |
-
public function setForms(
|
151 |
$this->forms = $forms;
|
152 |
}
|
153 |
|
@@ -175,8 +177,8 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
175 |
* @param string $class_name Имя класса провайдера
|
176 |
*/
|
177 |
public function set_license_provider( $name, $class_name ) {
|
178 |
-
if ( ! isset( WBCR\
|
179 |
-
WBCR\
|
180 |
}
|
181 |
}
|
182 |
|
@@ -192,8 +194,8 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
192 |
* @param string $class_name Имя класса репозитория
|
193 |
*/
|
194 |
public function set_update_repository( $name, $class_name ) {
|
195 |
-
if ( ! isset( WBCR\
|
196 |
-
WBCR\
|
197 |
}
|
198 |
}
|
199 |
|
@@ -205,7 +207,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
205 |
*
|
206 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
207 |
* @since 1.1
|
208 |
-
* @return \WBCR\
|
209 |
*/
|
210 |
public function get_adverts_manager() {
|
211 |
return $this->adverts;
|
@@ -234,10 +236,18 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
234 |
}
|
235 |
}
|
236 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
237 |
/**
|
238 |
* Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
|
239 |
* фреймворка pages. Разработчик создает собственный класс, унаследованный от
|
240 |
-
*
|
241 |
* Метод выполняет подключение класса страницы и регистрирует его в модуле фреймворка
|
242 |
* pages.
|
243 |
*
|
@@ -247,7 +257,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
247 |
* @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/222887949 - документация по созданию страниц
|
248 |
*
|
249 |
* @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Page_Name.
|
250 |
-
* Регистрируемый класс должен быть унаследован от класса
|
251 |
* @param string $file_path Абсолютный путь к файлу с классом страницы.
|
252 |
*
|
253 |
* @throws Exception
|
@@ -268,11 +278,11 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
268 |
throw new Exception( 'A class with this name {' . $class_name . '} does not exist.' );
|
269 |
}
|
270 |
|
271 |
-
if ( ! class_exists( '
|
272 |
-
throw new Exception( 'The
|
273 |
}
|
274 |
|
275 |
-
|
276 |
}
|
277 |
|
278 |
/**
|
@@ -319,16 +329,16 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
319 |
/**
|
320 |
* @since 4.1.1 - change hook name
|
321 |
*/
|
322 |
-
if ( apply_filters( "wbcr/
|
323 |
return;
|
324 |
}
|
325 |
|
326 |
/**
|
327 |
-
*
|
328 |
*
|
329 |
* @since 4.1.1 - deprecated
|
330 |
*/
|
331 |
-
|
332 |
$this
|
333 |
], '4.1.1', "wbcr/factory/plugin_activation" );
|
334 |
|
@@ -337,7 +347,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
337 |
*
|
338 |
* @since 4.1.2 - deprecated
|
339 |
*/
|
340 |
-
|
341 |
$this
|
342 |
], '4.1.2', "wbcr/factory/before_plugin_activation" );
|
343 |
|
@@ -353,16 +363,16 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
353 |
*
|
354 |
* @since 4.1.2 - deprecated
|
355 |
*/
|
356 |
-
|
357 |
$this
|
358 |
], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_activation" );
|
359 |
|
360 |
/**
|
361 |
-
*
|
362 |
*
|
363 |
* @since 4.1.1 - deprecated
|
364 |
*/
|
365 |
-
|
366 |
$this
|
367 |
], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_activation" );
|
368 |
|
@@ -402,16 +412,16 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
402 |
/**
|
403 |
* @since 4.1.1 - change hook name
|
404 |
*/
|
405 |
-
if ( apply_filters( "wbcr/
|
406 |
return;
|
407 |
}
|
408 |
|
409 |
/**
|
410 |
-
*
|
411 |
*
|
412 |
* @since 4.1.1 - deprecated
|
413 |
*/
|
414 |
-
|
415 |
$this
|
416 |
], '4.1.1', "wbcr/factory/plugin_deactivation" );
|
417 |
|
@@ -420,7 +430,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
420 |
*
|
421 |
* @since 4.1.2 - deprecated
|
422 |
*/
|
423 |
-
|
424 |
$this
|
425 |
], '4.1.2', "wbcr/factory/before_plugin_deactivation" );
|
426 |
|
@@ -432,11 +442,11 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
432 |
do_action( 'wbcr/factory/plugin_deactivation', $this );
|
433 |
|
434 |
/**
|
435 |
-
*
|
436 |
*
|
437 |
* @since 4.1.1 - deprecated
|
438 |
*/
|
439 |
-
|
440 |
$this
|
441 |
], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation" );
|
442 |
|
@@ -445,7 +455,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
445 |
*
|
446 |
* @since 4.1.2 - deprecated
|
447 |
*/
|
448 |
-
|
449 |
$this
|
450 |
], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation" );
|
451 |
|
@@ -482,8 +492,8 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
482 |
* @throws Exception
|
483 |
*/
|
484 |
public function getPluginPageUrl( $page_id, $args = [] ) {
|
485 |
-
if ( ! class_exists( '
|
486 |
-
throw new Exception( 'The
|
487 |
}
|
488 |
|
489 |
if ( ! is_admin() ) {
|
@@ -492,44 +502,60 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
492 |
return null;
|
493 |
}
|
494 |
|
495 |
-
return
|
496 |
}
|
497 |
|
498 |
-
|
499 |
/**
|
500 |
* Загружает аддоны для плагина, как часть проекта, а не как отдельный плагин
|
|
|
|
|
501 |
*/
|
502 |
-
|
503 |
-
|
|
|
|
|
|
|
504 |
return;
|
505 |
}
|
506 |
|
507 |
-
foreach ( $
|
508 |
-
if ( ! isset( $this->
|
509 |
-
|
510 |
-
// При подключении аддона, мы объявляем константу, что такой аддон уже загружен
|
511 |
-
// $addon_name индентификатор аддона в вверхнем регистре
|
512 |
-
$const_name = strtoupper( 'LOADING_' . str_replace( '-', '_', $addon_name ) . '_AS_ADDON' );
|
513 |
|
514 |
-
if ( !
|
515 |
-
|
516 |
}
|
517 |
|
518 |
-
|
519 |
|
520 |
-
|
521 |
-
|
|
|
522 |
|
523 |
-
|
524 |
-
$plugin_data['as_addon'] = true;
|
525 |
|
526 |
-
|
527 |
-
|
528 |
-
|
529 |
|
530 |
-
|
531 |
-
|
532 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
533 |
}
|
534 |
}
|
535 |
}
|
@@ -570,12 +596,12 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
570 |
/**
|
571 |
* @since 4.1.1 - deprecated
|
572 |
*/
|
573 |
-
|
574 |
|
575 |
/**
|
576 |
* @since 4.1.1 - add
|
577 |
*/
|
578 |
-
do_action( 'wbcr/
|
579 |
}
|
580 |
|
581 |
|
@@ -589,7 +615,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
589 |
add_action( 'plugins_loaded', [ $this, 'set_text_domain' ] );
|
590 |
|
591 |
if ( is_admin() ) {
|
592 |
-
add_filter( '
|
593 |
|
594 |
register_activation_hook( $this->get_paths()->main_file, [ $this, 'activation_hook' ] );
|
595 |
register_deactivation_hook( $this->get_paths()->main_file, [ $this, 'deactivation_hook' ] );
|
@@ -604,7 +630,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
604 |
* @throws Exception
|
605 |
*/
|
606 |
protected function init_plugin_migrations() {
|
607 |
-
new WBCR\
|
608 |
}
|
609 |
|
610 |
/**
|
@@ -614,7 +640,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
614 |
* @return void
|
615 |
*/
|
616 |
protected function init_plugin_notices() {
|
617 |
-
new Wbcr\
|
618 |
}
|
619 |
|
620 |
/**
|
@@ -629,7 +655,7 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
629 |
*/
|
630 |
protected function init_plugin_updates() {
|
631 |
if ( $this->has_updates ) {
|
632 |
-
new WBCR\
|
633 |
}
|
634 |
}
|
635 |
|
@@ -651,24 +677,12 @@ abstract class Wbcr_Factory420_Plugin extends Wbcr_Factory420_Base {
|
|
651 |
}
|
652 |
|
653 |
// Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
|
654 |
-
$this->premium = WBCR\
|
655 |
|
656 |
// Подключаем премиум апгрейдер
|
657 |
if ( isset( $this->license_settings['has_updates'] ) && $this->license_settings['has_updates'] ) {
|
658 |
-
new WBCR\
|
659 |
}
|
660 |
}
|
661 |
-
|
662 |
-
// ----------------------------------------------------------------------
|
663 |
-
// Public methods
|
664 |
-
// ----------------------------------------------------------------------
|
665 |
-
|
666 |
-
public function newScriptList() {
|
667 |
-
return new Wbcr_Factory420_ScriptList( $this );
|
668 |
-
}
|
669 |
-
|
670 |
-
public function newStyleList() {
|
671 |
-
return new Wbcr_Factory420_StyleList( $this );
|
672 |
-
}
|
673 |
}
|
674 |
|
24 |
* @package factory-core
|
25 |
*
|
26 |
*/
|
27 |
+
abstract class Wbcr_Factory422_Plugin extends Wbcr_Factory422_Base {
|
28 |
|
29 |
/**
|
30 |
+
* Instance class Wbcr_Factory422_Request, required manages http requests
|
31 |
*
|
32 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
|
33 |
+
* @var Wbcr_Factory422_Request
|
34 |
*/
|
35 |
public $request;
|
36 |
|
37 |
/**
|
38 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
|
39 |
+
* @var \WBCR\Factory_422\Premium\Provider
|
40 |
*/
|
41 |
public $premium;
|
42 |
|
43 |
/**
|
44 |
* The Bootstrap Manager class
|
45 |
*
|
46 |
+
* @var Wbcr_FactoryBootstrap423_Manager
|
47 |
*/
|
48 |
public $bootstrap;
|
49 |
|
50 |
/**
|
51 |
* The Bootstrap Manager class
|
52 |
*
|
53 |
+
* @var Wbcr_FactoryForms420_Manager
|
54 |
*/
|
55 |
public $forms;
|
56 |
|
57 |
/**
|
58 |
+
* Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory422_Activator.
|
59 |
* Классы активации используются для упаковки набора функций, которые нужно выполнить во время
|
60 |
* активации плагина.
|
61 |
*
|
62 |
+
* @var array[] Wbcr_Factory422_Activator
|
63 |
*/
|
64 |
protected $activator_class = [];
|
65 |
|
75 |
* Ассоциативный массив со списком аддонов плагина. Аддоны плагина являются частью одного проекта,
|
76 |
* но не как отдельный плагин.
|
77 |
*
|
78 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
79 |
+
* @since 4.2.0
|
80 |
+
* @var array
|
81 |
*/
|
82 |
+
private $loaded_plugin_components = [];
|
83 |
|
84 |
/**
|
85 |
* The Adverts Manager class
|
86 |
*
|
87 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
88 |
* @since 4.1.9
|
89 |
+
* @var WBCR\Factory_Adverts_104\Base
|
90 |
*/
|
91 |
private $adverts;
|
92 |
|
105 |
|
106 |
parent::__construct( $plugin_path, $data );
|
107 |
|
108 |
+
$this->request = new Wbcr_Factory422_Request();
|
109 |
+
//$this->route = new Wbcr_Factory422_Route();
|
110 |
|
111 |
// INIT PLUGIN FRAMEWORK MODULES
|
112 |
// Framework modules should always be loaded first,
|
129 |
|
130 |
// init actions
|
131 |
$this->register_plugin_hooks();
|
|
|
132 |
|
133 |
+
// INIT PLUGIN COMPONENTS
|
134 |
+
$this->init_plugin_components();
|
135 |
+
}
|
136 |
|
137 |
/**
|
138 |
* Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
|
139 |
* скриптов, стилей) фреймворка.
|
140 |
*
|
141 |
+
* @param Wbcr_FactoryBootstrap423_Manager $bootstrap
|
142 |
*/
|
143 |
+
public function setBootstap( Wbcr_FactoryBootstrap423_Manager $bootstrap ) {
|
144 |
$this->bootstrap = $bootstrap;
|
145 |
}
|
146 |
|
147 |
/**
|
148 |
* Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
|
149 |
*
|
150 |
+
* @param Wbcr_FactoryForms420_Manager $forms
|
151 |
*/
|
152 |
+
public function setForms( Wbcr_FactoryForms420_Manager $forms ) {
|
153 |
$this->forms = $forms;
|
154 |
}
|
155 |
|
177 |
* @param string $class_name Имя класса провайдера
|
178 |
*/
|
179 |
public function set_license_provider( $name, $class_name ) {
|
180 |
+
if ( ! isset( WBCR\Factory_422\Premium\Manager::$providers[ $name ] ) ) {
|
181 |
+
WBCR\Factory_422\Premium\Manager::$providers[ $name ] = $class_name;
|
182 |
}
|
183 |
}
|
184 |
|
194 |
* @param string $class_name Имя класса репозитория
|
195 |
*/
|
196 |
public function set_update_repository( $name, $class_name ) {
|
197 |
+
if ( ! isset( WBCR\Factory_422\Updates\Upgrader::$repositories[ $name ] ) ) {
|
198 |
+
WBCR\Factory_422\Updates\Upgrader::$repositories[ $name ] = $class_name;
|
199 |
}
|
200 |
}
|
201 |
|
207 |
*
|
208 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
209 |
* @since 1.1
|
210 |
+
* @return \WBCR\Factory_Adverts_104\Base
|
211 |
*/
|
212 |
public function get_adverts_manager() {
|
213 |
return $this->adverts;
|
236 |
}
|
237 |
}
|
238 |
|
239 |
+
public function newScriptList() {
|
240 |
+
return new Wbcr_Factory422_ScriptList( $this );
|
241 |
+
}
|
242 |
+
|
243 |
+
public function newStyleList() {
|
244 |
+
return new Wbcr_Factory422_StyleList( $this );
|
245 |
+
}
|
246 |
+
|
247 |
/**
|
248 |
* Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
|
249 |
* фреймворка pages. Разработчик создает собственный класс, унаследованный от
|
250 |
+
* Wbcr_FactoryPages422_AdminPage, а затем регистрирует его через этот метод.
|
251 |
* Метод выполняет подключение класса страницы и регистрирует его в модуле фреймворка
|
252 |
* pages.
|
253 |
*
|
257 |
* @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/222887949 - документация по созданию страниц
|
258 |
*
|
259 |
* @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Page_Name.
|
260 |
+
* Регистрируемый класс должен быть унаследован от класса Wbcr_FactoryPages422_AdminPage.
|
261 |
* @param string $file_path Абсолютный путь к файлу с классом страницы.
|
262 |
*
|
263 |
* @throws Exception
|
278 |
throw new Exception( 'A class with this name {' . $class_name . '} does not exist.' );
|
279 |
}
|
280 |
|
281 |
+
if ( ! class_exists( 'Wbcr_FactoryPages422' ) ) {
|
282 |
+
throw new Exception( 'The factory_pages_422 module is not included.' );
|
283 |
}
|
284 |
|
285 |
+
Wbcr_FactoryPages422::register( $this, $class_name );
|
286 |
}
|
287 |
|
288 |
/**
|
329 |
/**
|
330 |
* @since 4.1.1 - change hook name
|
331 |
*/
|
332 |
+
if ( apply_filters( "wbcr/factory_422/cancel_plugin_activation_{$this->plugin_name}", false ) ) {
|
333 |
return;
|
334 |
}
|
335 |
|
336 |
/**
|
337 |
+
* wbcr_factory_422_plugin_activation
|
338 |
*
|
339 |
* @since 4.1.1 - deprecated
|
340 |
*/
|
341 |
+
wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_plugin_activation', [
|
342 |
$this
|
343 |
], '4.1.1', "wbcr/factory/plugin_activation" );
|
344 |
|
347 |
*
|
348 |
* @since 4.1.2 - deprecated
|
349 |
*/
|
350 |
+
wbcr_factory_422_do_action_deprecated( 'wbcr/factory/plugin_activation', [
|
351 |
$this
|
352 |
], '4.1.2', "wbcr/factory/before_plugin_activation" );
|
353 |
|
363 |
*
|
364 |
* @since 4.1.2 - deprecated
|
365 |
*/
|
366 |
+
wbcr_factory_422_do_action_deprecated( "wbcr/factory/plugin_{$this->plugin_name}_activation", [
|
367 |
$this
|
368 |
], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_activation" );
|
369 |
|
370 |
/**
|
371 |
+
* wbcr_factory_422_plugin_activation_' . $this->plugin_name
|
372 |
*
|
373 |
* @since 4.1.1 - deprecated
|
374 |
*/
|
375 |
+
wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_plugin_activation_' . $this->plugin_name, [
|
376 |
$this
|
377 |
], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_activation" );
|
378 |
|
412 |
/**
|
413 |
* @since 4.1.1 - change hook name
|
414 |
*/
|
415 |
+
if ( apply_filters( "wbcr/factory_422/cancel_plugin_deactivation_{$this->plugin_name}", false ) ) {
|
416 |
return;
|
417 |
}
|
418 |
|
419 |
/**
|
420 |
+
* wbcr_factory_422_plugin_deactivation
|
421 |
*
|
422 |
* @since 4.1.1 - deprecated
|
423 |
*/
|
424 |
+
wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_plugin_deactivation', [
|
425 |
$this
|
426 |
], '4.1.1', "wbcr/factory/plugin_deactivation" );
|
427 |
|
430 |
*
|
431 |
* @since 4.1.2 - deprecated
|
432 |
*/
|
433 |
+
wbcr_factory_422_do_action_deprecated( 'wbcr/factory/plugin_deactivation', [
|
434 |
$this
|
435 |
], '4.1.2', "wbcr/factory/before_plugin_deactivation" );
|
436 |
|
442 |
do_action( 'wbcr/factory/plugin_deactivation', $this );
|
443 |
|
444 |
/**
|
445 |
+
* wbcr_factory_422_plugin_deactivation_ . $this->plugin_name
|
446 |
*
|
447 |
* @since 4.1.1 - deprecated
|
448 |
*/
|
449 |
+
wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_plugin_deactivation_' . $this->plugin_name, [
|
450 |
$this
|
451 |
], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation" );
|
452 |
|
455 |
*
|
456 |
* @since 4.1.2 - deprecated
|
457 |
*/
|
458 |
+
wbcr_factory_422_do_action_deprecated( "wbcr/factory/plugin_{$this->plugin_name}_deactivation", [
|
459 |
$this
|
460 |
], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation" );
|
461 |
|
492 |
* @throws Exception
|
493 |
*/
|
494 |
public function getPluginPageUrl( $page_id, $args = [] ) {
|
495 |
+
if ( ! class_exists( 'Wbcr_FactoryPages422' ) ) {
|
496 |
+
throw new Exception( 'The factory_pages_422 module is not included.' );
|
497 |
}
|
498 |
|
499 |
if ( ! is_admin() ) {
|
502 |
return null;
|
503 |
}
|
504 |
|
505 |
+
return Wbcr_FactoryPages422::getPageUrl( $this, $page_id, $args );
|
506 |
}
|
507 |
|
|
|
508 |
/**
|
509 |
* Загружает аддоны для плагина, как часть проекта, а не как отдельный плагин
|
510 |
+
*
|
511 |
+
* @throws \Exception
|
512 |
*/
|
513 |
+
private function init_plugin_components() {
|
514 |
+
|
515 |
+
$load_plugin_components = $this->get_load_plugin_components();
|
516 |
+
|
517 |
+
if ( empty( $load_plugin_components ) || ! is_array( $load_plugin_components ) ) {
|
518 |
return;
|
519 |
}
|
520 |
|
521 |
+
foreach ( $load_plugin_components as $component_ID => $component ) {
|
522 |
+
if ( ! isset( $this->loaded_plugin_components[ $component_ID ] ) ) {
|
|
|
|
|
|
|
|
|
523 |
|
524 |
+
if ( ! isset( $component['autoload'] ) || ! isset( $component['plugin_prefix'] ) ) {
|
525 |
+
throw new Exception( sprintf( "Component %s cannot be loaded, you must specify the path to the component autoload file and plugin prefix!", $component_ID ) );
|
526 |
}
|
527 |
|
528 |
+
$prefix = rtrim( $component['plugin_prefix'], '_' ) . '_';
|
529 |
|
530 |
+
if ( defined( $prefix . 'PLUGIN_ACTIVE' ) ) {
|
531 |
+
continue;
|
532 |
+
}
|
533 |
|
534 |
+
$autoload_file = trailingslashit( $this->get_paths()->absolute ) . $component['autoload'];
|
|
|
535 |
|
536 |
+
if ( ! file_exists( $autoload_file ) ) {
|
537 |
+
throw new Exception( sprintf( "Component %s autoload file not found!", $component_ID ) );
|
538 |
+
}
|
539 |
|
540 |
+
require_once( $autoload_file );
|
541 |
+
|
542 |
+
if ( defined( $prefix . 'PLUGIN_ACTIVE' ) && class_exists( $prefix . 'Plugin' ) ) {
|
543 |
+
$this->loaded_plugin_components[ $component_ID ] = [
|
544 |
+
'plugin_dir' => constant( $prefix . 'PLUGIN_DIR' ),
|
545 |
+
'plugin_url' => constant( $prefix . 'PLUGIN_URL' ),
|
546 |
+
'plugin_base' => constant( $prefix . 'PLUGIN_BASE' ),
|
547 |
+
'plugin_version' => constant( $prefix . 'PLUGIN_VERSION' )
|
548 |
+
];
|
549 |
+
|
550 |
+
/**
|
551 |
+
* Оповещает внешние приложения, что компонент плагина был загружен
|
552 |
+
*
|
553 |
+
* @param array $load_plugin_components Информация о загруженном компоненте
|
554 |
+
* @param string $plugin_name Имя плагина
|
555 |
+
*/
|
556 |
+
do_action( "wbcr/factory/component_{$component_ID}_loaded", $this->loaded_plugin_components[ $component_ID ], $this->getPluginName() );
|
557 |
+
} else {
|
558 |
+
throw new Exception( sprintf( "Сomponent %s does not meet development standards!", $component_ID ) );
|
559 |
}
|
560 |
}
|
561 |
}
|
596 |
/**
|
597 |
* @since 4.1.1 - deprecated
|
598 |
*/
|
599 |
+
wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_422/modules_loaded-" . $this->plugin_name );
|
600 |
|
601 |
/**
|
602 |
* @since 4.1.1 - add
|
603 |
*/
|
604 |
+
do_action( 'wbcr/factory_422/modules_loaded-' . $this->plugin_name );
|
605 |
}
|
606 |
|
607 |
|
615 |
add_action( 'plugins_loaded', [ $this, 'set_text_domain' ] );
|
616 |
|
617 |
if ( is_admin() ) {
|
618 |
+
add_filter( 'wbcr_factory_422_core_admin_allow_multisite', '__return_true' );
|
619 |
|
620 |
register_activation_hook( $this->get_paths()->main_file, [ $this, 'activation_hook' ] );
|
621 |
register_deactivation_hook( $this->get_paths()->main_file, [ $this, 'deactivation_hook' ] );
|
630 |
* @throws Exception
|
631 |
*/
|
632 |
protected function init_plugin_migrations() {
|
633 |
+
new WBCR\Factory_422\Migrations( $this );
|
634 |
}
|
635 |
|
636 |
/**
|
640 |
* @return void
|
641 |
*/
|
642 |
protected function init_plugin_notices() {
|
643 |
+
new Wbcr\Factory_422\Notices( $this );
|
644 |
}
|
645 |
|
646 |
/**
|
655 |
*/
|
656 |
protected function init_plugin_updates() {
|
657 |
if ( $this->has_updates ) {
|
658 |
+
new WBCR\Factory_422\Updates\Upgrader( $this );
|
659 |
}
|
660 |
}
|
661 |
|
677 |
}
|
678 |
|
679 |
// Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
|
680 |
+
$this->premium = WBCR\Factory_422\Premium\Manager::instance( $this, $this->license_settings );
|
681 |
|
682 |
// Подключаем премиум апгрейдер
|
683 |
if ( isset( $this->license_settings['has_updates'] ) && $this->license_settings['has_updates'] ) {
|
684 |
+
new WBCR\Factory_422\Updates\Premium_Upgrader( $this );
|
685 |
}
|
686 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
687 |
}
|
688 |
|
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_Factory420_Base {
|
|
81 |
* https://robin-image-optimizer.webcraftic.com/premium-features.
|
82 |
*
|
83 |
* Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
|
84 |
-
* экземпляр класса \WBCR\
|
85 |
* Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
|
86 |
* можете изменить все ссылки в одном месте.
|
87 |
*
|
@@ -127,7 +127,7 @@ class Wbcr_Factory420_Base {
|
|
127 |
* к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
|
128 |
* взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
|
129 |
* индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
|
130 |
-
* WBCR\
|
131 |
*
|
132 |
* На текущий момент существует только реализация для freemius провайдера.
|
133 |
*
|
@@ -162,8 +162,9 @@ class Wbcr_Factory420_Base {
|
|
162 |
protected $adverts_settings = [];
|
163 |
|
164 |
/**
|
165 |
-
* Обязательное свойство. Подключаемые модули фреймворка.
|
166 |
-
*
|
|
|
167 |
*
|
168 |
* @var array {
|
169 |
* Array with information about the loadable module
|
@@ -176,27 +177,52 @@ class Wbcr_Factory420_Base {
|
|
176 |
* }
|
177 |
*/
|
178 |
protected $load_factory_modules = [
|
179 |
-
[ 'libs/factory/bootstrap', '
|
180 |
-
[ 'libs/factory/forms', '
|
181 |
-
[ 'libs/factory/pages', '
|
182 |
];
|
183 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
|
185 |
/**
|
186 |
-
* Экземпляр класса \WBCR\
|
187 |
* о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
|
188 |
* ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
|
189 |
*
|
190 |
-
* @var \WBCR\
|
191 |
*/
|
192 |
protected $support;
|
193 |
|
194 |
/**
|
195 |
-
* Экземпляр класса \WBCR\
|
196 |
* путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
|
197 |
* или его входного файла.
|
198 |
*
|
199 |
-
* @var \WBCR\
|
200 |
*/
|
201 |
protected $paths;
|
202 |
|
@@ -244,8 +270,8 @@ class Wbcr_Factory420_Base {
|
|
244 |
throw new Exception( 'One of the required attributes has not been passed (prefix, plugin_title, plugin_name, plugin_version, plugin_text_domain).' );
|
245 |
}
|
246 |
|
247 |
-
$this->support = new \WBCR\
|
248 |
-
$this->paths = new \WBCR\
|
249 |
|
250 |
// used only in the module 'updates'
|
251 |
$this->plugin_slug = ! empty( $this->plugin_name ) ? $this->plugin_name : basename( $plugin_file );
|
@@ -365,7 +391,7 @@ class Wbcr_Factory420_Base {
|
|
365 |
* Проверяет, включен ли премиум для этого плагина или нет.
|
366 |
*
|
367 |
* @return bool Возвращает true, если премиум пакет включен для этого плагина.
|
368 |
-
* См.
|
369 |
*/
|
370 |
public function has_premium() {
|
371 |
return $this->has_premium;
|
@@ -374,7 +400,7 @@ class Wbcr_Factory420_Base {
|
|
374 |
/**
|
375 |
* Позволяет получить заголовок плагина.
|
376 |
*
|
377 |
-
* @return string Возвращает заголовок плагина. См.
|
378 |
*/
|
379 |
public function getPluginTitle() {
|
380 |
return $this->plugin_title;
|
@@ -383,7 +409,7 @@ class Wbcr_Factory420_Base {
|
|
383 |
/**
|
384 |
* Позволяет получить префикс плагина.
|
385 |
*
|
386 |
-
* @return string Возвращает префикс плагина.См.
|
387 |
*/
|
388 |
public function getPrefix() {
|
389 |
return $this->prefix;
|
@@ -392,7 +418,7 @@ class Wbcr_Factory420_Base {
|
|
392 |
/**
|
393 |
* Позволяет получить имя плагина.
|
394 |
*
|
395 |
-
* @return string Возвращает имя плагина. См.
|
396 |
*/
|
397 |
public function getPluginName() {
|
398 |
return $this->plugin_name;
|
@@ -401,18 +427,29 @@ class Wbcr_Factory420_Base {
|
|
401 |
/**
|
402 |
* Позволяет получить версию плагина.
|
403 |
*
|
404 |
-
* @return string Возвращает версию плагина. См.
|
405 |
*/
|
406 |
public function getPluginVersion() {
|
407 |
return $this->plugin_version;
|
408 |
}
|
409 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
410 |
/**
|
411 |
* Предоставляет доступ к сырым данным плагина. Может быть полезен, если вы хотите получить
|
412 |
* какие-то данные не описанные в интерфейсе этого плагина.
|
413 |
*
|
414 |
* @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
|
415 |
-
*
|
416 |
*
|
417 |
* @return null
|
418 |
*/
|
@@ -425,18 +462,18 @@ class Wbcr_Factory420_Base {
|
|
425 |
}
|
426 |
|
427 |
/**
|
428 |
-
* Предоставляет доступ к экземпляру класса \WBCR\
|
429 |
*
|
430 |
-
* @return \WBCR\
|
431 |
*/
|
432 |
public function get_support() {
|
433 |
return $this->support;
|
434 |
}
|
435 |
|
436 |
/**
|
437 |
-
* Предоставляет доступ к экземпляру класса \WBCR\
|
438 |
*
|
439 |
-
* @return \WBCR\
|
440 |
*/
|
441 |
public function get_paths() {
|
442 |
return $this->paths;
|
@@ -445,14 +482,33 @@ class Wbcr_Factory420_Base {
|
|
445 |
/**
|
446 |
* Позволяет получить сырые данные плагина в виде объекта StdClass.
|
447 |
*
|
448 |
-
* @return object Возвращает объект с сырыми данными плагина. См.
|
449 |
*/
|
450 |
public function getPluginInfo() {
|
451 |
return (object) $this->plugin_data;
|
452 |
}
|
453 |
|
454 |
/**
|
455 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
456 |
*
|
457 |
* @since 4.0.8 Добавлен
|
458 |
*
|
@@ -464,7 +520,6 @@ class Wbcr_Factory420_Base {
|
|
464 |
|
465 |
/**
|
466 |
* Проверяет активирован ли плагин для сети. Если проект работает в режиме мультисайтов..
|
467 |
-
* TODO: Вынести метод в функции
|
468 |
*
|
469 |
* @since 4.0.8 Добавлен
|
470 |
* @return bool Если true, плагин активирован для сети или в текущий момент активируется для сети.
|
@@ -486,7 +541,6 @@ class Wbcr_Factory420_Base {
|
|
486 |
|
487 |
/**
|
488 |
* Позволяет получить все активные сайты сети. Если проект работает в режиме мультисайтов.
|
489 |
-
* TODO: Вынести метод в функции
|
490 |
*
|
491 |
* @since 4.0.8
|
492 |
* @return array|int
|
5 |
}
|
6 |
|
7 |
/**
|
8 |
+
* Базовый класс для создания нового плагина. Полную реализацию класса смотрите в Wbcr_Factory422_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_Factory422_Base {
|
21 |
|
22 |
+
use WBCR\Factory_422\Options;
|
23 |
|
24 |
/**
|
25 |
* Обязательное свойство. Префикс, используется для создания пространство имен.
|
81 |
* https://robin-image-optimizer.webcraftic.com/premium-features.
|
82 |
*
|
83 |
* Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
|
84 |
+
* экземпляр класса \WBCR\Factory_422\Entities\Support, для получения информации о сайте плагина.
|
85 |
* Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
|
86 |
* можете изменить все ссылки в одном месте.
|
87 |
*
|
127 |
* к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
|
128 |
* взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
|
129 |
* индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
|
130 |
+
* WBCR\Factory_422\Premium\Provider > WBCR\Factory_Freemius_110\Premium\Provider
|
131 |
*
|
132 |
* На текущий момент существует только реализация для freemius провайдера.
|
133 |
*
|
162 |
protected $adverts_settings = [];
|
163 |
|
164 |
/**
|
165 |
+
* Обязательное свойство. Подключаемые модули фреймворка.
|
166 |
+
*
|
167 |
+
* Модули фреймворка позволяют расширять его функциональность.
|
168 |
*
|
169 |
* @var array {
|
170 |
* Array with information about the loadable module
|
177 |
* }
|
178 |
*/
|
179 |
protected $load_factory_modules = [
|
180 |
+
[ 'libs/factory/bootstrap', 'factory_bootstrap_423', 'admin' ],
|
181 |
+
[ 'libs/factory/forms', 'factory_forms_420', 'admin' ],
|
182 |
+
[ 'libs/factory/pages', 'factory_pages_422', 'admin' ],
|
183 |
];
|
184 |
|
185 |
+
/**
|
186 |
+
* Не обязательное свойство. Список подключаемых компонентов плагина.
|
187 |
+
*
|
188 |
+
* Компоненты плагина, это независимые плагины, которые расширяют возможности текущего плагина.
|
189 |
+
* Вы должны указать файл для автозагрузки компонента и префикс плагина, чтобы фреймворк
|
190 |
+
* мог обращаться к классам и константам компонентов.
|
191 |
+
*
|
192 |
+
*
|
193 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
194 |
+
* @since 4.2.0 Добавлен
|
195 |
+
* @var array Пример данных
|
196 |
+
* array(
|
197 |
+
* 'component_ID' => array(
|
198 |
+
* 'autoload' => 'relative_path/autoload_filename.php',
|
199 |
+
* 'plugin_prefix' => 'WPRFX_'
|
200 |
+
* ),
|
201 |
+
* // Реальный пример
|
202 |
+
* 'cyrlitera' => array(
|
203 |
+
* 'autoload' => 'components/cyrlitera/clearfy.php',
|
204 |
+
* 'plugin_prefix' => 'WCTR_'
|
205 |
+
* ),
|
206 |
+
* )
|
207 |
+
*/
|
208 |
+
protected $load_plugin_components = [];
|
209 |
+
|
210 |
|
211 |
/**
|
212 |
+
* Экземпляр класса \WBCR\Factory_422\Entities\Support используется для получения информации
|
213 |
* о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
|
214 |
* ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
|
215 |
*
|
216 |
+
* @var \WBCR\Factory_422\Entities\Support
|
217 |
*/
|
218 |
protected $support;
|
219 |
|
220 |
/**
|
221 |
+
* Экземпляр класса \WBCR\Factory_422\Entities\Paths используется для получения информации о
|
222 |
* путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
|
223 |
* или его входного файла.
|
224 |
*
|
225 |
+
* @var \WBCR\Factory_422\Entities\Paths
|
226 |
*/
|
227 |
protected $paths;
|
228 |
|
270 |
throw new Exception( 'One of the required attributes has not been passed (prefix, plugin_title, plugin_name, plugin_version, plugin_text_domain).' );
|
271 |
}
|
272 |
|
273 |
+
$this->support = new \WBCR\Factory_422\Entities\Support( $this->support_details );
|
274 |
+
$this->paths = new \WBCR\Factory_422\Entities\Paths( $plugin_file );
|
275 |
|
276 |
// used only in the module 'updates'
|
277 |
$this->plugin_slug = ! empty( $this->plugin_name ) ? $this->plugin_name : basename( $plugin_file );
|
391 |
* Проверяет, включен ли премиум для этого плагина или нет.
|
392 |
*
|
393 |
* @return bool Возвращает true, если премиум пакет включен для этого плагина.
|
394 |
+
* См. Wbcr_Factory422_Base::has_premium
|
395 |
*/
|
396 |
public function has_premium() {
|
397 |
return $this->has_premium;
|
400 |
/**
|
401 |
* Позволяет получить заголовок плагина.
|
402 |
*
|
403 |
+
* @return string Возвращает заголовок плагина. См. Wbcr_Factory422_Base::plugin_title
|
404 |
*/
|
405 |
public function getPluginTitle() {
|
406 |
return $this->plugin_title;
|
409 |
/**
|
410 |
* Позволяет получить префикс плагина.
|
411 |
*
|
412 |
+
* @return string Возвращает префикс плагина.См. Wbcr_Factory422_Base::prefix
|
413 |
*/
|
414 |
public function getPrefix() {
|
415 |
return $this->prefix;
|
418 |
/**
|
419 |
* Позволяет получить имя плагина.
|
420 |
*
|
421 |
+
* @return string Возвращает имя плагина. См. Wbcr_Factory422_Base::plugin_name
|
422 |
*/
|
423 |
public function getPluginName() {
|
424 |
return $this->plugin_name;
|
427 |
/**
|
428 |
* Позволяет получить версию плагина.
|
429 |
*
|
430 |
+
* @return string Возвращает версию плагина. См. Wbcr_Factory422_Base::plugin_version
|
431 |
*/
|
432 |
public function getPluginVersion() {
|
433 |
return $this->plugin_version;
|
434 |
}
|
435 |
|
436 |
+
/**
|
437 |
+
* Позволяет получить список подключаемых к плагином компонентов
|
438 |
+
*
|
439 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
440 |
+
* @since 4.2.0
|
441 |
+
* @return array
|
442 |
+
*/
|
443 |
+
public function get_load_plugin_components() {
|
444 |
+
return $this->load_plugin_components;
|
445 |
+
}
|
446 |
+
|
447 |
/**
|
448 |
* Предоставляет доступ к сырым данным плагина. Может быть полезен, если вы хотите получить
|
449 |
* какие-то данные не описанные в интерфейсе этого плагина.
|
450 |
*
|
451 |
* @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
|
452 |
+
* Wbcr_Factory422_Base::plugin_data
|
453 |
*
|
454 |
* @return null
|
455 |
*/
|
462 |
}
|
463 |
|
464 |
/**
|
465 |
+
* Предоставляет доступ к экземпляру класса \WBCR\Factory_422\Entities\Support.
|
466 |
*
|
467 |
+
* @return \WBCR\Factory_422\Entities\Support
|
468 |
*/
|
469 |
public function get_support() {
|
470 |
return $this->support;
|
471 |
}
|
472 |
|
473 |
/**
|
474 |
+
* Предоставляет доступ к экземпляру класса \WBCR\Factory_422\Entities\Paths.
|
475 |
*
|
476 |
+
* @return \WBCR\Factory_422\Entities\Paths
|
477 |
*/
|
478 |
public function get_paths() {
|
479 |
return $this->paths;
|
482 |
/**
|
483 |
* Позволяет получить сырые данные плагина в виде объекта StdClass.
|
484 |
*
|
485 |
+
* @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory422_Base::plugin_data
|
486 |
*/
|
487 |
public function getPluginInfo() {
|
488 |
return (object) $this->plugin_data;
|
489 |
}
|
490 |
|
491 |
/**
|
492 |
+
* Проверяет права пользователя
|
493 |
+
*
|
494 |
+
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
495 |
+
* @since 4.2.0 Добавлен
|
496 |
+
* @return bool
|
497 |
+
*/
|
498 |
+
public function current_user_can( $capability = 'manage_options' ) {
|
499 |
+
// Просмотр страниц: read_pages
|
500 |
+
// Просмотр уведомлений: read_notices
|
501 |
+
// Редактирование: edit_forms
|
502 |
+
|
503 |
+
if ( 'manage_options' == $capability && is_multisite() && $this->isNetworkActive() ) {
|
504 |
+
$capability = 'manage_network';
|
505 |
+
}
|
506 |
+
|
507 |
+
return current_user_can( $capability );
|
508 |
+
}
|
509 |
+
|
510 |
+
/**
|
511 |
+
* Проверят, находится ли пользователь в панели усправления сетью сайтов
|
512 |
*
|
513 |
* @since 4.0.8 Добавлен
|
514 |
*
|
520 |
|
521 |
/**
|
522 |
* Проверяет активирован ли плагин для сети. Если проект работает в режиме мультисайтов..
|
|
|
523 |
*
|
524 |
* @since 4.0.8 Добавлен
|
525 |
* @return bool Если true, плагин активирован для сети или в текущий момент активируется для сети.
|
541 |
|
542 |
/**
|
543 |
* Позволяет получить все активные сайты сети. Если проект работает в режиме мультисайтов.
|
|
|
544 |
*
|
545 |
* @since 4.0.8
|
546 |
* @return array|int
|
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_Factory422_Request {
|
15 |
|
16 |
/**
|
17 |
* @param null $param
|
libs/factory/core/includes/class-factory-requirements.php
CHANGED
@@ -11,9 +11,9 @@
|
|
11 |
* @version 2.0.0
|
12 |
* @since 4.0.9
|
13 |
*/
|
14 |
-
|
15 |
-
if ( ! class_exists( '
|
16 |
-
class
|
17 |
|
18 |
/**
|
19 |
* Factory framework version
|
@@ -121,11 +121,11 @@ if ( ! class_exists( 'Wbcr_Factory420_Requirements' ) ) {
|
|
121 |
$this->plugin_basename = plugin_basename( $plugin_file );
|
122 |
$this->plugin_url = plugins_url( null, $plugin_file );
|
123 |
|
124 |
-
$plugin_info = get_file_data( $this->plugin_file,
|
125 |
'Version' => 'Version',
|
126 |
'FrameworkVersion' => 'Framework Version',
|
127 |
'TextDomain' => 'Text Domain'
|
128 |
-
|
129 |
|
130 |
if ( isset( $plugin_info['FrameworkVersion'] ) ) {
|
131 |
$this->factory_version = $plugin_info['FrameworkVersion'];
|
@@ -139,7 +139,7 @@ if ( ! class_exists( 'Wbcr_Factory420_Requirements' ) ) {
|
|
139 |
$this->plugin_text_domain = $plugin_info['TextDomain'];
|
140 |
}
|
141 |
|
142 |
-
add_action( 'admin_init',
|
143 |
}
|
144 |
|
145 |
public function get_plugin_version() {
|
@@ -158,13 +158,13 @@ if ( ! class_exists( 'Wbcr_Factory420_Requirements' ) ) {
|
|
158 |
if ( current_user_can( 'activate_plugins' ) && current_user_can( 'edit_plugins' ) && current_user_can( 'install_plugins' ) ) {
|
159 |
|
160 |
if ( is_multisite() ) {
|
161 |
-
add_action( 'network_admin_notices',
|
162 |
|
163 |
-
if ( ! empty( $this->plugin_basename ) && in_array( $this->plugin_basename, (array) get_option( 'active_plugins',
|
164 |
-
add_action( 'admin_notices',
|
165 |
}
|
166 |
} else {
|
167 |
-
add_action( 'admin_notices',
|
168 |
}
|
169 |
}
|
170 |
}
|
@@ -273,21 +273,22 @@ if ( ! class_exists( 'Wbcr_Factory420_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 |
-
}
|
|
11 |
* @version 2.0.0
|
12 |
* @since 4.0.9
|
13 |
*/
|
14 |
+
// @formatter:off
|
15 |
+
if ( ! class_exists( 'Wbcr_Factory422_Requirements' ) ) {
|
16 |
+
class Wbcr_Factory422_Requirements {
|
17 |
|
18 |
/**
|
19 |
* Factory framework version
|
121 |
$this->plugin_basename = plugin_basename( $plugin_file );
|
122 |
$this->plugin_url = plugins_url( null, $plugin_file );
|
123 |
|
124 |
+
$plugin_info = get_file_data( $this->plugin_file, array(
|
125 |
'Version' => 'Version',
|
126 |
'FrameworkVersion' => 'Framework Version',
|
127 |
'TextDomain' => 'Text Domain'
|
128 |
+
), 'plugin' );
|
129 |
|
130 |
if ( isset( $plugin_info['FrameworkVersion'] ) ) {
|
131 |
$this->factory_version = $plugin_info['FrameworkVersion'];
|
139 |
$this->plugin_text_domain = $plugin_info['TextDomain'];
|
140 |
}
|
141 |
|
142 |
+
add_action( 'admin_init', array( $this, 'register_notices' ) );
|
143 |
}
|
144 |
|
145 |
public function get_plugin_version() {
|
158 |
if ( current_user_can( 'activate_plugins' ) && current_user_can( 'edit_plugins' ) && current_user_can( 'install_plugins' ) ) {
|
159 |
|
160 |
if ( is_multisite() ) {
|
161 |
+
add_action( 'network_admin_notices', array( $this, 'show_notice' ) );
|
162 |
|
163 |
+
if ( ! empty( $this->plugin_basename ) && in_array( $this->plugin_basename, (array) get_option( 'active_plugins', array() ) ) ) {
|
164 |
+
add_action( 'admin_notices', array( $this, 'show_notice' ) );
|
165 |
}
|
166 |
} else {
|
167 |
+
add_action( 'admin_notices', array( $this, 'show_notice' ) );
|
168 |
}
|
169 |
}
|
170 |
}
|
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_422' ), $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_422' ), $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_422' ), $this->plugin_title );
|
291 |
}
|
292 |
}
|
293 |
+
}
|
294 |
+
// @formatter:on
|
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_422\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_422\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_420_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_420_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_420_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_422_deprecated_hook()
|
57 |
*
|
58 |
*/
|
59 |
+
function wbcr_factory_422_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_422_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_422_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_422_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_422_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_422_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_422\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_422\Premium;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory422_Plugin;
|
7 |
|
8 |
// Exit if accessed directly
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
24 |
public static $providers;
|
25 |
|
26 |
/**
|
27 |
+
* @var Wbcr_Factory422_Plugin
|
28 |
*/
|
29 |
protected $plugin;
|
30 |
|
36 |
/**
|
37 |
* Manager constructor.
|
38 |
*
|
39 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
40 |
* @param array $settings
|
41 |
*
|
42 |
* @throws Exception
|
43 |
*/
|
44 |
+
public function __construct( Wbcr_Factory422_Plugin $plugin, array $settings ) {
|
45 |
$this->plugin = $plugin;
|
46 |
$this->settings = $settings;
|
47 |
}
|
48 |
|
49 |
/**
|
50 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
51 |
* @param array $settings
|
52 |
*
|
53 |
+
* @return \WBCR\Factory_Freemius_110\Premium\Provider
|
54 |
* @throws Exception
|
55 |
*/
|
56 |
+
public static function instance( Wbcr_Factory422_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_110\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_422\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,16 +38,14 @@ abstract class Provider {
|
|
38 |
/**
|
39 |
* Provider constructor.
|
40 |
*
|
41 |
-
* @param
|
42 |
* @param array $settings
|
43 |
*/
|
44 |
-
public function __construct(
|
45 |
$this->plugin = $plugin;
|
46 |
$this->settings = $settings;
|
47 |
|
48 |
-
|
49 |
-
add_action( 'wbcr/factory/license_deactivate', [ $this, 'register_cron_hooks' ], 10, 2 );
|
50 |
-
add_action( "{$this->plugin->getPluginName()}_license_autosync", [ $this, 'license_cron_sync' ] );
|
51 |
}
|
52 |
|
53 |
/**
|
@@ -74,38 +72,6 @@ abstract class Provider {
|
|
74 |
return $this->get_setting( 'price' );
|
75 |
}
|
76 |
|
77 |
-
/**
|
78 |
-
* todo: Вынести с лицензионный менеджер
|
79 |
-
*
|
80 |
-
* @param array $license_info
|
81 |
-
* @param string $plugin_name
|
82 |
-
*/
|
83 |
-
public function register_cron_hooks( $license_info, $plugin_name ) {
|
84 |
-
if ( $this->plugin->getPluginName() == $plugin_name ) {
|
85 |
-
if ( ! wp_next_scheduled( "{$plugin_name}_license_autosync" ) ) {
|
86 |
-
wp_schedule_event( time(), 'twicedaily', "{$plugin_name}_license_autosync" );
|
87 |
-
}
|
88 |
-
}
|
89 |
-
}
|
90 |
-
|
91 |
-
/**
|
92 |
-
* todo: вынести в лицензионный менеджер
|
93 |
-
*
|
94 |
-
* @param array $license_info
|
95 |
-
* @param string $plugin_name
|
96 |
-
*/
|
97 |
-
public function clear_cron_hooks( $license_info, $plugin_name ) {
|
98 |
-
if ( $this->plugin->getPluginName() == $plugin_name ) {
|
99 |
-
if ( wp_next_scheduled( "{$plugin_name}_license_autosync" ) ) {
|
100 |
-
wp_clear_scheduled_hook( "{$plugin_name}_license_autosync" );
|
101 |
-
}
|
102 |
-
}
|
103 |
-
}
|
104 |
-
|
105 |
-
public function license_cron_sync() {
|
106 |
-
$this->sync();
|
107 |
-
}
|
108 |
-
|
109 |
/**
|
110 |
* @return bool
|
111 |
*/
|
@@ -175,6 +141,39 @@ abstract class Provider {
|
|
175 |
$this->is_install_package = false;
|
176 |
}
|
177 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
/**
|
179 |
* @return bool
|
180 |
*/
|
@@ -196,7 +195,7 @@ abstract class Provider {
|
|
196 |
abstract public function get_billing_cycle();
|
197 |
|
198 |
/**
|
199 |
-
* @return \WBCR\
|
200 |
*/
|
201 |
abstract public function get_license();
|
202 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_422\Premium;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory422_Plugin;
|
7 |
|
8 |
// Exit if accessed directly
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
21 |
abstract class Provider {
|
22 |
|
23 |
/**
|
24 |
+
* @var Wbcr_Factory422_Plugin
|
25 |
*/
|
26 |
protected $plugin;
|
27 |
|
38 |
/**
|
39 |
* Provider constructor.
|
40 |
*
|
41 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
42 |
* @param array $settings
|
43 |
*/
|
44 |
+
public function __construct( Wbcr_Factory422_Plugin $plugin, array $settings ) {
|
45 |
$this->plugin = $plugin;
|
46 |
$this->settings = $settings;
|
47 |
|
48 |
+
$this->register_hooks();
|
|
|
|
|
49 |
}
|
50 |
|
51 |
/**
|
72 |
return $this->get_setting( 'price' );
|
73 |
}
|
74 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
/**
|
76 |
* @return bool
|
77 |
*/
|
141 |
$this->is_install_package = false;
|
142 |
}
|
143 |
|
144 |
+
protected function register_hooks() {
|
145 |
+
/**
|
146 |
+
* Добавляет крон задачу на синхронизацию лицензии
|
147 |
+
*
|
148 |
+
* @param array $license_info
|
149 |
+
* @param string $provider
|
150 |
+
*/
|
151 |
+
add_action( "{$this->plugin->getPluginName()}/factory/premium/license_activate", function ( $provider, $license_info ) {
|
152 |
+
if ( ! wp_next_scheduled( "{$this->plugin->getPluginName()}_license_autosync" ) ) {
|
153 |
+
wp_schedule_event( time(), 'twicedaily', "{$this->plugin->getPluginName()}_license_autosync" );
|
154 |
+
}
|
155 |
+
}, 10, 2 );
|
156 |
+
|
157 |
+
/**
|
158 |
+
* Удаляет крон задачу на синхронизацию лицензии, когда лицензия деактивирована
|
159 |
+
*
|
160 |
+
* @param array $license_info
|
161 |
+
* @param string $provider
|
162 |
+
*/
|
163 |
+
add_action( "{$this->plugin->getPluginName()}/factory/premium/license_deactivate", function ( $provider, $license_info ) {
|
164 |
+
if ( wp_next_scheduled( "{$this->plugin->getPluginName()}_license_autosync" ) ) {
|
165 |
+
wp_clear_scheduled_hook( "{$this->plugin->getPluginName()}_license_autosync" );
|
166 |
+
}
|
167 |
+
}, 10, 2 );
|
168 |
+
|
169 |
+
/**
|
170 |
+
* Обработчик крон задачи на синхронизацию лицензии, выполняется 2 раза в день.
|
171 |
+
*/
|
172 |
+
add_action( "{$this->plugin->getPluginName()}_license_autosync", function () {
|
173 |
+
$this->sync();
|
174 |
+
} );
|
175 |
+
}
|
176 |
+
|
177 |
/**
|
178 |
* @return bool
|
179 |
*/
|
195 |
abstract public function get_billing_cycle();
|
196 |
|
197 |
/**
|
198 |
+
* @return \WBCR\Factory_422\Premium\Interfaces\License
|
199 |
*/
|
200 |
abstract public function get_license();
|
201 |
|
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;
|
@@ -39,11 +39,11 @@ class Premium_Upgrader extends Upgrader {
|
|
39 |
* @param $args
|
40 |
* @param bool $is_premium
|
41 |
*
|
42 |
-
* @param
|
43 |
*
|
44 |
* @throws Exception
|
45 |
*/
|
46 |
-
public function __construct(
|
47 |
parent::__construct( $plugin );
|
48 |
|
49 |
$this->plugin_basename = null;
|
@@ -102,7 +102,7 @@ class Premium_Upgrader extends Upgrader {
|
|
102 |
}
|
103 |
|
104 |
add_action( "admin_print_styles-plugins.php", [ $this, "print_styles_for_plugin_row" ] );
|
105 |
-
add_action( "
|
106 |
add_action( 'wbcr/factory/pages/impressive/print_all_notices', [
|
107 |
$this,
|
108 |
'install_notice_in_plugin_interface'
|
@@ -116,11 +116,14 @@ class Premium_Upgrader extends Upgrader {
|
|
116 |
}
|
117 |
|
118 |
/**
|
|
|
119 |
* @since 4.1.1
|
120 |
*/
|
121 |
public function init_admin_actions() {
|
122 |
-
|
123 |
-
|
|
|
|
|
124 |
|
125 |
check_admin_referer( "factory_premium_{$action}" );
|
126 |
try {
|
@@ -225,9 +228,9 @@ class Premium_Upgrader extends Upgrader {
|
|
225 |
*
|
226 |
* @since 4.1.1
|
227 |
*
|
228 |
-
* @param
|
229 |
*
|
230 |
-
* @param
|
231 |
*
|
232 |
* @return void
|
233 |
*/
|
@@ -424,7 +427,10 @@ class Premium_Upgrader extends Upgrader {
|
|
424 |
* @return string
|
425 |
*/
|
426 |
protected function get_action_url( $action ) {
|
427 |
-
$args = [
|
|
|
|
|
|
|
428 |
|
429 |
return wp_nonce_url( $this->get_admin_url( $args ), "factory_premium_{$action}" );
|
430 |
}
|
@@ -752,12 +758,12 @@ class Premium_Upgrader extends Upgrader {
|
|
752 |
$cancel_license_url = $this->get_action_url( 'cancel_license' );
|
753 |
|
754 |
$texts = [
|
755 |
-
'need_activate_license' => __( 'License activation required. A license is required to get premium plugin updates, as well as to get additional services.', '
|
756 |
-
'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.', '
|
757 |
'please_install_premium' => sprintf( __( 'Congratulations, you have activated a premium license! Please install premium add-on to use pro features now.
|
758 |
-
<a href="%s">Install</a> premium add-on or <a href="%s">cancel</a> license.', '
|
759 |
'please_activate_premium' => sprintf( __( 'Congratulations, you have activated a premium license! Please activate premium add-on to use pro features now.
|
760 |
-
<a href="%s">Activate</a> premium add-on or <a href="%s">cancel</a> license.', '
|
761 |
];
|
762 |
|
763 |
if ( isset( $texts[ $type ] ) ) {
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_422\Updates;
|
4 |
|
5 |
use Exception;
|
6 |
use Plugin_Installer_Skin;
|
7 |
use Plugin_Upgrader;
|
8 |
+
use Wbcr_Factory422_Plugin;
|
9 |
+
use Wbcr_FactoryPages422_ImpressiveThemplate;
|
10 |
use WP_Filesystem_Base;
|
11 |
use WP_Upgrader;
|
12 |
use WP_Upgrader_Skin;
|
39 |
* @param $args
|
40 |
* @param bool $is_premium
|
41 |
*
|
42 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
43 |
*
|
44 |
* @throws Exception
|
45 |
*/
|
46 |
+
public function __construct( Wbcr_Factory422_Plugin $plugin ) {
|
47 |
parent::__construct( $plugin );
|
48 |
|
49 |
$this->plugin_basename = null;
|
102 |
}
|
103 |
|
104 |
add_action( "admin_print_styles-plugins.php", [ $this, "print_styles_for_plugin_row" ] );
|
105 |
+
add_action( "wbcr/factory/admin_notices", [ $this, "admin_notices_hook" ], 10, 2 );
|
106 |
add_action( 'wbcr/factory/pages/impressive/print_all_notices', [
|
107 |
$this,
|
108 |
'install_notice_in_plugin_interface'
|
116 |
}
|
117 |
|
118 |
/**
|
119 |
+
* @since 4.2.2 Fixed bug with plugins namespace (ISW-4)
|
120 |
* @since 4.1.1
|
121 |
*/
|
122 |
public function init_admin_actions() {
|
123 |
+
$plugin_slug = $this->plugin->request->get( 'wfactory_premium_updates_plugin', null );
|
124 |
+
|
125 |
+
if ( isset( $_GET['wfactory_premium_updates_action'] ) && $this->plugin_slug === $plugin_slug ) {
|
126 |
+
$action = $this->plugin->request->get( 'wfactory_premium_updates_action' );
|
127 |
|
128 |
check_admin_referer( "factory_premium_{$action}" );
|
129 |
try {
|
228 |
*
|
229 |
* @since 4.1.1
|
230 |
*
|
231 |
+
* @param Wbcr_FactoryPages422_ImpressiveThemplate $obj
|
232 |
*
|
233 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
234 |
*
|
235 |
* @return void
|
236 |
*/
|
427 |
* @return string
|
428 |
*/
|
429 |
protected function get_action_url( $action ) {
|
430 |
+
$args = [
|
431 |
+
'wfactory_premium_updates_action' => $action,
|
432 |
+
'wfactory_premium_updates_plugin' => $this->plugin_slug
|
433 |
+
];
|
434 |
|
435 |
return wp_nonce_url( $this->get_admin_url( $args ), "factory_premium_{$action}" );
|
436 |
}
|
758 |
$cancel_license_url = $this->get_action_url( 'cancel_license' );
|
759 |
|
760 |
$texts = [
|
761 |
+
'need_activate_license' => __( 'License activation required. A license is required to get premium plugin updates, as well as to get additional services.', 'wbcr_factory_422' ),
|
762 |
+
'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_422' ),
|
763 |
'please_install_premium' => sprintf( __( 'Congratulations, you have activated a premium license! Please install premium add-on to use pro features now.
|
764 |
+
<a href="%s">Install</a> premium add-on or <a href="%s">cancel</a> license.', 'wbcr_factory_422' ), $upgrade_url, $cancel_license_url ),
|
765 |
'please_activate_premium' => sprintf( __( 'Congratulations, you have activated a premium license! Please activate premium add-on to use pro features now.
|
766 |
+
<a href="%s">Activate</a> premium add-on or <a href="%s">cancel</a> license.', 'wbcr_factory_422' ), $activate_plugin_url, $cancel_license_url )
|
767 |
];
|
768 |
|
769 |
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 |
|
@@ -90,13 +90,13 @@ class Upgrader {
|
|
90 |
*
|
91 |
* @since 4.1.1
|
92 |
*
|
93 |
-
* @param
|
94 |
* @param $args
|
95 |
* @param bool $is_premium
|
96 |
*
|
97 |
* @throws Exception
|
98 |
*/
|
99 |
-
public function __construct(
|
100 |
|
101 |
$this->plugin = $plugin;
|
102 |
|
@@ -106,7 +106,7 @@ class Upgrader {
|
|
106 |
$this->is_debug = defined( 'FACTORY_UPDATES_DEBUG' ) && FACTORY_UPDATES_DEBUG;
|
107 |
|
108 |
# Добавляем Wordpress репозиторий в список доступных репозиториев по умолчанию
|
109 |
-
self::$repositories['wordpress'] = '\WBCR\
|
110 |
|
111 |
$settings = $this->get_settings();
|
112 |
|
@@ -287,7 +287,7 @@ class Upgrader {
|
|
287 |
|
288 |
if ( isset( self::$repositories[ $repository_name ] ) && class_exists( self::$repositories[ $repository_name ] ) ) {
|
289 |
if ( self::$repositories[ $repository_name ] instanceof Repository ) {
|
290 |
-
throw new Exception( "Repository {$repository_name} must extend the class WBCR\
|
291 |
}
|
292 |
|
293 |
return new self::$repositories[ $repository_name ]( $this->plugin );
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_422\Updates;
|
4 |
|
5 |
use Exception;
|
6 |
use stdClass;
|
7 |
+
use Wbcr_Factory422_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_110\Updates\Freemius_Repository',
|
32 |
+
* 'freemius' => '\WBCR\Factory_422\Updates\Wordpress_Repository'
|
33 |
* ]
|
34 |
*/
|
35 |
public static $repositories = [];
|
42 |
protected $type = 'default';
|
43 |
|
44 |
/**
|
45 |
+
* @var Wbcr_Factory422_Plugin
|
46 |
*/
|
47 |
protected $plugin;
|
48 |
|
90 |
*
|
91 |
* @since 4.1.1
|
92 |
*
|
93 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
94 |
* @param $args
|
95 |
* @param bool $is_premium
|
96 |
*
|
97 |
* @throws Exception
|
98 |
*/
|
99 |
+
public function __construct( Wbcr_Factory422_Plugin $plugin ) {
|
100 |
|
101 |
$this->plugin = $plugin;
|
102 |
|
106 |
$this->is_debug = defined( 'FACTORY_UPDATES_DEBUG' ) && FACTORY_UPDATES_DEBUG;
|
107 |
|
108 |
# Добавляем Wordpress репозиторий в список доступных репозиториев по умолчанию
|
109 |
+
self::$repositories['wordpress'] = '\WBCR\Factory_422\Updates\Wordpress_Repository';
|
110 |
|
111 |
$settings = $this->get_settings();
|
112 |
|
287 |
|
288 |
if ( isset( self::$repositories[ $repository_name ] ) && class_exists( self::$repositories[ $repository_name ] ) ) {
|
289 |
if ( self::$repositories[ $repository_name ] instanceof Repository ) {
|
290 |
+
throw new Exception( "Repository {$repository_name} must extend the class WBCR\Factory_422\Updates\Repository interface!" );
|
291 |
}
|
292 |
|
293 |
return new self::$repositories[ $repository_name ]( $this->plugin );
|
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 bool $is_premium
|
35 |
*/
|
36 |
-
abstract public function __construct(
|
37 |
|
38 |
/**
|
39 |
* @return void
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_422\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory422_Plugin;
|
7 |
|
8 |
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit;
|
23 |
protected $initialized = false;
|
24 |
|
25 |
/**
|
26 |
+
* @var Wbcr_Factory422_Plugin
|
27 |
*/
|
28 |
protected $plugin;
|
29 |
|
30 |
/**
|
31 |
* Repository constructor.
|
32 |
*
|
33 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
34 |
* @param bool $is_premium
|
35 |
*/
|
36 |
+
abstract public function __construct( Wbcr_Factory422_Plugin $plugin );
|
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 bool $is_premium
|
25 |
*/
|
26 |
-
public function __construct(
|
27 |
$this->plugin = $plugin;
|
28 |
}
|
29 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_422\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory422_Plugin;
|
7 |
|
8 |
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit;
|
20 |
/**
|
21 |
* Wordpress constructor.
|
22 |
*
|
23 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
24 |
* @param bool $is_premium
|
25 |
*/
|
26 |
+
public function __construct( Wbcr_Factory422_Plugin $plugin ) {
|
27 |
$this->plugin = $plugin;
|
28 |
}
|
29 |
|
libs/factory/core/langs/{wbcr_factory_420-ru_RU.mo → wbcr_factory_422-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/core/langs/{wbcr_factory_420-ru_RU.po → wbcr_factory_422-ru_RU.po}
RENAMED
File without changes
|
libs/factory/forms/boot.php
CHANGED
@@ -22,174 +22,174 @@ 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 |
if ( $plugin && ! isset( $plugin->forms ) ) {
|
65 |
throw new Exception( "The module Factory Forms is not loaded for the plugin '{$plugin->getPluginName()}'." );
|
66 |
}
|
67 |
|
68 |
-
require_once(
|
69 |
-
require_once(
|
70 |
-
require_once(
|
71 |
-
require_once(
|
72 |
-
require_once(
|
73 |
-
require_once(
|
74 |
-
require_once(
|
75 |
-
require_once(
|
76 |
|
77 |
// registration of controls
|
78 |
$plugin->forms->registerControls( [
|
79 |
[
|
80 |
'type' => 'checkbox',
|
81 |
-
'class' => '
|
82 |
-
'include' =>
|
83 |
],
|
84 |
[
|
85 |
'type' => 'list',
|
86 |
-
'class' => '
|
87 |
-
'include' =>
|
88 |
],
|
89 |
[
|
90 |
'type' => 'dropdown',
|
91 |
-
'class' => '
|
92 |
-
'include' =>
|
93 |
],
|
94 |
[
|
95 |
'type' => 'dropdown-and-colors',
|
96 |
-
'class' => '
|
97 |
-
'include' =>
|
98 |
],
|
99 |
[
|
100 |
'type' => 'hidden',
|
101 |
-
'class' => '
|
102 |
-
'include' =>
|
103 |
],
|
104 |
[
|
105 |
'type' => 'hidden',
|
106 |
-
'class' => '
|
107 |
-
'include' =>
|
108 |
],
|
109 |
[
|
110 |
'type' => 'radio',
|
111 |
-
'class' => '
|
112 |
-
'include' =>
|
113 |
],
|
114 |
[
|
115 |
'type' => 'radio-colors',
|
116 |
-
'class' => '
|
117 |
-
'include' =>
|
118 |
],
|
119 |
[
|
120 |
'type' => 'textarea',
|
121 |
-
'class' => '
|
122 |
-
'include' =>
|
123 |
],
|
124 |
[
|
125 |
'type' => 'textbox',
|
126 |
-
'class' => '
|
127 |
-
'include' =>
|
128 |
],
|
129 |
[
|
130 |
'type' => 'multiple-textbox',
|
131 |
-
'class' => '
|
132 |
-
'include' =>
|
133 |
],
|
134 |
[
|
135 |
'type' => 'datetimepicker-range',
|
136 |
-
'class' => '
|
137 |
-
'include' =>
|
138 |
],
|
139 |
[
|
140 |
'type' => 'url',
|
141 |
-
'class' => '
|
142 |
-
'include' =>
|
143 |
],
|
144 |
[
|
145 |
'type' => 'wp-editor',
|
146 |
-
'class' => '
|
147 |
-
'include' =>
|
148 |
],
|
149 |
[
|
150 |
'type' => 'color',
|
151 |
-
'class' => '
|
152 |
-
'include' =>
|
153 |
],
|
154 |
[
|
155 |
'type' => 'color-and-opacity',
|
156 |
-
'class' => '
|
157 |
-
'include' =>
|
158 |
],
|
159 |
[
|
160 |
'type' => 'gradient',
|
161 |
-
'class' => '
|
162 |
-
'include' =>
|
163 |
],
|
164 |
[
|
165 |
'type' => 'font',
|
166 |
-
'class' => '
|
167 |
-
'include' =>
|
168 |
],
|
169 |
[
|
170 |
'type' => 'google-font',
|
171 |
-
'class' => '
|
172 |
-
'include' =>
|
173 |
],
|
174 |
[
|
175 |
'type' => 'pattern',
|
176 |
-
'class' => '
|
177 |
-
'include' =>
|
178 |
],
|
179 |
[
|
180 |
'type' => 'integer',
|
181 |
-
'class' => '
|
182 |
-
'include' =>
|
183 |
],
|
184 |
[
|
185 |
'type' => 'control-group',
|
186 |
-
'class' => '
|
187 |
-
'include' =>
|
188 |
],
|
189 |
[
|
190 |
'type' => 'paddings-editor',
|
191 |
-
'class' => '
|
192 |
-
'include' =>
|
193 |
],
|
194 |
] );
|
195 |
|
@@ -197,53 +197,53 @@ if ( ! function_exists( 'wbcr_factory_forms_418_register_default_controls' ) ) {
|
|
197 |
$plugin->forms->registerHolders( [
|
198 |
[
|
199 |
'type' => 'tab',
|
200 |
-
'class' => '
|
201 |
-
'include' =>
|
202 |
],
|
203 |
[
|
204 |
'type' => 'tab-item',
|
205 |
-
'class' => '
|
206 |
-
'include' =>
|
207 |
],
|
208 |
[
|
209 |
'type' => 'accordion',
|
210 |
-
'class' => '
|
211 |
-
'include' =>
|
212 |
],
|
213 |
[
|
214 |
'type' => 'accordion-item',
|
215 |
-
'class' => '
|
216 |
-
'include' =>
|
217 |
],
|
218 |
[
|
219 |
'type' => 'control-group',
|
220 |
-
'class' => '
|
221 |
-
'include' =>
|
222 |
],
|
223 |
[
|
224 |
'type' => 'control-group-item',
|
225 |
-
'class' => '
|
226 |
-
'include' =>
|
227 |
],
|
228 |
[
|
229 |
'type' => 'form-group',
|
230 |
-
'class' => '
|
231 |
-
'include' =>
|
232 |
],
|
233 |
[
|
234 |
'type' => 'more-link',
|
235 |
-
'class' => '
|
236 |
-
'include' =>
|
237 |
],
|
238 |
[
|
239 |
'type' => 'div',
|
240 |
-
'class' => '
|
241 |
-
'include' =>
|
242 |
],
|
243 |
[
|
244 |
'type' => 'columns',
|
245 |
-
'class' => '
|
246 |
-
'include' =>
|
247 |
]
|
248 |
] );
|
249 |
|
@@ -251,23 +251,23 @@ if ( ! function_exists( 'wbcr_factory_forms_418_register_default_controls' ) ) {
|
|
251 |
$plugin->forms->registerCustomElements( [
|
252 |
[
|
253 |
'type' => 'html',
|
254 |
-
'class' => '
|
255 |
-
'include' =>
|
256 |
],
|
257 |
[
|
258 |
'type' => 'separator',
|
259 |
-
'class' => '
|
260 |
-
'include' =>
|
261 |
],
|
262 |
] );
|
263 |
|
264 |
// registration of form layouts
|
265 |
$plugin->forms->registerFormLayout( [
|
266 |
'name' => 'bootstrap-3',
|
267 |
-
'class' => '
|
268 |
-
'include' =>
|
269 |
] );
|
270 |
}
|
271 |
|
272 |
-
add_action( '
|
273 |
}
|
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_420_LOADED' ) ) {
|
26 |
return;
|
27 |
}
|
28 |
|
29 |
+
define( 'FACTORY_FORMS_420_LOADED', true );
|
30 |
|
31 |
+
define( 'FACTORY_FORMS_420_VERSION', '4.2.0' );
|
32 |
|
33 |
// absolute path and URL to the files and resources of the module.
|
34 |
+
define( 'FACTORY_FORMS_420_DIR', dirname( __FILE__ ) );
|
35 |
+
define( 'FACTORY_FORMS_420_URL', plugins_url( null, __FILE__ ) );
|
36 |
|
37 |
#comp merge
|
38 |
+
require_once( FACTORY_FORMS_420_DIR . '/includes/providers/value-provider.interface.php' );
|
39 |
+
require_once( FACTORY_FORMS_420_DIR . '/includes/providers/meta-value-provider.class.php' );
|
40 |
+
require_once( FACTORY_FORMS_420_DIR . '/includes/providers/options-value-provider.class.php' );
|
41 |
|
42 |
+
require_once( FACTORY_FORMS_420_DIR . '/includes/form.class.php' );
|
43 |
#endcomp
|
44 |
|
45 |
+
load_plugin_textdomain( 'wbcr_factory_forms_420', 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_420_register_controls' hook
|
53 |
*
|
54 |
*/
|
55 |
+
if ( ! function_exists( 'wbcr_factory_forms_420_register_default_controls' ) ) {
|
56 |
|
57 |
/**
|
58 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
59 |
*
|
60 |
* @throws Exception
|
61 |
*/
|
62 |
+
function wbcr_factory_forms_420_register_default_controls( Wbcr_Factory422_Plugin $plugin ) {
|
63 |
|
64 |
if ( $plugin && ! isset( $plugin->forms ) ) {
|
65 |
throw new Exception( "The module Factory Forms is not loaded for the plugin '{$plugin->getPluginName()}'." );
|
66 |
}
|
67 |
|
68 |
+
require_once( FACTORY_FORMS_420_DIR . '/includes/html-builder.class.php' );
|
69 |
+
require_once( FACTORY_FORMS_420_DIR . '/includes/form-element.class.php' );
|
70 |
+
require_once( FACTORY_FORMS_420_DIR . '/includes/control.class.php' );
|
71 |
+
require_once( FACTORY_FORMS_420_DIR . '/includes/complex-control.class.php' );
|
72 |
+
require_once( FACTORY_FORMS_420_DIR . '/includes/holder.class.php' );
|
73 |
+
require_once( FACTORY_FORMS_420_DIR . '/includes/control-holder.class.php' );
|
74 |
+
require_once( FACTORY_FORMS_420_DIR . '/includes/custom-element.class.php' );
|
75 |
+
require_once( FACTORY_FORMS_420_DIR . '/includes/form-layout.class.php' );
|
76 |
|
77 |
// registration of controls
|
78 |
$plugin->forms->registerControls( [
|
79 |
[
|
80 |
'type' => 'checkbox',
|
81 |
+
'class' => 'Wbcr_FactoryForms420_CheckboxControl',
|
82 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/checkbox.php'
|
83 |
],
|
84 |
[
|
85 |
'type' => 'list',
|
86 |
+
'class' => 'Wbcr_FactoryForms420_ListControl',
|
87 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/list.php'
|
88 |
],
|
89 |
[
|
90 |
'type' => 'dropdown',
|
91 |
+
'class' => 'Wbcr_FactoryForms420_DropdownControl',
|
92 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/dropdown.php'
|
93 |
],
|
94 |
[
|
95 |
'type' => 'dropdown-and-colors',
|
96 |
+
'class' => 'Wbcr_FactoryForms420_DropdownAndColorsControl',
|
97 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/dropdown-and-colors.php'
|
98 |
],
|
99 |
[
|
100 |
'type' => 'hidden',
|
101 |
+
'class' => 'Wbcr_FactoryForms420_HiddenControl',
|
102 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/hidden.php'
|
103 |
],
|
104 |
[
|
105 |
'type' => 'hidden',
|
106 |
+
'class' => 'Wbcr_FactoryForms420_HiddenControl',
|
107 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/hidden.php'
|
108 |
],
|
109 |
[
|
110 |
'type' => 'radio',
|
111 |
+
'class' => 'Wbcr_FactoryForms420_RadioControl',
|
112 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/radio.php'
|
113 |
],
|
114 |
[
|
115 |
'type' => 'radio-colors',
|
116 |
+
'class' => 'Wbcr_FactoryForms420_RadioColorsControl',
|
117 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/radio-colors.php'
|
118 |
],
|
119 |
[
|
120 |
'type' => 'textarea',
|
121 |
+
'class' => 'Wbcr_FactoryForms420_TextareaControl',
|
122 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/textarea.php'
|
123 |
],
|
124 |
[
|
125 |
'type' => 'textbox',
|
126 |
+
'class' => 'Wbcr_FactoryForms420_TextboxControl',
|
127 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/textbox.php'
|
128 |
],
|
129 |
[
|
130 |
'type' => 'multiple-textbox',
|
131 |
+
'class' => 'Wbcr_FactoryForms420_MultipleTextboxControl',
|
132 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/multiple-textbox.php'
|
133 |
],
|
134 |
[
|
135 |
'type' => 'datetimepicker-range',
|
136 |
+
'class' => 'Wbcr_FactoryForms420_DatepickerRangeControl',
|
137 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/datepicker-range.php'
|
138 |
],
|
139 |
[
|
140 |
'type' => 'url',
|
141 |
+
'class' => 'Wbcr_FactoryForms420_UrlControl',
|
142 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/url.php'
|
143 |
],
|
144 |
[
|
145 |
'type' => 'wp-editor',
|
146 |
+
'class' => 'Wbcr_FactoryForms420_WpEditorControl',
|
147 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/wp-editor.php'
|
148 |
],
|
149 |
[
|
150 |
'type' => 'color',
|
151 |
+
'class' => 'Wbcr_FactoryForms420_ColorControl',
|
152 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/color.php'
|
153 |
],
|
154 |
[
|
155 |
'type' => 'color-and-opacity',
|
156 |
+
'class' => 'Wbcr_FactoryForms420_ColorAndOpacityControl',
|
157 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/color-and-opacity.php'
|
158 |
],
|
159 |
[
|
160 |
'type' => 'gradient',
|
161 |
+
'class' => 'Wbcr_FactoryForms420_GradientControl',
|
162 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/gradient.php'
|
163 |
],
|
164 |
[
|
165 |
'type' => 'font',
|
166 |
+
'class' => 'Wbcr_FactoryForms420_FontControl',
|
167 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/font.php'
|
168 |
],
|
169 |
[
|
170 |
'type' => 'google-font',
|
171 |
+
'class' => 'Wbcr_FactoryForms420_GoogleFontControl',
|
172 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/google-font.php'
|
173 |
],
|
174 |
[
|
175 |
'type' => 'pattern',
|
176 |
+
'class' => 'Wbcr_FactoryForms420_PatternControl',
|
177 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/pattern.php'
|
178 |
],
|
179 |
[
|
180 |
'type' => 'integer',
|
181 |
+
'class' => 'Wbcr_FactoryForms420_IntegerControl',
|
182 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/integer.php'
|
183 |
],
|
184 |
[
|
185 |
'type' => 'control-group',
|
186 |
+
'class' => 'Wbcr_FactoryForms420_ControlGroupHolder',
|
187 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/holders/control-group.php'
|
188 |
],
|
189 |
[
|
190 |
'type' => 'paddings-editor',
|
191 |
+
'class' => 'Wbcr_FactoryForms420_PaddingsEditorControl',
|
192 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/paddings-editor.php'
|
193 |
],
|
194 |
] );
|
195 |
|
197 |
$plugin->forms->registerHolders( [
|
198 |
[
|
199 |
'type' => 'tab',
|
200 |
+
'class' => 'Wbcr_FactoryForms420_TabHolder',
|
201 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/holders/tab.php'
|
202 |
],
|
203 |
[
|
204 |
'type' => 'tab-item',
|
205 |
+
'class' => 'Wbcr_FactoryForms420_TabItemHolder',
|
206 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/holders/tab-item.php'
|
207 |
],
|
208 |
[
|
209 |
'type' => 'accordion',
|
210 |
+
'class' => 'Wbcr_FactoryForms420_AccordionHolder',
|
211 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/holders/accordion.php'
|
212 |
],
|
213 |
[
|
214 |
'type' => 'accordion-item',
|
215 |
+
'class' => 'Wbcr_FactoryForms420_AccordionItemHolder',
|
216 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/holders/accordion-item.php'
|
217 |
],
|
218 |
[
|
219 |
'type' => 'control-group',
|
220 |
+
'class' => 'Wbcr_FactoryForms420_ControlGroupHolder',
|
221 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/holders/control-group.php'
|
222 |
],
|
223 |
[
|
224 |
'type' => 'control-group-item',
|
225 |
+
'class' => 'Wbcr_FactoryForms420_ControlGroupItem',
|
226 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/holders/control-group-item.php'
|
227 |
],
|
228 |
[
|
229 |
'type' => 'form-group',
|
230 |
+
'class' => 'Wbcr_FactoryForms420_FormGroupHolder',
|
231 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/holders/form-group.php'
|
232 |
],
|
233 |
[
|
234 |
'type' => 'more-link',
|
235 |
+
'class' => 'Wbcr_FactoryForms420_MoreLinkHolder',
|
236 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/holders/more-link.php'
|
237 |
],
|
238 |
[
|
239 |
'type' => 'div',
|
240 |
+
'class' => 'Wbcr_FactoryForms420_DivHolder',
|
241 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/holders/div.php'
|
242 |
],
|
243 |
[
|
244 |
'type' => 'columns',
|
245 |
+
'class' => 'Wbcr_FactoryForms420_ColumnsHolder',
|
246 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/holders/columns.php'
|
247 |
]
|
248 |
] );
|
249 |
|
251 |
$plugin->forms->registerCustomElements( [
|
252 |
[
|
253 |
'type' => 'html',
|
254 |
+
'class' => 'Wbcr_FactoryForms420_Html',
|
255 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/customs/html.php',
|
256 |
],
|
257 |
[
|
258 |
'type' => 'separator',
|
259 |
+
'class' => 'Wbcr_FactoryForms420_Separator',
|
260 |
+
'include' => FACTORY_FORMS_420_DIR . '/controls/customs/separator.php',
|
261 |
],
|
262 |
] );
|
263 |
|
264 |
// registration of form layouts
|
265 |
$plugin->forms->registerFormLayout( [
|
266 |
'name' => 'bootstrap-3',
|
267 |
+
'class' => 'Wbcr_FactoryForms420_Bootstrap3FormLayout',
|
268 |
+
'include' => FACTORY_FORMS_420_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
|
269 |
] );
|
270 |
}
|
271 |
|
272 |
+
add_action( 'wbcr_factory_forms_420_register_controls', 'wbcr_factory_forms_420_register_default_controls' );
|
273 |
}
|
libs/factory/forms/controls/checkbox.php
CHANGED
@@ -20,9 +20,9 @@
|
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
-
if( !class_exists('
|
24 |
|
25 |
-
class
|
26 |
|
27 |
public $type = 'checkbox';
|
28 |
|
@@ -130,10 +130,10 @@
|
|
130 |
<div <?php $this->attrs() ?>>
|
131 |
<button type="button" class="btn btn-default btn-small btn-sm factory-on <?php if( $value ) {
|
132 |
echo 'active';
|
133 |
-
} ?>"><?php _e('On', '
|
134 |
<button type="button" class="btn btn-default btn-small btn-sm factory-off <?php if( !$value ) {
|
135 |
echo 'active';
|
136 |
-
} ?>" data-value="0"><?php _e('Off', '
|
137 |
<input type="checkbox" style="display: none" id="<?php echo $name_on_form ?>" class="factory-result" name="<?php echo $name_on_form ?>" value="<?= $value ?>" <?php if( $value ) {
|
138 |
echo 'checked="checked"';
|
139 |
} ?>" />
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms420_CheckboxControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms420_CheckboxControl extends Wbcr_FactoryForms420_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_420') ?></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_420') ?></button>
|
137 |
<input type="checkbox" style="display: none" id="<?php echo $name_on_form ?>" class="factory-result" name="<?php echo $name_on_form ?>" value="<?= $value ?>" <?php if( $value ) {
|
138 |
echo 'checked="checked"';
|
139 |
} ?>" />
|
libs/factory/forms/controls/color-and-opacity.php
CHANGED
@@ -20,10 +20,10 @@
|
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
-
if( !class_exists('
|
24 |
}
|
25 |
|
26 |
-
class
|
27 |
|
28 |
public $type = 'color-and-opacity';
|
29 |
|
@@ -57,8 +57,8 @@
|
|
57 |
'way' => 'slider'
|
58 |
));
|
59 |
|
60 |
-
$this->color = new
|
61 |
-
$this->opacity = new
|
62 |
|
63 |
$this->innerControls = array($this->color, $this->opacity);
|
64 |
}
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms420_ColorAndOpacityControl') ) {
|
24 |
}
|
25 |
|
26 |
+
class Wbcr_FactoryForms420_ColorAndOpacityControl extends Wbcr_FactoryForms420_ComplexControl {
|
27 |
|
28 |
public $type = 'color-and-opacity';
|
29 |
|
57 |
'way' => 'slider'
|
58 |
));
|
59 |
|
60 |
+
$this->color = new Wbcr_FactoryForms420_ColorControl($options['color'], $form, $provider);
|
61 |
+
$this->opacity = new Wbcr_FactoryForms420_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_FactoryForms420_ColorControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms420_ColorControl extends Wbcr_FactoryForms420_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_FactoryForms420_Html') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryForms420_Html extends Wbcr_FactoryForms420_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_FactoryForms420_Separator') ) {
|
18 |
+
class Wbcr_FactoryForms420_Separator extends Wbcr_FactoryForms420_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_FactoryForms420_DatepickerRangeControl') ) {
|
33 |
|
34 |
+
class Wbcr_FactoryForms420_DatepickerRangeControl extends Wbcr_FactoryForms420_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_FactoryForms420_TextboxControl($options['range_1'], $form, $provider);
|
69 |
+
$this->range_2 = new Wbcr_FactoryForms420_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 FactoryForms420_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 FactoryForms420_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_FactoryForms420_DropdownAndColorsControl') ) {
|
41 |
|
42 |
+
class Wbcr_FactoryForms420_DropdownAndColorsControl extends Wbcr_FactoryForms420_ComplexControl {
|
43 |
|
44 |
public $type = 'dropdown-and-colors';
|
45 |
|
69 |
'name' => $this->options['name'] . '__colors',
|
70 |
));
|
71 |
|
72 |
+
$this->dropdown = new Wbcr_FactoryForms420_DropdownControl($options['dropdown'], $form, $provider);
|
73 |
+
$this->colors = new Wbcr_FactoryForms420_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_FactoryForms420_DropdownControl' ) ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms420_DropdownControl extends Wbcr_FactoryForms420_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_420' ) ) ?>'
|
127 |
};
|
128 |
</script>
|
129 |
<?php
|
268 |
}
|
269 |
|
270 |
$is_empty = $this->isAjax() || empty( $items );
|
271 |
+
$empty_list = $this->getOption( 'empty', __( '- empty -', 'wbcr_factory_forms_420' ) );
|
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_420' );
|
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_FactoryForms420_FontControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms420_FontControl extends Wbcr_FactoryForms420_ComplexControl {
|
26 |
|
27 |
public $type = 'font';
|
28 |
|
54 |
'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
|
55 |
);
|
56 |
|
57 |
+
$this->size = new Wbcr_FactoryForms420_IntegerControl($option_font_size, $form, $provider);
|
58 |
+
$this->family = new Wbcr_FactoryForms420_DropdownControl($option_font_family, $form, $provider);
|
59 |
+
$this->color = new Wbcr_FactoryForms420_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_420_fonts', $fonts);
|
70 |
+
$fonts = apply_filters('wbcr_factory_forms_420_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_420')),
|
81 |
array(
|
82 |
'group',
|
83 |
+
__('Sans Serif:', 'wbcr_factory_forms_420'),
|
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_420'),
|
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_420'),
|
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_FactoryForms420_GoogleFontControl extends Wbcr_FactoryForms420_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_FactoryForms420_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_420'))
|
53 |
);
|
54 |
|
55 |
$fontsCommon = array(
|
56 |
'group',
|
57 |
+
__('Standard:', 'wbcr_factory_forms_420'),
|
58 |
array(
|
59 |
|
60 |
array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
|
65 |
)
|
66 |
);
|
67 |
|
68 |
+
$fontsGoogleFonts = array('group', __('Google Fonts:', 'wbcr_factory_forms_420'), 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_420');
|
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_420');
|
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_420');
|
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_FactoryForms420_GradientControl') ) {
|
29 |
+
class Wbcr_FactoryForms420_GradientControl extends Wbcr_FactoryForms420_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_420' ) ?>';
|
70 |
+
factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_420' ) ?>';
|
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_FactoryForms420_HiddenControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms420_HiddenControl extends Wbcr_FactoryForms420_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_FactoryForms420_AccordionItemHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms420_AccordionItemHolder extends Wbcr_FactoryForms420_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_FactoryForms420_AccordionHolder') ) {
|
17 |
/**
|
18 |
* Tab Control Holder
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
class Wbcr_FactoryForms420_AccordionHolder extends Wbcr_FactoryForms420_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_FactoryForms420_ColumnsHolder') ) {
|
18 |
/**
|
19 |
* Columns Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms420_ColumnsHolder extends Wbcr_FactoryForms420_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_FactoryForms420_ControlGroupItem') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms420_ControlGroupItem extends Wbcr_FactoryForms420_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_FactoryForms420_ControlGroupHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms420_ControlGroupHolder extends Wbcr_FactoryForms420_ControlHolder {
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
61 |
continue;
|
62 |
}
|
63 |
|
64 |
+
$builder = new Wbcr_FactoryForms420_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_FactoryForms420_DivHolder') ) {
|
18 |
/**
|
19 |
* Div Control Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms420_DivHolder extends Wbcr_FactoryForms420_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_FactoryForms420_FormGroupHolder') ) {
|
18 |
/**
|
19 |
* Group Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms420_FormGroupHolder extends Wbcr_FactoryForms420_Holder {
|
24 |
|
25 |
/**
|
26 |
* A holder type.
|
libs/factory/forms/controls/holders/more-link.php
CHANGED
@@ -14,14 +14,14 @@
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( !class_exists('
|
18 |
|
19 |
/**
|
20 |
* Collapsed Group Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
-
class
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryForms420_MoreLinkHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Collapsed Group Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms420_MoreLinkHolder extends Wbcr_FactoryForms420_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_FactoryForms420_TabItemHolder') ) {
|
17 |
/**
|
18 |
* Tab Item Control Holder
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
class Wbcr_FactoryForms420_TabItemHolder extends Wbcr_FactoryForms420_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_FactoryForms420_TabHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms420_TabHolder extends Wbcr_FactoryForms420_Holder {
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
* @param mixed[] $options A holder options.
|
47 |
+
* @param FactoryForms420_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_FactoryForms420_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_FactoryForms420_IntegerControl') ) {
|
36 |
|
37 |
+
class Wbcr_FactoryForms420_IntegerControl extends Wbcr_FactoryForms420_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_FactoryForms420_ListControl') ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms420_ListControl extends Wbcr_FactoryForms420_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_420') ) ?>'
|
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_420'));
|
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_FactoryForms420_MultipleTextboxControl') ) {
|
19 |
|
20 |
+
class Wbcr_FactoryForms420_MultipleTextboxControl extends Wbcr_FactoryForms420_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_420') ?>
|
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_FactoryForms420_PaddingsEditorControl') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryForms420_PaddingsEditorControl extends Wbcr_FactoryForms420_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_420') ?>
|
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_FactoryForms420_PatternControl') ) {
|
19 |
|
20 |
+
class Wbcr_FactoryForms420_PatternControl extends Wbcr_FactoryForms420_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_420_patterns', array());
|
56 |
+
$this->patterns = apply_filters('wbcr_factory_forms_420_patterns-' . $name, $this->patterns);
|
57 |
|
58 |
$this->custom_patterns = $this->getOption('patterns', array());
|
59 |
|
60 |
+
$this->color = new Wbcr_FactoryForms420_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_420') ?>">
|
106 |
<i class="fa fa-flask"></i>
|
107 |
+
<span><?php _e('re-color', 'wbcr_factory_forms_420') ?></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_420') ?></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_420') ?></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_FactoryForms420_RadioColorsControl') ) {
|
31 |
|
32 |
+
class Wbcr_FactoryForms420_RadioColorsControl extends Wbcr_FactoryForms420_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_FactoryForms420_RadioControl') ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms420_RadioControl extends Wbcr_FactoryForms420_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_FactoryForms420_TextareaControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms420_TextareaControl extends Wbcr_FactoryForms420_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_FactoryForms420_TextboxControl') ) {
|
33 |
|
34 |
+
class Wbcr_FactoryForms420_TextboxControl extends Wbcr_FactoryForms420_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 FactoryForms420_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_FactoryForms420_UrlControl') ) {
|
22 |
|
23 |
+
class Wbcr_FactoryForms420_UrlControl extends Wbcr_FactoryForms420_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_FactoryForms420_WpEditorControl') ) {
|
26 |
|
27 |
+
class Wbcr_FactoryForms420_WpEditorControl extends Wbcr_FactoryForms420_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_420_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_FactoryForms420_ComplexControl') ) {
|
17 |
/**
|
18 |
* The base class for all controls.
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
abstract class Wbcr_FactoryForms420_ComplexControl extends Wbcr_FactoryForms420_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_FactoryForms420_Control[]
|
37 |
*/
|
38 |
public $inner_controls = array();
|
39 |
|
41 |
* Sets a provider for the control.
|
42 |
*
|
43 |
* @since 1.0.0
|
44 |
+
* @param Wbcr_IFactoryForms420_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_FactoryForms420_ControlHolder') ) {
|
18 |
/**
|
19 |
* The base class for control holders.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
abstract class Wbcr_FactoryForms420_ControlHolder extends Wbcr_FactoryForms420_Control {
|
24 |
|
25 |
/**
|
26 |
* Holder Elements.
|
27 |
*
|
28 |
* @since 1.0.0
|
29 |
+
* @var Wbcr_FactoryForms420_Control[]
|
30 |
*/
|
31 |
protected $elements = array();
|
32 |
|
43 |
*
|
44 |
* @since 1.0.0
|
45 |
* @param mixed[] $options A holder options.
|
46 |
+
* @param Wbcr_FactoryForms420_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_FactoryForms420_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_FactoryForms420_Control') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all controls.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
abstract class Wbcr_FactoryForms420_Control extends Wbcr_FactoryForms420_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_IFactoryForms420_ValueProvider
|
47 |
*/
|
48 |
protected $provider = null;
|
49 |
|
51 |
* Create a new instance of the control.
|
52 |
*
|
53 |
* @param mixed[] $options
|
54 |
+
* @param FactoryForms420_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 IFactoryForms420_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_FactoryForms420_CustomElement') ) {
|
18 |
/**
|
19 |
* The base class for all controls.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
abstract class Wbcr_FactoryForms420_CustomElement extends Wbcr_FactoryForms420_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_FactoryForms420_FormElement') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all form element (controls, holders).
|
23 |
*
|
24 |
* @since 1.0.0
|
25 |
*/
|
26 |
+
abstract class Wbcr_FactoryForms420_FormElement {
|
27 |
|
28 |
/**
|
29 |
* A type of an elemnt.
|
37 |
* An html attribute builder.
|
38 |
*
|
39 |
* @since 1.0.0
|
40 |
+
* @var Wbcr_FactoryForms420_HtmlAttributeBuilder
|
41 |
*/
|
42 |
private $html_builder;
|
43 |
|
53 |
* A parent form.
|
54 |
*
|
55 |
* @since 1.0.0
|
56 |
+
* @var Wbcr_FactoryForms420_Form
|
57 |
*/
|
58 |
protected $form;
|
59 |
|
61 |
* A form layout.
|
62 |
*
|
63 |
* @since 1.0.0
|
64 |
+
* @var Wbcr_FactoryForms420_FormLayout
|
65 |
*/
|
66 |
protected $layout;
|
67 |
|
94 |
*
|
95 |
* @since 1.0.0
|
96 |
* @param mixed[] $options A holder options.
|
97 |
+
* @param Wbcr_FactoryForms420_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_FactoryForms420_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_FactoryForms420_FormLayout') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all form layouts.
|
21 |
*/
|
22 |
+
abstract class Wbcr_FactoryForms420_FormLayout extends Wbcr_FactoryForms420_Holder {
|
23 |
|
24 |
/**
|
25 |
* A form layout name.
|
42 |
*
|
43 |
* @since 1.0.0
|
44 |
* @param mixed[] $options A holder options.
|
45 |
+
* @param Wbcr_FactoryForms420_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-420-' . $this->type);
|
56 |
+
$this->addCssClass('factory-forms-420-' . $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 = array(),
|
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_420_plugin_created', 'wbcr_factory_forms_420_plugin_created');
|
19 |
|
20 |
+
function wbcr_factory_forms_420_plugin_created($plugin)
|
21 |
{
|
22 |
+
$plugin->forms = new Wbcr_FactoryForms420_Manager($plugin);
|
23 |
}
|
24 |
|
25 |
+
if( !class_exists('Wbcr_FactoryForms420_Manager') ) {
|
26 |
|
27 |
+
class Wbcr_FactoryForms420_Manager {
|
28 |
|
29 |
// ----------------------------------------------------
|
30 |
// Static fields and methods
|
57 |
/**
|
58 |
* Registers a set of new controls.
|
59 |
*
|
60 |
+
* @see FactoryForms420_Form::registerControl()
|
61 |
*
|
62 |
* @since 1.0.0
|
63 |
* @return void
|
95 |
/**
|
96 |
* Registers a set of new holder controls.
|
97 |
*
|
98 |
+
* @see FactoryForms420_Form::registerHolder()
|
99 |
*
|
100 |
* @since 1.0.0
|
101 |
* @return void
|
129 |
/**
|
130 |
* Registers a set of new custom form elements.
|
131 |
*
|
132 |
+
* @see FactoryForms420_Form::registerCustomElement()
|
133 |
*
|
134 |
* @since 1.0.0
|
135 |
* @return void
|
180 |
public static $controls_registered = false;
|
181 |
}
|
182 |
}
|
183 |
+
if( !class_exists('Wbcr_FactoryForms420_Form') ) {
|
184 |
/**
|
185 |
* An abstraction for forms.
|
186 |
*/
|
187 |
+
class Wbcr_FactoryForms420_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_IFactoryForms420_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_FactoryForms420_FormLayout
|
249 |
*/
|
250 |
public $layout;
|
251 |
|
261 |
*
|
262 |
* @since 1.0.0
|
263 |
* @param array $options
|
264 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
265 |
*/
|
266 |
+
public function __construct(array $options = array(), Wbcr_Factory422_Plugin $plugin)
|
267 |
{
|
268 |
// register controls once, when the first form is created
|
269 |
+
if( !Wbcr_FactoryForms420_Manager::$controls_registered ) {
|
270 |
|
271 |
+
do_action('wbcr_factory_forms_420_register_controls', $plugin);
|
272 |
|
273 |
//if( !empty($plugin) ) {
|
274 |
+
do_action('wbcr_factory_forms_420_register_controls_' . $plugin->getPluginName(), $plugin);
|
275 |
//}
|
276 |
|
277 |
+
Wbcr_FactoryForms420_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_FactoryForms420_Manager::$temper = 'flat';
|
293 |
}
|
294 |
|
295 |
/**
|
296 |
* Sets a provider for the control.
|
297 |
*
|
298 |
* @since 1.0.0
|
299 |
+
* @param Wbcr_IFactoryForms420_ValueProvider $provider
|
300 |
* @return void
|
301 |
*/
|
302 |
public function setProvider($provider)
|
332 |
*/
|
333 |
public function getItems()
|
334 |
{
|
335 |
+
return apply_filters('wbcr_factory_422_form_items', $this->items, $this->name);
|
336 |
}
|
337 |
|
338 |
/**
|
339 |
* Returns form controls (control objects).
|
340 |
*
|
341 |
* @since 1.0.0
|
342 |
+
* @return Wbcr_FactoryForms420_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_FactoryForms420_Control[]
|
359 |
*/
|
360 |
|
361 |
public function createControls($holder = null)
|
395 |
*
|
396 |
* @since 1.0.0
|
397 |
* @param array $item Item data.
|
398 |
+
* @return Wbcr_FactoryForms420_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_FactoryForms420_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_FactoryForms420_Control A control object.
|
437 |
*/
|
438 |
public function createControl($item)
|
439 |
{
|
441 |
|
442 |
if( is_array($item) ) {
|
443 |
|
444 |
+
$control_data = Wbcr_FactoryForms420_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_FactoryForms420_Holder A control holder object.
|
469 |
*/
|
470 |
public function createHolder($item)
|
471 |
{
|
473 |
|
474 |
if( is_array($item) ) {
|
475 |
|
476 |
+
$holderData = Wbcr_FactoryForms420_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_FactoryForms420_FormElement A custom form element object.
|
495 |
*/
|
496 |
public function createCustomElement($item)
|
497 |
{
|
499 |
|
500 |
if( is_array($item) ) {
|
501 |
|
502 |
+
$data = Wbcr_FactoryForms420_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_FactoryForms420_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_FactoryForms420_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_FactoryForms420_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_FactoryForms420_Manager::$registered_controls;
|
606 |
} elseif( self::isControlHolder($type) ) {
|
607 |
+
$haystack = Wbcr_FactoryForms420_Manager::$registered_holders;
|
608 |
}
|
609 |
|
610 |
if( isset($haystack[$type]) ) {
|
660 |
*/
|
661 |
public static function isControl($item)
|
662 |
{
|
663 |
+
return isset(Wbcr_FactoryForms420_Manager::$registered_controls[$item['type']]);
|
664 |
}
|
665 |
|
666 |
/**
|
672 |
*/
|
673 |
public static function isControlHolder($item)
|
674 |
{
|
675 |
+
return isset(Wbcr_FactoryForms420_Manager::$registered_holders[$item['type']]);
|
676 |
}
|
677 |
|
678 |
/**
|
684 |
*/
|
685 |
public static function isCustomElement($item)
|
686 |
{
|
687 |
+
return isset(Wbcr_FactoryForms420_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_FactoryForms420_Holder') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for control holders.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
abstract class Wbcr_FactoryForms420_Holder extends Wbcr_FactoryForms420_FormElement {
|
25 |
|
26 |
/**
|
27 |
* Holder Elements.
|
28 |
*
|
29 |
* @since 1.0.0
|
30 |
+
* @var Wbcr_FactoryForms420_Control[]
|
31 |
*/
|
32 |
protected $elements = array();
|
33 |
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
* @param mixed[] $options A holder options.
|
47 |
+
* @param Wbcr_FactoryForms420_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_FactoryForms420_Control[].
|
60 |
*/
|
61 |
public function getElements()
|
62 |
{
|
84 |
$is_first_item = false;
|
85 |
}
|
86 |
|
87 |
+
do_action('wbcr_factory_422_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_FactoryForms420_HtmlAttributeBuilder') ) {
|
18 |
/**
|
19 |
* Html Attribute Builder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms420_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_FactoryForms420_OptionsValueProvider') ) {
|
18 |
|
19 |
/**
|
20 |
* Factory Meta Value Provider
|
24 |
*
|
25 |
* @since 1.0.0
|
26 |
*/
|
27 |
+
class Wbcr_FactoryForms420_MetaValueProvider implements Wbcr_IFactoryForms420_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_FactoryForms420_OptionsValueProvider') ) {
|
17 |
|
18 |
/**
|
19 |
* Factory Options Value Provider
|
22 |
*
|
23 |
* @since 1.0.0
|
24 |
*/
|
25 |
+
class Wbcr_FactoryForms420_OptionsValueProvider implements Wbcr_IFactoryForms420_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_Factory422_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_IFactoryForms420_ValueProvider') ) {
|
18 |
/**
|
19 |
* The interface for all value provides.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
interface Wbcr_IFactoryForms420_ValueProvider {
|
24 |
|
25 |
/**
|
26 |
* Inits a form a provider to get data from a storage.
|
libs/factory/forms/langs/{wbcr_factory_forms_418-ru_RU.mo → wbcr_factory_forms_420-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/forms/langs/{wbcr_factory_forms_418-ru_RU.po → wbcr_factory_forms_420-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_FactoryForms420_Bootstrap3FormLayout') ) {
|
18 |
/**
|
19 |
* A form layout based on Twitter Bootstrap 3
|
20 |
*/
|
21 |
+
class Wbcr_FactoryForms420_Bootstrap3FormLayout extends Wbcr_FactoryForms420_FormLayout {
|
22 |
|
23 |
public $name = 'default';
|
24 |
|
27 |
*
|
28 |
* @since 1.0.0
|
29 |
* @param array $options A holder options.
|
30 |
+
* @param Wbcr_FactoryForms420_Form $form A parent form.
|
31 |
*/
|
32 |
public function __construct($options, $form)
|
33 |
{
|
68 |
}
|
69 |
|
70 |
/**
|
71 |
+
* @param Wbcr_FactoryForms420_Control $control
|
72 |
*/
|
73 |
public function beforeControl($control)
|
74 |
{
|
116 |
}
|
117 |
|
118 |
/**
|
119 |
+
* @param Wbcr_FactoryForms420_Control $control
|
120 |
*/
|
121 |
public function afterControl($control)
|
122 |
{
|
168 |
}
|
169 |
|
170 |
/**
|
171 |
+
* @param Wbcr_FactoryForms420_Control $control
|
172 |
* @param int $index
|
173 |
* @param int $total
|
174 |
*/
|
193 |
}
|
194 |
|
195 |
/**
|
196 |
+
* @param Wbcr_FactoryForms420_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_110_LOADED' ) ) {
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
define( 'FACTORY_FREEMIUS_110_VERSION', '1.1.0' );
|
22 |
|
23 |
+
define( 'FACTORY_FREEMIUS_110_LOADED', true );
|
24 |
+
define( 'FACTORY_FREEMIUS_110_DIR', dirname( __FILE__ ) );
|
25 |
+
define( 'FACTORY_FREEMIUS_110_URL', plugins_url( null, __FILE__ ) );
|
26 |
|
27 |
#comp merge
|
28 |
// Freemius
|
29 |
+
require_once( FACTORY_FREEMIUS_110_DIR . '/includes/entities/class-freemius-entity.php' );
|
30 |
+
require_once( FACTORY_FREEMIUS_110_DIR . '/includes/entities/class-freemius-scope.php' );
|
31 |
+
require_once( FACTORY_FREEMIUS_110_DIR . '/includes/entities/class-freemius-user.php' );
|
32 |
+
require_once( FACTORY_FREEMIUS_110_DIR . '/includes/entities/class-freemius-site.php' );
|
33 |
+
require_once( FACTORY_FREEMIUS_110_DIR . '/includes/entities/class-freemius-license.php' );
|
34 |
+
require_once( FACTORY_FREEMIUS_110_DIR . '/includes/licensing/class-freemius-provider.php' );
|
35 |
+
require_once( FACTORY_FREEMIUS_110_DIR . '/includes/updates/class-freemius-repository.php' );
|
36 |
|
37 |
if ( ! class_exists( 'Freemius_Api_WordPress' ) ) {
|
38 |
+
require_once FACTORY_FREEMIUS_110_DIR . '/includes/sdk/FreemiusWordPress.php';
|
39 |
}
|
40 |
|
41 |
+
require_once( FACTORY_FREEMIUS_110_DIR . '/includes/class-freemius-api.php' );
|
42 |
|
43 |
/**
|
44 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
45 |
*/
|
46 |
+
add_action( 'wbcr_factory_freemius_110_plugin_created', function ( $plugin ) {
|
47 |
# Устанавливаем класс провайдера лицензий для премиум менеджера
|
48 |
+
$plugin->set_license_provider( 'freemius', 'WBCR\Factory_Freemius_110\Premium\Provider' );
|
49 |
# Устанавливаем класс репозитория обновлений для менеджера обновлений
|
50 |
+
$plugin->set_update_repository( 'freemius', 'WBCR\Factory_Freemius_110\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_110;
|
4 |
|
5 |
use Freemius_Api_WordPress;
|
6 |
use Freemius_Exception;
|
7 |
+
use Wbcr_Factory422_Plugin;
|
8 |
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
exit;
|
33 |
private $api;
|
34 |
|
35 |
/**
|
36 |
+
* @var Wbcr_Factory422_Plugin
|
37 |
*/
|
38 |
private $plugin;
|
39 |
|
48 |
private static $clock_diff;
|
49 |
|
50 |
/**
|
51 |
+
* @param Wbcr_Factory422_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_Factory422_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_Factory422_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_Factory422_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_110\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 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
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_110\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_422\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_110\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_110\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_110\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_110\Entities;
|
4 |
|
5 |
if ( ! defined( 'ABSPATH' ) ) {
|
6 |
exit;
|
libs/factory/freemius/includes/licensing/class-freemius-provider.php
CHANGED
@@ -1,17 +1,16 @@
|
|
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 |
-
use stdClass;
|
15 |
|
16 |
// Exit if accessed directly
|
17 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -19,8 +18,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
19 |
}
|
20 |
|
21 |
/**
|
22 |
-
* @author
|
23 |
-
* @link https://webcraftic.com
|
24 |
* @copyright (c) 2018 Webraftic Ltd, Freemius, Inc.
|
25 |
* @version 1.0
|
26 |
*/
|
@@ -42,17 +40,17 @@ final class Provider extends License_Provider {
|
|
42 |
private $slug;
|
43 |
|
44 |
/**
|
45 |
-
* @var \WBCR\
|
46 |
*/
|
47 |
private $site_api;
|
48 |
|
49 |
/**
|
50 |
-
* @var \WBCR\
|
51 |
*/
|
52 |
private $plugin_api;
|
53 |
|
54 |
/**
|
55 |
-
* @var \WBCR\
|
56 |
*/
|
57 |
private $user_api;
|
58 |
|
@@ -84,11 +82,11 @@ final class Provider extends License_Provider {
|
|
84 |
/**
|
85 |
* Manager constructor.
|
86 |
*
|
87 |
-
* @param
|
88 |
*
|
89 |
* @throws Exception
|
90 |
*/
|
91 |
-
public function __construct(
|
92 |
parent::__construct( $plugin, $settings );
|
93 |
|
94 |
$this->plugin_id = $this->get_setting( 'plugin_id', null );
|
@@ -147,7 +145,7 @@ final class Provider extends License_Provider {
|
|
147 |
}
|
148 |
|
149 |
/**
|
150 |
-
* @return \WBCR\
|
151 |
* @throws Exception
|
152 |
*/
|
153 |
public function get_license() {
|
@@ -234,6 +232,8 @@ final class Provider extends License_Provider {
|
|
234 |
}
|
235 |
|
236 |
/**
|
|
|
|
|
237 |
* @param string $key
|
238 |
*
|
239 |
* @return bool|mixed
|
@@ -335,18 +335,22 @@ final class Provider extends License_Provider {
|
|
335 |
];
|
336 |
|
337 |
/**
|
338 |
-
*
|
339 |
*
|
340 |
-
* @
|
|
|
341 |
*
|
|
|
342 |
* @param string $license_info Дополнительная информация о лицензии
|
343 |
*/
|
344 |
-
do_action(
|
345 |
|
346 |
return true;
|
347 |
}
|
348 |
|
349 |
/**
|
|
|
|
|
350 |
* @return bool
|
351 |
* @throws \Freemius_Exception
|
352 |
* @throws Exception
|
@@ -375,13 +379,15 @@ final class Provider extends License_Provider {
|
|
375 |
$this->delete_license_data();
|
376 |
|
377 |
/**
|
378 |
-
*
|
379 |
*
|
380 |
-
* @
|
|
|
381 |
*
|
|
|
382 |
* @param string $license_info Дополнительная информация о лицензии
|
383 |
*/
|
384 |
-
do_action(
|
385 |
|
386 |
return true;
|
387 |
}
|
@@ -400,14 +406,22 @@ final class Provider extends License_Provider {
|
|
400 |
$site_api = $this->get_api_site_scope( $this->license_site );
|
401 |
$user_api = $this->get_api_user_scope( $this->license_user );
|
402 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
403 |
$use_license_key = urlencode( $this->license->secret_key );
|
404 |
$request_license_path = $this->get_license_endpoint( $this->license ) . '.json?license_key=' . $use_license_key;
|
405 |
$request_license = $site_api->call( $request_license_path, 'GET' );
|
406 |
|
407 |
-
|
408 |
-
|
409 |
-
|
410 |
-
if ( $request_installs->installs[0]->license_id !== $this->license->id ) {
|
411 |
$this->deactivate();
|
412 |
|
413 |
return true;
|
@@ -430,6 +444,18 @@ final class Provider extends License_Provider {
|
|
430 |
$this->license->populate( $request_license );
|
431 |
$this->save_license_data();
|
432 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
433 |
$plugin_name = $this->plugin->getPluginName();
|
434 |
$license_info = [
|
435 |
'provider' => 'freemius',
|
@@ -439,13 +465,14 @@ final class Provider extends License_Provider {
|
|
439 |
];
|
440 |
|
441 |
/**
|
442 |
-
*
|
443 |
*
|
444 |
-
* @
|
|
|
445 |
*
|
446 |
* @param string $license_info Дополнительная информация о лицензии
|
447 |
*/
|
448 |
-
do_action(
|
449 |
|
450 |
return true;
|
451 |
}
|
@@ -562,7 +589,7 @@ final class Provider extends License_Provider {
|
|
562 |
/**
|
563 |
* @param bool $flush
|
564 |
*
|
565 |
-
* @return \WBCR\
|
566 |
* @throws Exception
|
567 |
*/
|
568 |
private function get_api_user_scope( User $user, $flush = false ) {
|
@@ -576,7 +603,7 @@ final class Provider extends License_Provider {
|
|
576 |
/**
|
577 |
* @param bool $flush
|
578 |
*
|
579 |
-
* @return \WBCR\
|
580 |
* @throws Exception
|
581 |
*/
|
582 |
private function get_api_site_scope( Site $site, $flush = false ) {
|
@@ -590,7 +617,7 @@ final class Provider extends License_Provider {
|
|
590 |
/**
|
591 |
* Get plugin public API scope.
|
592 |
*
|
593 |
-
* @return \WBCR\
|
594 |
* @throws Exception
|
595 |
*/
|
596 |
private function get_api_plugin_scope() {
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_110\Premium;
|
4 |
+
|
5 |
+
use WBCR\Factory_Freemius_110\Entities\License;
|
6 |
+
use WBCR\Factory_Freemius_110\Entities\Plugin;
|
7 |
+
use WBCR\Factory_Freemius_110\Entities\Site;
|
8 |
+
use WBCR\Factory_Freemius_110\Entities\User;
|
9 |
+
use WBCR\Factory_422\Premium\Provider as License_Provider;
|
10 |
+
use Wbcr_Factory422_Plugin;
|
11 |
+
use WBCR\Factory_Freemius_110\Api;
|
12 |
use WP_Error;
|
13 |
use Exception;
|
|
|
14 |
|
15 |
// Exit if accessed directly
|
16 |
if ( ! defined( 'ABSPATH' ) ) {
|
18 |
}
|
19 |
|
20 |
/**
|
21 |
+
* @author Alex Kovalev <alex.kovalevv@gmail.com>, Github: https://github.com/alexkovalevv
|
|
|
22 |
* @copyright (c) 2018 Webraftic Ltd, Freemius, Inc.
|
23 |
* @version 1.0
|
24 |
*/
|
40 |
private $slug;
|
41 |
|
42 |
/**
|
43 |
+
* @var \WBCR\Factory_Freemius_110\Api
|
44 |
*/
|
45 |
private $site_api;
|
46 |
|
47 |
/**
|
48 |
+
* @var \WBCR\Factory_Freemius_110\Api
|
49 |
*/
|
50 |
private $plugin_api;
|
51 |
|
52 |
/**
|
53 |
+
* @var \WBCR\Factory_Freemius_110\Api
|
54 |
*/
|
55 |
private $user_api;
|
56 |
|
82 |
/**
|
83 |
* Manager constructor.
|
84 |
*
|
85 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
86 |
*
|
87 |
* @throws Exception
|
88 |
*/
|
89 |
+
public function __construct( Wbcr_Factory422_Plugin $plugin, array $settings ) {
|
90 |
parent::__construct( $plugin, $settings );
|
91 |
|
92 |
$this->plugin_id = $this->get_setting( 'plugin_id', null );
|
145 |
}
|
146 |
|
147 |
/**
|
148 |
+
* @return \WBCR\Factory_Freemius_110\Entities\License|null
|
149 |
* @throws Exception
|
150 |
*/
|
151 |
public function get_license() {
|
232 |
}
|
233 |
|
234 |
/**
|
235 |
+
* Активирует лицензицию
|
236 |
+
*
|
237 |
* @param string $key
|
238 |
*
|
239 |
* @return bool|mixed
|
335 |
];
|
336 |
|
337 |
/**
|
338 |
+
* Дейтсвие сработает после того, как лицензия будет успешно активирована
|
339 |
*
|
340 |
+
* @since 1.0.9 Изменил имя хука на {$plugin_name}/factory/premium/license_activate
|
341 |
+
* @since 1.0.0 Добавлен
|
342 |
*
|
343 |
+
* @param string $provider Провайдер лицензии
|
344 |
* @param string $license_info Дополнительная информация о лицензии
|
345 |
*/
|
346 |
+
do_action( "{$plugin_name}/factory/premium/license_activate", 'freemius', $license_info );
|
347 |
|
348 |
return true;
|
349 |
}
|
350 |
|
351 |
/**
|
352 |
+
* Деактивирует лицензию
|
353 |
+
*
|
354 |
* @return bool
|
355 |
* @throws \Freemius_Exception
|
356 |
* @throws Exception
|
379 |
$this->delete_license_data();
|
380 |
|
381 |
/**
|
382 |
+
* Дейтсвие сработает после того, как лицензия будет успешно деактивирована
|
383 |
*
|
384 |
+
* @since 1.0.9 Изменил имя хука на {$plugin_name}/factory/premium/license_deactivate
|
385 |
+
* @since 1.0.0 Добавлен
|
386 |
*
|
387 |
+
* @param string $provider Провайдер лицензии
|
388 |
* @param string $license_info Дополнительная информация о лицензии
|
389 |
*/
|
390 |
+
do_action( "{$plugin_name}/factory/premium/license_deactivate", 'freemius', $license_info );
|
391 |
|
392 |
return true;
|
393 |
}
|
406 |
$site_api = $this->get_api_site_scope( $this->license_site );
|
407 |
$user_api = $this->get_api_user_scope( $this->license_user );
|
408 |
|
409 |
+
$request_install = $site_api->call( '/', 'GET' );
|
410 |
+
|
411 |
+
// Если установка не найдена или неактивна, деактивируем лицензию
|
412 |
+
if ( isset( $request_install->error ) || ! ( isset( $request_install->is_active ) && $request_install->is_active ) ) {
|
413 |
+
$this->deactivate();
|
414 |
+
|
415 |
+
return true;
|
416 |
+
}
|
417 |
+
|
418 |
$use_license_key = urlencode( $this->license->secret_key );
|
419 |
$request_license_path = $this->get_license_endpoint( $this->license ) . '.json?license_key=' . $use_license_key;
|
420 |
$request_license = $site_api->call( $request_license_path, 'GET' );
|
421 |
|
422 |
+
// Если лицензия не найдена или неактивна или тарифный план не совпадает с текущей установкой,
|
423 |
+
// деактивируем лицензию.
|
424 |
+
if ( isset( $request_license->error ) || ! ( isset( $request_license->plan_id ) && $request_license->plan_id == $request_install->plan_id ) ) {
|
|
|
425 |
$this->deactivate();
|
426 |
|
427 |
return true;
|
444 |
$this->license->populate( $request_license );
|
445 |
$this->save_license_data();
|
446 |
|
447 |
+
// Обновляем информацию о сайте и сервере пользователя
|
448 |
+
$site_api->call( '/', 'put', [
|
449 |
+
'id' => $this->license_site->id,
|
450 |
+
'uid' => $this->get_unique_site_id(),
|
451 |
+
'plugin_version' => $this->plugin->getPluginVersion(),
|
452 |
+
'language' => get_bloginfo( 'language' ),
|
453 |
+
'charset' => get_bloginfo( 'charset' ),
|
454 |
+
'platform_version' => get_bloginfo( 'version' ),
|
455 |
+
'sdk_version' => '2.2.3',
|
456 |
+
'programming_language_version' => phpversion()
|
457 |
+
] );
|
458 |
+
|
459 |
$plugin_name = $this->plugin->getPluginName();
|
460 |
$license_info = [
|
461 |
'provider' => 'freemius',
|
465 |
];
|
466 |
|
467 |
/**
|
468 |
+
* Выполняется, когда синхронизация завершена успешно, без деактивации
|
469 |
*
|
470 |
+
* @since 1.0.9 Изменил имя хука на {$plugin_name}/factory/premium/license_sync
|
471 |
+
* @since 1.0.0 Добавлен
|
472 |
*
|
473 |
* @param string $license_info Дополнительная информация о лицензии
|
474 |
*/
|
475 |
+
do_action( "{$plugin_name}/factory/premium/license_sync", $license_info );
|
476 |
|
477 |
return true;
|
478 |
}
|
589 |
/**
|
590 |
* @param bool $flush
|
591 |
*
|
592 |
+
* @return \WBCR\Factory_Freemius_110\Api
|
593 |
* @throws Exception
|
594 |
*/
|
595 |
private function get_api_user_scope( User $user, $flush = false ) {
|
603 |
/**
|
604 |
* @param bool $flush
|
605 |
*
|
606 |
+
* @return \WBCR\Factory_Freemius_110\Api
|
607 |
* @throws Exception
|
608 |
*/
|
609 |
private function get_api_site_scope( Site $site, $flush = false ) {
|
617 |
/**
|
618 |
* Get plugin public API scope.
|
619 |
*
|
620 |
+
* @return \WBCR\Factory_Freemius_110\Api
|
621 |
* @throws Exception
|
622 |
*/
|
623 |
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,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
20 |
class Freemius_Repository extends Repository {
|
21 |
|
22 |
/**
|
23 |
-
* @var \WBCR\
|
24 |
*/
|
25 |
private $premium;
|
26 |
|
@@ -28,11 +28,11 @@ class Freemius_Repository extends Repository {
|
|
28 |
* Freemius constructor.
|
29 |
* @since 4.0.0
|
30 |
*
|
31 |
-
* @param
|
32 |
*
|
33 |
* @throws Exception
|
34 |
*/
|
35 |
-
public function __construct(
|
36 |
$this->plugin = $plugin;
|
37 |
$this->premium = $this->plugin->premium;
|
38 |
}
|
@@ -41,7 +41,7 @@ class Freemius_Repository extends Repository {
|
|
41 |
* @throws Exception
|
42 |
*/
|
43 |
public function init() {
|
44 |
-
if ( ! $this->premium instanceof \WBCR\
|
45 |
throw new Exception( "This repository type requires Freemius premium provider." );
|
46 |
}
|
47 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_110\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
7 |
+
use Wbcr_Factory422_Plugin;
|
8 |
+
use WBCR\Factory_422\Updates\Repository;
|
9 |
|
10 |
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
exit;
|
20 |
class Freemius_Repository extends Repository {
|
21 |
|
22 |
/**
|
23 |
+
* @var \WBCR\Factory_Freemius_110\Premium\Provider
|
24 |
*/
|
25 |
private $premium;
|
26 |
|
28 |
* Freemius constructor.
|
29 |
* @since 4.0.0
|
30 |
*
|
31 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
32 |
*
|
33 |
* @throws Exception
|
34 |
*/
|
35 |
+
public function __construct( Wbcr_Factory422_Plugin $plugin ) {
|
36 |
$this->plugin = $plugin;
|
37 |
$this->premium = $this->plugin->premium;
|
38 |
}
|
41 |
* @throws Exception
|
42 |
*/
|
43 |
public function init() {
|
44 |
+
if ( ! $this->premium instanceof \WBCR\Factory_Freemius_110\Premium\Provider ) {
|
45 |
throw new Exception( "This repository type requires Freemius premium provider." );
|
46 |
}
|
47 |
|
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 |
-
require(
|
43 |
|
19 |
return;
|
20 |
}
|
21 |
|
22 |
+
if ( defined( 'FACTORY_PAGES_422_LOADED' ) ) {
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
+
define( 'FACTORY_PAGES_422_LOADED', true );
|
27 |
|
28 |
+
define( 'FACTORY_PAGES_422_VERSION', '4.2.2' );
|
29 |
|
30 |
+
define( 'FACTORY_PAGES_422_DIR', dirname( __FILE__ ) );
|
31 |
+
define( 'FACTORY_PAGES_422_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_422', false, dirname( plugin_basename( __FILE__ ) ) . '/langs' );
|
38 |
|
39 |
+
require( FACTORY_PAGES_422_DIR . '/pages.php' );
|
40 |
+
require( FACTORY_PAGES_422_DIR . '/includes/page.class.php' );
|
41 |
+
require( FACTORY_PAGES_422_DIR . '/includes/admin-page.class.php' );
|
42 |
+
require( FACTORY_PAGES_422_DIR . '/templates/impressive-page.class.php' );
|
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_FactoryPages420_AdminPage' ) ) {
|
|
209 |
*/
|
210 |
public $add_link_to_plugin_actions = false;
|
211 |
|
212 |
-
public function __construct(
|
213 |
parent::__construct( $plugin );
|
214 |
$this->configure();
|
215 |
|
@@ -316,13 +316,13 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_AdminPage' ) ) {
|
|
316 |
public function connect() {
|
317 |
$result_id = $this->getResultId();
|
318 |
|
319 |
-
$this->hidden = apply_filters( '
|
320 |
|
321 |
if ( $this->hidden ) {
|
322 |
return;
|
323 |
}
|
324 |
|
325 |
-
$this->internal = apply_filters( '
|
326 |
|
327 |
if ( $this->internal ) {
|
328 |
$this->menu_target = null;
|
@@ -361,7 +361,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_AdminPage' ) ) {
|
|
361 |
$this->assets( $this->scripts, $this->styles );
|
362 |
|
363 |
if ( ! $this->scripts->isEmpty( 'bootstrap' ) || ! $this->styles->isEmpty( 'bootstrap' ) ) {
|
364 |
-
add_action( '
|
365 |
$this,
|
366 |
'actionAdminBootstrapScripts'
|
367 |
] );
|
@@ -490,8 +490,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_AdminPage' ) ) {
|
|
490 |
if ( preg_match( '/\\\f\d{3}/', $this->menu_icon ) ) {
|
491 |
$icon_code = $this->menu_icon;
|
492 |
} else {
|
493 |
-
$
|
494 |
-
$icon_url = str_replace( '~/', $plugin_path_info->plugin_url . '/', $this->menu_icon );
|
495 |
}
|
496 |
}
|
497 |
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if ( ! class_exists( 'Wbcr_FactoryPages422_AdminPage' ) ) {
|
18 |
|
19 |
+
class Wbcr_FactoryPages422_AdminPage extends Wbcr_FactoryPages422_Page {
|
20 |
|
21 |
/**
|
22 |
* Visible page title.
|
209 |
*/
|
210 |
public $add_link_to_plugin_actions = false;
|
211 |
|
212 |
+
public function __construct( Wbcr_Factory422_Plugin $plugin ) {
|
213 |
parent::__construct( $plugin );
|
214 |
$this->configure();
|
215 |
|
316 |
public function connect() {
|
317 |
$result_id = $this->getResultId();
|
318 |
|
319 |
+
$this->hidden = apply_filters( 'wbcr_factory_422_page_is_hidden_' . $result_id, $this->hidden );
|
320 |
|
321 |
if ( $this->hidden ) {
|
322 |
return;
|
323 |
}
|
324 |
|
325 |
+
$this->internal = apply_filters( 'wbcr_factory_422_page_is_internal_' . $result_id, $this->internal );
|
326 |
|
327 |
if ( $this->internal ) {
|
328 |
$this->menu_target = null;
|
361 |
$this->assets( $this->scripts, $this->styles );
|
362 |
|
363 |
if ( ! $this->scripts->isEmpty( 'bootstrap' ) || ! $this->styles->isEmpty( 'bootstrap' ) ) {
|
364 |
+
add_action( 'wbcr_factory_422_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), [
|
365 |
$this,
|
366 |
'actionAdminBootstrapScripts'
|
367 |
] );
|
490 |
if ( preg_match( '/\\\f\d{3}/', $this->menu_icon ) ) {
|
491 |
$icon_code = $this->menu_icon;
|
492 |
} else {
|
493 |
+
$icon_url = str_replace( '~/', $this->plugin->get_paths()->url . '/', $this->menu_icon );
|
|
|
494 |
}
|
495 |
}
|
496 |
|
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_FactoryPages420_Page' ) ) {
|
|
30 |
* Чтобы не было конфликтов с другими плагинами, используйте префиксы.
|
31 |
*
|
32 |
* @since 1.0.0
|
33 |
-
* @see
|
34 |
*
|
35 |
* @var string
|
36 |
*/
|
@@ -39,7 +39,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_Page' ) ) {
|
|
39 |
/**
|
40 |
* Current Factory Plugin.
|
41 |
*
|
42 |
-
* @var
|
43 |
*/
|
44 |
public $plugin;
|
45 |
|
@@ -51,11 +51,11 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_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_FactoryPages420_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_FactoryPages422_Page' ) ) {
|
18 |
|
19 |
+
class Wbcr_FactoryPages422_Page {
|
20 |
|
21 |
|
22 |
/**
|
30 |
* Чтобы не было конфликтов с другими плагинами, используйте префиксы.
|
31 |
*
|
32 |
* @since 1.0.0
|
33 |
+
* @see FactoryPages422_AdminPage
|
34 |
*
|
35 |
* @var string
|
36 |
*/
|
39 |
/**
|
40 |
* Current Factory Plugin.
|
41 |
*
|
42 |
+
* @var Wbcr_Factory422_Plugin
|
43 |
*/
|
44 |
public $plugin;
|
45 |
|
51 |
//private $default_actions = array();
|
52 |
|
53 |
/**
|
54 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
55 |
*
|
56 |
* @throws Exception
|
57 |
*/
|
58 |
+
public function __construct( Wbcr_Factory422_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_422/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_420-fr_FR.mo → wbcr_factory_pages_422-fr_FR.mo}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_420-fr_FR.po → wbcr_factory_pages_422-fr_FR.po}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_420-ru_RU.mo → wbcr_factory_pages_422-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_420-ru_RU.po → wbcr_factory_pages_422-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_FactoryPages422::actionAdminMenu');
|
18 |
+
add_action('network_admin_menu', 'Wbcr_FactoryPages422::actionAdminMenu');
|
19 |
|
20 |
+
if( !class_exists('Wbcr_FactoryPages422') ) {
|
21 |
/**
|
22 |
* A base class to manage pages.
|
23 |
*
|
24 |
* @since 1.0.0
|
25 |
*/
|
26 |
+
class Wbcr_FactoryPages422 {
|
27 |
|
28 |
/**
|
29 |
+
* @var Wbcr_FactoryPages422_Page[]
|
30 |
*/
|
31 |
private static $pages = array();
|
32 |
|
33 |
/**
|
34 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
35 |
* @param $class_name
|
36 |
*/
|
37 |
public static function register($plugin, $class_name)
|
59 |
}
|
60 |
}
|
61 |
|
62 |
+
public static function getPageUrl(Wbcr_Factory422_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_Factory422_Plugin $plugin
|
79 |
* @return array
|
80 |
*/
|
81 |
public static function getIds($plugin)
|
93 |
}
|
94 |
}
|
95 |
|
96 |
+
if( !function_exists('wbcr_factory_pages_422_get_page_id') ) {
|
97 |
/**
|
98 |
*
|
99 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
100 |
* @param string $page_id
|
101 |
* @return string
|
102 |
*/
|
103 |
+
function wbcr_factory_pages_422_get_page_id($plugin, $page_id)
|
104 |
{
|
105 |
return $page_id . '-' . $plugin->getPluginName();
|
106 |
}
|
libs/factory/pages/templates/assets/css/impressive.page.template.css
CHANGED
@@ -8,7 +8,7 @@
|
|
8 |
#WBCR .error {
|
9 |
display: none !important;
|
10 |
}
|
11 |
-
#WBCR .wbcr-factory-pages-
|
12 |
position: relative;
|
13 |
/**
|
14 |
Content sections
|
@@ -17,134 +17,134 @@
|
|
17 |
Widget in the sidebar of the plugin
|
18 |
*/
|
19 |
}
|
20 |
-
#WBCR .wbcr-factory-pages-
|
21 |
color: #9a9a9a;
|
22 |
}
|
23 |
-
#WBCR .wbcr-factory-pages-
|
24 |
color: #ffc107;
|
25 |
}
|
26 |
-
#WBCR .wbcr-factory-pages-
|
27 |
color: #ffeb3b;
|
28 |
}
|
29 |
-
#WBCR .wbcr-factory-pages-
|
30 |
padding: 0 20px;
|
31 |
}
|
32 |
-
#WBCR .wbcr-factory-pages-
|
33 |
font-weight: normal;
|
34 |
}
|
35 |
-
#WBCR .wbcr-factory-pages-
|
36 |
max-width: 300px;
|
37 |
}
|
38 |
-
#WBCR .wbcr-factory-pages-
|
39 |
text-align: right;
|
40 |
padding-right: 20px;
|
41 |
}
|
42 |
-
#WBCR .wbcr-factory-pages-
|
43 |
display: inline-block;
|
44 |
vertical-align: bottom;
|
45 |
}
|
46 |
-
#WBCR .wbcr-factory-pages-
|
47 |
-
#WBCR .wbcr-factory-pages-
|
48 |
outline: none;
|
49 |
}
|
50 |
-
#WBCR .wbcr-factory-pages-
|
51 |
font-weight: bold;
|
52 |
margin: 0 !important;
|
53 |
border: 0;
|
54 |
border-radius: 0;
|
55 |
padding: 15px;
|
56 |
}
|
57 |
-
#WBCR .wbcr-factory-pages-
|
58 |
margin-top: 0 !important;
|
59 |
}
|
60 |
-
#WBCR .wbcr-factory-pages-
|
61 |
background: #fff3d0;
|
62 |
}
|
63 |
-
#WBCR .wbcr-factory-pages-
|
64 |
background: #fffde9;
|
65 |
}
|
66 |
-
#WBCR .wbcr-factory-pages-
|
67 |
background: #de716d;
|
68 |
}
|
69 |
-
#WBCR .wbcr-factory-pages-
|
70 |
background: #ec8c89;
|
71 |
}
|
72 |
-
#WBCR .wbcr-factory-pages-
|
73 |
background: #d0ecc4;
|
74 |
}
|
75 |
-
#WBCR .wbcr-factory-pages-
|
76 |
background: #e0eadb;
|
77 |
}
|
78 |
-
#WBCR .wbcr-factory-pages-
|
79 |
padding: 20px 20px 40px;
|
80 |
}
|
81 |
-
#WBCR .wbcr-factory-pages-
|
82 |
display: block;
|
83 |
font-size: 11px;
|
84 |
font-weight: lighter;
|
85 |
color: #179347;
|
86 |
}
|
87 |
-
#WBCR .wbcr-factory-pages-
|
88 |
-
#WBCR .wbcr-factory-pages-
|
89 |
position: relative;
|
90 |
background: #e6e6e6;
|
91 |
overflow: hidden;
|
92 |
}
|
93 |
-
#WBCR .wbcr-factory-pages-
|
94 |
-
#WBCR .wbcr-factory-pages-
|
95 |
display: block;
|
96 |
content: '';
|
97 |
clear: both;
|
98 |
}
|
99 |
-
#WBCR .wbcr-factory-pages-
|
100 |
background: #efefef;
|
101 |
padding: 20px 0 10px 20px;
|
102 |
margin: 30px 0;
|
103 |
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
104 |
}
|
105 |
-
#WBCR .wbcr-factory-pages-
|
106 |
margin-top: 0;
|
107 |
}
|
108 |
-
#WBCR .wbcr-factory-pages-
|
109 |
font-size: 15px;
|
110 |
}
|
111 |
-
#WBCR .wbcr-factory-pages-
|
112 |
color: #8c8888;
|
113 |
font-size: 12px;
|
114 |
}
|
115 |
-
#WBCR .wbcr-factory-pages-
|
116 |
margin-left: 230px;
|
117 |
padding: 80px 0 0 0;
|
118 |
vertical-align: top;
|
119 |
background: #fff;
|
120 |
}
|
121 |
-
#WBCR .wbcr-factory-pages-
|
122 |
-
#WBCR .wbcr-factory-pages-
|
123 |
-
#WBCR .wbcr-factory-pages-
|
124 |
border: 0;
|
125 |
}
|
126 |
-
#WBCR .wbcr-factory-pages-
|
127 |
background: #efefef !important;
|
128 |
margin-bottom: -2px !important;
|
129 |
border-bottom: 1px solid #efefef !important;
|
130 |
}
|
131 |
-
#WBCR .wbcr-factory-pages-
|
132 |
margin: 0;
|
133 |
}
|
134 |
-
#WBCR .wbcr-factory-pages-
|
135 |
background: #f7f7f7;
|
136 |
}
|
137 |
-
#WBCR .wbcr-factory-pages-
|
138 |
border: 2px solid #dedede;
|
139 |
border-bottom: 0;
|
140 |
box-shadow: -1px 0 0 rgba(0, 0, 0, 0.1);
|
141 |
}
|
142 |
-
#WBCR .wbcr-factory-pages-
|
143 |
-
#WBCR .wbcr-factory-pages-
|
144 |
box-shadow: none;
|
145 |
outline: none;
|
146 |
}
|
147 |
-
#WBCR .wbcr-factory-pages-
|
148 |
position: absolute;
|
149 |
z-index: 13;
|
150 |
top: 0;
|
@@ -155,7 +155,7 @@
|
|
155 |
color: #fff;
|
156 |
border-radius: 5px 5px 0 0;
|
157 |
}
|
158 |
-
#WBCR .wbcr-factory-pages-
|
159 |
float: left;
|
160 |
padding: 25px 0;
|
161 |
font-size: 20px;
|
@@ -168,11 +168,11 @@
|
|
168 |
margin-right: 10px;
|
169 |
background: none;
|
170 |
}
|
171 |
-
#WBCR .wbcr-factory-pages-
|
172 |
display: inline-block;
|
173 |
vertical-align: middle;
|
174 |
}
|
175 |
-
#WBCR .wbcr-factory-pages-
|
176 |
font-size: 18px;
|
177 |
line-height: 30px;
|
178 |
font-weight: 300;
|
@@ -183,12 +183,12 @@
|
|
183 |
text-overflow: ellipsis;
|
184 |
color: #fff;
|
185 |
}
|
186 |
-
#WBCR .wbcr-factory-pages-
|
187 |
position: relative;
|
188 |
float: right;
|
189 |
margin: 12px;
|
190 |
}
|
191 |
-
#WBCR .wbcr-factory-pages-
|
192 |
display: inline-block;
|
193 |
vertical-align: top;
|
194 |
font-size: 13px;
|
@@ -211,49 +211,49 @@
|
|
211 |
text-decoration: none;
|
212 |
z-index: 3;
|
213 |
}
|
214 |
-
#WBCR .wbcr-factory-pages-
|
215 |
box-shadow: none;
|
216 |
min-width: 100px;
|
217 |
background-color: #8bc34a;
|
218 |
color: #fff;
|
219 |
}
|
220 |
-
#WBCR .wbcr-factory-pages-
|
221 |
background: #9dbb7b;
|
222 |
color: #fff;
|
223 |
}
|
224 |
-
#WBCR .wbcr-factory-pages-
|
225 |
box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
|
226 |
}
|
227 |
-
#WBCR .wbcr-factory-pages-
|
228 |
box-shadow: none;
|
229 |
min-width: 200px;
|
230 |
background-color: #9e9e9e;
|
231 |
color: #fff;
|
232 |
}
|
233 |
-
#WBCR .wbcr-factory-pages-
|
234 |
background: #797979;
|
235 |
color: #fff;
|
236 |
}
|
237 |
-
#WBCR .wbcr-factory-pages-
|
238 |
box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
|
239 |
}
|
240 |
-
#WBCR .wbcr-factory-pages-
|
241 |
float: left;
|
242 |
vertical-align: top;
|
243 |
width: 230px;
|
244 |
background: #e6e6e6;
|
245 |
}
|
246 |
-
#WBCR .wbcr-factory-pages-
|
247 |
padding: 0;
|
248 |
margin-bottom: 0;
|
249 |
margin-top: 80px;
|
250 |
}
|
251 |
-
#WBCR .wbcr-factory-pages-
|
252 |
display: block;
|
253 |
background: #efefef;
|
254 |
margin: 1px 0;
|
255 |
}
|
256 |
-
#WBCR .wbcr-factory-pages-
|
257 |
display: block;
|
258 |
width: 100%;
|
259 |
padding: 20px 20px;
|
@@ -264,83 +264,83 @@
|
|
264 |
text-align: left;
|
265 |
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
|
266 |
}
|
267 |
-
#WBCR .wbcr-factory-pages-
|
268 |
display: block;
|
269 |
font-weight: bold;
|
270 |
}
|
271 |
-
#WBCR .wbcr-factory-pages-
|
272 |
display: block;
|
273 |
font-size: 13px;
|
274 |
font-weight: normal;
|
275 |
text-transform: none;
|
276 |
color: #9a9a9a;
|
277 |
}
|
278 |
-
#WBCR .wbcr-factory-pages-
|
279 |
float: right;
|
280 |
color: #ccc;
|
281 |
}
|
282 |
-
#WBCR .wbcr-factory-pages-
|
283 |
clear: both;
|
284 |
}
|
285 |
-
#WBCR .wbcr-factory-pages-
|
286 |
background: #f7f6f6;
|
287 |
}
|
288 |
-
#WBCR .wbcr-factory-pages-
|
289 |
color: #9a9a9a;
|
290 |
}
|
291 |
-
#WBCR .wbcr-factory-pages-
|
292 |
-
#WBCR .wbcr-factory-pages-
|
293 |
-
#WBCR .wbcr-factory-pages-
|
294 |
-
#WBCR .wbcr-factory-pages-
|
295 |
-
#WBCR .wbcr-factory-pages-
|
296 |
outline: 0 !important;
|
297 |
box-shadow: none !important;
|
298 |
}
|
299 |
-
#WBCR .wbcr-factory-pages-
|
300 |
background: #fff;
|
301 |
}
|
302 |
-
#WBCR .wbcr-factory-pages-
|
303 |
color: #ff5722;
|
304 |
font-weight: bold;
|
305 |
border-left: 5px solid #ff5722;
|
306 |
}
|
307 |
-
#WBCR .wbcr-factory-pages-
|
308 |
color: #9a9a9a;
|
309 |
}
|
310 |
-
#WBCR .wbcr-factory-pages-
|
311 |
-
#WBCR .wbcr-factory-pages-
|
312 |
display: inline-block;
|
313 |
vertical-align: top;
|
314 |
}
|
315 |
-
#WBCR .wbcr-factory-pages-
|
316 |
width: 74.6%;
|
317 |
}
|
318 |
-
#WBCR .wbcr-factory-pages-
|
319 |
width: 100%;
|
320 |
}
|
321 |
-
#WBCR .wbcr-factory-pages-
|
322 |
margin-top: 15px;
|
323 |
}
|
324 |
-
#WBCR .wbcr-factory-pages-
|
325 |
background: #f7f7f7;
|
326 |
padding: 0 0 20px 0;
|
327 |
border: 1px solid #dad8d8;
|
328 |
box-shadow: -1px 0px 1px rgba(0, 0, 0, 0.1);
|
329 |
}
|
330 |
-
#WBCR .wbcr-factory-pages-
|
331 |
padding-top: 0 !important;
|
332 |
}
|
333 |
-
#WBCR .wbcr-factory-pages-
|
334 |
width: 25%;
|
335 |
padding: 10px;
|
336 |
margin: 0 0 -20px;
|
337 |
background-color: #f9f9f9;
|
338 |
box-shadow: -1px 1px 5px rgba(0, 0, 0, 0.1);
|
339 |
}
|
340 |
-
#WBCR .wbcr-factory-pages-
|
341 |
margin: 0 0 20px;
|
342 |
}
|
343 |
-
#WBCR .wbcr-factory-pages-
|
344 |
display: inline-block;
|
345 |
min-height: 230px;
|
346 |
width: 100%;
|
@@ -349,19 +349,19 @@
|
|
349 |
padding: 20px 15px;
|
350 |
vertical-align: top;
|
351 |
}
|
352 |
-
#WBCR .wbcr-factory-pages-
|
353 |
display: none;
|
354 |
}
|
355 |
-
#WBCR .wbcr-factory-pages-
|
356 |
background: #fff4d0;
|
357 |
}
|
358 |
-
#WBCR .wbcr-factory-pages-
|
359 |
background: #e2ffc0;
|
360 |
}
|
361 |
-
#WBCR .wbcr-factory-pages-
|
362 |
background: #ffebe9;
|
363 |
}
|
364 |
-
#WBCR .wbcr-factory-pages-
|
365 |
display: inline-block;
|
366 |
width: 16px;
|
367 |
height: 16px;
|
@@ -373,16 +373,16 @@
|
|
373 |
background: #E91E63;
|
374 |
border-radius: 3px;
|
375 |
}
|
376 |
-
#WBCR .wbcr-factory-pages-
|
377 |
background: #E91E63;
|
378 |
}
|
379 |
-
#WBCR .wbcr-factory-pages-
|
380 |
background: #9e9e9e;
|
381 |
}
|
382 |
-
#WBCR .wbcr-factory-pages-
|
383 |
background: #8bc34a;
|
384 |
}
|
385 |
-
#WBCR .wbcr-factory-pages-
|
386 |
display: block;
|
387 |
width: 80px;
|
388 |
height: 17px;
|
@@ -390,23 +390,23 @@
|
|
390 |
vertical-align: middle;
|
391 |
margin-bottom: 5px;
|
392 |
}
|
393 |
-
#WBCR .wbcr-factory-pages-
|
394 |
display: block;
|
395 |
margin: 30px auto 0;
|
396 |
outline: none;
|
397 |
}
|
398 |
-
#WBCR .wbcr-factory-pages-
|
399 |
-
#WBCR .wbcr-factory-pages-
|
400 |
box-shadow: none;
|
401 |
}
|
402 |
-
#WBCR .wbcr-factory-pages-
|
403 |
font-size: 50px;
|
404 |
margin-top: 30px;
|
405 |
text-align: center;
|
406 |
font-weight: 600;
|
407 |
color: #8BC34A;
|
408 |
}
|
409 |
-
#WBCR .wbcr-factory-pages-
|
410 |
min-height: 240px;
|
411 |
margin-bottom: 20px;
|
412 |
text-align: center;
|
@@ -414,24 +414,24 @@
|
|
414 |
padding: 30px;
|
415 |
border: 1px solid #f3f1e7;
|
416 |
}
|
417 |
-
#WBCR .wbcr-factory-pages-
|
418 |
width: 50px;
|
419 |
height: 50px;
|
420 |
font-size: 50px;
|
421 |
color: #FFC107;
|
422 |
line-height: normal;
|
423 |
}
|
424 |
-
#WBCR .wbcr-factory-pages-
|
425 |
color: #7b6111;
|
426 |
}
|
427 |
-
#WBCR .wbcr-factory-pages-
|
428 |
color: #9e9e9e;
|
429 |
}
|
430 |
-
#WBCR .wbcr-factory-pages-
|
431 |
margin-top: 20px;
|
432 |
text-align: center;
|
433 |
}
|
434 |
-
#WBCR .wbcr-factory-pages-
|
435 |
display: inline-block;
|
436 |
padding: 20px 60px;
|
437 |
background-color: #FFC107;
|
@@ -441,67 +441,67 @@
|
|
441 |
font-weight: bold;
|
442 |
transition: background-color 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
|
443 |
}
|
444 |
-
#WBCR .wbcr-factory-pages-
|
445 |
background-color: #ffce3a;
|
446 |
}
|
447 |
-
#WBCR .wbcr-factory-pages-
|
448 |
padding: 20px;
|
449 |
background: #ffffff;
|
450 |
}
|
451 |
-
#WBCR .wbcr-factory-pages-
|
452 |
-
#WBCR .wbcr-factory-pages-
|
453 |
display: none;
|
454 |
}
|
455 |
-
#WBCR .wbcr-factory-pages-
|
456 |
font-size: 18px;
|
457 |
margin-top: 10px;
|
458 |
}
|
459 |
-
#WBCR .wbcr-factory-pages-
|
460 |
padding: 10px;
|
461 |
background: #ffedeb;
|
462 |
border: 1px solid #ffdfdc;
|
463 |
margin: 15px 0;
|
464 |
}
|
465 |
-
#WBCR .wbcr-factory-pages-
|
466 |
margin-bottom: 15px;
|
467 |
color: #7b7b7b;
|
468 |
}
|
469 |
@media screen and (max-width: 1367px) {
|
470 |
-
#WBCR .wbcr-factory-pages-
|
471 |
width: 69.6%;
|
472 |
}
|
473 |
-
#WBCR .wbcr-factory-pages-
|
474 |
width: 30%;
|
475 |
}
|
476 |
}
|
477 |
@media screen and (max-width: 1320px) {
|
478 |
-
#WBCR .wbcr-factory-pages-
|
479 |
width: 100%;
|
480 |
}
|
481 |
-
#WBCR .wbcr-factory-pages-
|
482 |
display: none !important;
|
483 |
}
|
484 |
-
#WBCR .wbcr-factory-pages-
|
485 |
display: none !important;
|
486 |
}
|
487 |
-
#WBCR .wbcr-factory-pages-
|
488 |
display: none !important;
|
489 |
}
|
490 |
}
|
491 |
@media screen and (max-width: 950px) {
|
492 |
-
#WBCR .wbcr-factory-pages-
|
493 |
width: 70px;
|
494 |
}
|
495 |
-
#WBCR .wbcr-factory-pages-
|
496 |
font-size: 0;
|
497 |
}
|
498 |
-
#WBCR .wbcr-factory-pages-
|
499 |
font-size: 0;
|
500 |
}
|
501 |
-
#WBCR .wbcr-factory-pages-
|
502 |
display: none !important;
|
503 |
}
|
504 |
-
#WBCR .wbcr-factory-pages-
|
505 |
margin-left: 70px;
|
506 |
}
|
507 |
}
|
8 |
#WBCR .error {
|
9 |
display: none !important;
|
10 |
}
|
11 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template {
|
12 |
position: relative;
|
13 |
/**
|
14 |
Content sections
|
17 |
Widget in the sidebar of the plugin
|
18 |
*/
|
19 |
}
|
20 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-color-grey {
|
21 |
color: #9a9a9a;
|
22 |
}
|
23 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-orange-color {
|
24 |
color: #ffc107;
|
25 |
}
|
26 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-light-orange-color {
|
27 |
color: #ffeb3b;
|
28 |
}
|
29 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .form-group {
|
30 |
padding: 0 20px;
|
31 |
}
|
32 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .form-group label {
|
33 |
font-weight: normal;
|
34 |
}
|
35 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .form-horizontal .control-label {
|
36 |
max-width: 300px;
|
37 |
}
|
38 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .factory-control-buttons {
|
39 |
text-align: right;
|
40 |
padding-right: 20px;
|
41 |
}
|
42 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .factory-from-control-list label span {
|
43 |
display: inline-block;
|
44 |
vertical-align: bottom;
|
45 |
}
|
46 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .factory-from-control-list label span input[type="checkbox"],
|
47 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .factory-from-control-list label span input[type="checkbox"]:focus {
|
48 |
outline: none;
|
49 |
}
|
50 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .alert {
|
51 |
font-weight: bold;
|
52 |
margin: 0 !important;
|
53 |
border: 0;
|
54 |
border-radius: 0;
|
55 |
padding: 15px;
|
56 |
}
|
57 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .alert + .wbcr-factory-page-group-header {
|
58 |
margin-top: 0 !important;
|
59 |
}
|
60 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .alert.alert-warning {
|
61 |
background: #fff3d0;
|
62 |
}
|
63 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .alert.alert-warning:nth-child(2n+1) {
|
64 |
background: #fffde9;
|
65 |
}
|
66 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .alert.alert-danger {
|
67 |
background: #de716d;
|
68 |
}
|
69 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .alert.alert-danger:nth-child(2n+1) {
|
70 |
background: #ec8c89;
|
71 |
}
|
72 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .alert.alert-success {
|
73 |
background: #d0ecc4;
|
74 |
}
|
75 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .alert.alert-success:nth-child(2n+1) {
|
76 |
background: #e0eadb;
|
77 |
}
|
78 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-header {
|
79 |
padding: 20px 20px 40px;
|
80 |
}
|
81 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-recomended-text {
|
82 |
display: block;
|
83 |
font-size: 11px;
|
84 |
font-weight: lighter;
|
85 |
color: #179347;
|
86 |
}
|
87 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-options,
|
88 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page {
|
89 |
position: relative;
|
90 |
background: #e6e6e6;
|
91 |
overflow: hidden;
|
92 |
}
|
93 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-options:after,
|
94 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page:after {
|
95 |
display: block;
|
96 |
content: '';
|
97 |
clear: both;
|
98 |
}
|
99 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-group-header {
|
100 |
background: #efefef;
|
101 |
padding: 20px 0 10px 20px;
|
102 |
margin: 30px 0;
|
103 |
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
104 |
}
|
105 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-group-header:first-child {
|
106 |
margin-top: 0;
|
107 |
}
|
108 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-group-header strong {
|
109 |
font-size: 15px;
|
110 |
}
|
111 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-group-header p {
|
112 |
color: #8c8888;
|
113 |
font-size: 12px;
|
114 |
}
|
115 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap {
|
116 |
margin-left: 230px;
|
117 |
padding: 80px 0 0 0;
|
118 |
vertical-align: top;
|
119 |
background: #fff;
|
120 |
}
|
121 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab-wrapper,
|
122 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap h2.nav-tab-wrapper,
|
123 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap h1.nav-tab-wrapper {
|
124 |
border: 0;
|
125 |
}
|
126 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab-active {
|
127 |
background: #efefef !important;
|
128 |
margin-bottom: -2px !important;
|
129 |
border-bottom: 1px solid #efefef !important;
|
130 |
}
|
131 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:first-child {
|
132 |
margin: 0;
|
133 |
}
|
134 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:hover {
|
135 |
background: #f7f7f7;
|
136 |
}
|
137 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab {
|
138 |
border: 2px solid #dedede;
|
139 |
border-bottom: 0;
|
140 |
box-shadow: -1px 0 0 rgba(0, 0, 0, 0.1);
|
141 |
}
|
142 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:active,
|
143 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:focus {
|
144 |
box-shadow: none;
|
145 |
outline: none;
|
146 |
}
|
147 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header {
|
148 |
position: absolute;
|
149 |
z-index: 13;
|
150 |
top: 0;
|
155 |
color: #fff;
|
156 |
border-radius: 5px 5px 0 0;
|
157 |
}
|
158 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-logo {
|
159 |
float: left;
|
160 |
padding: 25px 0;
|
161 |
font-size: 20px;
|
168 |
margin-right: 10px;
|
169 |
background: none;
|
170 |
}
|
171 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-title {
|
172 |
display: inline-block;
|
173 |
vertical-align: middle;
|
174 |
}
|
175 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-title h2 {
|
176 |
font-size: 18px;
|
177 |
line-height: 30px;
|
178 |
font-weight: 300;
|
183 |
text-overflow: ellipsis;
|
184 |
color: #fff;
|
185 |
}
|
186 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-control {
|
187 |
position: relative;
|
188 |
float: right;
|
189 |
margin: 12px;
|
190 |
}
|
191 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button {
|
192 |
display: inline-block;
|
193 |
vertical-align: top;
|
194 |
font-size: 13px;
|
211 |
text-decoration: none;
|
212 |
z-index: 3;
|
213 |
}
|
214 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save {
|
215 |
box-shadow: none;
|
216 |
min-width: 100px;
|
217 |
background-color: #8bc34a;
|
218 |
color: #fff;
|
219 |
}
|
220 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save:hover {
|
221 |
background: #9dbb7b;
|
222 |
color: #fff;
|
223 |
}
|
224 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save:active {
|
225 |
box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
|
226 |
}
|
227 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings {
|
228 |
box-shadow: none;
|
229 |
min-width: 200px;
|
230 |
background-color: #9e9e9e;
|
231 |
color: #fff;
|
232 |
}
|
233 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings:hover {
|
234 |
background: #797979;
|
235 |
color: #fff;
|
236 |
}
|
237 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings:active {
|
238 |
box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
|
239 |
}
|
240 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar {
|
241 |
float: left;
|
242 |
vertical-align: top;
|
243 |
width: 230px;
|
244 |
background: #e6e6e6;
|
245 |
}
|
246 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul {
|
247 |
padding: 0;
|
248 |
margin-bottom: 0;
|
249 |
margin-top: 80px;
|
250 |
}
|
251 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab {
|
252 |
display: block;
|
253 |
background: #efefef;
|
254 |
margin: 1px 0;
|
255 |
}
|
256 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link {
|
257 |
display: block;
|
258 |
width: 100%;
|
259 |
padding: 20px 20px;
|
264 |
text-align: left;
|
265 |
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
|
266 |
}
|
267 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .wbcr-factory-tab__title {
|
268 |
display: block;
|
269 |
font-weight: bold;
|
270 |
}
|
271 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .wbcr-factory-tab__short-description {
|
272 |
display: block;
|
273 |
font-size: 13px;
|
274 |
font-weight: normal;
|
275 |
text-transform: none;
|
276 |
color: #9a9a9a;
|
277 |
}
|
278 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .dashicons {
|
279 |
float: right;
|
280 |
color: #ccc;
|
281 |
}
|
282 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link::after {
|
283 |
clear: both;
|
284 |
}
|
285 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover {
|
286 |
background: #f7f6f6;
|
287 |
}
|
288 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover .dashicons {
|
289 |
color: #9a9a9a;
|
290 |
}
|
291 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link,
|
292 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
|
293 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover,
|
294 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
|
295 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:focus {
|
296 |
outline: 0 !important;
|
297 |
box-shadow: none !important;
|
298 |
}
|
299 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab {
|
300 |
background: #fff;
|
301 |
}
|
302 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab a {
|
303 |
color: #ff5722;
|
304 |
font-weight: bold;
|
305 |
border-left: 5px solid #ff5722;
|
306 |
}
|
307 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab a .dashicons {
|
308 |
color: #9a9a9a;
|
309 |
}
|
310 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section,
|
311 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-right-sidebar-section {
|
312 |
display: inline-block;
|
313 |
vertical-align: top;
|
314 |
}
|
315 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section {
|
316 |
width: 74.6%;
|
317 |
}
|
318 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section.wbcr-fullwidth {
|
319 |
width: 100%;
|
320 |
}
|
321 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section .nav-tab-wrapper {
|
322 |
margin-top: 15px;
|
323 |
}
|
324 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section .wbcr-factory-content {
|
325 |
background: #f7f7f7;
|
326 |
padding: 0 0 20px 0;
|
327 |
border: 1px solid #dad8d8;
|
328 |
box-shadow: -1px 0px 1px rgba(0, 0, 0, 0.1);
|
329 |
}
|
330 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section .wbcr-factory-content > form {
|
331 |
padding-top: 0 !important;
|
332 |
}
|
333 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-right-sidebar-section {
|
334 |
width: 25%;
|
335 |
padding: 10px;
|
336 |
margin: 0 0 -20px;
|
337 |
background-color: #f9f9f9;
|
338 |
box-shadow: -1px 1px 5px rgba(0, 0, 0, 0.1);
|
339 |
}
|
340 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-sidebar-widget {
|
341 |
margin: 0 0 20px;
|
342 |
}
|
343 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget {
|
344 |
display: inline-block;
|
345 |
min-height: 230px;
|
346 |
width: 100%;
|
349 |
padding: 20px 15px;
|
350 |
vertical-align: top;
|
351 |
}
|
352 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-hide {
|
353 |
display: none;
|
354 |
}
|
355 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-warning {
|
356 |
background: #fff4d0;
|
357 |
}
|
358 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-danger {
|
359 |
background: #e2ffc0;
|
360 |
}
|
361 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-success {
|
362 |
background: #ffebe9;
|
363 |
}
|
364 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-hint-icon-simple {
|
365 |
display: inline-block;
|
366 |
width: 16px;
|
367 |
height: 16px;
|
373 |
background: #E91E63;
|
374 |
border-radius: 3px;
|
375 |
}
|
376 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-grey {
|
377 |
background: #E91E63;
|
378 |
}
|
379 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-red {
|
380 |
background: #9e9e9e;
|
381 |
}
|
382 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-green {
|
383 |
background: #8bc34a;
|
384 |
}
|
385 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-icon-5stars {
|
386 |
display: block;
|
387 |
width: 80px;
|
388 |
height: 17px;
|
390 |
vertical-align: middle;
|
391 |
margin-bottom: 5px;
|
392 |
}
|
393 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] {
|
394 |
display: block;
|
395 |
margin: 30px auto 0;
|
396 |
outline: none;
|
397 |
}
|
398 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] :focus,
|
399 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] :active {
|
400 |
box-shadow: none;
|
401 |
}
|
402 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form .wbcr-factory-donation-price {
|
403 |
font-size: 50px;
|
404 |
margin-top: 30px;
|
405 |
text-align: center;
|
406 |
font-weight: 600;
|
407 |
color: #8BC34A;
|
408 |
}
|
409 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box {
|
410 |
min-height: 240px;
|
411 |
margin-bottom: 20px;
|
412 |
text-align: center;
|
414 |
padding: 30px;
|
415 |
border: 1px solid #f3f1e7;
|
416 |
}
|
417 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box .dashicons {
|
418 |
width: 50px;
|
419 |
height: 50px;
|
420 |
font-size: 50px;
|
421 |
color: #FFC107;
|
422 |
line-height: normal;
|
423 |
}
|
424 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box h3 {
|
425 |
color: #7b6111;
|
426 |
}
|
427 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box p {
|
428 |
color: #9e9e9e;
|
429 |
}
|
430 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-buttons-wrap {
|
431 |
margin-top: 20px;
|
432 |
text-align: center;
|
433 |
}
|
434 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-premium-button {
|
435 |
display: inline-block;
|
436 |
padding: 20px 60px;
|
437 |
background-color: #FFC107;
|
441 |
font-weight: bold;
|
442 |
transition: background-color 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
|
443 |
}
|
444 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-premium-button:hover {
|
445 |
background-color: #ffce3a;
|
446 |
}
|
447 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template #wbcr-factory-confirm-dialog {
|
448 |
padding: 20px;
|
449 |
background: #ffffff;
|
450 |
}
|
451 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template #wbcr-factory-confirm-dialog .updated,
|
452 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template #wbcr-factory-confirm-dialog .alert {
|
453 |
display: none;
|
454 |
}
|
455 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template #wbcr-factory-confirm-dialog h2 {
|
456 |
font-size: 18px;
|
457 |
margin-top: 10px;
|
458 |
}
|
459 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template #wbcr-factory-confirm-dialog .wbcr-factory-confirm-description {
|
460 |
padding: 10px;
|
461 |
background: #ffedeb;
|
462 |
border: 1px solid #ffdfdc;
|
463 |
margin: 15px 0;
|
464 |
}
|
465 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template #wbcr-factory-confirm-dialog .wbcr-factory-confirm-hint {
|
466 |
margin-bottom: 15px;
|
467 |
color: #7b7b7b;
|
468 |
}
|
469 |
@media screen and (max-width: 1367px) {
|
470 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section {
|
471 |
width: 69.6%;
|
472 |
}
|
473 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-right-sidebar-section {
|
474 |
width: 30%;
|
475 |
}
|
476 |
}
|
477 |
@media screen and (max-width: 1320px) {
|
478 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-content-section {
|
479 |
width: 100%;
|
480 |
}
|
481 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-right-sidebar-section {
|
482 |
display: none !important;
|
483 |
}
|
484 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-header-logo .dash {
|
485 |
display: none !important;
|
486 |
}
|
487 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-header-title {
|
488 |
display: none !important;
|
489 |
}
|
490 |
}
|
491 |
@media screen and (max-width: 950px) {
|
492 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar {
|
493 |
width: 70px;
|
494 |
}
|
495 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab a {
|
496 |
font-size: 0;
|
497 |
}
|
498 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__title {
|
499 |
font-size: 0;
|
500 |
}
|
501 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__short-description {
|
502 |
display: none !important;
|
503 |
}
|
504 |
+
#WBCR .wbcr-factory-pages-422-impressive-page-template .wbcr-factory-page-inner-wrap {
|
505 |
margin-left: 70px;
|
506 |
}
|
507 |
}
|
libs/factory/pages/templates/impressive-page.class.php
CHANGED
@@ -14,11 +14,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if ( ! class_exists( '
|
18 |
/**
|
19 |
-
* Class
|
20 |
*/
|
21 |
-
abstract class
|
22 |
|
23 |
/**
|
24 |
* Тип страницы:
|
@@ -112,11 +112,11 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
112 |
public $page_menu = [];
|
113 |
|
114 |
/**
|
115 |
-
* @param
|
116 |
*/
|
117 |
-
public function __construct(
|
118 |
-
$this->menuIcon =
|
119 |
-
//$allow_multisite = apply_filters('
|
120 |
|
121 |
if ( is_multisite() && $this->available_for_multisite && $plugin->isNetworkActive() ) {
|
122 |
$this->network = true;
|
@@ -126,7 +126,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
126 |
|
127 |
parent::__construct( $plugin );
|
128 |
|
129 |
-
$this->title_plugin_action_link = __( 'Settings', '
|
130 |
|
131 |
$this->setPageMenu();
|
132 |
}
|
@@ -170,7 +170,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
170 |
*
|
171 |
* @since 1.0.0
|
172 |
* @return void
|
173 |
-
* @see
|
174 |
*
|
175 |
*/
|
176 |
public function assets( $scripts, $styles ) {
|
@@ -191,7 +191,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
191 |
'control.checkbox'
|
192 |
], 'bootstrap' );
|
193 |
|
194 |
-
$this->styles->add(
|
195 |
}
|
196 |
|
197 |
/**
|
@@ -204,7 +204,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
204 |
* @since 4.0.8 - добавлен
|
205 |
* @since 4.0.9 - является устаревшим
|
206 |
*/
|
207 |
-
$plugin_title =
|
208 |
$this->plugin->getPluginTitle(),
|
209 |
$this->plugin->getPluginName()
|
210 |
], '4.0.9', 'wbcr/factory/pages/impressive/plugin_title' );
|
@@ -287,15 +287,15 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
287 |
/**
|
288 |
* @since 4.0.1 - является устаревшим
|
289 |
*/
|
290 |
-
|
291 |
$this->plugin->getPluginName(),
|
292 |
$this->getResultId()
|
293 |
-
], '4.0.1', '
|
294 |
|
295 |
/**
|
296 |
* @since 4.0.9 - является устаревшим
|
297 |
*/
|
298 |
-
|
299 |
$this->plugin,
|
300 |
$this
|
301 |
], '4.0.9', 'wbcr/factory/pages/impressive/after_form_save' );
|
@@ -314,7 +314,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
314 |
/**
|
315 |
* @since 4.0.9 - является устаревшим
|
316 |
*/
|
317 |
-
$redirect_args =
|
318 |
|
319 |
/**
|
320 |
* @since 4.0.1 - добавлен
|
@@ -331,7 +331,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
331 |
*/
|
332 |
protected function warningNotice() {
|
333 |
/*if( WP_CACHE ) {
|
334 |
-
$this->printWarningNotice(__("It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below.", '
|
335 |
}*/
|
336 |
// Метод предназначен для вызова в дочернем классе
|
337 |
}
|
@@ -403,7 +403,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
403 |
/**
|
404 |
* @since 4.0.9 - является устаревшим
|
405 |
*/
|
406 |
-
|
407 |
$this->plugin,
|
408 |
$this
|
409 |
], '4.0.9', 'wbcr/factory/pages/impressive/print_all_notices' );
|
@@ -422,14 +422,14 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
422 |
$this->plugin->getPluginName() . '_saved' => '1'
|
423 |
],
|
424 |
'type' => 'success',
|
425 |
-
'message' => __( 'The settings have been updated successfully!', '
|
426 |
]
|
427 |
];
|
428 |
|
429 |
/**
|
430 |
* @since 4.0.9 - является устаревшим
|
431 |
*/
|
432 |
-
$notices =
|
433 |
$notices,
|
434 |
$this->plugin,
|
435 |
$this->id
|
@@ -601,7 +601,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
601 |
<?php do_action( 'wbcr/factory/pages/impressive/header', $this->plugin->getPluginName() ) ?>
|
602 |
|
603 |
<?php if ( $this->type == 'options' ): ?>
|
604 |
-
<input name="<?= $this->plugin->getPluginName() ?>_save_action" class="wbcr-factory-button wbcr-factory-type-save" type="submit" value="<?php _e( 'Save', '
|
605 |
<?php wp_nonce_field( 'wbcr_factory_' . $this->getResultId() . '_save_action' ); ?>
|
606 |
<?php endif; ?>
|
607 |
</div>
|
@@ -656,7 +656,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
656 |
/**
|
657 |
* @since 4.0.9 - является устаревшим
|
658 |
*/
|
659 |
-
$widgets =
|
660 |
$widgets,
|
661 |
$position,
|
662 |
$this->plugin,
|
@@ -673,12 +673,12 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
673 |
}
|
674 |
|
675 |
protected function showOptions() {
|
676 |
-
$form = new
|
677 |
'scope' => rtrim( $this->plugin->getPrefix(), '_' ),
|
678 |
'name' => $this->getResultId() . "-options"
|
679 |
], $this->plugin );
|
680 |
|
681 |
-
$form->setProvider( new
|
682 |
|
683 |
$options = $this->getPageOptions();
|
684 |
|
@@ -718,14 +718,14 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
718 |
check_admin_referer( 'wbcr_factory_' . $this->getResultId() . '_save_action' );
|
719 |
|
720 |
if ( ! current_user_can( 'administrator' ) && ! current_user_can( $this->capabilitiy ) ) {
|
721 |
-
wp_die( __( 'You do not have permission to edit page.', '
|
722 |
exit;
|
723 |
}
|
724 |
|
725 |
/**
|
726 |
* @since 4.0.9 - является устаревшим
|
727 |
*/
|
728 |
-
|
729 |
$form,
|
730 |
$this->plugin,
|
731 |
$this
|
@@ -744,7 +744,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
744 |
/**
|
745 |
* @since 4.0.9 - является устаревшим
|
746 |
*/
|
747 |
-
|
748 |
$form,
|
749 |
$this->plugin,
|
750 |
$this
|
@@ -765,7 +765,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
765 |
|
766 |
?>
|
767 |
<div id="WBCR" class="wrap">
|
768 |
-
<div class="wbcr-factory-pages-
|
769 |
<div class="wbcr-factory-options wbcr-factory-options-<?= esc_attr( $this->id ) ?>">
|
770 |
<div class="wbcr-factory-left-navigation-bar">
|
771 |
<?php $this->showPageMenu() ?>
|
@@ -810,7 +810,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
810 |
|
811 |
protected function showPage( $content = null ) { ?>
|
812 |
<div id="WBCR" class="wrap">
|
813 |
-
<div class="wbcr-factory-pages-
|
814 |
<div class="wbcr-factory-page wbcr-factory-page-<?= $this->id ?>">
|
815 |
<?php $this->showHeader(); ?>
|
816 |
<div class="wbcr-factory-left-navigation-bar">
|
@@ -873,7 +873,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages420_ImpressiveThemplate' ) ) {
|
|
873 |
public function confirmPageTemplate( $data ) {
|
874 |
?>
|
875 |
<div id="WBCR" class="wrap">
|
876 |
-
<div class="wbcr-factory
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if ( ! class_exists( 'Wbcr_FactoryPages422_ImpressiveThemplate' ) ) {
|
18 |
/**
|
19 |
+
* Class Wbcr_FactoryPages422_ImpressiveThemplate
|
20 |
*/
|
21 |
+
abstract class Wbcr_FactoryPages422_ImpressiveThemplate extends Wbcr_FactoryPages422_AdminPage {
|
22 |
|
23 |
/**
|
24 |
* Тип страницы:
|
112 |
public $page_menu = [];
|
113 |
|
114 |
/**
|
115 |
+
* @param Wbcr_Factory422_Plugin $plugin
|
116 |
*/
|
117 |
+
public function __construct( Wbcr_Factory422_Plugin $plugin ) {
|
118 |
+
$this->menuIcon = FACTORY_PAGES_422_URL . '/templates/assets/img/webcraftic-plugin-icon.png';
|
119 |
+
//$allow_multisite = apply_filters('wbcr_factory_422_core_admin_allow_multisite', false);
|
120 |
|
121 |
if ( is_multisite() && $this->available_for_multisite && $plugin->isNetworkActive() ) {
|
122 |
$this->network = true;
|
126 |
|
127 |
parent::__construct( $plugin );
|
128 |
|
129 |
+
$this->title_plugin_action_link = __( 'Settings', 'wbcr_factory_pages_422' );
|
130 |
|
131 |
$this->setPageMenu();
|
132 |
}
|
170 |
*
|
171 |
* @since 1.0.0
|
172 |
* @return void
|
173 |
+
* @see FactoryPages422_AdminPage
|
174 |
*
|
175 |
*/
|
176 |
public function assets( $scripts, $styles ) {
|
191 |
'control.checkbox'
|
192 |
], 'bootstrap' );
|
193 |
|
194 |
+
$this->styles->add( FACTORY_PAGES_422_URL . '/templates/assets/css/impressive.page.template.css' );
|
195 |
}
|
196 |
|
197 |
/**
|
204 |
* @since 4.0.8 - добавлен
|
205 |
* @since 4.0.9 - является устаревшим
|
206 |
*/
|
207 |
+
$plugin_title = wbcr_factory_422_apply_filters_deprecated( 'wbcr/factory/imppage/plugin_title', [
|
208 |
$this->plugin->getPluginTitle(),
|
209 |
$this->plugin->getPluginName()
|
210 |
], '4.0.9', 'wbcr/factory/pages/impressive/plugin_title' );
|
287 |
/**
|
288 |
* @since 4.0.1 - является устаревшим
|
289 |
*/
|
290 |
+
wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_imppage_flush_cache', [
|
291 |
$this->plugin->getPluginName(),
|
292 |
$this->getResultId()
|
293 |
+
], '4.0.1', 'wbcr_factory_422_imppage_after_form_save' );
|
294 |
|
295 |
/**
|
296 |
* @since 4.0.9 - является устаревшим
|
297 |
*/
|
298 |
+
wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_imppage_after_form_save', [
|
299 |
$this->plugin,
|
300 |
$this
|
301 |
], '4.0.9', 'wbcr/factory/pages/impressive/after_form_save' );
|
314 |
/**
|
315 |
* @since 4.0.9 - является устаревшим
|
316 |
*/
|
317 |
+
$redirect_args = wbcr_factory_422_apply_filters_deprecated( 'wbcr_factory_422_imppage_after_form_save_redirect_args', [ $redirect_args ], '4.0.9', 'wbcr/factory/pages/impressive/save_redirect_args' );
|
318 |
|
319 |
/**
|
320 |
* @since 4.0.1 - добавлен
|
331 |
*/
|
332 |
protected function warningNotice() {
|
333 |
/*if( WP_CACHE ) {
|
334 |
+
$this->printWarningNotice(__("It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below.", 'wbcr_factory_pages_422'));
|
335 |
}*/
|
336 |
// Метод предназначен для вызова в дочернем классе
|
337 |
}
|
403 |
/**
|
404 |
* @since 4.0.9 - является устаревшим
|
405 |
*/
|
406 |
+
wbcr_factory_422_do_action_deprecated( 'wbcr_factory_pages_422_imppage_print_all_notices', [
|
407 |
$this->plugin,
|
408 |
$this
|
409 |
], '4.0.9', 'wbcr/factory/pages/impressive/print_all_notices' );
|
422 |
$this->plugin->getPluginName() . '_saved' => '1'
|
423 |
],
|
424 |
'type' => 'success',
|
425 |
+
'message' => __( 'The settings have been updated successfully!', 'wbcr_factory_pages_422' ) . ( WP_CACHE ? '<br>' . __( "It seems that a caching/performance plugin is active on this site. Please manually invalidate that plugin's cache after making any changes to the settings below.", 'wbcr_factory_pages_422' ) : '' )
|
426 |
]
|
427 |
];
|
428 |
|
429 |
/**
|
430 |
* @since 4.0.9 - является устаревшим
|
431 |
*/
|
432 |
+
$notices = wbcr_factory_422_apply_filters_deprecated( 'wbcr_factory_pages_422_imppage_actions_notice', [
|
433 |
$notices,
|
434 |
$this->plugin,
|
435 |
$this->id
|
601 |
<?php do_action( 'wbcr/factory/pages/impressive/header', $this->plugin->getPluginName() ) ?>
|
602 |
|
603 |
<?php if ( $this->type == 'options' ): ?>
|
604 |
+
<input name="<?= $this->plugin->getPluginName() ?>_save_action" class="wbcr-factory-button wbcr-factory-type-save" type="submit" value="<?php _e( 'Save', 'wbcr_factory_pages_422' ); ?>">
|
605 |
<?php wp_nonce_field( 'wbcr_factory_' . $this->getResultId() . '_save_action' ); ?>
|
606 |
<?php endif; ?>
|
607 |
</div>
|
656 |
/**
|
657 |
* @since 4.0.9 - является устаревшим
|
658 |
*/
|
659 |
+
$widgets = wbcr_factory_422_apply_filters_deprecated( 'wbcr_factory_pages_422_imppage_get_widgets', [
|
660 |
$widgets,
|
661 |
$position,
|
662 |
$this->plugin,
|
673 |
}
|
674 |
|
675 |
protected function showOptions() {
|
676 |
+
$form = new Wbcr_FactoryForms420_Form( [
|
677 |
'scope' => rtrim( $this->plugin->getPrefix(), '_' ),
|
678 |
'name' => $this->getResultId() . "-options"
|
679 |
], $this->plugin );
|
680 |
|
681 |
+
$form->setProvider( new Wbcr_FactoryForms420_OptionsValueProvider( $this->plugin ) );
|
682 |
|
683 |
$options = $this->getPageOptions();
|
684 |
|
718 |
check_admin_referer( 'wbcr_factory_' . $this->getResultId() . '_save_action' );
|
719 |
|
720 |
if ( ! current_user_can( 'administrator' ) && ! current_user_can( $this->capabilitiy ) ) {
|
721 |
+
wp_die( __( 'You do not have permission to edit page.', 'wbcr_factory_pages_422' ) );
|
722 |
exit;
|
723 |
}
|
724 |
|
725 |
/**
|
726 |
* @since 4.0.9 - является устаревшим
|
727 |
*/
|
728 |
+
wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_imppage_before_form_save', [
|
729 |
$form,
|
730 |
$this->plugin,
|
731 |
$this
|
744 |
/**
|
745 |
* @since 4.0.9 - является устаревшим
|
746 |
*/
|
747 |
+
wbcr_factory_422_do_action_deprecated( 'wbcr_factory_422_imppage_form_saved', [
|
748 |
$form,
|
749 |
$this->plugin,
|
750 |
$this
|
765 |
|
766 |
?>
|
767 |
<div id="WBCR" class="wrap">
|
768 |
+
<div class="wbcr-factory-pages-422-impressive-page-template factory-bootstrap-423 factory-fontawesome-000">
|
769 |
<div class="wbcr-factory-options wbcr-factory-options-<?= esc_attr( $this->id ) ?>">
|
770 |
<div class="wbcr-factory-left-navigation-bar">
|
771 |
<?php $this->showPageMenu() ?>
|
810 |
|
811 |
protected function showPage( $content = null ) { ?>
|
812 |
<div id="WBCR" class="wrap">
|
813 |
+
<div class="wbcr-factory-pages-422-impressive-page-template factory-bootstrap-423 factory-fontawesome-000">
|
814 |
<div class="wbcr-factory-page wbcr-factory-page-<?= $this->id ?>">
|
815 |
<?php $this->showHeader(); ?>
|
816 |
<div class="wbcr-factory-left-navigation-bar">
|
873 |
public function confirmPageTemplate( $data ) {
|
874 |
?>
|
875 |
<div id="WBCR" class="wrap">
|
876 |
+
<div class="wbcr-factory
|