Version Description
- Fixed: Adding images to the post text.
- Add: Import all images from the post text to the media library. (PRO)
- Other minor fixes
Download this release
Release Info
Developer | webtemyk |
Plugin | Auto Post Thumbnail |
Version | 3.8.1 |
Comparing to | |
See all releases |
Code changes from version 3.8.0 to 3.8.1
- admin/assets/css/settings.css +5 -3
- admin/assets/css/style.css +91 -44
- admin/assets/css/tabs.css +11 -3
- admin/assets/img/import-icon.png +0 -0
- admin/assets/js/admin-thumbnail.js +7 -5
- admin/assets/js/settings.js +3 -2
- admin/assets/js/upload-font.js +2 -2
- admin/class-wapt-activation.php +2 -2
- admin/class-wapt-page.php +2 -2
- admin/pages/generate.php +2 -2
- admin/pages/license.php +2 -2
- admin/pages/settings.php +99 -12
- admin/views/media-library.php +37 -20
- admin/views/tab-license.php +1 -1
- admin/views/tab-main.php +1 -1
- admin/views/tab-settings.php +7 -1
- auto-post-thumbnail.php +19 -18
- includes/class-apt.php +112 -128
- includes/class-post-images.php +154 -0
- includes/class-wapt-plugin.php +52 -15
- includes/controls/class.color.php +1 -1
- includes/controls/class.fonts.php +1 -1
- includes/controls/class.mediabutton.php +1 -1
- includes/image-search/boot.php +3 -2
- includes/image-search/class-google-images.php +1 -1
- includes/image-search/result/class.founded-image.php +10 -20
- includes/image-search/result/class.google-founded-image.php +40 -0
- libs/factory/adverts/boot.php +12 -12
- libs/factory/adverts/includes/class-base.php +6 -6
- libs/factory/adverts/includes/class-dashboard-widget.php +4 -4
- libs/factory/adverts/includes/class-rest-request.php +4 -4
- libs/factory/adverts/langs/{wbcr_factory_adverts_122-ru_RU.mo → wbcr_factory_adverts_123-ru_RU.mo} +0 -0
- libs/factory/adverts/langs/{wbcr_factory_adverts_122-ru_RU.po → wbcr_factory_adverts_123-ru_RU.po} +0 -0
- libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +2 -2
- libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +1 -1
- libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +1 -1
- libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.dropdown.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.list.min.js +1 -1
- libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js +1 -1
- libs/factory/bootstrap/boot.php +9 -9
- libs/factory/bootstrap/includes/functions.php +10 -10
- libs/factory/core/ajax/install-addons.php +10 -10
- libs/factory/core/assets/js/core-components.js +14 -14
- libs/factory/core/assets/js/core-general.js +6 -6
- libs/factory/core/boot.php +33 -33
- libs/factory/core/includes/activation/class-factory-activator.php +3 -3
- libs/factory/core/includes/activation/class-factory-update.php +3 -3
- libs/factory/core/includes/assets-managment/class-factory-assets-list.php +4 -4
- libs/factory/core/includes/assets-managment/class-factory-script-list.php +2 -2
- libs/factory/core/includes/assets-managment/class-factory-style-list.php +1 -1
- libs/factory/core/includes/class-check-compatibility.php +2 -2
- libs/factory/core/includes/class-factory-migrations.php +13 -13
- libs/factory/core/includes/class-factory-notices.php +5 -5
- libs/factory/core/includes/class-factory-options.php +2 -2
- libs/factory/core/includes/class-factory-plugin-abstract.php +70 -70
- libs/factory/core/includes/class-factory-plugin-base.php +25 -25
- libs/factory/core/includes/class-factory-requests.php +1 -1
- libs/factory/core/includes/class-factory-requirements.php +5 -5
- libs/factory/core/includes/components/class-delete-component-button.php +1 -1
- libs/factory/core/includes/components/class-install-component-button.php +10 -10
- libs/factory/core/includes/entities/class-factory-paths.php +1 -1
- libs/factory/core/includes/entities/class-factory-support.php +1 -1
- libs/factory/core/includes/functions.php +7 -7
- libs/factory/core/includes/premium/class-factory-license-interface.php +1 -1
- libs/factory/core/includes/premium/class-factory-manager.php +10 -10
- libs/factory/core/includes/premium/class-factory-provider-abstract.php +6 -6
- libs/factory/core/includes/updates/class-factory-premium-upgrader.php +13 -12
- libs/factory/core/includes/updates/class-factory-upgrader.php +11 -11
- libs/factory/core/includes/updates/repositories/class-factory-github.php +8 -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_444-ru_RU.mo → wbcr_factory_445-ru_RU.mo} +0 -0
- libs/factory/core/langs/{wbcr_factory_444-ru_RU.po → wbcr_factory_445-ru_RU.po} +0 -0
- libs/factory/feedback/boot.php +1 -1
- libs/factory/feedback/includes/class-base.php +3 -3
- libs/factory/feedback/includes/class-rest-request.php +3 -3
- 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_441-ru_RU.mo → wbcr_factory_forms_442-ru_RU.mo} +0 -0
- libs/factory/forms/langs/{wbcr_factory_forms_441-ru_RU.po → wbcr_factory_forms_442-ru_RU.po} +0 -0
- libs/factory/forms/layouts/bootstrap-3/bootstrap-3.php +7 -7
- libs/factory/freemius/boot.php +18 -18
- libs/factory/freemius/includes/class-freemius-api.php +7 -7
- libs/factory/freemius/includes/entities/class-freemius-entity.php +1 -1
- libs/factory/freemius/includes/entities/class-freemius-license.php +2 -2
- libs/factory/freemius/includes/entities/class-freemius-plugin.php +1 -1
- libs/factory/freemius/includes/entities/class-freemius-scope.php +1 -1
- libs/factory/freemius/includes/entities/class-freemius-site.php +1 -1
- libs/factory/freemius/includes/entities/class-freemius-user.php +1 -1
- libs/factory/freemius/includes/licensing/class-freemius-provider.php +18 -18
- libs/factory/freemius/includes/updates/class-freemius-repository.php +7 -7
- libs/factory/pages/boot.php +10 -10
- libs/factory/pages/includes/admin-page.class.php +6 -6
- libs/factory/pages/includes/page.class.php +7 -7
- libs/factory/pages/langs/{wbcr_factory_pages_443-fr_FR.mo → wbcr_factory_pages_444-fr_FR.mo} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_443-fr_FR.po → wbcr_factory_pages_444-fr_FR.po} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_443-ru_RU.mo → wbcr_factory_pages_444-ru_RU.mo} +0 -0
- libs/factory/pages/langs/{wbcr_factory_pages_443-ru_RU.po → wbcr_factory_pages_444-ru_RU.po} +0 -0
- libs/factory/pages/pages.php +11 -11
- libs/factory/pages/templates/assets/css/impressive.page.template.css +124 -124
- libs/factory/pages/templates/impressive-page.class.php +19 -19
- migrations/030600.php +1 -1
- migrations/030700.php +1 -1
- readme.md +243 -0
- readme.txt +8 -2
admin/assets/css/settings.css
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
padding: 0px 30px;
|
3 |
}
|
4 |
|
5 |
-
.factory-bootstrap-
|
6 |
width: 120px !important;
|
7 |
background: url("../img/ajax-loader-line.gif") no-repeat center center !important;
|
8 |
background-size: contain !important;
|
@@ -12,7 +12,7 @@
|
|
12 |
top: 5px;
|
13 |
}
|
14 |
|
15 |
-
.factory-bootstrap-
|
16 |
display: inline;
|
17 |
background: #fff url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E) no-repeat right 5px top 55%;
|
18 |
background-size: 16px 16px !important;
|
@@ -23,7 +23,7 @@
|
|
23 |
font-size: 16px !important;
|
24 |
}
|
25 |
|
26 |
-
.factory-bootstrap-
|
27 |
text-shadow: none;
|
28 |
color: #fff !important;
|
29 |
background-color: #33aad5 !important;
|
@@ -82,6 +82,7 @@ div.control-group .btn-group {
|
|
82 |
span.wapt-icon-pro,
|
83 |
.wapt-icon-pro input[class*="factory-"]:before,
|
84 |
.wapt-icon-pro button.factory-image:after,
|
|
|
85 |
.wapt-icon-pro-item button.factory-google:after,
|
86 |
.wapt-icon-pro-item button.factory-find_google:after,
|
87 |
.wapt-icon-pro ~ div.wapt-upload-div button.wapt-upload-button:after {
|
@@ -120,6 +121,7 @@ span.wapt-icon-pro {
|
|
120 |
.wapt-icon-pro button[class*="factory-"],
|
121 |
.wapt-icon-pro button[class*="wapt"],
|
122 |
.wapt-icon-pro img,
|
|
|
123 |
.wapt-icon-pro ~ div.wapt-upload-div button.wapt-upload-button,
|
124 |
.wapt-icon-pro-item button[class*="factory-google"],
|
125 |
.wapt-icon-pro-item button[class*="factory-find_google"] {
|
2 |
padding: 0px 30px;
|
3 |
}
|
4 |
|
5 |
+
.factory-bootstrap-445 .factory-ajax-loader {
|
6 |
width: 120px !important;
|
7 |
background: url("../img/ajax-loader-line.gif") no-repeat center center !important;
|
8 |
background-size: contain !important;
|
12 |
top: 5px;
|
13 |
}
|
14 |
|
15 |
+
.factory-bootstrap-445 select.form-control {
|
16 |
display: inline;
|
17 |
background: #fff url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E) no-repeat right 5px top 55%;
|
18 |
background-size: 16px 16px !important;
|
23 |
font-size: 16px !important;
|
24 |
}
|
25 |
|
26 |
+
.factory-bootstrap-445 .btn-default.active, .factory-bootstrap-445 .btn-default:active {
|
27 |
text-shadow: none;
|
28 |
color: #fff !important;
|
29 |
background-color: #33aad5 !important;
|
82 |
span.wapt-icon-pro,
|
83 |
.wapt-icon-pro input[class*="factory-"]:before,
|
84 |
.wapt-icon-pro button.factory-image:after,
|
85 |
+
.wapt-icon-pro button.factory-off:after,
|
86 |
.wapt-icon-pro-item button.factory-google:after,
|
87 |
.wapt-icon-pro-item button.factory-find_google:after,
|
88 |
.wapt-icon-pro ~ div.wapt-upload-div button.wapt-upload-button:after {
|
121 |
.wapt-icon-pro button[class*="factory-"],
|
122 |
.wapt-icon-pro button[class*="wapt"],
|
123 |
.wapt-icon-pro img,
|
124 |
+
.wapt-icon-pro input[type="checkbox"],
|
125 |
.wapt-icon-pro ~ div.wapt-upload-div button.wapt-upload-button,
|
126 |
.wapt-icon-pro-item button[class*="factory-google"],
|
127 |
.wapt-icon-pro-item button[class*="factory-find_google"] {
|
admin/assets/css/style.css
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
-
.apt_pro_advertisement
|
|
|
2 |
float: right;
|
3 |
width: 230px;
|
4 |
margin-top: 15px;
|
@@ -10,18 +11,21 @@
|
|
10 |
background: #fff;
|
11 |
}
|
12 |
|
13 |
-
.apt_pro_logo
|
|
|
14 |
float: left;
|
15 |
box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.3);
|
16 |
margin: 10px;
|
17 |
border-radius: 3px;
|
18 |
}
|
19 |
|
20 |
-
.apt_pro_logo img
|
|
|
21 |
border-radius: 3px;
|
22 |
}
|
23 |
|
24 |
-
.apt_pro_check_out
|
|
|
25 |
float: left;
|
26 |
font-size: 35px;
|
27 |
line-height: 35px;
|
@@ -33,20 +37,24 @@
|
|
33 |
text-shadow: 1px 1px 2px #000000;
|
34 |
}
|
35 |
|
36 |
-
.apt_pro_features
|
|
|
37 |
padding-left: 10px;
|
38 |
clear: both;
|
39 |
}
|
40 |
|
41 |
-
.apt_pro_features ul
|
|
|
42 |
list-style: disc inside;
|
43 |
}
|
44 |
|
45 |
-
.apt_pro_buy_now
|
|
|
46 |
text-align: center;
|
47 |
}
|
48 |
|
49 |
-
.apt_loading
|
|
|
50 |
width: 100%;
|
51 |
height: 100%;
|
52 |
top: 0;
|
@@ -59,38 +67,66 @@
|
|
59 |
text-align: center;
|
60 |
}
|
61 |
|
62 |
-
.apt-loading-image
|
|
|
63 |
position: absolute;
|
64 |
top: 50%;
|
65 |
left: 50%;
|
66 |
z-index: 100;
|
67 |
}
|
68 |
|
69 |
-
.column-apt-image
|
|
|
70 |
width: 100px;
|
71 |
}
|
72 |
|
73 |
-
.
|
74 |
-
|
75 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
}
|
77 |
|
78 |
-
.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
79 |
float: left;
|
80 |
margin: 5px;
|
81 |
}
|
82 |
|
83 |
-
.wapt-image-box
|
84 |
-
|
85 |
display: flex;
|
86 |
-
width:
|
87 |
-
height:
|
88 |
border-radius: 5px;
|
89 |
-
box-shadow: 1px 1px 5px
|
90 |
border: 1px solid #ccc;
|
91 |
}
|
92 |
|
93 |
-
.wapt-item-generated
|
|
|
94 |
color: #000000;
|
95 |
font-weight: 500;
|
96 |
font-size: 16px;
|
@@ -100,18 +136,13 @@
|
|
100 |
line-height: 1.3;
|
101 |
}
|
102 |
|
103 |
-
|
104 |
-
|
105 |
-
height: 180px;
|
106 |
cursor: pointer;
|
107 |
}
|
108 |
|
109 |
-
.wapt-
|
110 |
-
|
111 |
-
margin: 5px;
|
112 |
-
}
|
113 |
-
|
114 |
-
.wapt-image-box-checked {
|
115 |
opacity: 0.5;
|
116 |
filter: alpha(opacity=50); /* For IE8 and earlier */
|
117 |
box-shadow: inset 0 0 1px 5px #0073aa, inset 0 0 2px 7px #fff;
|
@@ -135,11 +166,13 @@ input {
|
|
135 |
}
|
136 |
*/
|
137 |
/* GUTENBERG */
|
138 |
-
.apt-sidebar-content
|
|
|
139 |
padding: 10px;
|
140 |
}
|
141 |
|
142 |
-
.btn-gold
|
|
|
143 |
font-weight: bold;
|
144 |
padding: 7px 12px;
|
145 |
cursor: pointer;
|
@@ -158,28 +191,33 @@ input {
|
|
158 |
}
|
159 |
|
160 |
.btn-gold:hover,
|
161 |
-
.btn-gold:focus
|
|
|
162 |
background: #fef0a1;
|
163 |
}
|
164 |
|
165 |
.btn-gold:active,
|
166 |
-
.btn-gold.active
|
|
|
167 |
background: #fef0a1;
|
168 |
-webkit-box-shadow: inset 0 3px 8px 0 #f8ba36;
|
169 |
box-shadow: inset 0 3px 8px 0 #f8ba36;
|
170 |
}
|
171 |
|
172 |
-
.purchase-premium
|
|
|
173 |
text-decoration: none;
|
174 |
}
|
175 |
|
176 |
-
.wapt-sup-pro
|
|
|
177 |
font-weight: bold;
|
178 |
color: red;
|
179 |
}
|
180 |
|
181 |
/*Filters block*/
|
182 |
-
.apt-filter-row
|
|
|
183 |
background: #ffffff;
|
184 |
padding: 20px 10px 20px 10px;
|
185 |
margin: 10px 0px 10px 0px !important;
|
@@ -187,37 +225,46 @@ input {
|
|
187 |
border-radius: 10px;
|
188 |
}
|
189 |
|
190 |
-
.apt-filter-input
|
|
|
191 |
width: 150px;
|
192 |
}
|
193 |
|
194 |
-
.apt-filter-label
|
|
|
195 |
font-size: 15px;
|
196 |
margin-top: 5px;
|
197 |
margin-left: 5px;
|
198 |
margin-right: 5px;
|
199 |
}
|
200 |
|
201 |
-
.checked_api_key_ok
|
|
|
202 |
border: 2px solid green !important;
|
203 |
}
|
204 |
|
205 |
-
.checked_api_key_fail
|
|
|
206 |
border: 2px solid red !important;
|
207 |
}
|
208 |
|
209 |
-
.checked_api_key_proccess
|
|
|
210 |
background: #fff url('../img/ajax-loader.gif') 98%/25px no-repeat !important;
|
211 |
}
|
212 |
|
213 |
-
.wapt-pro-row
|
|
|
214 |
opacity: 0.5;
|
215 |
}
|
216 |
|
217 |
-
.wapt-pro-row input, .wapt-pro-row select
|
|
|
218 |
pointer-events: none;
|
219 |
}
|
220 |
-
|
|
|
|
|
221 |
display: inline-block;
|
222 |
position: absolute;
|
223 |
content: 'PRO';
|
1 |
+
.apt_pro_advertisement
|
2 |
+
{
|
3 |
float: right;
|
4 |
width: 230px;
|
5 |
margin-top: 15px;
|
11 |
background: #fff;
|
12 |
}
|
13 |
|
14 |
+
.apt_pro_logo
|
15 |
+
{
|
16 |
float: left;
|
17 |
box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.3);
|
18 |
margin: 10px;
|
19 |
border-radius: 3px;
|
20 |
}
|
21 |
|
22 |
+
.apt_pro_logo img
|
23 |
+
{
|
24 |
border-radius: 3px;
|
25 |
}
|
26 |
|
27 |
+
.apt_pro_check_out
|
28 |
+
{
|
29 |
float: left;
|
30 |
font-size: 35px;
|
31 |
line-height: 35px;
|
37 |
text-shadow: 1px 1px 2px #000000;
|
38 |
}
|
39 |
|
40 |
+
.apt_pro_features
|
41 |
+
{
|
42 |
padding-left: 10px;
|
43 |
clear: both;
|
44 |
}
|
45 |
|
46 |
+
.apt_pro_features ul
|
47 |
+
{
|
48 |
list-style: disc inside;
|
49 |
}
|
50 |
|
51 |
+
.apt_pro_buy_now
|
52 |
+
{
|
53 |
text-align: center;
|
54 |
}
|
55 |
|
56 |
+
.apt_loading
|
57 |
+
{
|
58 |
width: 100%;
|
59 |
height: 100%;
|
60 |
top: 0;
|
67 |
text-align: center;
|
68 |
}
|
69 |
|
70 |
+
.apt-loading-image
|
71 |
+
{
|
72 |
position: absolute;
|
73 |
top: 50%;
|
74 |
left: 50%;
|
75 |
z-index: 100;
|
76 |
}
|
77 |
|
78 |
+
.column-apt-image
|
79 |
+
{
|
80 |
width: 100px;
|
81 |
}
|
82 |
|
83 |
+
.wapt-toolbar
|
84 |
+
{
|
85 |
+
display: grid;
|
86 |
+
grid-template-columns: 70% 30%;
|
87 |
+
/*grid-column-gap: 10px;*/
|
88 |
+
width: 100%;
|
89 |
+
position: absolute;
|
90 |
+
bottom: 0;
|
91 |
+
right: 0;
|
92 |
+
background-color: #f3f3f3;
|
93 |
+
border-top: 1px solid #ddd;
|
94 |
}
|
95 |
|
96 |
+
.wapt-toolbar-primary
|
97 |
+
{
|
98 |
+
padding: 10px;
|
99 |
+
text-align: right;
|
100 |
+
}
|
101 |
+
|
102 |
+
.apt_thumbs
|
103 |
+
{
|
104 |
+
display: grid;
|
105 |
+
grid-template-columns: repeat(auto-fit, 180px);
|
106 |
+
grid-column-gap: 7px;
|
107 |
+
grid-row-gap: 7px;
|
108 |
+
width: 100%;
|
109 |
+
padding: 10px 0 55px 0;
|
110 |
+
}
|
111 |
+
|
112 |
+
.column-apt
|
113 |
+
{
|
114 |
float: left;
|
115 |
margin: 5px;
|
116 |
}
|
117 |
|
118 |
+
.wapt-image-box
|
119 |
+
{
|
120 |
display: flex;
|
121 |
+
/*width: 180px;*/
|
122 |
+
height: 180px;
|
123 |
border-radius: 5px;
|
124 |
+
box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.2);
|
125 |
border: 1px solid #ccc;
|
126 |
}
|
127 |
|
128 |
+
.wapt-item-generated
|
129 |
+
{
|
130 |
color: #000000;
|
131 |
font-weight: 500;
|
132 |
font-size: 16px;
|
136 |
line-height: 1.3;
|
137 |
}
|
138 |
|
139 |
+
div.wapt-grid-item
|
140 |
+
{
|
|
|
141 |
cursor: pointer;
|
142 |
}
|
143 |
|
144 |
+
.wapt-image-box-checked
|
145 |
+
{
|
|
|
|
|
|
|
|
|
146 |
opacity: 0.5;
|
147 |
filter: alpha(opacity=50); /* For IE8 and earlier */
|
148 |
box-shadow: inset 0 0 1px 5px #0073aa, inset 0 0 2px 7px #fff;
|
166 |
}
|
167 |
*/
|
168 |
/* GUTENBERG */
|
169 |
+
.apt-sidebar-content
|
170 |
+
{
|
171 |
padding: 10px;
|
172 |
}
|
173 |
|
174 |
+
.btn-gold
|
175 |
+
{
|
176 |
font-weight: bold;
|
177 |
padding: 7px 12px;
|
178 |
cursor: pointer;
|
191 |
}
|
192 |
|
193 |
.btn-gold:hover,
|
194 |
+
.btn-gold:focus
|
195 |
+
{
|
196 |
background: #fef0a1;
|
197 |
}
|
198 |
|
199 |
.btn-gold:active,
|
200 |
+
.btn-gold.active
|
201 |
+
{
|
202 |
background: #fef0a1;
|
203 |
-webkit-box-shadow: inset 0 3px 8px 0 #f8ba36;
|
204 |
box-shadow: inset 0 3px 8px 0 #f8ba36;
|
205 |
}
|
206 |
|
207 |
+
.purchase-premium
|
208 |
+
{
|
209 |
text-decoration: none;
|
210 |
}
|
211 |
|
212 |
+
.wapt-sup-pro
|
213 |
+
{
|
214 |
font-weight: bold;
|
215 |
color: red;
|
216 |
}
|
217 |
|
218 |
/*Filters block*/
|
219 |
+
.apt-filter-row
|
220 |
+
{
|
221 |
background: #ffffff;
|
222 |
padding: 20px 10px 20px 10px;
|
223 |
margin: 10px 0px 10px 0px !important;
|
225 |
border-radius: 10px;
|
226 |
}
|
227 |
|
228 |
+
.apt-filter-input
|
229 |
+
{
|
230 |
width: 150px;
|
231 |
}
|
232 |
|
233 |
+
.apt-filter-label
|
234 |
+
{
|
235 |
font-size: 15px;
|
236 |
margin-top: 5px;
|
237 |
margin-left: 5px;
|
238 |
margin-right: 5px;
|
239 |
}
|
240 |
|
241 |
+
.checked_api_key_ok
|
242 |
+
{
|
243 |
border: 2px solid green !important;
|
244 |
}
|
245 |
|
246 |
+
.checked_api_key_fail
|
247 |
+
{
|
248 |
border: 2px solid red !important;
|
249 |
}
|
250 |
|
251 |
+
.checked_api_key_proccess
|
252 |
+
{
|
253 |
background: #fff url('../img/ajax-loader.gif') 98%/25px no-repeat !important;
|
254 |
}
|
255 |
|
256 |
+
.wapt-pro-row
|
257 |
+
{
|
258 |
opacity: 0.5;
|
259 |
}
|
260 |
|
261 |
+
.wapt-pro-row input, .wapt-pro-row select
|
262 |
+
{
|
263 |
pointer-events: none;
|
264 |
}
|
265 |
+
|
266 |
+
.wapt-pro-row input + span:before, .wapt-pro-row select + span:before
|
267 |
+
{
|
268 |
display: inline-block;
|
269 |
position: absolute;
|
270 |
content: 'PRO';
|
admin/assets/css/tabs.css
CHANGED
@@ -120,15 +120,23 @@ a:active, a:focus {
|
|
120 |
margin: -0.25em 0.4em 0 0;
|
121 |
}
|
122 |
|
123 |
-
.icon-general:before
|
|
|
124 |
content: url(../img/settings-icon.png);
|
125 |
}
|
126 |
|
127 |
-
.icon-
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
content: url(../img/image-icon.png);
|
129 |
}
|
130 |
|
131 |
-
.icon-api:before
|
|
|
132 |
content: url(../img/api-icon.png);
|
133 |
}
|
134 |
|
120 |
margin: -0.25em 0.4em 0 0;
|
121 |
}
|
122 |
|
123 |
+
.icon-general:before
|
124 |
+
{
|
125 |
content: url(../img/settings-icon.png);
|
126 |
}
|
127 |
|
128 |
+
.icon-import:before
|
129 |
+
{
|
130 |
+
content: url(../img/import-icon.png);
|
131 |
+
}
|
132 |
+
|
133 |
+
.icon-image:before
|
134 |
+
{
|
135 |
content: url(../img/image-icon.png);
|
136 |
}
|
137 |
|
138 |
+
.icon-api:before
|
139 |
+
{
|
140 |
content: url(../img/api-icon.png);
|
141 |
}
|
142 |
|
admin/assets/img/import-icon.png
ADDED
Binary file
|
admin/assets/js/admin-thumbnail.js
CHANGED
@@ -26,28 +26,30 @@
|
|
26 |
//Отображение окна со всеми картинками в тексте поста
|
27 |
window.aptModalShow = function (that, postid, wpnonce) {
|
28 |
|
29 |
-
var $modal = $('#post_imgs_' + postid).find('>
|
30 |
var $ajaximg = $('#post_imgs_' + postid).find('> span');
|
31 |
//$modal.html('');
|
32 |
-
$('.imgs').find('>
|
33 |
|
34 |
-
tb_show(
|
|
|
35 |
|
36 |
$ajaximg.show();
|
37 |
// AJAX запрос для загрузки контента окна
|
38 |
jQuery.post(ajaxurl, {
|
39 |
-
action: action_column_get_thumbnails,
|
40 |
post_id: postid,
|
41 |
_ajax_nonce: wpnonce,
|
42 |
-
cookie: encodeURIComponent(document.cookie)
|
43 |
}).done(function (html) {
|
44 |
$ajaximg.hide();
|
45 |
$modal.html(html);
|
|
|
46 |
$('#wapt_thumbs').autocolumnlist({
|
47 |
columns: 3,
|
48 |
classname: 'wapt-grid-item',
|
49 |
min: 1
|
50 |
});
|
|
|
51 |
});
|
52 |
|
53 |
//return false; // для ссылки
|
26 |
//Отображение окна со всеми картинками в тексте поста
|
27 |
window.aptModalShow = function (that, postid, wpnonce) {
|
28 |
|
29 |
+
var $modal = $('#post_imgs_' + postid).find('> div');
|
30 |
var $ajaximg = $('#post_imgs_' + postid).find('> span');
|
31 |
//$modal.html('');
|
32 |
+
$('.imgs').find('> div').html(''); //очистка всех модальных окон, чтобы исключить конфликты
|
33 |
|
34 |
+
tb_show(apt.modal_title, '/?TB_inline&inlineId=post_imgs_' + postid + '&width=650&height=' + (window.innerHeight - 150));
|
35 |
+
//tb_show(apt.modal_title, '/?TB_inline&inlineId=post_imgs_' + postid + '&width=650&height=500');
|
36 |
|
37 |
$ajaximg.show();
|
38 |
// AJAX запрос для загрузки контента окна
|
39 |
jQuery.post(ajaxurl, {
|
40 |
+
action: apt.action_column_get_thumbnails,
|
41 |
post_id: postid,
|
42 |
_ajax_nonce: wpnonce,
|
|
|
43 |
}).done(function (html) {
|
44 |
$ajaximg.hide();
|
45 |
$modal.html(html);
|
46 |
+
/*
|
47 |
$('#wapt_thumbs').autocolumnlist({
|
48 |
columns: 3,
|
49 |
classname: 'wapt-grid-item',
|
50 |
min: 1
|
51 |
});
|
52 |
+
*/
|
53 |
});
|
54 |
|
55 |
//return false; // для ссылки
|
admin/assets/js/settings.js
CHANGED
@@ -3,9 +3,10 @@
|
|
3 |
$('input#wapt_text-line-spacing').attr('step', '0.1');
|
4 |
$('input#wapt_text-line-spacing').attr('min', '0');
|
5 |
|
|
|
6 |
//Чтобы при клике на label не открывались закрытые опции
|
7 |
-
|
8 |
e.preventDefault();
|
9 |
-
})
|
10 |
});
|
11 |
})(jQuery);
|
3 |
$('input#wapt_text-line-spacing').attr('step', '0.1');
|
4 |
$('input#wapt_text-line-spacing').attr('min', '0');
|
5 |
|
6 |
+
$(".wapt-icon-pro input[type='checkbox']").attr('disabled', 'disabled');
|
7 |
//Чтобы при клике на label не открывались закрытые опции
|
8 |
+
/*$("label[for*='wapt_']").on('click', function (e) {
|
9 |
e.preventDefault();
|
10 |
+
})*/
|
11 |
});
|
12 |
})(jQuery);
|
admin/assets/js/upload-font.js
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
jQuery(function ($) {
|
2 |
|
3 |
-
var $element = $(".factory-bootstrap-
|
4 |
var upload_button = $('#wapt-upload-button');
|
5 |
var upload_loader = $('#wapt-upload-loader');
|
6 |
|
7 |
-
$element.
|
8 |
|
9 |
upload_button.on('click', function (e) {
|
10 |
e.preventDefault();
|
1 |
jQuery(function ($) {
|
2 |
|
3 |
+
var $element = $(".factory-bootstrap-445 .factory-wapt-fonts");
|
4 |
var upload_button = $('#wapt-upload-button');
|
5 |
var upload_loader = $('#wapt-upload-loader');
|
6 |
|
7 |
+
$element.factoryBootstrap445_dropdownControl();
|
8 |
|
9 |
upload_button.on('click', function (e) {
|
10 |
e.preventDefault();
|
admin/class-wapt-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 WAPT_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_Factory445_Activator
|
8 |
*
|
9 |
* @version 1.0.1
|
10 |
*/
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
class WAPT_Activation extends Wbcr_Factory445_Activator {
|
18 |
|
19 |
/**
|
20 |
* Method is executed during the activation of the plugin.
|
admin/class-wapt-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 WAPT_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_FactoryPages444_AdminPage
|
8 |
*
|
9 |
* @version 1.0.0
|
10 |
*/
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
class WAPT_Page extends Wbcr_FactoryPages444_AdminPage {
|
18 |
|
19 |
/**
|
20 |
* Name of the template to get content of. It will be based on plugins /admin/views/ dir.
|
admin/pages/generate.php
CHANGED
@@ -20,7 +20,7 @@ class WAPT_Generate extends WAPT_Page {
|
|
20 |
* Mainly used to navigate between pages.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
-
* @see
|
24 |
*
|
25 |
* @var string
|
26 |
*/
|
@@ -112,7 +112,7 @@ class WAPT_Generate extends WAPT_Page {
|
|
112 |
*
|
113 |
* @return void
|
114 |
* @since 1.0.0
|
115 |
-
* @see
|
116 |
*
|
117 |
*/
|
118 |
public function assets( $scripts, $styles ) {
|
20 |
* Mainly used to navigate between pages.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
+
* @see FactoryPages444_AdminPage
|
24 |
*
|
25 |
* @var string
|
26 |
*/
|
112 |
*
|
113 |
* @return void
|
114 |
* @since 1.0.0
|
115 |
+
* @see FactoryPages444_AdminPage
|
116 |
*
|
117 |
*/
|
118 |
public function assets( $scripts, $styles ) {
|
admin/pages/license.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
<?php
|
2 |
|
3 |
// Exit if accessed directly
|
4 |
-
use WBCR\
|
5 |
-
use WBCR\
|
6 |
|
7 |
if ( ! defined( 'ABSPATH' ) ) {
|
8 |
exit;
|
1 |
<?php
|
2 |
|
3 |
// Exit if accessed directly
|
4 |
+
use WBCR\Factory_445\Premium\Interfaces\License;
|
5 |
+
use WBCR\Factory_445\Premium\Provider;
|
6 |
|
7 |
if ( ! defined( 'ABSPATH' ) ) {
|
8 |
exit;
|
admin/pages/settings.php
CHANGED
@@ -1,5 +1,7 @@
|
|
1 |
<?php
|
|
|
2 |
use WBCR\APT\AutoPostThumbnails;
|
|
|
3 |
// Exit if accessed directly
|
4 |
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
exit;
|
@@ -41,14 +43,14 @@ class WAPT_Settings extends WAPT_Page {
|
|
41 |
* @param WAPT_Plugin $plugin
|
42 |
*/
|
43 |
public function __construct( $plugin ) {
|
44 |
-
$this->id = $plugin->getPrefix(). "settings";
|
45 |
$this->menu_target = $plugin->getPrefix() . "generate-" . $plugin->getPluginName();
|
46 |
$this->page_title = __( 'Settings of APT', 'apt' );
|
47 |
$this->menu_title = __( 'Settings', 'apt' );
|
48 |
$this->capabilitiy = "manage_options";
|
49 |
$this->template_name = "settings";
|
50 |
|
51 |
-
add_action( '
|
52 |
$colorControls = array(
|
53 |
[
|
54 |
'type' => 'wapt-color',
|
@@ -74,6 +76,26 @@ class WAPT_Settings extends WAPT_Page {
|
|
74 |
parent::__construct( $plugin );
|
75 |
}
|
76 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
/**
|
78 |
* Returns options for the Basic Settings screen.
|
79 |
*
|
@@ -87,7 +109,7 @@ class WAPT_Settings extends WAPT_Page {
|
|
87 |
|
88 |
$options[] = [
|
89 |
'type' => 'html',
|
90 |
-
'html' => '<h3 style="margin-left:0">General</h3>'
|
91 |
];
|
92 |
|
93 |
$options[] = [
|
@@ -104,19 +126,19 @@ class WAPT_Settings extends WAPT_Page {
|
|
104 |
];
|
105 |
|
106 |
$options[] = [
|
107 |
-
'type'
|
108 |
-
'way'
|
109 |
-
'name'
|
110 |
-
'data'
|
111 |
[ 'find', __( 'Find in post', 'apt' ) ],
|
112 |
[ 'generate', __( 'Generate from title', 'apt' ) ],
|
113 |
[ 'both', __( 'Find or generate', 'apt' ) ],
|
114 |
[ 'google', __( 'Google', 'apt' ) ],
|
115 |
[ 'find_google', __( 'Find or Google', 'apt' ) ],
|
116 |
],
|
117 |
-
'default'
|
118 |
-
'title'
|
119 |
-
'hint'
|
120 |
<br> <b>Find in post:</b> search for the first image in the post text
|
121 |
<br> <b>Generate from title:</b> created from the title on a colored background
|
122 |
<br> <b>Find or generate:</b> find an image in the post text, if it is not present, generate it from the title
|
@@ -137,6 +159,68 @@ class WAPT_Settings extends WAPT_Page {
|
|
137 |
return $options;
|
138 |
}
|
139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
/**
|
141 |
* Returns options for the Basic Settings screen.
|
142 |
*
|
@@ -497,18 +581,21 @@ class WAPT_Settings extends WAPT_Page {
|
|
497 |
wp_enqueue_script( 'wapt-settings-script', WAPT_PLUGIN_URL . '/admin/assets/js/settings.js', [], WAPT_PLUGIN_VERSION, true );
|
498 |
// creating a form
|
499 |
global $form;
|
500 |
-
$form = new
|
501 |
'scope' => substr( $this->plugin->getPrefix(), 0, - 1 ),
|
502 |
'name' => 'setting'
|
503 |
], $this->plugin );
|
504 |
|
505 |
-
$form->setProvider( new
|
506 |
|
507 |
$wapt_tab = WAPT_Plugin::app()->request->get( 'apt_tab', '' );
|
508 |
switch ( $wapt_tab ) {
|
509 |
case 'general':
|
510 |
$form->add( $this->getOptions_general() );
|
511 |
break;
|
|
|
|
|
|
|
512 |
case 'img_generation':
|
513 |
$form->add( $this->getOptions_image() );
|
514 |
break;
|
1 |
<?php
|
2 |
+
|
3 |
use WBCR\APT\AutoPostThumbnails;
|
4 |
+
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
exit;
|
43 |
* @param WAPT_Plugin $plugin
|
44 |
*/
|
45 |
public function __construct( $plugin ) {
|
46 |
+
$this->id = $plugin->getPrefix() . "settings";
|
47 |
$this->menu_target = $plugin->getPrefix() . "generate-" . $plugin->getPluginName();
|
48 |
$this->page_title = __( 'Settings of APT', 'apt' );
|
49 |
$this->menu_title = __( 'Settings', 'apt' );
|
50 |
$this->capabilitiy = "manage_options";
|
51 |
$this->template_name = "settings";
|
52 |
|
53 |
+
add_action( 'wbcr_factory_forms_442_register_controls', function () {
|
54 |
$colorControls = array(
|
55 |
[
|
56 |
'type' => 'wapt-color',
|
76 |
parent::__construct( $plugin );
|
77 |
}
|
78 |
|
79 |
+
/**
|
80 |
+
* Enqueue page assets
|
81 |
+
*
|
82 |
+
* @return void
|
83 |
+
* @since 3.8.1
|
84 |
+
* @see Wbcr_FactoryPages444_AdminPage
|
85 |
+
*
|
86 |
+
*/
|
87 |
+
public function assets( $scripts, $styles ) {
|
88 |
+
parent::assets( $scripts, $styles );
|
89 |
+
|
90 |
+
$this->scripts->request( [
|
91 |
+
'control.list',
|
92 |
+
], 'bootstrap' );
|
93 |
+
|
94 |
+
$this->styles->request( [
|
95 |
+
'control.list'
|
96 |
+
], 'bootstrap' );
|
97 |
+
}
|
98 |
+
|
99 |
/**
|
100 |
* Returns options for the Basic Settings screen.
|
101 |
*
|
109 |
|
110 |
$options[] = [
|
111 |
'type' => 'html',
|
112 |
+
'html' => '<h3 style="margin-left:0">' . __( 'General', 'apt' ) . '</h3>'
|
113 |
];
|
114 |
|
115 |
$options[] = [
|
126 |
];
|
127 |
|
128 |
$options[] = [
|
129 |
+
'type' => 'dropdown',
|
130 |
+
'way' => 'buttons',
|
131 |
+
'name' => 'generate_autoimage',
|
132 |
+
'data' => [
|
133 |
[ 'find', __( 'Find in post', 'apt' ) ],
|
134 |
[ 'generate', __( 'Generate from title', 'apt' ) ],
|
135 |
[ 'both', __( 'Find or generate', 'apt' ) ],
|
136 |
[ 'google', __( 'Google', 'apt' ) ],
|
137 |
[ 'find_google', __( 'Find or Google', 'apt' ) ],
|
138 |
],
|
139 |
+
'default' => 'find',
|
140 |
+
'title' => __( 'Featured image', 'apt' ),
|
141 |
+
'hint' => __( "How to generate featured image:
|
142 |
<br> <b>Find in post:</b> search for the first image in the post text
|
143 |
<br> <b>Generate from title:</b> created from the title on a colored background
|
144 |
<br> <b>Find or generate:</b> find an image in the post text, if it is not present, generate it from the title
|
159 |
return $options;
|
160 |
}
|
161 |
|
162 |
+
/**
|
163 |
+
* Returns options for the Basic Settings screen.
|
164 |
+
*
|
165 |
+
* @return array
|
166 |
+
* @since 3.8.1
|
167 |
+
*/
|
168 |
+
public function getOptions_import() {
|
169 |
+
$is_premium = WAPT_Plugin::app()->is_premium();
|
170 |
+
$pro = $is_premium ? '' : "<br><span class='wapt-icon-pro wapt-icon-pro-span'>PRO</span>";
|
171 |
+
|
172 |
+
$args = [ 'public' => true ];
|
173 |
+
|
174 |
+
if ( $this->plugin->isNetworkActive() ) {
|
175 |
+
$args['_builtin'] = true;
|
176 |
+
}
|
177 |
+
$types = get_post_types( $args, 'objects' );
|
178 |
+
|
179 |
+
$post_types = [];
|
180 |
+
foreach ( $types as $type_name => $type ) {
|
181 |
+
if ( $type_name == 'attachment' ) {
|
182 |
+
continue;
|
183 |
+
}
|
184 |
+
|
185 |
+
$post_types[] = [ $type_name, $type->label ];
|
186 |
+
}
|
187 |
+
|
188 |
+
$options = [];
|
189 |
+
|
190 |
+
$options[] = [
|
191 |
+
'type' => 'html',
|
192 |
+
'html' => '<h3 style="margin-left:0">' . __( 'Images import settings', 'apt' ) . '</h3>'
|
193 |
+
];
|
194 |
+
|
195 |
+
$options[] = [
|
196 |
+
'type' => 'separator'
|
197 |
+
];
|
198 |
+
|
199 |
+
$options[] = [
|
200 |
+
'type' => 'checkbox',
|
201 |
+
'way' => 'buttons',
|
202 |
+
'name' => 'auto_upload_images',
|
203 |
+
'title' => __( 'Auto images import', 'apt' ),
|
204 |
+
'default' => false,
|
205 |
+
'hint' => __( 'Import post images to the media library and replacing them in the text when saving the post', 'apt' ),
|
206 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
|
207 |
+
];
|
208 |
+
|
209 |
+
$options[] = [
|
210 |
+
'type' => 'list',
|
211 |
+
'way' => 'checklist',
|
212 |
+
'name' => 'import_post_types',
|
213 |
+
'data' => $post_types,
|
214 |
+
'default' => '',
|
215 |
+
'title' => __( 'Import for post types', 'apt' ) . $pro,
|
216 |
+
'hint' => __( "What types of posts to import images for", 'apt' ),
|
217 |
+
'cssClass' => ( ! $is_premium ) ? [ 'wapt-icon-pro' ] : [],
|
218 |
+
'htmlAttrs' => ( ! $is_premium ) ? [ 'disabled' => 'disabled' ] : [],
|
219 |
+
];
|
220 |
+
|
221 |
+
return $options;
|
222 |
+
}
|
223 |
+
|
224 |
/**
|
225 |
* Returns options for the Basic Settings screen.
|
226 |
*
|
581 |
wp_enqueue_script( 'wapt-settings-script', WAPT_PLUGIN_URL . '/admin/assets/js/settings.js', [], WAPT_PLUGIN_VERSION, true );
|
582 |
// creating a form
|
583 |
global $form;
|
584 |
+
$form = new Wbcr_FactoryForms442_Form( [
|
585 |
'scope' => substr( $this->plugin->getPrefix(), 0, - 1 ),
|
586 |
'name' => 'setting'
|
587 |
], $this->plugin );
|
588 |
|
589 |
+
$form->setProvider( new Wbcr_FactoryForms442_OptionsValueProvider( $this->plugin ) );
|
590 |
|
591 |
$wapt_tab = WAPT_Plugin::app()->request->get( 'apt_tab', '' );
|
592 |
switch ( $wapt_tab ) {
|
593 |
case 'general':
|
594 |
$form->add( $this->getOptions_general() );
|
595 |
break;
|
596 |
+
case 'import':
|
597 |
+
$form->add( $this->getOptions_import() );
|
598 |
+
break;
|
599 |
case 'img_generation':
|
600 |
$form->add( $this->getOptions_image() );
|
601 |
break;
|
admin/views/media-library.php
CHANGED
@@ -47,26 +47,31 @@ $apt_content_nonce = wp_create_nonce( 'apt_content' );
|
|
47 |
</div>
|
48 |
|
49 |
<style>
|
50 |
-
sup
|
|
|
51 |
font-size: 10px;
|
52 |
}
|
53 |
|
54 |
-
.tabs
|
|
|
55 |
display: inline-block;
|
56 |
width: 100%;
|
57 |
margin: 5px 0px 10px 0px;
|
58 |
}
|
59 |
|
60 |
-
.tabs > div
|
|
|
61 |
padding-top: 10px;
|
62 |
}
|
63 |
|
64 |
-
.tabs > ul
|
|
|
65 |
margin: 0px;
|
66 |
padding: 0px;
|
67 |
}
|
68 |
|
69 |
-
.tabs > ul:after
|
|
|
70 |
content: "";
|
71 |
display: block;
|
72 |
clear: both;
|
@@ -74,66 +79,76 @@ $apt_content_nonce = wp_create_nonce( 'apt_content' );
|
|
74 |
background: #008ec2;
|
75 |
}
|
76 |
|
77 |
-
.tabs > ul li
|
78 |
-
|
79 |
cursor: pointer;
|
80 |
display: block;
|
81 |
float: left;
|
82 |
-
padding: 10px
|
83 |
background: #f1f1f1;
|
84 |
color: #0073aa;
|
85 |
width: 15%;
|
86 |
-
border-radius: 10px 10px
|
87 |
font-weight: bold;
|
88 |
text-align: center;
|
89 |
}
|
90 |
|
91 |
-
.tabs > ul li.active, .tabs ul li.active:hover
|
|
|
92 |
background: #008ec2;
|
93 |
color: #ffffff;
|
94 |
width: 15%;
|
95 |
}
|
96 |
|
97 |
-
.tabs > ul li:hover
|
|
|
98 |
background: #008ec2;
|
99 |
color: #dddddd;
|
100 |
}
|
101 |
|
102 |
-
.tabs > ul li
|
|
|
103 |
margin-bottom: 0;
|
104 |
}
|
105 |
|
106 |
-
.tab
|
|
|
107 |
padding: 10px;
|
108 |
}
|
109 |
|
110 |
-
#ajaxloader
|
|
|
111 |
margin: 20px 10px 10px 30px;
|
112 |
}
|
113 |
|
114 |
-
#page_num_div
|
|
|
115 |
display: inline;
|
116 |
font-weight: bold;
|
117 |
padding: 20px;
|
118 |
}
|
119 |
|
120 |
-
.apt_pages
|
|
|
121 |
padding-top: 20px;
|
122 |
}
|
123 |
|
124 |
-
.divform
|
|
|
125 |
line-height: 1.5;
|
126 |
margin: 1em 0;
|
127 |
max-width: 500px;
|
128 |
position: relative;
|
129 |
}
|
130 |
|
131 |
-
.input_query
|
|
|
132 |
width: 100%;
|
133 |
padding: 7px 32px 7px 9px;
|
134 |
}
|
135 |
|
136 |
-
.submit_button
|
|
|
137 |
height: 90%;
|
138 |
width: 70px;
|
139 |
border: 0;
|
@@ -144,7 +159,8 @@ $apt_content_nonce = wp_create_nonce( 'apt_content' );
|
|
144 |
outline: 0;
|
145 |
}
|
146 |
|
147 |
-
.custom-media-button
|
|
|
148 |
float: right;
|
149 |
padding: 0px 20px 20px 0px;
|
150 |
position: absolute;
|
@@ -199,6 +215,7 @@ $apt_content_nonce = wp_create_nonce( 'apt_content' );
|
|
199 |
};
|
200 |
return this.each(createTabs);
|
201 |
};
|
|
|
202 |
jQuery(".tabs").lightTabs();
|
203 |
|
204 |
jQuery("#ajax-watson").on('click', function () {
|
47 |
</div>
|
48 |
|
49 |
<style>
|
50 |
+
sup
|
51 |
+
{
|
52 |
font-size: 10px;
|
53 |
}
|
54 |
|
55 |
+
.tabs
|
56 |
+
{
|
57 |
display: inline-block;
|
58 |
width: 100%;
|
59 |
margin: 5px 0px 10px 0px;
|
60 |
}
|
61 |
|
62 |
+
.tabs > div
|
63 |
+
{
|
64 |
padding-top: 10px;
|
65 |
}
|
66 |
|
67 |
+
.tabs > ul
|
68 |
+
{
|
69 |
margin: 0px;
|
70 |
padding: 0px;
|
71 |
}
|
72 |
|
73 |
+
.tabs > ul:after
|
74 |
+
{
|
75 |
content: "";
|
76 |
display: block;
|
77 |
clear: both;
|
79 |
background: #008ec2;
|
80 |
}
|
81 |
|
82 |
+
.tabs > ul li
|
83 |
+
{
|
84 |
cursor: pointer;
|
85 |
display: block;
|
86 |
float: left;
|
87 |
+
padding: 10px 0;
|
88 |
background: #f1f1f1;
|
89 |
color: #0073aa;
|
90 |
width: 15%;
|
91 |
+
border-radius: 10px 10px 0 0;
|
92 |
font-weight: bold;
|
93 |
text-align: center;
|
94 |
}
|
95 |
|
96 |
+
.tabs > ul li.active, .tabs ul li.active:hover
|
97 |
+
{
|
98 |
background: #008ec2;
|
99 |
color: #ffffff;
|
100 |
width: 15%;
|
101 |
}
|
102 |
|
103 |
+
.tabs > ul li:hover
|
104 |
+
{
|
105 |
background: #008ec2;
|
106 |
color: #dddddd;
|
107 |
}
|
108 |
|
109 |
+
.tabs > ul li
|
110 |
+
{
|
111 |
margin-bottom: 0;
|
112 |
}
|
113 |
|
114 |
+
.tab
|
115 |
+
{
|
116 |
padding: 10px;
|
117 |
}
|
118 |
|
119 |
+
#ajaxloader
|
120 |
+
{
|
121 |
margin: 20px 10px 10px 30px;
|
122 |
}
|
123 |
|
124 |
+
#page_num_div
|
125 |
+
{
|
126 |
display: inline;
|
127 |
font-weight: bold;
|
128 |
padding: 20px;
|
129 |
}
|
130 |
|
131 |
+
.apt_pages
|
132 |
+
{
|
133 |
padding-top: 20px;
|
134 |
}
|
135 |
|
136 |
+
.divform
|
137 |
+
{
|
138 |
line-height: 1.5;
|
139 |
margin: 1em 0;
|
140 |
max-width: 500px;
|
141 |
position: relative;
|
142 |
}
|
143 |
|
144 |
+
.input_query
|
145 |
+
{
|
146 |
width: 100%;
|
147 |
padding: 7px 32px 7px 9px;
|
148 |
}
|
149 |
|
150 |
+
.submit_button
|
151 |
+
{
|
152 |
height: 90%;
|
153 |
width: 70px;
|
154 |
border: 0;
|
159 |
outline: 0;
|
160 |
}
|
161 |
|
162 |
+
.custom-media-button
|
163 |
+
{
|
164 |
float: right;
|
165 |
padding: 0px 20px 20px 0px;
|
166 |
position: absolute;
|
215 |
};
|
216 |
return this.each(createTabs);
|
217 |
};
|
218 |
+
|
219 |
jQuery(".tabs").lightTabs();
|
220 |
|
221 |
jQuery("#ajax-watson").on('click', function () {
|
admin/views/tab-license.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<div class="wrap">
|
2 |
-
<div class="factory-bootstrap-
|
3 |
<?php wp_nonce_field( 'license' ); ?>
|
4 |
<div id="wapt-license-wrapper"
|
5 |
data-loader="<?php echo WAPT_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
|
1 |
<div class="wrap">
|
2 |
+
<div class="factory-bootstrap-445 factory-fontawesome-000">
|
3 |
<?php wp_nonce_field( 'license' ); ?>
|
4 |
<div id="wapt-license-wrapper"
|
5 |
data-loader="<?php echo WAPT_PLUGIN_URL . '/admin/assets/img/loader.gif'; ?>"
|
admin/views/tab-main.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<div class="wrap">
|
2 |
<h2><?php esc_html_e( 'Generate Featured images for posts', 'apt' ) ?></h2>
|
3 |
-
<div class="factory-bootstrap-
|
4 |
<div class="row">
|
5 |
<div class="col-md-9">
|
6 |
|
1 |
<div class="wrap">
|
2 |
<h2><?php esc_html_e( 'Generate Featured images for posts', 'apt' ) ?></h2>
|
3 |
+
<div class="factory-bootstrap-445 factory-fontawesome-000">
|
4 |
<div class="row">
|
5 |
<div class="col-md-9">
|
6 |
|
admin/views/tab-settings.php
CHANGED
@@ -11,6 +11,12 @@ $TABS = array(
|
|
11 |
'icon' => 'icon-general',
|
12 |
'url' => $current_url . "&apt_tab=general",
|
13 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
'img_generation' => array(
|
15 |
'current' => false,
|
16 |
'caption' => __( 'Image generation', 'apt' ),
|
@@ -57,7 +63,7 @@ if ( isset( $_GET['apt_tab'] ) && ! empty( $_GET['apt_tab'] ) ) {
|
|
57 |
<div class="content">
|
58 |
<section id="section-<?php echo $current_tab; ?>">
|
59 |
<div class="wrap">
|
60 |
-
<div class="factory-bootstrap-
|
61 |
<div class="row">
|
62 |
<div class="col-md-8">
|
63 |
<form method="post" class="form-horizontal">
|
11 |
'icon' => 'icon-general',
|
12 |
'url' => $current_url . "&apt_tab=general",
|
13 |
),
|
14 |
+
'import' => array(
|
15 |
+
'current' => false,
|
16 |
+
'caption' => __( 'Import images', 'apt' ),
|
17 |
+
'icon' => 'icon-import',
|
18 |
+
'url' => $current_url . "&apt_tab=import",
|
19 |
+
),
|
20 |
'img_generation' => array(
|
21 |
'current' => false,
|
22 |
'caption' => __( 'Image generation', 'apt' ),
|
63 |
<div class="content">
|
64 |
<section id="section-<?php echo $current_tab; ?>">
|
65 |
<div class="wrap">
|
66 |
+
<div class="factory-bootstrap-445 factory-fontawesome-000">
|
67 |
<div class="row">
|
68 |
<div class="col-md-8">
|
69 |
<form method="post" class="form-horizontal">
|
auto-post-thumbnail.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Auto Featured Image (Auto Post Thumbnail)
|
4 |
Plugin URI: https://cm-wp.com/apt
|
5 |
Description: Automatically generate the Featured Image from the first image in post or any custom post type only if Featured Image is not set manually. Featured Image Generation From Title. Native image search for Elementor, Gutenberg, Classic Editor.
|
6 |
-
Version: 3.8.
|
7 |
Author: Creative Motion <support@cm-wp.com>
|
8 |
Author URI: https://cm-wp.com
|
9 |
Text Domain: apt
|
@@ -37,12 +37,12 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
37 |
require_once( dirname( __FILE__ ) . '/libs/factory/core/includes/class-factory-requirements.php' );
|
38 |
|
39 |
$plugin_info = array(
|
40 |
-
'prefix'
|
41 |
-
'plugin_name'
|
42 |
-
'plugin_title'
|
43 |
|
44 |
// Служба поддержки
|
45 |
-
'support_details'
|
46 |
'url' => 'https://cm-wp.com',
|
47 |
'pages_map' => array(
|
48 |
'features' => 'features',
|
@@ -53,8 +53,8 @@ $plugin_info = array(
|
|
53 |
),
|
54 |
|
55 |
// Настройка обновлений плагина
|
56 |
-
'has_updates'
|
57 |
-
'updates_settings'
|
58 |
'repository' => 'wordpress',
|
59 |
'slug' => 'auto-post-thumbnail',
|
60 |
'maybe_rollback' => true,
|
@@ -64,8 +64,8 @@ $plugin_info = array(
|
|
64 |
),
|
65 |
|
66 |
// Настройка премиум плагина
|
67 |
-
'has_premium'
|
68 |
-
'license_settings'
|
69 |
'has_updates' => true,
|
70 |
'provider' => 'freemius',
|
71 |
'slug' => 'auto-post-thumbnail-premium',
|
@@ -81,24 +81,24 @@ $plugin_info = array(
|
|
81 |
)
|
82 |
),
|
83 |
|
84 |
-
'render_adverts'
|
85 |
-
'adverts_settings'
|
86 |
'dashboard_widget' => true,
|
87 |
'right_sidebar' => true,
|
88 |
'notice' => true,
|
89 |
),
|
90 |
|
91 |
'load_factory_modules' => array(
|
92 |
-
array( 'libs/factory/bootstrap', '
|
93 |
-
array( 'libs/factory/forms', '
|
94 |
-
array( 'libs/factory/pages', '
|
95 |
-
array( 'libs/factory/freemius', '
|
96 |
-
array( 'libs/factory/adverts', '
|
97 |
array( 'libs/factory/feedback', 'factory_feedback_109', 'admin' ),
|
98 |
)
|
99 |
);
|
100 |
|
101 |
-
$wapt_compatibility = new
|
102 |
'plugin_already_activate' => defined( 'WAPT_PLUGIN_ACTIVE' ),
|
103 |
'required_php_version' => '7.0',
|
104 |
'required_wp_version' => '4.8.0',
|
@@ -134,8 +134,9 @@ define( 'WAPT_PLUGIN_DIR', dirname( __FILE__ ) );
|
|
134 |
*/
|
135 |
require_once( WAPT_PLUGIN_DIR . '/libs/factory/core/boot.php' );
|
136 |
|
137 |
-
require_once( WAPT_PLUGIN_DIR . '/includes/class-wapt-plugin.php' );
|
138 |
require_once( WAPT_PLUGIN_DIR . '/includes/class-apt.php' );
|
|
|
|
|
139 |
require_once( WAPT_PLUGIN_DIR . '/includes/class-wapt-image.php' );
|
140 |
|
141 |
require_once( WAPT_PLUGIN_DIR . '/includes/image-search/boot.php' );
|
3 |
Plugin Name: Auto Featured Image (Auto Post Thumbnail)
|
4 |
Plugin URI: https://cm-wp.com/apt
|
5 |
Description: Automatically generate the Featured Image from the first image in post or any custom post type only if Featured Image is not set manually. Featured Image Generation From Title. Native image search for Elementor, Gutenberg, Classic Editor.
|
6 |
+
Version: 3.8.1
|
7 |
Author: Creative Motion <support@cm-wp.com>
|
8 |
Author URI: https://cm-wp.com
|
9 |
Text Domain: apt
|
37 |
require_once( dirname( __FILE__ ) . '/libs/factory/core/includes/class-factory-requirements.php' );
|
38 |
|
39 |
$plugin_info = array(
|
40 |
+
'prefix' => 'wapt_',
|
41 |
+
'plugin_name' => 'wbcr_apt',
|
42 |
+
'plugin_title' => __( 'Auto Featured Image', 'apt' ),
|
43 |
|
44 |
// Служба поддержки
|
45 |
+
'support_details' => array(
|
46 |
'url' => 'https://cm-wp.com',
|
47 |
'pages_map' => array(
|
48 |
'features' => 'features',
|
53 |
),
|
54 |
|
55 |
// Настройка обновлений плагина
|
56 |
+
'has_updates' => true,
|
57 |
+
'updates_settings' => array(
|
58 |
'repository' => 'wordpress',
|
59 |
'slug' => 'auto-post-thumbnail',
|
60 |
'maybe_rollback' => true,
|
64 |
),
|
65 |
|
66 |
// Настройка премиум плагина
|
67 |
+
'has_premium' => true,
|
68 |
+
'license_settings' => array(
|
69 |
'has_updates' => true,
|
70 |
'provider' => 'freemius',
|
71 |
'slug' => 'auto-post-thumbnail-premium',
|
81 |
)
|
82 |
),
|
83 |
|
84 |
+
'render_adverts' => true,
|
85 |
+
'adverts_settings' => array(
|
86 |
'dashboard_widget' => true,
|
87 |
'right_sidebar' => true,
|
88 |
'notice' => true,
|
89 |
),
|
90 |
|
91 |
'load_factory_modules' => array(
|
92 |
+
array( 'libs/factory/bootstrap', 'factory_bootstrap_445', 'admin' ),
|
93 |
+
array( 'libs/factory/forms', 'factory_forms_442', 'admin' ),
|
94 |
+
array( 'libs/factory/pages', 'factory_pages_444', 'admin' ),
|
95 |
+
array( 'libs/factory/freemius', 'factory_freemius_133', 'all' ),
|
96 |
+
array( 'libs/factory/adverts', 'factory_adverts_123', 'admin' ),
|
97 |
array( 'libs/factory/feedback', 'factory_feedback_109', 'admin' ),
|
98 |
)
|
99 |
);
|
100 |
|
101 |
+
$wapt_compatibility = new Wbcr_Factory445_Requirements( __FILE__, array_merge( $plugin_info, array(
|
102 |
'plugin_already_activate' => defined( 'WAPT_PLUGIN_ACTIVE' ),
|
103 |
'required_php_version' => '7.0',
|
104 |
'required_wp_version' => '4.8.0',
|
134 |
*/
|
135 |
require_once( WAPT_PLUGIN_DIR . '/libs/factory/core/boot.php' );
|
136 |
|
|
|
137 |
require_once( WAPT_PLUGIN_DIR . '/includes/class-apt.php' );
|
138 |
+
require_once( WAPT_PLUGIN_DIR . '/includes/class-post-images.php' );
|
139 |
+
require_once( WAPT_PLUGIN_DIR . '/includes/class-wapt-plugin.php' );
|
140 |
require_once( WAPT_PLUGIN_DIR . '/includes/class-wapt-image.php' );
|
141 |
|
142 |
require_once( WAPT_PLUGIN_DIR . '/includes/image-search/boot.php' );
|
includes/class-apt.php
CHANGED
@@ -92,13 +92,27 @@ class AutoPostThumbnails {
|
|
92 |
* Initiate all required hooks.
|
93 |
*/
|
94 |
private function init() {
|
95 |
-
$
|
|
|
|
|
96 |
|
97 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
//add_action( 'publish_post', [ $this, 'publish_post' ], 10, 1 );
|
99 |
add_action( 'save_post', [ $this, 'publish_post' ], 10, 3 );
|
100 |
// This hook handle update post via rest api. for example Wordpress mobile apps
|
101 |
-
add_action( '
|
|
|
102 |
// This hook will now handle all sort publishing including posts, custom types, scheduled posts, etc.
|
103 |
add_action( 'transition_post_status', [ $this, 'check_required_transition' ], 10, 3 );
|
104 |
} else {
|
@@ -129,6 +143,12 @@ class AutoPostThumbnails {
|
|
129 |
add_action( 'wp_ajax_hide_notice_auto_generation', [ $this, 'hide_notice_auto_generation' ] );
|
130 |
}
|
131 |
|
|
|
|
|
|
|
|
|
|
|
|
|
132 |
/**
|
133 |
* Get posts id's
|
134 |
*
|
@@ -141,15 +161,18 @@ class AutoPostThumbnails {
|
|
141 |
check_ajax_referer( 'get-posts' );
|
142 |
|
143 |
$generate = \WAPT_Plugin::app()->getOption( "generate_autoimage", 'find' );
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
|
|
|
|
|
|
|
|
150 |
}
|
151 |
|
152 |
-
|
153 |
$has_thumb = (bool) $_POST['withThumb'];
|
154 |
$type = $_POST['posttype'];
|
155 |
if ( \WAPT_Plugin::app()->is_premium() ) {
|
@@ -170,8 +193,8 @@ class AutoPostThumbnails {
|
|
170 |
foreach ( $query->posts as $post ) {
|
171 |
//если запрошены посты без тамбнеила, значит пользователь хочет сгенерировать их
|
172 |
if ( ! $has_thumb ) {
|
173 |
-
$images =
|
174 |
-
if ( (
|
175 |
$ids[] = $post->ID;
|
176 |
}
|
177 |
} else //иначе он хочет удалить тамбнэйлы
|
@@ -319,98 +342,57 @@ class AutoPostThumbnails {
|
|
319 |
return $query;
|
320 |
}
|
321 |
|
322 |
-
/**
|
323 |
-
* Get an array of images url, contained in the post
|
324 |
-
*
|
325 |
-
* @param $post_id
|
326 |
-
*
|
327 |
-
* @return array
|
328 |
-
*/
|
329 |
-
public function get_images_from_post( $post_id ) {
|
330 |
-
$post = get_post( $post_id );
|
331 |
-
|
332 |
-
// Initialize variable used to store list of matched images as per provided regular expression
|
333 |
-
$matches = [];
|
334 |
-
$images = [];
|
335 |
-
|
336 |
-
//do shortcodes before search images
|
337 |
-
$post_content = do_shortcode( $post->post_content );
|
338 |
-
|
339 |
-
// Get all images from post's body
|
340 |
-
preg_match_all( '/<\s*img .*?src\s*=\s*[\"\']?([^\"\'> ]*).*?>/i', $post_content, $matches );
|
341 |
-
|
342 |
-
if ( count( $matches ) ) {
|
343 |
-
foreach ( $matches[0] as $key => $image ) {
|
344 |
-
// Make sure to assign correct title to the image. Extract it from img tag
|
345 |
-
preg_match_all( '/<\s*img [^\>]*title\s*=\s*[\""\']?([^\""\'>]*)/i', $image, $matchesTitle );
|
346 |
-
|
347 |
-
if ( count( $matchesTitle ) && isset( $matchesTitle[1] ) && isset( $matchesTitle[1][ $key ] ) ) {
|
348 |
-
$images['titles'][] = $matches[1][ $key ];
|
349 |
-
}
|
350 |
-
|
351 |
-
$images['tags'][] = htmlspecialchars( $image );
|
352 |
-
$images['urls'][] = $matches[1][ $key ];
|
353 |
-
}
|
354 |
-
}
|
355 |
-
|
356 |
-
return $images;
|
357 |
-
}
|
358 |
-
|
359 |
/**
|
360 |
* Get thumbnail id for image
|
361 |
*
|
362 |
-
* @param
|
363 |
-
* @param string $url
|
364 |
*
|
365 |
* @return bool|int
|
366 |
*/
|
367 |
-
public function get_thumbnail_id( $image
|
368 |
global $wpdb;
|
|
|
369 |
|
370 |
/**
|
371 |
* If the image is from the WordPress own media gallery, then it appends the thumbnail id to a css class.
|
372 |
* Look for this id in the IMG tag.
|
373 |
*/
|
374 |
-
|
375 |
-
|
376 |
-
if ( $thumb_id ) {
|
377 |
-
$thumb_id = $thumb_id[1];
|
378 |
-
}
|
379 |
|
380 |
-
|
381 |
-
|
382 |
-
}
|
383 |
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
$result = $wpdb->get_results( "SELECT ID FROM {$wpdb->posts} WHERE guid = '%" . $url . "%'" );
|
388 |
-
if ( $result ) {
|
389 |
-
$thumb_id = $result[0]->ID;
|
390 |
}
|
391 |
}
|
392 |
|
393 |
-
// Still no id found? Try found by post_name
|
394 |
if ( ! $thumb_id ) {
|
395 |
-
|
396 |
-
|
397 |
-
$
|
398 |
-
|
399 |
-
$
|
400 |
-
$
|
401 |
-
|
402 |
-
if ( $image_url ) {
|
403 |
-
$result = $wpdb->get_results( "SELECT ID FROM {$wpdb->posts} WHERE post_name = '" . $image_url . "' AND post_type = 'attachment'" );
|
404 |
-
if ( $result ) {
|
405 |
-
$thumb_id = $result[0]->ID;
|
406 |
-
}
|
407 |
-
}
|
408 |
}
|
409 |
}
|
410 |
|
411 |
return is_numeric( $thumb_id ) ? $thumb_id : false;
|
412 |
}
|
413 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
414 |
/**
|
415 |
* Function to save first image in post as post thumbnail.
|
416 |
*
|
@@ -436,39 +418,32 @@ class AutoPostThumbnails {
|
|
436 |
}
|
437 |
// First check whether Post Thumbnail is already set for this post.
|
438 |
$_thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true );
|
439 |
-
if ( $_thumbnail_id && $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE id = '$_thumbnail_id' AND post_type = 'attachment'" ) || get_post_meta( $post_id, 'skip_post_thumb', true ) ) {
|
440 |
return 0;
|
441 |
}
|
442 |
|
443 |
$thumb_id = 0;
|
444 |
$autoimage = \WAPT_Plugin::app()->getOption( "generate_autoimage", 'find' );
|
445 |
-
$images = $this->get_images_from_post( $post_id );
|
446 |
-
if ( ( isset( $images['tags'] ) && count( $images['tags'] ) ) && $autoimage !== 'generate' && $autoimage !== 'google' ) {
|
447 |
|
448 |
-
|
449 |
-
|
|
|
|
|
|
|
450 |
// If we succeed in generating thumb, let's update post meta
|
451 |
if ( $thumb_id ) {
|
452 |
update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
|
453 |
-
|
454 |
-
return $thumb_id;
|
455 |
} else {
|
456 |
-
|
457 |
-
|
458 |
-
|
459 |
-
|
460 |
-
return $thumb_id ? $thumb_id : 0;
|
461 |
-
} else {
|
462 |
-
if ( \WAPT_Plugin::app()->is_premium() ) {
|
463 |
-
$thumb_id = apply_filters( 'wapt/generate_post_thumb', $images['urls'][ $key ], $post_id );
|
464 |
-
}
|
465 |
if ( $thumb_id ) {
|
466 |
update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
|
467 |
-
|
468 |
-
return $thumb_id;
|
469 |
}
|
470 |
}
|
471 |
}
|
|
|
|
|
472 |
}
|
473 |
} else {
|
474 |
// создаём свою картинку с заголовком на цветном фоне
|
@@ -496,6 +471,22 @@ class AutoPostThumbnails {
|
|
496 |
return $thumb_id;
|
497 |
}
|
498 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
499 |
/**
|
500 |
* Search through an array for a matching key.
|
501 |
*
|
@@ -547,17 +538,16 @@ class AutoPostThumbnails {
|
|
547 |
/**
|
548 |
* Fetch image from URL and generate required thumbnails.
|
549 |
*
|
550 |
-
*
|
551 |
-
* @param $
|
552 |
-
* @param $
|
553 |
-
* @param $post_id
|
554 |
*
|
555 |
* @return int|WP_Error|null
|
556 |
*/
|
557 |
-
public function generate_post_thumb( $
|
558 |
// Get the URL now for further processing
|
559 |
-
|
560 |
-
$imageUrl = $image_url;
|
561 |
$imageTitle = $title;
|
562 |
|
563 |
// Get the file name
|
@@ -690,32 +680,19 @@ class AutoPostThumbnails {
|
|
690 |
if ( isset( $_POST['thumbnail_id'] ) && ! empty( $_POST['thumbnail_id'] ) ) {
|
691 |
$thumb_id = intval( $_POST['thumbnail_id'] );
|
692 |
|
693 |
-
if ( $thumb_id == - 1 )
|
694 |
-
|
695 |
-
|
696 |
-
|
697 |
-
case 'from_meaning':
|
698 |
-
|
699 |
-
break;
|
700 |
-
|
701 |
-
default:
|
702 |
-
$thumb_id = $this->generate_and_attachment( $post_id );
|
703 |
-
|
704 |
-
}
|
705 |
}
|
706 |
} else if ( isset( $_POST['image'] ) && ! empty( $_POST['image'] ) ) {
|
707 |
$img = $_POST['image'];
|
708 |
|
709 |
-
//Совместимость с
|
710 |
$img = preg_replace( '/(thumbs\/thumbs_)/', '.', $img );
|
711 |
|
712 |
-
|
713 |
-
$thumb_id = $
|
714 |
-
|
715 |
-
//если ссылка на миниатюру, то регулярка сделает ссылку на оригинал. убирает в конце названия файла -150x150
|
716 |
-
$img = preg_replace( '/-[0-9]{1,}x[0-9]{1,}\./', '.', $img );
|
717 |
-
$thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '" . $img . "'" );
|
718 |
-
}
|
719 |
if ( ! $thumb_id ) {
|
720 |
$thumb_id = $this->generate_post_thumb( $img, '', $post_id );
|
721 |
}
|
@@ -761,7 +738,7 @@ class AutoPostThumbnails {
|
|
761 |
$wpnonce = wp_create_nonce( 'set_post_thumbnail-' . $post_id );
|
762 |
$ajaxloader = WAPT_PLUGIN_URL . "/admin/assets/img/ajax-loader.gif";
|
763 |
$content = "";
|
764 |
-
$html = "<a title='{$title}' href='#' class='modal-init-js' id='modal-init-js_{$post_id}' " . "onclick='return window.aptModalShow(this, {$post_id}, \"$wpnonce\");'>{$imgTag}</a>" . "<span id='loader_{$post_id}' style='display:none;'><img src='{$ajaxloader}' width='100px' alt=''></span>" . "<div id='post_imgs_{$post_id}' class='imgs' style='display:none;'>" . "<span style='display:none;'><img src='{$ajaxloader}' alt=''></span><
|
765 |
|
766 |
return $html;
|
767 |
}
|
@@ -1236,7 +1213,7 @@ class AutoPostThumbnails {
|
|
1236 |
// Move the file to the uploads dir
|
1237 |
$image = apply_filters( 'wapt/generate/image', $this->generate_image_with_text( $post->post_title, $uploads['path'] . "/$filename", $extension ), $post->post_title, $uploads['path'] . "/$filename", $extension );
|
1238 |
|
1239 |
-
$thumb_id =
|
1240 |
|
1241 |
if ( ! is_wp_error( $thumb_id ) ) {
|
1242 |
return $thumb_id;
|
@@ -1255,7 +1232,7 @@ class AutoPostThumbnails {
|
|
1255 |
*
|
1256 |
* @return int|WP_Error
|
1257 |
*/
|
1258 |
-
public function insert_attachment( $post, $file_path, $mime_type ) {
|
1259 |
if ( is_int( $post ) ) {
|
1260 |
$post = get_post( $post, 'OBJECT' );
|
1261 |
}
|
@@ -1264,6 +1241,13 @@ class AutoPostThumbnails {
|
|
1264 |
return new WP_Error( 'apt_attachment', 'Post not found (insert_attachment)' );
|
1265 |
}
|
1266 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1267 |
$file_url = str_replace( wp_get_upload_dir()['basedir'], wp_get_upload_dir()['baseurl'], $file_path );
|
1268 |
if ( file_exists( $file_path ) ) {
|
1269 |
$attachment = [
|
92 |
* Initiate all required hooks.
|
93 |
*/
|
94 |
private function init() {
|
95 |
+
$is_auto_generate = \WAPT_Plugin::app()->getOption( 'auto_generation' );
|
96 |
+
$is_auto_upload = \WAPT_Plugin::app()->getOption( 'auto_upload_images' );
|
97 |
+
$allowed_post_types = explode( ',', \WAPT_Plugin::app()->getOption( 'import_post_types', 'posts' ) );
|
98 |
|
99 |
+
add_filter( 'mime_types', [ $this, 'allow_upload_webp' ] );
|
100 |
+
|
101 |
+
if ( $is_auto_upload && \WAPT_Plugin::app()->is_premium() ) {
|
102 |
+
add_filter( 'wp_insert_post_data', [ $this, 'auto_upload' ], 10, 2 );
|
103 |
+
|
104 |
+
// This hook handle update post via rest api. for example Wordpress mobile apps
|
105 |
+
foreach ( $allowed_post_types as $post_type ) {
|
106 |
+
add_action( "rest_after_insert_{$post_type}", [ $this, 'auto_upload' ], 10, 1 );
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
if ( $is_auto_generate ) {
|
111 |
//add_action( 'publish_post', [ $this, 'publish_post' ], 10, 1 );
|
112 |
add_action( 'save_post', [ $this, 'publish_post' ], 10, 3 );
|
113 |
// This hook handle update post via rest api. for example Wordpress mobile apps
|
114 |
+
add_action( 'rest_after_insert_post', [ $this, 'rest_after_insert' ], 10, 3 );
|
115 |
+
add_action( 'rest_after_insert_page', [ $this, 'rest_after_insert' ], 10, 3 );
|
116 |
// This hook will now handle all sort publishing including posts, custom types, scheduled posts, etc.
|
117 |
add_action( 'transition_post_status', [ $this, 'check_required_transition' ], 10, 3 );
|
118 |
} else {
|
143 |
add_action( 'wp_ajax_hide_notice_auto_generation', [ $this, 'hide_notice_auto_generation' ] );
|
144 |
}
|
145 |
|
146 |
+
public function allow_upload_webp( $existing_mimes ) {
|
147 |
+
$existing_mimes['webp'] = 'image/webp';
|
148 |
+
|
149 |
+
return $existing_mimes;
|
150 |
+
}
|
151 |
+
|
152 |
/**
|
153 |
* Get posts id's
|
154 |
*
|
161 |
check_ajax_referer( 'get-posts' );
|
162 |
|
163 |
$generate = \WAPT_Plugin::app()->getOption( "generate_autoimage", 'find' );
|
164 |
+
switch ( $generate ) {
|
165 |
+
case 'generate':
|
166 |
+
case 'both':
|
167 |
+
case 'google':
|
168 |
+
case 'find_google':
|
169 |
+
$auto_generate = true;
|
170 |
+
break;
|
171 |
+
default:
|
172 |
+
$auto_generate = false;
|
173 |
+
break;
|
174 |
}
|
175 |
|
|
|
176 |
$has_thumb = (bool) $_POST['withThumb'];
|
177 |
$type = $_POST['posttype'];
|
178 |
if ( \WAPT_Plugin::app()->is_premium() ) {
|
193 |
foreach ( $query->posts as $post ) {
|
194 |
//если запрошены посты без тамбнеила, значит пользователь хочет сгенерировать их
|
195 |
if ( ! $has_thumb ) {
|
196 |
+
$images = new \WBCR\APT\PostImages( $post->ID );
|
197 |
+
if ( ( $images->is_images() && $images->count_images() ) || $auto_generate ) {
|
198 |
$ids[] = $post->ID;
|
199 |
}
|
200 |
} else //иначе он хочет удалить тамбнэйлы
|
342 |
return $query;
|
343 |
}
|
344 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
345 |
/**
|
346 |
* Get thumbnail id for image
|
347 |
*
|
348 |
+
* @param array $image
|
|
|
349 |
*
|
350 |
* @return bool|int
|
351 |
*/
|
352 |
+
public function get_thumbnail_id( $image ) {
|
353 |
global $wpdb;
|
354 |
+
$thumb_id = 0;
|
355 |
|
356 |
/**
|
357 |
* If the image is from the WordPress own media gallery, then it appends the thumbnail id to a css class.
|
358 |
* Look for this id in the IMG tag.
|
359 |
*/
|
360 |
+
if ( isset( $image['tag'] ) && ! empty( $image['tag'] ) ) {
|
361 |
+
preg_match( '/wp-image-([\d]*)/i', $image['tag'], $thumb_id );
|
|
|
|
|
|
|
362 |
|
363 |
+
if ( $thumb_id ) {
|
364 |
+
$thumb_id = $thumb_id[1];
|
|
|
365 |
|
366 |
+
if ( ! get_post( $thumb_id ) ) {
|
367 |
+
$thumb_id = false;
|
368 |
+
}
|
|
|
|
|
|
|
369 |
}
|
370 |
}
|
371 |
|
|
|
372 |
if ( ! $thumb_id ) {
|
373 |
+
// If thumb id is not found, try to look for the image in DB.
|
374 |
+
if ( isset( $image['url'] ) && ! empty( $image['url'] ) ) {
|
375 |
+
$image_url = $image['url'];
|
376 |
+
//если ссылка на миниатюру, то регулярка сделает ссылку на оригинал. убирает в конце названия файла -150x150
|
377 |
+
$image_url = preg_replace( '/-[0-9]{1,}x[0-9]{1,}\./', '.', $image_url );
|
378 |
+
$thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '%" . esc_sql( $image_url ) . "%'" );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
379 |
}
|
380 |
}
|
381 |
|
382 |
return is_numeric( $thumb_id ) ? $thumb_id : false;
|
383 |
}
|
384 |
|
385 |
+
/**
|
386 |
+
* @param \WP_Post $post
|
387 |
+
* @param \WP_REST_Request $request
|
388 |
+
* @param bool $is_insert
|
389 |
+
*
|
390 |
+
* @throws Exception
|
391 |
+
*/
|
392 |
+
public function rest_after_insert( $post, $request, $is_insert ) {
|
393 |
+
$this->publish_post( $post->ID, $post, ! $is_insert );
|
394 |
+
}
|
395 |
+
|
396 |
/**
|
397 |
* Function to save first image in post as post thumbnail.
|
398 |
*
|
418 |
}
|
419 |
// First check whether Post Thumbnail is already set for this post.
|
420 |
$_thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true );
|
421 |
+
if ( $_thumbnail_id && $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE id = '" . esc_sql( $_thumbnail_id ) . "' AND post_type = 'attachment'" ) || get_post_meta( $post_id, 'skip_post_thumb', true ) ) {
|
422 |
return 0;
|
423 |
}
|
424 |
|
425 |
$thumb_id = 0;
|
426 |
$autoimage = \WAPT_Plugin::app()->getOption( "generate_autoimage", 'find' );
|
|
|
|
|
427 |
|
428 |
+
$images = new \WBCR\APT\PostImages( $post_id );
|
429 |
+
if ( ( $images->is_images() && $images->count_images() ) && $autoimage !== 'generate' && $autoimage !== 'google' ) {
|
430 |
+
|
431 |
+
foreach ( $images->get_images() as $image ) {
|
432 |
+
$thumb_id = $this->get_thumbnail_id( $image );
|
433 |
// If we succeed in generating thumb, let's update post meta
|
434 |
if ( $thumb_id ) {
|
435 |
update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
|
|
|
|
|
436 |
} else {
|
437 |
+
if ( \WAPT_Plugin::app()->is_premium() ) {
|
438 |
+
$thumb_id = apply_filters( 'wapt/generate_post_thumb', $image, $post_id );
|
439 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
440 |
if ( $thumb_id ) {
|
441 |
update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
|
|
|
|
|
442 |
}
|
443 |
}
|
444 |
}
|
445 |
+
|
446 |
+
return $thumb_id;
|
447 |
}
|
448 |
} else {
|
449 |
// создаём свою картинку с заголовком на цветном фоне
|
471 |
return $thumb_id;
|
472 |
}
|
473 |
|
474 |
+
/**
|
475 |
+
* Function to save first image in post as post thumbnail.
|
476 |
+
*
|
477 |
+
* @param \WP_Post|array $post
|
478 |
+
* @param array $postarr
|
479 |
+
*/
|
480 |
+
public function auto_upload( $data, $postarr ) {
|
481 |
+
$allowed_post_types = explode( ',', \WAPT_Plugin::app()->getOption( 'import_post_types', '' ) );
|
482 |
+
|
483 |
+
if ( isset( $data['post_type'] ) && in_array( $data['post_type'], $allowed_post_types ) ) {
|
484 |
+
$data = apply_filters( 'wapt/upload_and_replace_post_images', $data );
|
485 |
+
}
|
486 |
+
|
487 |
+
return $data;
|
488 |
+
}
|
489 |
+
|
490 |
/**
|
491 |
* Search through an array for a matching key.
|
492 |
*
|
538 |
/**
|
539 |
* Fetch image from URL and generate required thumbnails.
|
540 |
*
|
541 |
+
*
|
542 |
+
* @param string $image
|
543 |
+
* @param string $title
|
544 |
+
* @param int $post_id
|
545 |
*
|
546 |
* @return int|WP_Error|null
|
547 |
*/
|
548 |
+
public function generate_post_thumb( $image, $title, $post_id ) {
|
549 |
// Get the URL now for further processing
|
550 |
+
$imageUrl = $image;
|
|
|
551 |
$imageTitle = $title;
|
552 |
|
553 |
// Get the file name
|
680 |
if ( isset( $_POST['thumbnail_id'] ) && ! empty( $_POST['thumbnail_id'] ) ) {
|
681 |
$thumb_id = intval( $_POST['thumbnail_id'] );
|
682 |
|
683 |
+
if ( $thumb_id == - 1 ) {
|
684 |
+
//generate image
|
685 |
+
$thumb_id = $this->generate_and_attachment( $post_id );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
686 |
}
|
687 |
} else if ( isset( $_POST['image'] ) && ! empty( $_POST['image'] ) ) {
|
688 |
$img = $_POST['image'];
|
689 |
|
690 |
+
//Совместимость с NextGen
|
691 |
$img = preg_replace( '/(thumbs\/thumbs_)/', '.', $img );
|
692 |
|
693 |
+
//Find image in medialibrary
|
694 |
+
$thumb_id = $this->get_thumbnail_id( [ 'url' => $img ] );
|
695 |
+
|
|
|
|
|
|
|
|
|
696 |
if ( ! $thumb_id ) {
|
697 |
$thumb_id = $this->generate_post_thumb( $img, '', $post_id );
|
698 |
}
|
738 |
$wpnonce = wp_create_nonce( 'set_post_thumbnail-' . $post_id );
|
739 |
$ajaxloader = WAPT_PLUGIN_URL . "/admin/assets/img/ajax-loader.gif";
|
740 |
$content = "";
|
741 |
+
$html = "<a title='{$title}' href='#' class='modal-init-js' id='modal-init-js_{$post_id}' " . "onclick='return window.aptModalShow(this, {$post_id}, \"$wpnonce\");'>{$imgTag}</a>" . "<span id='loader_{$post_id}' style='display:none;'><img src='{$ajaxloader}' width='100px' alt=''></span>" . "<div id='post_imgs_{$post_id}' class='imgs' style='display:none;'>" . "<span style='display:none;'><img src='{$ajaxloader}' alt=''></span><div>{$content}</div></div>";
|
742 |
|
743 |
return $html;
|
744 |
}
|
1213 |
// Move the file to the uploads dir
|
1214 |
$image = apply_filters( 'wapt/generate/image', $this->generate_image_with_text( $post->post_title, $uploads['path'] . "/$filename", $extension ), $post->post_title, $uploads['path'] . "/$filename", $extension );
|
1215 |
|
1216 |
+
$thumb_id = self::insert_attachment( $post, $file_path, $mime_type );
|
1217 |
|
1218 |
if ( ! is_wp_error( $thumb_id ) ) {
|
1219 |
return $thumb_id;
|
1232 |
*
|
1233 |
* @return int|WP_Error
|
1234 |
*/
|
1235 |
+
public static function insert_attachment( $post, $file_path, $mime_type = '' ) {
|
1236 |
if ( is_int( $post ) ) {
|
1237 |
$post = get_post( $post, 'OBJECT' );
|
1238 |
}
|
1241 |
return new WP_Error( 'apt_attachment', 'Post not found (insert_attachment)' );
|
1242 |
}
|
1243 |
|
1244 |
+
if ( empty( $mime_type ) ) {
|
1245 |
+
$mime_type = wp_get_image_mime( $file_path );
|
1246 |
+
if ( ! $mime_type ) {
|
1247 |
+
$mime_type = 'image/jpeg';
|
1248 |
+
}
|
1249 |
+
}
|
1250 |
+
|
1251 |
$file_url = str_replace( wp_get_upload_dir()['basedir'], wp_get_upload_dir()['baseurl'], $file_path );
|
1252 |
if ( file_exists( $file_path ) ) {
|
1253 |
$attachment = [
|
includes/class-post-images.php
ADDED
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\APT;
|
4 |
+
|
5 |
+
use WP_Post, WP_Error;
|
6 |
+
|
7 |
+
// Exit if accessed directly
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
|
13 |
+
class PostImages {
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @var WP_Post
|
17 |
+
*/
|
18 |
+
public $post;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* @var array
|
22 |
+
*/
|
23 |
+
private $images = [];
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Post Images constructor.
|
27 |
+
*
|
28 |
+
* @param WP_Post|int|string $post Post object or post ID or post content
|
29 |
+
*/
|
30 |
+
public function __construct( $post = null ) {
|
31 |
+
if ( is_numeric( $post ) ) {
|
32 |
+
$post = get_post( $post, 'OBJECT' );
|
33 |
+
$this->post = $post;
|
34 |
+
} else if ( is_object( $post ) ) {
|
35 |
+
$this->post = $post;
|
36 |
+
} else if ( is_string( $post ) ) {
|
37 |
+
$new_post = new \stdClass();
|
38 |
+
$new_post->post_content = $post;
|
39 |
+
|
40 |
+
$this->post = new WP_Post( $new_post );
|
41 |
+
}
|
42 |
+
|
43 |
+
$this->find_images();
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Get an array of images url, contained in the post
|
48 |
+
*
|
49 |
+
*/
|
50 |
+
private function find_images() {
|
51 |
+
$matches = [];
|
52 |
+
$images = [];
|
53 |
+
|
54 |
+
//do shortcodes before search images
|
55 |
+
$post_content = do_shortcode( $this->post->post_content ?? '' );
|
56 |
+
|
57 |
+
// Get all images from post's body
|
58 |
+
preg_match_all( '/<\s*img .*?src\s*=\s*[\"\']?([^\"\'> ]*).*?>/i', $post_content, $matches );
|
59 |
+
|
60 |
+
if ( count( $matches ) ) {
|
61 |
+
foreach ( $matches[0] as $key => $image ) {
|
62 |
+
$title = '';
|
63 |
+
preg_match_all( '/<\s*img [^\>]*title\s*=\s*[\"\']?([^\"\'> ]*)/i', $image, $matchesTitle );
|
64 |
+
|
65 |
+
if ( count( $matchesTitle ) && isset( $matchesTitle[1] ) && isset( $matchesTitle[1][ $key ] ) ) {
|
66 |
+
$title = $matches[1][ $key ];
|
67 |
+
}
|
68 |
+
|
69 |
+
$images[] = [
|
70 |
+
'tag' => $image,
|
71 |
+
'url' => $matches[1][ $key ],
|
72 |
+
'title' => $title,
|
73 |
+
];
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
$this->images = $images;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Get the post object
|
82 |
+
*
|
83 |
+
* @return WP_Post
|
84 |
+
*/
|
85 |
+
public function get_post() {
|
86 |
+
return $this->post;
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* Get an array of images url, contained in the post
|
91 |
+
*
|
92 |
+
* @return array
|
93 |
+
*/
|
94 |
+
public function get_images() {
|
95 |
+
return $this->images;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Get count of images url, contained in the post
|
100 |
+
*
|
101 |
+
* @return int
|
102 |
+
*/
|
103 |
+
public function count_images() {
|
104 |
+
return count( $this->images );
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* If images is founded in post
|
109 |
+
*
|
110 |
+
* @return bool
|
111 |
+
*/
|
112 |
+
public function is_images() {
|
113 |
+
return (bool) $this->count_images();
|
114 |
+
}
|
115 |
+
|
116 |
+
/**
|
117 |
+
* @param string $image
|
118 |
+
* @param string $suffix
|
119 |
+
* @param WP_Post $post
|
120 |
+
*
|
121 |
+
* @return string
|
122 |
+
*/
|
123 |
+
public function unique_filepath( $image, $suffix = 'image', $post = null ) {
|
124 |
+
if ( ! $post ) {
|
125 |
+
$post = $this->get_post();
|
126 |
+
}
|
127 |
+
|
128 |
+
$uploads = wp_upload_dir( current_time( 'mysql' ) );
|
129 |
+
$extension = pathinfo( $image, PATHINFO_EXTENSION );
|
130 |
+
|
131 |
+
//$slug = wp_unique_post_slug( $post->post_title, $post->ID, $post->post_status, $post->post_type, $post->post_parent );
|
132 |
+
$slug = "wapt_{$suffix}";
|
133 |
+
$file_path = wp_unique_filename( $uploads['path'], "{$slug}_{$post->post_type}_{$post->ID}.{$extension}" );
|
134 |
+
$file_path = "{$uploads['path']}/{$file_path}";
|
135 |
+
|
136 |
+
return $file_path;
|
137 |
+
}
|
138 |
+
|
139 |
+
/**
|
140 |
+
* @param string $url
|
141 |
+
* @param string $path_to
|
142 |
+
*
|
143 |
+
* @return bool
|
144 |
+
*/
|
145 |
+
public function download( $url, $path_to ) {
|
146 |
+
$response = wp_remote_get( $url );
|
147 |
+
if ( 200 === wp_remote_retrieve_response_code( $response ) ) {
|
148 |
+
$body = wp_remote_retrieve_body( $response );
|
149 |
+
$downloaded = $path_to ? @file_put_contents( $path_to, $body ) : false;
|
150 |
+
}
|
151 |
+
|
152 |
+
return isset( $downloaded ) ? (bool) $downloaded : false;
|
153 |
+
}
|
154 |
+
}
|
includes/class-wapt-plugin.php
CHANGED
@@ -1,5 +1,8 @@
|
|
1 |
<?php
|
2 |
|
|
|
|
|
|
|
3 |
// Exit if accessed directly
|
4 |
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
exit;
|
@@ -12,11 +15,11 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
12 |
* @copyright (c) 2018 Webraftic Ltd
|
13 |
* @version 1.0
|
14 |
*/
|
15 |
-
class WAPT_Plugin extends
|
16 |
|
17 |
/**
|
18 |
* @see self::app()
|
19 |
-
* @var
|
20 |
*/
|
21 |
private static $app;
|
22 |
|
@@ -59,13 +62,17 @@ class WAPT_Plugin extends Wbcr_Factory444_Plugin {
|
|
59 |
$this->admin_scripts();
|
60 |
}
|
61 |
|
|
|
|
|
|
|
|
|
62 |
$this->global_scripts();
|
63 |
}
|
64 |
|
65 |
/**
|
66 |
* Статический метод для быстрого доступа к интерфейсу плагина.
|
67 |
*
|
68 |
-
* @return
|
69 |
*/
|
70 |
public static function app() {
|
71 |
return self::$app;
|
@@ -160,31 +167,32 @@ class WAPT_Plugin extends Wbcr_Factory444_Plugin {
|
|
160 |
add_thickbox();
|
161 |
wp_enqueue_media();
|
162 |
wp_enqueue_script( 'apt-admin-script-thumbnail', WAPT_PLUGIN_URL . '/admin/assets/js/admin-thumbnail.js', [], false, true );
|
|
|
163 |
if ( isset( $_REQUEST['post'] ) ) {
|
164 |
$pid = $_REQUEST['post'];
|
165 |
} else {
|
166 |
$pid = '0';
|
167 |
}
|
168 |
-
|
169 |
|
170 |
-
$
|
171 |
-
|
172 |
-
|
|
|
173 |
|
174 |
if ( is_admin() ) {
|
175 |
wp_enqueue_script( 'jquery-autocolumnlist', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery.autocolumnlist.js', [], false, true );
|
176 |
wp_enqueue_script( 'jquery-flex-images', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery.flex-images.min.js', [ 'jquery' ], false, true );
|
177 |
wp_enqueue_style( 'style', WAPT_PLUGIN_URL . '/admin/assets/css/style.css' );
|
178 |
wp_enqueue_style( 'flex-images', WAPT_PLUGIN_URL . '/admin/assets/css/jquery.flex-images.css' );
|
179 |
-
wp_localize_script( 'apt-admin-script-thumbnail', 'apt_thumb', [
|
180 |
-
'button_text' => __( 'Use as thumbnail', 'apt' ),
|
181 |
-
'modal_title' => __( 'Change featured image', 'apt' ),
|
182 |
-
] );
|
183 |
|
|
|
|
|
184 |
}
|
185 |
|
186 |
wp_enqueue_script( 'apt-admin-check_api', WAPT_PLUGIN_URL . '/admin/assets/js/check-api.js', array(), false, true );
|
187 |
|
|
|
188 |
//-----------------------------------
|
189 |
if ( 'settings_page_generate-post-thumbnails' != $hook_suffix ) {
|
190 |
return;
|
@@ -221,7 +229,7 @@ class WAPT_Plugin extends Wbcr_Factory444_Plugin {
|
|
221 |
if ( $need_show_about && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
|
222 |
try {
|
223 |
$redirect_url = '';
|
224 |
-
if ( class_exists( '
|
225 |
$redirect_url = admin_url( "admin.php?page=wapt_about-wbcr_apt&wapt_about_page_viewed=1" );
|
226 |
}
|
227 |
if ( $redirect_url ) {
|
@@ -357,6 +365,7 @@ class WAPT_Plugin extends Wbcr_Factory444_Plugin {
|
|
357 |
public function register_bulk_action_generate( $bulk_actions ) {
|
358 |
$bulk_actions['apt_generate_thumb'] = __( 'Generate featured image', 'apt' );
|
359 |
$bulk_actions['apt_delete_thumb'] = __( 'Unset featured image', 'apt' );
|
|
|
360 |
|
361 |
return $bulk_actions;
|
362 |
}
|
@@ -367,18 +376,20 @@ class WAPT_Plugin extends Wbcr_Factory444_Plugin {
|
|
367 |
* @return string
|
368 |
*/
|
369 |
public function bulk_action_generate_handler( $redirect_to, $doaction, $post_ids ) {
|
370 |
-
if ( $doaction !== 'apt_generate_thumb' && $doaction !== 'apt_delete_thumb' ) {
|
371 |
-
return $redirect_to;
|
372 |
-
}
|
373 |
|
374 |
foreach ( $post_ids as $post_id ) {
|
375 |
switch ( $doaction ) {
|
|
|
|
|
|
|
376 |
case 'apt_generate_thumb':
|
377 |
$thumb = $this->apt->publish_post( $post_id );
|
378 |
break;
|
379 |
case 'apt_delete_thumb':
|
380 |
delete_post_thumbnail( $post_id );
|
381 |
break;
|
|
|
|
|
382 |
}
|
383 |
}
|
384 |
|
@@ -490,4 +501,30 @@ class WAPT_Plugin extends Wbcr_Factory444_Plugin {
|
|
490 |
return $links;
|
491 |
}
|
492 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
493 |
}
|
1 |
<?php
|
2 |
|
3 |
+
use WBCR\APT;
|
4 |
+
use WBCR\APT\PostImagesPro;
|
5 |
+
|
6 |
// Exit if accessed directly
|
7 |
if ( ! defined( 'ABSPATH' ) ) {
|
8 |
exit;
|
15 |
* @copyright (c) 2018 Webraftic Ltd
|
16 |
* @version 1.0
|
17 |
*/
|
18 |
+
class WAPT_Plugin extends Wbcr_Factory445_Plugin {
|
19 |
|
20 |
/**
|
21 |
* @see self::app()
|
22 |
+
* @var Wbcr_Factory445_Plugin
|
23 |
*/
|
24 |
private static $app;
|
25 |
|
62 |
$this->admin_scripts();
|
63 |
}
|
64 |
|
65 |
+
if ( $this->doing_rest_api() ) {
|
66 |
+
$this->apt = \WBCR\APT\AutoPostThumbnails::instance();
|
67 |
+
}
|
68 |
+
|
69 |
$this->global_scripts();
|
70 |
}
|
71 |
|
72 |
/**
|
73 |
* Статический метод для быстрого доступа к интерфейсу плагина.
|
74 |
*
|
75 |
+
* @return Wbcr_Factory445_Plugin
|
76 |
*/
|
77 |
public static function app() {
|
78 |
return self::$app;
|
167 |
add_thickbox();
|
168 |
wp_enqueue_media();
|
169 |
wp_enqueue_script( 'apt-admin-script-thumbnail', WAPT_PLUGIN_URL . '/admin/assets/js/admin-thumbnail.js', [], false, true );
|
170 |
+
|
171 |
if ( isset( $_REQUEST['post'] ) ) {
|
172 |
$pid = $_REQUEST['post'];
|
173 |
} else {
|
174 |
$pid = '0';
|
175 |
}
|
176 |
+
$action_column_get_thumbnails = apply_filters( 'wapt/get-thumbnails/action', "apt_get_thumbnail" );
|
177 |
|
178 |
+
$localize = [
|
179 |
+
'postid' => $pid,
|
180 |
+
'action_column_get_thumbnails' => $action_column_get_thumbnails,
|
181 |
+
];
|
182 |
|
183 |
if ( is_admin() ) {
|
184 |
wp_enqueue_script( 'jquery-autocolumnlist', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery.autocolumnlist.js', [], false, true );
|
185 |
wp_enqueue_script( 'jquery-flex-images', WAPT_PLUGIN_URL . '/admin/assets/jquery-ui/jquery.flex-images.min.js', [ 'jquery' ], false, true );
|
186 |
wp_enqueue_style( 'style', WAPT_PLUGIN_URL . '/admin/assets/css/style.css' );
|
187 |
wp_enqueue_style( 'flex-images', WAPT_PLUGIN_URL . '/admin/assets/css/jquery.flex-images.css' );
|
|
|
|
|
|
|
|
|
188 |
|
189 |
+
$localize['button_text'] = __( 'Use as thumbnail', 'apt' );
|
190 |
+
$localize['modal_title'] = __( 'Change featured image', 'apt' );
|
191 |
}
|
192 |
|
193 |
wp_enqueue_script( 'apt-admin-check_api', WAPT_PLUGIN_URL . '/admin/assets/js/check-api.js', array(), false, true );
|
194 |
|
195 |
+
wp_localize_script( 'apt-admin-script-thumbnail', 'apt', $localize );
|
196 |
//-----------------------------------
|
197 |
if ( 'settings_page_generate-post-thumbnails' != $hook_suffix ) {
|
198 |
return;
|
229 |
if ( $need_show_about && ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) && ! ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
|
230 |
try {
|
231 |
$redirect_url = '';
|
232 |
+
if ( class_exists( 'Wbcr_FactoryPages444' ) ) {
|
233 |
$redirect_url = admin_url( "admin.php?page=wapt_about-wbcr_apt&wapt_about_page_viewed=1" );
|
234 |
}
|
235 |
if ( $redirect_url ) {
|
365 |
public function register_bulk_action_generate( $bulk_actions ) {
|
366 |
$bulk_actions['apt_generate_thumb'] = __( 'Generate featured image', 'apt' );
|
367 |
$bulk_actions['apt_delete_thumb'] = __( 'Unset featured image', 'apt' );
|
368 |
+
$bulk_actions['apt_add_images'] = __( 'Upload post images', 'apt' );
|
369 |
|
370 |
return $bulk_actions;
|
371 |
}
|
376 |
* @return string
|
377 |
*/
|
378 |
public function bulk_action_generate_handler( $redirect_to, $doaction, $post_ids ) {
|
|
|
|
|
|
|
379 |
|
380 |
foreach ( $post_ids as $post_id ) {
|
381 |
switch ( $doaction ) {
|
382 |
+
case 'apt_add_images':
|
383 |
+
do_action( 'wapt/upload_and_replace_post_images', $post_id );
|
384 |
+
break;
|
385 |
case 'apt_generate_thumb':
|
386 |
$thumb = $this->apt->publish_post( $post_id );
|
387 |
break;
|
388 |
case 'apt_delete_thumb':
|
389 |
delete_post_thumbnail( $post_id );
|
390 |
break;
|
391 |
+
default:
|
392 |
+
return $redirect_to;
|
393 |
}
|
394 |
}
|
395 |
|
501 |
return $links;
|
502 |
}
|
503 |
|
504 |
+
/**
|
505 |
+
* Checks if the current request is a WP REST API request.
|
506 |
+
*
|
507 |
+
* Case #1: After WP_REST_Request initialisation
|
508 |
+
* Case #2: Support "plain" permalink settings
|
509 |
+
* Case #3: URL Path begins with wp-json/ (your REST prefix)
|
510 |
+
* Also supports WP installations in subfolders
|
511 |
+
*
|
512 |
+
* @author matzeeable https://wordpress.stackexchange.com/questions/221202/does-something-like-is-rest-exist
|
513 |
+
* @return boolean
|
514 |
+
*/
|
515 |
+
public function doing_rest_api() {
|
516 |
+
$prefix = rest_get_url_prefix();
|
517 |
+
$rest_route = $this->request->get( 'rest_route', null );
|
518 |
+
if ( defined( 'REST_REQUEST' ) && REST_REQUEST // (#1)
|
519 |
+
|| ! is_null( $rest_route ) // (#2)
|
520 |
+
&& strpos( trim( $rest_route, '\\/' ), $prefix, 0 ) === 0 ) {
|
521 |
+
return true;
|
522 |
+
}
|
523 |
+
|
524 |
+
// (#3)
|
525 |
+
$rest_url = wp_parse_url( site_url( $prefix ) );
|
526 |
+
$current_url = wp_parse_url( add_query_arg( [] ) );
|
527 |
+
|
528 |
+
return strpos( $current_url['path'], $rest_url['path'], 0 ) === 0;
|
529 |
+
}
|
530 |
}
|
includes/controls/class.color.php
CHANGED
@@ -19,7 +19,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
19 |
|
20 |
if ( ! class_exists( 'Wapt_FactoryForms_ColorControl' ) ) {
|
21 |
|
22 |
-
class Wapt_FactoryForms_ColorControl extends
|
23 |
|
24 |
public $type = 'wapt-color';
|
25 |
|
19 |
|
20 |
if ( ! class_exists( 'Wapt_FactoryForms_ColorControl' ) ) {
|
21 |
|
22 |
+
class Wapt_FactoryForms_ColorControl extends Wbcr_FactoryForms442_Control {
|
23 |
|
24 |
public $type = 'wapt-color';
|
25 |
|
includes/controls/class.fonts.php
CHANGED
@@ -22,7 +22,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
22 |
|
23 |
if ( ! class_exists( 'Wapt_FactoryForms_FontsControl' ) ) {
|
24 |
|
25 |
-
class Wapt_FactoryForms_FontsControl extends
|
26 |
|
27 |
public $type = 'wapt-fonts';
|
28 |
|
22 |
|
23 |
if ( ! class_exists( 'Wapt_FactoryForms_FontsControl' ) ) {
|
24 |
|
25 |
+
class Wapt_FactoryForms_FontsControl extends Wbcr_FactoryForms442_DropdownControl {
|
26 |
|
27 |
public $type = 'wapt-fonts';
|
28 |
|
includes/controls/class.mediabutton.php
CHANGED
@@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
20 |
|
21 |
if ( ! class_exists( 'Wapt_FactoryForms_MediaButtonControl' ) ) {
|
22 |
|
23 |
-
class Wapt_FactoryForms_MediaButtonControl extends
|
24 |
|
25 |
public $type = 'wapt-mediabutton';
|
26 |
|
20 |
|
21 |
if ( ! class_exists( 'Wapt_FactoryForms_MediaButtonControl' ) ) {
|
22 |
|
23 |
+
class Wapt_FactoryForms_MediaButtonControl extends Wbcr_FactoryForms442_Control {
|
24 |
|
25 |
public $type = 'wapt-mediabutton';
|
26 |
|
includes/image-search/boot.php
CHANGED
@@ -2,5 +2,6 @@
|
|
2 |
|
3 |
require_once("interface-image-search.php");
|
4 |
require_once("class-google-images.php");
|
5 |
-
require_once("result/class.founded-image.php");
|
6 |
-
require_once("result/class.
|
|
2 |
|
3 |
require_once("interface-image-search.php");
|
4 |
require_once("class-google-images.php");
|
5 |
+
require_once( "result/class.founded-image.php" );
|
6 |
+
require_once( "result/class.google-founded-image.php" );
|
7 |
+
require_once( "result/class.response.php" );
|
includes/image-search/class-google-images.php
CHANGED
@@ -86,7 +86,7 @@ class GoogleImages implements ImageSearch {
|
|
86 |
$error = $response['error']['message'];
|
87 |
} elseif ( isset( $response['items'] ) && is_array( $response['items'] ) ) {
|
88 |
foreach ( $response['items'] as $item ) {
|
89 |
-
$image = new
|
90 |
|
91 |
$images[] = $image;
|
92 |
}
|
86 |
$error = $response['error']['message'];
|
87 |
} elseif ( isset( $response['items'] ) && is_array( $response['items'] ) ) {
|
88 |
foreach ( $response['items'] as $item ) {
|
89 |
+
$image = new GoogleFoundedImage( $item );
|
90 |
|
91 |
$images[] = $image;
|
92 |
}
|
includes/image-search/result/class.founded-image.php
CHANGED
@@ -8,7 +8,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
8 |
}
|
9 |
|
10 |
|
11 |
-
class FoundedImage {
|
12 |
|
13 |
/**
|
14 |
* @var string
|
@@ -52,27 +52,17 @@ class FoundedImage {
|
|
52 |
* @param array $more_info
|
53 |
*/
|
54 |
public function __construct( $item, $more_info = [] ) {
|
55 |
-
$this->
|
56 |
-
$this->title = $item['title'] ?? '';
|
57 |
-
$this->context_link = $item['image']['contextLink'] ?? '';
|
58 |
-
$this->thumbnail_link = $item['image']['thumbnailLink'] ?? '';
|
59 |
-
|
60 |
-
$this->image = new \stdClass();
|
61 |
-
$this->image->mime = $item['mime'] ?? '';
|
62 |
-
$this->image->size = $item['image']['byteSize'] ?? '';
|
63 |
-
$this->image->width = $item['image']['width'] ?? '';
|
64 |
-
$this->image->height = $item['image']['height'] ?? '';
|
65 |
-
|
66 |
-
|
67 |
-
preg_match_all( '/.*\/(.*)\.(\w{3,4})?(\?|\/.*)?$/', $this->link, $match );
|
68 |
-
|
69 |
-
$this->file = new \stdClass();
|
70 |
-
$this->file->name = $match[1][0] ?? '';
|
71 |
-
$this->file->ext = $match[2][0] ?? '';
|
72 |
-
|
73 |
-
$this->more_info = $more_info;
|
74 |
}
|
75 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
76 |
/**
|
77 |
* @param string $path_to
|
78 |
*
|
8 |
}
|
9 |
|
10 |
|
11 |
+
abstract class FoundedImage {
|
12 |
|
13 |
/**
|
14 |
* @var string
|
52 |
* @param array $more_info
|
53 |
*/
|
54 |
public function __construct( $item, $more_info = [] ) {
|
55 |
+
$this->parse( $item, $more_info );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
}
|
57 |
|
58 |
+
/**
|
59 |
+
* Parse image data
|
60 |
+
*
|
61 |
+
* @param array $item
|
62 |
+
* @param array $more_info
|
63 |
+
*/
|
64 |
+
abstract protected function parse( $item, $more_info = [] );
|
65 |
+
|
66 |
/**
|
67 |
* @param string $path_to
|
68 |
*
|
includes/image-search/result/class.google-founded-image.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace WBCR\APT;
|
4 |
+
|
5 |
+
// Exit if accessed directly
|
6 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
7 |
+
exit;
|
8 |
+
}
|
9 |
+
|
10 |
+
|
11 |
+
class GoogleFoundedImage extends FoundedImage {
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Parse image data
|
15 |
+
*
|
16 |
+
* @param array $item
|
17 |
+
* @param array $more_info
|
18 |
+
*/
|
19 |
+
protected function parse( $item, $more_info = [] ) {
|
20 |
+
$this->link = $item['link'] ?? '';
|
21 |
+
$this->title = $item['title'] ?? '';
|
22 |
+
$this->context_link = $item['image']['contextLink'] ?? '';
|
23 |
+
$this->thumbnail_link = $item['image']['thumbnailLink'] ?? '';
|
24 |
+
|
25 |
+
$this->image = new \stdClass();
|
26 |
+
$this->image->mime = $item['mime'] ?? '';
|
27 |
+
$this->image->size = $item['image']['byteSize'] ?? '';
|
28 |
+
$this->image->width = $item['image']['width'] ?? '';
|
29 |
+
$this->image->height = $item['image']['height'] ?? '';
|
30 |
+
|
31 |
+
|
32 |
+
preg_match_all( '/.*\/(.*)\.(\w{3,4})?(\?|\/.*)?$/', $this->link, $match );
|
33 |
+
|
34 |
+
$this->file = new \stdClass();
|
35 |
+
$this->file->name = $match[1][0] ?? '';
|
36 |
+
$this->file->ext = $match[2][0] ?? '';
|
37 |
+
|
38 |
+
$this->more_info = $more_info;
|
39 |
+
}
|
40 |
+
}
|
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_123\Base;
|
4 |
|
5 |
/**
|
6 |
* Factory Adverts
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( defined('FACTORY_ADVERTS_123_LOADED') || (defined('FACTORY_ADVERTS_BLOCK') && FACTORY_ADVERTS_BLOCK) ) {
|
24 |
return;
|
25 |
}
|
26 |
|
27 |
# Устанавливаем константу, что модуль уже загружен
|
28 |
+
define('FACTORY_ADVERTS_123_LOADED', true);
|
29 |
|
30 |
# Устанавливаем версию модуля
|
31 |
+
define('FACTORY_ADVERTS_123_VERSION', '1.2.3');
|
32 |
|
33 |
# Регистрируем тектовый домен, для интернализации интерфейса модуля
|
34 |
+
load_plugin_textdomain('wbcr_factory_adverts_123', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
35 |
|
36 |
# Устанавливаем директорию модуля
|
37 |
+
define('FACTORY_ADVERTS_123_DIR', dirname(__FILE__));
|
38 |
|
39 |
# Устанавливаем url модуля
|
40 |
+
define('FACTORY_ADVERTS_123_URL', plugins_url(null, __FILE__));
|
41 |
|
42 |
+
require_once(FACTORY_ADVERTS_123_DIR . '/includes/class-rest-request.php');
|
43 |
+
require_once(FACTORY_ADVERTS_123_DIR . '/includes/class-base.php');
|
44 |
|
45 |
/**
|
46 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
47 |
*/
|
48 |
+
add_action('wbcr_factory_adverts_123_plugin_created', function ($plugin) {
|
49 |
+
$plugin->set_adverts_manager("WBCR\Factory_Adverts_123\Base");
|
50 |
});
|
libs/factory/adverts/includes/class-base.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -28,7 +28,7 @@ class Base {
|
|
28 |
*
|
29 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
30 |
* @since 1.0.1
|
31 |
-
* @var \
|
32 |
*/
|
33 |
private $plugin;
|
34 |
|
@@ -53,7 +53,7 @@ class Base {
|
|
53 |
*
|
54 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
55 |
* @since 1.0.1
|
56 |
-
* @var \WBCR\
|
57 |
*/
|
58 |
private $api;
|
59 |
|
@@ -82,9 +82,9 @@ class Base {
|
|
82 |
*
|
83 |
* @since 1.0.0 Added
|
84 |
*
|
85 |
-
* @param \
|
86 |
*/
|
87 |
-
public function __construct( \
|
88 |
$this->plugin = $plugin;
|
89 |
|
90 |
$this->settings = wp_parse_args( $settings, [
|
@@ -257,7 +257,7 @@ class Base {
|
|
257 |
$content = $this->get_debug_message( 'dashboard_widget' );
|
258 |
}
|
259 |
|
260 |
-
require_once
|
261 |
new Dashboard_Widget( $this->plugin, $content );
|
262 |
}
|
263 |
}
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Adverts_123;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
28 |
*
|
29 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
30 |
* @since 1.0.1
|
31 |
+
* @var \Wbcr_Factory445_Plugin
|
32 |
*/
|
33 |
private $plugin;
|
34 |
|
53 |
*
|
54 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
55 |
* @since 1.0.1
|
56 |
+
* @var \WBCR\Factory_Adverts_123\Creative_Motion_API
|
57 |
*/
|
58 |
private $api;
|
59 |
|
82 |
*
|
83 |
* @since 1.0.0 Added
|
84 |
*
|
85 |
+
* @param \Wbcr_Factory445_Plugin $plugin
|
86 |
*/
|
87 |
+
public function __construct( \Wbcr_Factory445_Plugin $plugin, $settings ) {
|
88 |
$this->plugin = $plugin;
|
89 |
|
90 |
$this->settings = wp_parse_args( $settings, [
|
257 |
$content = $this->get_debug_message( 'dashboard_widget' );
|
258 |
}
|
259 |
|
260 |
+
require_once FACTORY_ADVERTS_123_DIR . '/includes/class-dashboard-widget.php';
|
261 |
new Dashboard_Widget( $this->plugin, $content );
|
262 |
}
|
263 |
}
|
libs/factory/adverts/includes/class-dashboard-widget.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
@@ -35,7 +35,7 @@ class Dashboard_Widget {
|
|
35 |
*
|
36 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
37 |
* @since 1.0.1
|
38 |
-
* @var \
|
39 |
*/
|
40 |
private $plugin;
|
41 |
|
@@ -46,10 +46,10 @@ class Dashboard_Widget {
|
|
46 |
*
|
47 |
* @since 1.0.0 Added
|
48 |
*
|
49 |
-
* @param \
|
50 |
* @param string $content
|
51 |
*/
|
52 |
-
public function __construct( \
|
53 |
|
54 |
$this->plugin = $plugin;
|
55 |
$this->content = $content;
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Adverts_123;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if ( ! defined( 'ABSPATH' ) ) {
|
35 |
*
|
36 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
37 |
* @since 1.0.1
|
38 |
+
* @var \Wbcr_Factory445_Plugin
|
39 |
*/
|
40 |
private $plugin;
|
41 |
|
46 |
*
|
47 |
* @since 1.0.0 Added
|
48 |
*
|
49 |
+
* @param \Wbcr_Factory445_Plugin $plugin
|
50 |
* @param string $content
|
51 |
*/
|
52 |
+
public function __construct( \Wbcr_Factory445_Plugin $plugin, $content ) {
|
53 |
|
54 |
$this->plugin = $plugin;
|
55 |
$this->content = $content;
|
libs/factory/adverts/includes/class-rest-request.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
@@ -65,7 +65,7 @@ class Creative_Motion_API {
|
|
65 |
*
|
66 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
67 |
* @since 1.0.1
|
68 |
-
* @var \
|
69 |
*/
|
70 |
private $plugin;
|
71 |
|
@@ -75,11 +75,11 @@ class Creative_Motion_API {
|
|
75 |
*
|
76 |
* Variable initialization.
|
77 |
*
|
78 |
-
* @param \
|
79 |
* @since 1.0.0 Added
|
80 |
*
|
81 |
*/
|
82 |
-
public function __construct(\
|
83 |
{
|
84 |
$this->plugin = $plugin;
|
85 |
}
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Adverts_123;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
if( !defined('ABSPATH') ) {
|
65 |
*
|
66 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
67 |
* @since 1.0.1
|
68 |
+
* @var \Wbcr_Factory445_Plugin
|
69 |
*/
|
70 |
private $plugin;
|
71 |
|
75 |
*
|
76 |
* Variable initialization.
|
77 |
*
|
78 |
+
* @param \Wbcr_Factory445_Plugin $plugin_name
|
79 |
* @since 1.0.0 Added
|
80 |
*
|
81 |
*/
|
82 |
+
public function __construct(\Wbcr_Factory445_Plugin $plugin)
|
83 |
{
|
84 |
$this->plugin = $plugin;
|
85 |
}
|
libs/factory/adverts/langs/{wbcr_factory_adverts_122-ru_RU.mo → wbcr_factory_adverts_123-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/adverts/langs/{wbcr_factory_adverts_122-ru_RU.po → wbcr_factory_adverts_123-ru_RU.po}
RENAMED
File without changes
|
libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-445 .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-445 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-445 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-445 .factory-accordion-item{display:none}.factory-bootstrap-445 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-445 .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-445 .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-445 .btn-primary:focus,.factory-bootstrap-445 .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-445 .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-445 .btn-primary:disabled,.factory-bootstrap-445 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-445 .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-445 .pagination>.active>a,.factory-bootstrap-445 .pagination>.active>a:focus,.factory-bootstrap-445 .pagination>.active>a:hover,.factory-bootstrap-445 .pagination>.active>span,.factory-bootstrap-445 .pagination>.active>span:focus,.factory-bootstrap-445 .pagination>.active>span:hover{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-445 .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-445 .btn-primary:focus,.factory-bootstrap-445 .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-445 .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-445 .btn-primary:disabled,.factory-bootstrap-445 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-445 .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-445 .pagination>.active>a,.factory-bootstrap-445 .pagination>.active>a:focus,.factory-bootstrap-445 .pagination>.active>a:hover,.factory-bootstrap-445 .pagination>.active>span,.factory-bootstrap-445 .pagination>.active>span:focus,.factory-bootstrap-445 .pagination>.active>span:hover{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-444 article,.factory-bootstrap-444 aside,.factory-bootstrap-444 details,.factory-bootstrap-444 figcaption,.factory-bootstrap-444 figure,.factory-bootstrap-444 footer,.factory-bootstrap-444 header,.factory-bootstrap-444 hgroup,.factory-bootstrap-444 main,.factory-bootstrap-444 nav,.factory-bootstrap-444 section,.factory-bootstrap-444 summary{display:block}.factory-bootstrap-444 audio,.factory-bootstrap-444 canvas,.factory-bootstrap-444 video{display:inline-block}.factory-bootstrap-444 audio:not([controls]){display:none;height:0}.factory-bootstrap-444 [hidden],.factory-bootstrap-444 template{display:none}.factory-bootstrap-444 body{margin:0}.factory-bootstrap-444 a{background:0 0}.factory-bootstrap-444 a:focus{outline:thin dotted}.factory-bootstrap-444 a:active,.factory-bootstrap-444 a:hover{outline:0}.factory-bootstrap-444 h1{margin:.67em 0}.factory-bootstrap-444 b,.factory-bootstrap-444 strong{font-weight:700}.factory-bootstrap-444 dfn{font-style:italic}.factory-bootstrap-444 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-444 mark{color:#000;background:#ff0}.factory-bootstrap-444 code,.factory-bootstrap-444 kbd,.factory-bootstrap-444 pre,.factory-bootstrap-444 samp{font-size:1em}.factory-bootstrap-444 pre{white-space:pre-wrap}.factory-bootstrap-444 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-444 sub,.factory-bootstrap-444 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-444 sup{top:-.5em}.factory-bootstrap-444 sub{bottom:-.25em}.factory-bootstrap-444 img{border:0}.factory-bootstrap-444 svg:not(:root){overflow:hidden}.factory-bootstrap-444 figure{margin:0}.factory-bootstrap-444 button,.factory-bootstrap-444 input,.factory-bootstrap-444 select,.factory-bootstrap-444 textarea{margin:0}.factory-bootstrap-444 button,.factory-bootstrap-444 select{text-transform:none}.factory-bootstrap-444 select{padding-right:4px!important}.factory-bootstrap-444 button,.factory-bootstrap-444 input[type=reset],.factory-bootstrap-444 input[type=submit],html .factory-bootstrap-444 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-444 button[disabled],html .factory-bootstrap-444 input[disabled]{cursor:default}.factory-bootstrap-444 input[type=checkbox],.factory-bootstrap-444 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-444 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-444 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-444 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-444 button::-moz-focus-inner,.factory-bootstrap-444 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-444 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-444 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-444 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-444 a,.factory-bootstrap-444 a:visited{text-decoration:underline}.factory-bootstrap-444 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-444 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-444 a[href^="javascript:"]:after,.factory-bootstrap-444 a[href^="#"]:after{content:""}.factory-bootstrap-444 blockquote,.factory-bootstrap-444 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-444 thead{display:table-header-group}.factory-bootstrap-444 img,.factory-bootstrap-444 tr{page-break-inside:avoid}.factory-bootstrap-444 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-444 h2,.factory-bootstrap-444 h3,.factory-bootstrap-444 p{orphans:3;widows:3}.factory-bootstrap-444 h2,.factory-bootstrap-444 h3{page-break-after:avoid}.factory-bootstrap-444 select{background:#fff!important}.factory-bootstrap-444 .navbar{display:none}.factory-bootstrap-444 .table td,.factory-bootstrap-444 .table th{background-color:#fff!important}.factory-bootstrap-444 .btn>.caret,.factory-bootstrap-444 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-444 .label{border:1px solid #000}.factory-bootstrap-444 .table{border-collapse:collapse!important}.factory-bootstrap-444 .table-bordered td,.factory-bootstrap-444 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-444 *,.factory-bootstrap-444 :after,.factory-bootstrap-444 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-444{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-444 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-444 button,.factory-bootstrap-444 input,.factory-bootstrap-444 select,.factory-bootstrap-444 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-444 img{vertical-align:middle}.factory-bootstrap-444 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-444 .img-rounded{border-radius:6px}.factory-bootstrap-444 .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-444 .img-circle{border-radius:50%}.factory-bootstrap-444 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-444 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-444 .h1,.factory-bootstrap-444 .h2,.factory-bootstrap-444 .h3,.factory-bootstrap-444 .h4,.factory-bootstrap-444 .h5,.factory-bootstrap-444 .h6,.factory-bootstrap-444 h1,.factory-bootstrap-444 h2,.factory-bootstrap-444 h3,.factory-bootstrap-444 h4,.factory-bootstrap-444 h5,.factory-bootstrap-444 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-444 .h1 .small,.factory-bootstrap-444 .h1 small,.factory-bootstrap-444 .h2 .small,.factory-bootstrap-444 .h2 small,.factory-bootstrap-444 .h3 .small,.factory-bootstrap-444 .h3 small,.factory-bootstrap-444 .h4 .small,.factory-bootstrap-444 .h4 small,.factory-bootstrap-444 .h5 .small,.factory-bootstrap-444 .h5 small,.factory-bootstrap-444 .h6 .small,.factory-bootstrap-444 .h6 small,.factory-bootstrap-444 h1 .small,.factory-bootstrap-444 h1 small,.factory-bootstrap-444 h2 .small,.factory-bootstrap-444 h2 small,.factory-bootstrap-444 h3 .small,.factory-bootstrap-444 h3 small,.factory-bootstrap-444 h4 .small,.factory-bootstrap-444 h4 small,.factory-bootstrap-444 h5 .small,.factory-bootstrap-444 h5 small,.factory-bootstrap-444 h6 .small,.factory-bootstrap-444 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-444 h1,.factory-bootstrap-444 h2,.factory-bootstrap-444 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-444 h1 .small,.factory-bootstrap-444 h1 small,.factory-bootstrap-444 h2 .small,.factory-bootstrap-444 h2 small,.factory-bootstrap-444 h3 .small,.factory-bootstrap-444 h3 small{font-size:65%}.factory-bootstrap-444 h4,.factory-bootstrap-444 h5,.factory-bootstrap-444 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-444 h4 .small,.factory-bootstrap-444 h4 small,.factory-bootstrap-444 h5 .small,.factory-bootstrap-444 h5 small,.factory-bootstrap-444 h6 .small,.factory-bootstrap-444 h6 small{font-size:75%}.factory-bootstrap-444 .h1,.factory-bootstrap-444 h1{font-size:36px}.factory-bootstrap-444 .h2,.factory-bootstrap-444 h2{font-size:30px}.factory-bootstrap-444 .h3,.factory-bootstrap-444 h3{font-size:24px}.factory-bootstrap-444 .h4,.factory-bootstrap-444 h4{font-size:18px}.factory-bootstrap-444 .h5,.factory-bootstrap-444 h5{font-size:14px}.factory-bootstrap-444 .h6,.factory-bootstrap-444 h6{font-size:12px}.factory-bootstrap-444 p{margin:0 0 10px}.factory-bootstrap-444 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-444 .small,.factory-bootstrap-444 small{font-size:85%}.factory-bootstrap-444 cite{font-style:normal}.factory-bootstrap-444 .text-muted{color:#999}.factory-bootstrap-444 .text-primary{color:#428bca}.factory-bootstrap-444 .text-primary:hover{color:#3071a9}.factory-bootstrap-444 .text-warning{color:#8a6d3b}.factory-bootstrap-444 .text-warning:hover{color:#66512c}.factory-bootstrap-444 .text-danger{color:#a94442}.factory-bootstrap-444 .text-danger:hover{color:#843534}.factory-bootstrap-444 .text-success{color:#3c763d}.factory-bootstrap-444 .text-success:hover{color:#2b542c}.factory-bootstrap-444 .text-info{color:#31708f}.factory-bootstrap-444 .text-info:hover{color:#245269}.factory-bootstrap-444 .text-left{text-align:left}.factory-bootstrap-444 .text-right{text-align:right}.factory-bootstrap-444 .text-center{text-align:center}.factory-bootstrap-444 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-444 ol,.factory-bootstrap-444 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-444 ol ol,.factory-bootstrap-444 ol ul,.factory-bootstrap-444 ul ol,.factory-bootstrap-444 ul ul{margin-bottom:0}.factory-bootstrap-444 .list-inline,.factory-bootstrap-444 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-444 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-444 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-444 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-444 dd,.factory-bootstrap-444 dt{line-height:1.428571429}.factory-bootstrap-444 dt{font-weight:700}.factory-bootstrap-444 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-444 abbr[data-original-title],.factory-bootstrap-444 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-444 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-444 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-444 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-444 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-444 blockquote .small,.factory-bootstrap-444 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-444 blockquote .small:before,.factory-bootstrap-444 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-444 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-444 blockquote.pull-right .small,.factory-bootstrap-444 blockquote.pull-right p,.factory-bootstrap-444 blockquote.pull-right small{text-align:right}.factory-bootstrap-444 blockquote.pull-right .small:before,.factory-bootstrap-444 blockquote.pull-right small:before{content:''}.factory-bootstrap-444 blockquote.pull-right .small:after,.factory-bootstrap-444 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-444 blockquote:after,.factory-bootstrap-444 blockquote:before{content:""}.factory-bootstrap-444 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-444 code,.factory-bootstrap-444 kbd,.factory-bootstrap-444 pre,.factory-bootstrap-444 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-444 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-444 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-444 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-444 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-444 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-444 .container:after,.factory-bootstrap-444 .container:before{display:table;content:" "}.factory-bootstrap-444 .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-444 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-444 .row:after,.factory-bootstrap-444 .row:before{display:table;content:" "}.factory-bootstrap-444 .row:after{clear:both}.factory-bootstrap-444 .col-lg-1,.factory-bootstrap-444 .col-lg-10,.factory-bootstrap-444 .col-lg-11,.factory-bootstrap-444 .col-lg-12,.factory-bootstrap-444 .col-lg-2,.factory-bootstrap-444 .col-lg-3,.factory-bootstrap-444 .col-lg-4,.factory-bootstrap-444 .col-lg-5,.factory-bootstrap-444 .col-lg-6,.factory-bootstrap-444 .col-lg-7,.factory-bootstrap-444 .col-lg-8,.factory-bootstrap-444 .col-lg-9,.factory-bootstrap-444 .col-md-1,.factory-bootstrap-444 .col-md-10,.factory-bootstrap-444 .col-md-11,.factory-bootstrap-444 .col-md-12,.factory-bootstrap-444 .col-md-2,.factory-bootstrap-444 .col-md-3,.factory-bootstrap-444 .col-md-4,.factory-bootstrap-444 .col-md-5,.factory-bootstrap-444 .col-md-6,.factory-bootstrap-444 .col-md-7,.factory-bootstrap-444 .col-md-8,.factory-bootstrap-444 .col-md-9,.factory-bootstrap-444 .col-sm-1,.factory-bootstrap-444 .col-sm-10,.factory-bootstrap-444 .col-sm-11,.factory-bootstrap-444 .col-sm-12,.factory-bootstrap-444 .col-sm-2,.factory-bootstrap-444 .col-sm-3,.factory-bootstrap-444 .col-sm-4,.factory-bootstrap-444 .col-sm-5,.factory-bootstrap-444 .col-sm-6,.factory-bootstrap-444 .col-sm-7,.factory-bootstrap-444 .col-sm-8,.factory-bootstrap-444 .col-sm-9,.factory-bootstrap-444 .col-xs-1,.factory-bootstrap-444 .col-xs-10,.factory-bootstrap-444 .col-xs-11,.factory-bootstrap-444 .col-xs-12,.factory-bootstrap-444 .col-xs-2,.factory-bootstrap-444 .col-xs-3,.factory-bootstrap-444 .col-xs-4,.factory-bootstrap-444 .col-xs-5,.factory-bootstrap-444 .col-xs-6,.factory-bootstrap-444 .col-xs-7,.factory-bootstrap-444 .col-xs-8,.factory-bootstrap-444 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-444 .col-xs-1,.factory-bootstrap-444 .col-xs-10,.factory-bootstrap-444 .col-xs-11,.factory-bootstrap-444 .col-xs-12,.factory-bootstrap-444 .col-xs-2,.factory-bootstrap-444 .col-xs-3,.factory-bootstrap-444 .col-xs-4,.factory-bootstrap-444 .col-xs-5,.factory-bootstrap-444 .col-xs-6,.factory-bootstrap-444 .col-xs-7,.factory-bootstrap-444 .col-xs-8,.factory-bootstrap-444 .col-xs-9{float:left}.factory-bootstrap-444 .col-xs-12{width:100%}.factory-bootstrap-444 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-444 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-444 .col-xs-9{width:75%}.factory-bootstrap-444 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-444 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-444 .col-xs-6{width:50%}.factory-bootstrap-444 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-444 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-444 .col-xs-3{width:25%}.factory-bootstrap-444 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-444 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-444 .col-xs-pull-12{right:100%}.factory-bootstrap-444 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-444 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-444 .col-xs-pull-9{right:75%}.factory-bootstrap-444 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-444 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-444 .col-xs-pull-6{right:50%}.factory-bootstrap-444 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-444 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-444 .col-xs-pull-3{right:25%}.factory-bootstrap-444 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-444 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-444 .col-xs-pull-0{right:0}.factory-bootstrap-444 .col-xs-push-12{left:100%}.factory-bootstrap-444 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-444 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-444 .col-xs-push-9{left:75%}.factory-bootstrap-444 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-444 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-444 .col-xs-push-6{left:50%}.factory-bootstrap-444 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-444 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-444 .col-xs-push-3{left:25%}.factory-bootstrap-444 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-444 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-444 .col-xs-push-0{left:0}.factory-bootstrap-444 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-444 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-444 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-444 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-444 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-444 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-444 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-444 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-444 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-444 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-444 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-444 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-444 .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-444 table{max-width:100%;background-color:transparent}.factory-bootstrap-444 th{text-align:left}.factory-bootstrap-444 .table{width:100%;margin-bottom:20px}.factory-bootstrap-444 .table>tbody>tr>td,.factory-bootstrap-444 .table>tbody>tr>th,.factory-bootstrap-444 .table>tfoot>tr>td,.factory-bootstrap-444 .table>tfoot>tr>th,.factory-bootstrap-444 .table>thead>tr>td,.factory-bootstrap-444 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-444 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-444 .table>caption+thead>tr:first-child>td,.factory-bootstrap-444 .table>caption+thead>tr:first-child>th,.factory-bootstrap-444 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-444 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-444 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-444 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-444 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-444 .table .table{background-color:#fff}.factory-bootstrap-444 .table-condensed>tbody>tr>td,.factory-bootstrap-444 .table-condensed>tbody>tr>th,.factory-bootstrap-444 .table-condensed>tfoot>tr>td,.factory-bootstrap-444 .table-condensed>tfoot>tr>th,.factory-bootstrap-444 .table-condensed>thead>tr>td,.factory-bootstrap-444 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-444 .table-bordered,.factory-bootstrap-444 .table-bordered>tbody>tr>td,.factory-bootstrap-444 .table-bordered>tbody>tr>th,.factory-bootstrap-444 .table-bordered>tfoot>tr>td,.factory-bootstrap-444 .table-bordered>tfoot>tr>th,.factory-bootstrap-444 .table-bordered>thead>tr>td,.factory-bootstrap-444 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-444 .table-bordered>thead>tr>td,.factory-bootstrap-444 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-444 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-444 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-444 .table-hover>tbody>tr:hover>td,.factory-bootstrap-444 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-444 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-444 table td[class*=col-],.factory-bootstrap-444 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-444 .table>tbody>.active>td,.factory-bootstrap-444 .table>tbody>.active>th,.factory-bootstrap-444 .table>tbody>tr>.active,.factory-bootstrap-444 .table>tfoot>.active>td,.factory-bootstrap-444 .table>tfoot>.active>th,.factory-bootstrap-444 .table>tfoot>tr>.active,.factory-bootstrap-444 .table>thead>.active>td,.factory-bootstrap-444 .table>thead>.active>th,.factory-bootstrap-444 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-444 .table-hover>tbody>.active:hover>td,.factory-bootstrap-444 .table-hover>tbody>.active:hover>th,.factory-bootstrap-444 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-444 .table>tbody>.success>td,.factory-bootstrap-444 .table>tbody>.success>th,.factory-bootstrap-444 .table>tbody>tr>.success,.factory-bootstrap-444 .table>tfoot>.success>td,.factory-bootstrap-444 .table>tfoot>.success>th,.factory-bootstrap-444 .table>tfoot>tr>.success,.factory-bootstrap-444 .table>thead>.success>td,.factory-bootstrap-444 .table>thead>.success>th,.factory-bootstrap-444 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-444 .table-hover>tbody>.success:hover>td,.factory-bootstrap-444 .table-hover>tbody>.success:hover>th,.factory-bootstrap-444 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-444 .table>tbody>.danger>td,.factory-bootstrap-444 .table>tbody>.danger>th,.factory-bootstrap-444 .table>tbody>tr>.danger,.factory-bootstrap-444 .table>tfoot>.danger>td,.factory-bootstrap-444 .table>tfoot>.danger>th,.factory-bootstrap-444 .table>tfoot>tr>.danger,.factory-bootstrap-444 .table>thead>.danger>td,.factory-bootstrap-444 .table>thead>.danger>th,.factory-bootstrap-444 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-444 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-444 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-444 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-444 .table>tbody>.warning>td,.factory-bootstrap-444 .table>tbody>.warning>th,.factory-bootstrap-444 .table>tbody>tr>.warning,.factory-bootstrap-444 .table>tfoot>.warning>td,.factory-bootstrap-444 .table>tfoot>.warning>th,.factory-bootstrap-444 .table>tfoot>tr>.warning,.factory-bootstrap-444 .table>thead>.warning>td,.factory-bootstrap-444 .table>thead>.warning>th,.factory-bootstrap-444 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-444 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-444 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-444 .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-444 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-444 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-444 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-444 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-444 input[type=checkbox],.factory-bootstrap-444 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-444 input[type=file]{display:block}.factory-bootstrap-444 select[multiple],.factory-bootstrap-444 select[size]{height:auto}.factory-bootstrap-444 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-444 input[type=checkbox]:focus,.factory-bootstrap-444 input[type=file]:focus,.factory-bootstrap-444 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-444 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-444 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-444 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-444 .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-444 .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-444 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-444 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-444 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-444 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-444 .form-control[disabled],.factory-bootstrap-444 .form-control[readonly],.factory-bootstrap-444 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-444 textarea.form-control{height:auto}.factory-bootstrap-444 .form-group{margin-bottom:15px}.factory-bootstrap-444 .checkbox,.factory-bootstrap-444 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-444 .checkbox label,.factory-bootstrap-444 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-444 .checkbox input[type=checkbox],.factory-bootstrap-444 .checkbox-inline input[type=checkbox],.factory-bootstrap-444 .radio input[type=radio],.factory-bootstrap-444 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-444 .checkbox+.checkbox,.factory-bootstrap-444 .radio+.radio{margin-top:-5px}.factory-bootstrap-444 .checkbox-inline,.factory-bootstrap-444 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-444 .checkbox-inline+.checkbox-inline,.factory-bootstrap-444 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-444 .checkbox-inline[disabled],.factory-bootstrap-444 .checkbox[disabled],.factory-bootstrap-444 .radio-inline[disabled],.factory-bootstrap-444 .radio[disabled],.factory-bootstrap-444 fieldset[disabled] .checkbox,.factory-bootstrap-444 fieldset[disabled] .checkbox-inline,.factory-bootstrap-444 fieldset[disabled] .radio,.factory-bootstrap-444 fieldset[disabled] .radio-inline,.factory-bootstrap-444 fieldset[disabled] input[type=checkbox],.factory-bootstrap-444 fieldset[disabled] input[type=radio],.factory-bootstrap-444 input[type=checkbox][disabled],.factory-bootstrap-444 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-444 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-444 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-444 textarea.input-sm{height:auto}.factory-bootstrap-444 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-444 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-444 textarea.input-lg{height:auto}.factory-bootstrap-444 .has-warning .checkbox,.factory-bootstrap-444 .has-warning .checkbox-inline,.factory-bootstrap-444 .has-warning .control-label,.factory-bootstrap-444 .has-warning .help-block,.factory-bootstrap-444 .has-warning .radio,.factory-bootstrap-444 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-444 .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-444 .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-444 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-444 .has-error .checkbox,.factory-bootstrap-444 .has-error .checkbox-inline,.factory-bootstrap-444 .has-error .control-label,.factory-bootstrap-444 .has-error .help-block,.factory-bootstrap-444 .has-error .radio,.factory-bootstrap-444 .has-error .radio-inline{color:#a94442}.factory-bootstrap-444 .controls{display:block}.factory-bootstrap-444 .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-444 .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-444 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-444 .has-success .checkbox,.factory-bootstrap-444 .has-success .checkbox-inline,.factory-bootstrap-444 .has-success .control-label,.factory-bootstrap-444 .has-success .help-block,.factory-bootstrap-444 .has-success .radio,.factory-bootstrap-444 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-444 .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-444 .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-444 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-444 .form-control-static{margin-bottom:0}.factory-bootstrap-444 .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-444 .form-horizontal .checkbox,.factory-bootstrap-444 .form-horizontal .checkbox-inline,.factory-bootstrap-444 .form-horizontal .control-label,.factory-bootstrap-444 .form-horizontal .radio,.factory-bootstrap-444 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-444 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-444 .form-horizontal .checkbox,.factory-bootstrap-444 .form-horizontal .radio{min-height:27px}.factory-bootstrap-444 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-444 .form-horizontal .form-group:after,.factory-bootstrap-444 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-444 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-444 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-444 .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-444 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-444 .btn{text-decoration:none}.factory-bootstrap-444 .btn:focus,.factory-bootstrap-444 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-444 .btn.disabled,.factory-bootstrap-444 .btn[disabled],.factory-bootstrap-444 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-444 .btn-default.active,.factory-bootstrap-444 .btn-default:active,.factory-bootstrap-444 .btn-default:focus,.factory-bootstrap-444 .btn-default:hover,.factory-bootstrap-444 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-444 .btn-default.active,.factory-bootstrap-444 .btn-default:active,.factory-bootstrap-444 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-444 .btn-default.disabled,.factory-bootstrap-444 .btn-default.disabled.active,.factory-bootstrap-444 .btn-default.disabled:active,.factory-bootstrap-444 .btn-default.disabled:focus,.factory-bootstrap-444 .btn-default.disabled:hover,.factory-bootstrap-444 .btn-default[disabled],.factory-bootstrap-444 .btn-default[disabled].active,.factory-bootstrap-444 .btn-default[disabled]:active,.factory-bootstrap-444 .btn-default[disabled]:focus,.factory-bootstrap-444 .btn-default[disabled]:hover,.factory-bootstrap-444 fieldset[disabled] .btn-default,.factory-bootstrap-444 fieldset[disabled] .btn-default.active,.factory-bootstrap-444 fieldset[disabled] .btn-default:active,.factory-bootstrap-444 fieldset[disabled] .btn-default:focus,.factory-bootstrap-444 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-444 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-444 .btn-primary.active,.factory-bootstrap-444 .btn-primary:active,.factory-bootstrap-444 .btn-primary:focus,.factory-bootstrap-444 .btn-primary:hover,.factory-bootstrap-444 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-444 .btn-primary.active,.factory-bootstrap-444 .btn-primary:active,.factory-bootstrap-444 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-444 .btn-primary.disabled,.factory-bootstrap-444 .btn-primary.disabled.active,.factory-bootstrap-444 .btn-primary.disabled:active,.factory-bootstrap-444 .btn-primary.disabled:focus,.factory-bootstrap-444 .btn-primary.disabled:hover,.factory-bootstrap-444 .btn-primary[disabled],.factory-bootstrap-444 .btn-primary[disabled].active,.factory-bootstrap-444 .btn-primary[disabled]:active,.factory-bootstrap-444 .btn-primary[disabled]:focus,.factory-bootstrap-444 .btn-primary[disabled]:hover,.factory-bootstrap-444 fieldset[disabled] .btn-primary,.factory-bootstrap-444 fieldset[disabled] .btn-primary.active,.factory-bootstrap-444 fieldset[disabled] .btn-primary:active,.factory-bootstrap-444 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-444 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-444 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-444 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-444 .btn-warning.active,.factory-bootstrap-444 .btn-warning:active,.factory-bootstrap-444 .btn-warning:focus,.factory-bootstrap-444 .btn-warning:hover,.factory-bootstrap-444 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-444 .btn-warning.active,.factory-bootstrap-444 .btn-warning:active,.factory-bootstrap-444 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-444 .btn-warning.disabled,.factory-bootstrap-444 .btn-warning.disabled.active,.factory-bootstrap-444 .btn-warning.disabled:active,.factory-bootstrap-444 .btn-warning.disabled:focus,.factory-bootstrap-444 .btn-warning.disabled:hover,.factory-bootstrap-444 .btn-warning[disabled],.factory-bootstrap-444 .btn-warning[disabled].active,.factory-bootstrap-444 .btn-warning[disabled]:active,.factory-bootstrap-444 .btn-warning[disabled]:focus,.factory-bootstrap-444 .btn-warning[disabled]:hover,.factory-bootstrap-444 fieldset[disabled] .btn-warning,.factory-bootstrap-444 fieldset[disabled] .btn-warning.active,.factory-bootstrap-444 fieldset[disabled] .btn-warning:active,.factory-bootstrap-444 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-444 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-444 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-444 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-444 .btn-success.active,.factory-bootstrap-444 .btn-success:active,.factory-bootstrap-444 .btn-success:focus,.factory-bootstrap-444 .btn-success:hover,.factory-bootstrap-444 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-444 .btn-success.active,.factory-bootstrap-444 .btn-success:active,.factory-bootstrap-444 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-444 .btn-success.disabled,.factory-bootstrap-444 .btn-success.disabled.active,.factory-bootstrap-444 .btn-success.disabled:active,.factory-bootstrap-444 .btn-success.disabled:focus,.factory-bootstrap-444 .btn-success.disabled:hover,.factory-bootstrap-444 .btn-success[disabled],.factory-bootstrap-444 .btn-success[disabled].active,.factory-bootstrap-444 .btn-success[disabled]:active,.factory-bootstrap-444 .btn-success[disabled]:focus,.factory-bootstrap-444 .btn-success[disabled]:hover,.factory-bootstrap-444 fieldset[disabled] .btn-success,.factory-bootstrap-444 fieldset[disabled] .btn-success.active,.factory-bootstrap-444 fieldset[disabled] .btn-success:active,.factory-bootstrap-444 fieldset[disabled] .btn-success:focus,.factory-bootstrap-444 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-444 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-444 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-444 .btn-info.active,.factory-bootstrap-444 .btn-info:active,.factory-bootstrap-444 .btn-info:focus,.factory-bootstrap-444 .btn-info:hover,.factory-bootstrap-444 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-444 .btn-info.active,.factory-bootstrap-444 .btn-info:active,.factory-bootstrap-444 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-444 .btn-info.disabled,.factory-bootstrap-444 .btn-info.disabled.active,.factory-bootstrap-444 .btn-info.disabled:active,.factory-bootstrap-444 .btn-info.disabled:focus,.factory-bootstrap-444 .btn-info.disabled:hover,.factory-bootstrap-444 .btn-info[disabled],.factory-bootstrap-444 .btn-info[disabled].active,.factory-bootstrap-444 .btn-info[disabled]:active,.factory-bootstrap-444 .btn-info[disabled]:focus,.factory-bootstrap-444 .btn-info[disabled]:hover,.factory-bootstrap-444 fieldset[disabled] .btn-info,.factory-bootstrap-444 fieldset[disabled] .btn-info.active,.factory-bootstrap-444 fieldset[disabled] .btn-info:active,.factory-bootstrap-444 fieldset[disabled] .btn-info:focus,.factory-bootstrap-444 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-444 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-444 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-444 .btn-link,.factory-bootstrap-444 .btn-link:active,.factory-bootstrap-444 .btn-link[disabled],.factory-bootstrap-444 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-444 .btn-link,.factory-bootstrap-444 .btn-link:active,.factory-bootstrap-444 .btn-link:focus,.factory-bootstrap-444 .btn-link:hover{border-color:transparent}.factory-bootstrap-444 .btn-link:focus,.factory-bootstrap-444 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-444 .btn-link[disabled]:focus,.factory-bootstrap-444 .btn-link[disabled]:hover,.factory-bootstrap-444 fieldset[disabled] .btn-link:focus,.factory-bootstrap-444 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-444 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-444 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-444 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-444 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-444 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-444 input[type=button].btn-block,.factory-bootstrap-444 input[type=reset].btn-block,.factory-bootstrap-444 input[type=submit].btn-block{width:100%}.factory-bootstrap-444 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-444 .fade.in{opacity:1}.factory-bootstrap-444 .collapse{display:none}.factory-bootstrap-444 .collapse.in{display:block}.factory-bootstrap-444 .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-444 .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-444 .glyphicon:empty{width:1em}.factory-bootstrap-444 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-444 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-444 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-444 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-444 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-444 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-444 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-444 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-444 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-444 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-444 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-444 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-444 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-444 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-444 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-444 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-444 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-444 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-444 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-444 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-444 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-444 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-444 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-444 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-444 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-444 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-444 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-444 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-444 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-444 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-444 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-444 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-444 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-444 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-444 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-444 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-444 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-444 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-444 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-444 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-444 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-444 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-444 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-444 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-444 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-444 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-444 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-444 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-444 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-444 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-444 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-444 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-444 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-444 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-444 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-444 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-444 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-444 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-444 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-444 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-444 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-444 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-444 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-444 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-444 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-444 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-444 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-444 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-444 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-444 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-444 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-444 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-444 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-444 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-444 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-444 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-444 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-444 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-444 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-444 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-444 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-444 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-444 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-444 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-444 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-444 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-444 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-444 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-444 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-444 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-444 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-444 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-444 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-444 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-444 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-444 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-444 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-444 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-444 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-444 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-444 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-444 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-444 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-444 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-444 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-444 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-444 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-444 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-444 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-444 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-444 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-444 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-444 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-444 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-444 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-444 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-444 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-444 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-444 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-444 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-444 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-444 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-444 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-444 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-444 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-444 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-444 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-444 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-444 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-444 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-444 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-444 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-444 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-444 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-444 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-444 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-444 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-444 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-444 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-444 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-444 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-444 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-444 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-444 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-444 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-444 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-444 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-444 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-444 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-444 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-444 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-444 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-444 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-444 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-444 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-444 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-444 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-444 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-444 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-444 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-444 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-444 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-444 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-444 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-444 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-444 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-444 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-444 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-444 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-444 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-444 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-444 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-444 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-444 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-444 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-444 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-444 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-444 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-444 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-444 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-444 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-444 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-444 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-444 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-444 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-444 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-444 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-444 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-444 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-444 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-444 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-444 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-444 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-444 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-444 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-444 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-444 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-444 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-444 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-444 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-444 .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-444 .dropdown{position:relative}.factory-bootstrap-444 .dropdown-toggle:focus{outline:0}.factory-bootstrap-444 .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-444 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-444 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-444 .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-444 .dropdown-menu>li>a:focus,.factory-bootstrap-444 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-444 .dropdown-menu>.active>a,.factory-bootstrap-444 .dropdown-menu>.active>a:focus,.factory-bootstrap-444 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-444 .dropdown-menu>.disabled>a,.factory-bootstrap-444 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-444 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-444 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-444 .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-444 .open>.dropdown-menu{display:block}.factory-bootstrap-444 .open>a{outline:0}.factory-bootstrap-444 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-444 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-444 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-444 .dropup .caret,.factory-bootstrap-444 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-444 .dropup .dropdown-menu,.factory-bootstrap-444 .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-444 .btn-group,.factory-bootstrap-444 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-444 .btn-group-vertical>.btn,.factory-bootstrap-444 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-444 .btn-group-vertical>.btn.active,.factory-bootstrap-444 .btn-group-vertical>.btn:active,.factory-bootstrap-444 .btn-group-vertical>.btn:focus,.factory-bootstrap-444 .btn-group-vertical>.btn:hover,.factory-bootstrap-444 .btn-group>.btn.active,.factory-bootstrap-444 .btn-group>.btn:active,.factory-bootstrap-444 .btn-group>.btn:focus,.factory-bootstrap-444 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-444 .btn-group-vertical>.btn:focus,.factory-bootstrap-444 .btn-group>.btn:focus{outline:0}.factory-bootstrap-444 .btn-group .btn+.btn,.factory-bootstrap-444 .btn-group .btn+.btn-group,.factory-bootstrap-444 .btn-group .btn-group+.btn,.factory-bootstrap-444 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-444 .btn-toolbar:after,.factory-bootstrap-444 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-444 .btn-toolbar:after{clear:both}.factory-bootstrap-444 .btn-toolbar .btn-group{float:left}.factory-bootstrap-444 .btn-toolbar>.btn+.btn,.factory-bootstrap-444 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-444 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-444 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-444 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-444 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-444 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-444 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-444 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-444 .btn-group>.btn-group{float:left}.factory-bootstrap-444 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-444 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-444 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-444 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-444 .btn-group .dropdown-toggle:active,.factory-bootstrap-444 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-444 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-444 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-444 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-444 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-444 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-444 .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-444 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-444 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-444 .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-444 .btn .caret{margin-left:0}.factory-bootstrap-444 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-444 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-444 .btn-group-vertical>.btn,.factory-bootstrap-444 .btn-group-vertical>.btn-group,.factory-bootstrap-444 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-444 .btn-group-vertical>.btn-group:after,.factory-bootstrap-444 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-444 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-444 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-444 .btn-group-vertical>.btn+.btn,.factory-bootstrap-444 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-444 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-444 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-444 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-444 .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-444 .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-444 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-444 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-444 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-444 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-444 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-444 .btn-group-justified>.btn,.factory-bootstrap-444 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-444 .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-444 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-444 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-444 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-444 .input-group-lg>.form-control,.factory-bootstrap-444 .input-group-lg>.input-group-addon,.factory-bootstrap-444 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-444 select.input-group-lg>.form-control,.factory-bootstrap-444 select.input-group-lg>.input-group-addon,.factory-bootstrap-444 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-444 textarea.input-group-lg>.form-control,.factory-bootstrap-444 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-444 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-444 .input-group-sm>.form-control,.factory-bootstrap-444 .input-group-sm>.input-group-addon,.factory-bootstrap-444 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-444 select.input-group-sm>.form-control,.factory-bootstrap-444 select.input-group-sm>.input-group-addon,.factory-bootstrap-444 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-444 textarea.input-group-sm>.form-control,.factory-bootstrap-444 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-444 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-444 .input-group .form-control,.factory-bootstrap-444 .input-group-addon,.factory-bootstrap-444 .input-group-btn{display:table-cell}.factory-bootstrap-444 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-444 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-444 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-444 .input-group-addon,.factory-bootstrap-444 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-444 .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-444 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-444 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-444 .input-group-addon input[type=checkbox],.factory-bootstrap-444 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-444 .input-group .form-control:first-child,.factory-bootstrap-444 .input-group-addon:first-child,.factory-bootstrap-444 .input-group-btn:first-child>.btn,.factory-bootstrap-444 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-444 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-444 .input-group-addon:first-child{border-right:0}.factory-bootstrap-444 .input-group .form-control:last-child,.factory-bootstrap-444 .input-group-addon:last-child,.factory-bootstrap-444 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-444 .input-group-btn:last-child>.btn,.factory-bootstrap-444 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-444 .input-group-addon:last-child{border-left:0}.factory-bootstrap-444 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-444 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-444 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-444 .input-group-btn>.btn{position:relative}.factory-bootstrap-444 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-444 .input-group-btn>.btn:active,.factory-bootstrap-444 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-444 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-444 .nav:after,.factory-bootstrap-444 .nav:before{display:table;content:" "}.factory-bootstrap-444 .nav:after{clear:both}.factory-bootstrap-444 .nav>li{position:relative;display:block}.factory-bootstrap-444 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-444 .nav>li>a:focus,.factory-bootstrap-444 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-444 .nav>li.disabled>a{color:#999}.factory-bootstrap-444 .nav>li.disabled>a:focus,.factory-bootstrap-444 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-444 .nav .open>a,.factory-bootstrap-444 .nav .open>a:focus,.factory-bootstrap-444 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-444 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-444 .nav>li>a>img{max-width:none}.factory-bootstrap-444 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-444 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-444 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-444 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-444 .nav-tabs>li.active>a,.factory-bootstrap-444 .nav-tabs>li.active>a:focus,.factory-bootstrap-444 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-444 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-444 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-444 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-444 .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-444 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-444 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-444 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-444 .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-444 .nav-pills>li{float:left}.factory-bootstrap-444 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-444 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-444 .nav-pills>li.active>a,.factory-bootstrap-444 .nav-pills>li.active>a:focus,.factory-bootstrap-444 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-444 .nav-stacked>li{float:none}.factory-bootstrap-444 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-444 .nav-justified{width:100%}.factory-bootstrap-444 .nav-justified>li{float:none}.factory-bootstrap-444 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-444 .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-444 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-444 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-444 .nav-tabs-justified>.active>a,.factory-bootstrap-444 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-444 .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-444 .tab-content>.tab-pane{display:none}.factory-bootstrap-444 .tab-content>.active{display:block}.factory-bootstrap-444 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-444 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-444 .navbar:after,.factory-bootstrap-444 .navbar:before{display:table;content:" "}.factory-bootstrap-444 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-444 .navbar-header:after,.factory-bootstrap-444 .navbar-header:before{display:table;content:" "}.factory-bootstrap-444 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-444 .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-444 .navbar-collapse:after,.factory-bootstrap-444 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-444 .navbar-collapse:after{clear:both}.factory-bootstrap-444 .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-444 .container>.navbar-collapse,.factory-bootstrap-444 .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-444 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-444 .navbar-fixed-bottom,.factory-bootstrap-444 .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-444 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-444 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-444 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-444 .navbar-brand:focus,.factory-bootstrap-444 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-444 .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-444 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-444 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-444 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-444 .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-444 .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-444 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-444 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-444 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-444 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-444 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-444 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-444 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-444 .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-444 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-444 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-444 .navbar-default .navbar-brand:focus,.factory-bootstrap-444 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-444 .navbar-default .navbar-nav>li>a,.factory-bootstrap-444 .navbar-default .navbar-text{color:#777}.factory-bootstrap-444 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-444 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-444 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-444 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-444 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-444 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-444 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-444 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-444 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-444 .navbar-default .navbar-toggle:focus,.factory-bootstrap-444 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-444 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-444 .navbar-default .navbar-collapse,.factory-bootstrap-444 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-444 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-444 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-444 .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-444 .navbar-default .navbar-link{color:#777}.factory-bootstrap-444 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-444 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-444 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-444 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-444 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-444 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-444 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-444 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-444 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-444 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-444 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-444 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-444 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-444 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-444 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-444 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-444 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-444 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-444 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-444 .navbar-inverse .navbar-collapse,.factory-bootstrap-444 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-444 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-444 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-444 .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-444 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-444 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-444 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-444 .breadcrumb>li{display:inline-block}.factory-bootstrap-444 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-444 .breadcrumb>.active{color:#999}.factory-bootstrap-444 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-444 .pagination>li{display:inline}.factory-bootstrap-444 .pagination>li>a,.factory-bootstrap-444 .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-444 .pagination>li:first-child>a,.factory-bootstrap-444 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-444 .pagination>li:last-child>a,.factory-bootstrap-444 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-444 .pagination>li>a:focus,.factory-bootstrap-444 .pagination>li>a:hover,.factory-bootstrap-444 .pagination>li>span:focus,.factory-bootstrap-444 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-444 .pagination>.active>a,.factory-bootstrap-444 .pagination>.active>a:focus,.factory-bootstrap-444 .pagination>.active>a:hover,.factory-bootstrap-444 .pagination>.active>span,.factory-bootstrap-444 .pagination>.active>span:focus,.factory-bootstrap-444 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-444 .pagination>.disabled>a,.factory-bootstrap-444 .pagination>.disabled>a:focus,.factory-bootstrap-444 .pagination>.disabled>a:hover,.factory-bootstrap-444 .pagination>.disabled>span,.factory-bootstrap-444 .pagination>.disabled>span:focus,.factory-bootstrap-444 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-444 .pagination-lg>li>a,.factory-bootstrap-444 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-444 .pagination-lg>li:first-child>a,.factory-bootstrap-444 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-444 .pagination-lg>li:last-child>a,.factory-bootstrap-444 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-444 .pagination-sm>li>a,.factory-bootstrap-444 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-444 .pagination-sm>li:first-child>a,.factory-bootstrap-444 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-444 .pagination-sm>li:last-child>a,.factory-bootstrap-444 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-444 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-444 .pager:after,.factory-bootstrap-444 .pager:before{display:table;content:" "}.factory-bootstrap-444 .pager:after{clear:both}.factory-bootstrap-444 .pager li{display:inline}.factory-bootstrap-444 .pager li>a,.factory-bootstrap-444 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-444 .pager li>a:focus,.factory-bootstrap-444 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-444 .pager .next>a,.factory-bootstrap-444 .pager .next>span{float:right}.factory-bootstrap-444 .pager .previous>a,.factory-bootstrap-444 .pager .previous>span{float:left}.factory-bootstrap-444 .pager .disabled>a,.factory-bootstrap-444 .pager .disabled>a:focus,.factory-bootstrap-444 .pager .disabled>a:hover,.factory-bootstrap-444 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-444 .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-444 .label[href]:focus,.factory-bootstrap-444 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-444 .label:empty{display:none}.factory-bootstrap-444 .btn .label{position:relative;top:-1px}.factory-bootstrap-444 .label-default{background-color:#999}.factory-bootstrap-444 .label-default[href]:focus,.factory-bootstrap-444 .label-default[href]:hover{background-color:gray}.factory-bootstrap-444 .label-primary{background-color:#428bca}.factory-bootstrap-444 .label-primary[href]:focus,.factory-bootstrap-444 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-444 .label-success{background-color:#5cb85c}.factory-bootstrap-444 .label-success[href]:focus,.factory-bootstrap-444 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-444 .label-info{background-color:#5bc0de}.factory-bootstrap-444 .label-info[href]:focus,.factory-bootstrap-444 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-444 .label-warning{background-color:#f0ad4e}.factory-bootstrap-444 .label-warning[href]:focus,.factory-bootstrap-444 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-444 .label-danger{background-color:#d9534f}.factory-bootstrap-444 .label-danger[href]:focus,.factory-bootstrap-444 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-444 .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-444 .badge:empty{display:none}.factory-bootstrap-444 .btn .badge{position:relative;top:-1px}.factory-bootstrap-444 a.badge:focus,.factory-bootstrap-444 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-444 .nav-pills>.active>a>.badge,.factory-bootstrap-444 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-444 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-444 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-444 .jumbotron .h1,.factory-bootstrap-444 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-444 .jumbotron p{line-height:1.4}.factory-bootstrap-444 .container .jumbotron{border-radius:6px}.factory-bootstrap-444 .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-444 .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-444 .thumbnail a>img,.factory-bootstrap-444 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-444 a.thumbnail.active,.factory-bootstrap-444 a.thumbnail:focus,.factory-bootstrap-444 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-444 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-444 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-444 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-444 .alert .alert-link{font-weight:700}.factory-bootstrap-444 .alert>p,.factory-bootstrap-444 .alert>ul{margin-bottom:0}.factory-bootstrap-444 .alert>p+p{margin-top:5px}.factory-bootstrap-444 .alert-dismissable{padding-right:35px}.factory-bootstrap-444 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-444 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-444 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-444 .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-444 .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-444 .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-444 .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-444 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-444 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-444 .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-444 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-444 .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-444 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-444 .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-444 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-444 .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-444 .media,.factory-bootstrap-444 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-444 .media,.factory-bootstrap-444 .media .media{margin-top:15px}.factory-bootstrap-444 .media:first-child{margin-top:0}.factory-bootstrap-444 .media-object{display:block}.factory-bootstrap-444 .media-heading{margin:0 0 5px}.factory-bootstrap-444 .media>.pull-left{margin-right:10px}.factory-bootstrap-444 .media>.pull-right{margin-left:10px}.factory-bootstrap-444 .media-list{padding-left:0;list-style:none}.factory-bootstrap-444 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-444 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-444 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-444 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-444 .list-group-item>.badge{float:right}.factory-bootstrap-444 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-444 a.list-group-item{color:#555}.factory-bootstrap-444 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-444 a.list-group-item:focus,.factory-bootstrap-444 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-444 a.list-group-item.active,.factory-bootstrap-444 a.list-group-item.active:focus,.factory-bootstrap-444 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-444 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-444 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-444 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-444 a.list-group-item.active .list-group-item-text,.factory-bootstrap-444 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-444 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-444 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-444 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-444 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-444 .panel-body{padding:15px}.factory-bootstrap-444 .panel-body:after,.factory-bootstrap-444 .panel-body:before{display:table;content:" "}.factory-bootstrap-444 .panel-body:after{clear:both}.factory-bootstrap-444 .panel>.list-group{margin-bottom:0}.factory-bootstrap-444 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-444 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-444 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-444 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-444 .panel>.table,.factory-bootstrap-444 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-444 .panel>.panel-body+.table,.factory-bootstrap-444 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-444 .panel>.table>tbody:first-child td,.factory-bootstrap-444 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-444 .panel>.table-bordered,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-444 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-444 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-444 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-444 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-444 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-444 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-444 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-444 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-444 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-444 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-444 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-444 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-444 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-444 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-444 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-444 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-444 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-444 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-444 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-444 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-444 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-444 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-444 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-444 .panel-title>a{color:inherit}.factory-bootstrap-444 .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-444 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-444 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-444 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-444 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-444 .panel-group .panel-footer{border-top:0}.factory-bootstrap-444 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-444 .panel-default{border-color:#ddd}.factory-bootstrap-444 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-444 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-444 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-444 .panel-primary{border-color:#428bca}.factory-bootstrap-444 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-444 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-444 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-444 .panel-success{border-color:#d6e9c6}.factory-bootstrap-444 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-444 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-444 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-444 .panel-warning{border-color:#faebcc}.factory-bootstrap-444 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-444 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-444 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-444 .panel-danger{border-color:#ebccd1}.factory-bootstrap-444 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-444 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-444 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-444 .panel-info{border-color:#bce8f1}.factory-bootstrap-444 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-444 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-444 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-444 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-444 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-444 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-444 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-444 .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-444 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-444 .close:focus,.factory-bootstrap-444 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-444 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-444 .modal-open{overflow:hidden}.factory-bootstrap-444 .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-444 .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-444 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-444 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-444 .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-444 .modal-backdrop,.factory-bootstrap-444-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-444 .modal-backdrop.fade,.factory-bootstrap-444-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-444 .modal-backdrop.in,.factory-bootstrap-444-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-444 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-444 .modal-header .close{margin-top:-2px}.factory-bootstrap-444 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-444 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-444 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-444 .modal-footer:after,.factory-bootstrap-444 .modal-footer:before{display:table;content:" "}.factory-bootstrap-444 .modal-footer:after{clear:both}.factory-bootstrap-444 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-444 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-444 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-444 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-444 .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-444 .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-444 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-444 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-444 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-444 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-444 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-444 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-444 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-444 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-444 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-444 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-444 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-444 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-444 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-444 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-444 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-444 .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-444 .popover.top{margin-top:-10px}.factory-bootstrap-444 .popover.right{margin-left:10px}.factory-bootstrap-444 .popover.bottom{margin-top:10px}.factory-bootstrap-444 .popover.left{margin-left:-10px}.factory-bootstrap-444 .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-444 .popover-content{padding:9px 14px}.factory-bootstrap-444 .popover .arrow,.factory-bootstrap-444 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-444 .popover .arrow{border-width:11px}.factory-bootstrap-444 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-444 .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-444 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-444 .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-444 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-444 .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-444 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-444 .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-444 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-444 .carousel{position:relative}.factory-bootstrap-444 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-444 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-444 .carousel-inner>.item>a>img,.factory-bootstrap-444 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-444 .carousel-inner>.active,.factory-bootstrap-444 .carousel-inner>.next,.factory-bootstrap-444 .carousel-inner>.prev{display:block}.factory-bootstrap-444 .carousel-inner>.active{left:0}.factory-bootstrap-444 .carousel-inner>.next,.factory-bootstrap-444 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-444 .carousel-inner>.next{left:100%}.factory-bootstrap-444 .carousel-inner>.prev{left:-100%}.factory-bootstrap-444 .carousel-inner>.next.left,.factory-bootstrap-444 .carousel-inner>.prev.right{left:0}.factory-bootstrap-444 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-444 .carousel-inner>.active.right{left:100%}.factory-bootstrap-444 .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-444 .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-444 .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-444 .carousel-control:focus,.factory-bootstrap-444 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-444 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-444 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-444 .carousel-control .icon-next,.factory-bootstrap-444 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-444 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-444 .carousel-control .icon-prev{left:50%}.factory-bootstrap-444 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-444 .carousel-control .icon-next{right:50%}.factory-bootstrap-444 .carousel-control .icon-next,.factory-bootstrap-444 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-444 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-444 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-444 .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-444 .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-444 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-444 .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-444 .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-444 .clearfix:after,.factory-bootstrap-444 .clearfix:before{display:table;content:" "}.factory-bootstrap-444 .clearfix:after{clear:both}.factory-bootstrap-444 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-444 .pull-right{float:right!important}.factory-bootstrap-444 .pull-left{float:left!important}.factory-bootstrap-444 .hide{display:none!important}.factory-bootstrap-444 .show{display:block!important}.factory-bootstrap-444 .invisible{visibility:hidden}.factory-bootstrap-444 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-444 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-444 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-444 .visible-lg,.factory-bootstrap-444 .visible-md,.factory-bootstrap-444 .visible-sm,.factory-bootstrap-444 .visible-xs,.factory-bootstrap-444 td.visible-lg,.factory-bootstrap-444 td.visible-md,.factory-bootstrap-444 td.visible-sm,.factory-bootstrap-444 td.visible-xs,.factory-bootstrap-444 th.visible-lg,.factory-bootstrap-444 th.visible-md,.factory-bootstrap-444 th.visible-sm,.factory-bootstrap-444 th.visible-xs,.factory-bootstrap-444 tr.visible-lg,.factory-bootstrap-444 tr.visible-md,.factory-bootstrap-444 tr.visible-sm,.factory-bootstrap-444 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-444 .hidden-xs{display:block!important}.factory-bootstrap-444 table.hidden-xs{display:table}.factory-bootstrap-444 tr.hidden-xs{display:table-row!important}.factory-bootstrap-444 td.hidden-xs,.factory-bootstrap-444 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-444 .hidden-sm{display:block!important}.factory-bootstrap-444 table.hidden-sm{display:table}.factory-bootstrap-444 tr.hidden-sm{display:table-row!important}.factory-bootstrap-444 td.hidden-sm,.factory-bootstrap-444 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-444 .hidden-md{display:block!important}.factory-bootstrap-444 table.hidden-md{display:table}.factory-bootstrap-444 tr.hidden-md{display:table-row!important}.factory-bootstrap-444 td.hidden-md,.factory-bootstrap-444 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-444 .hidden-lg{display:block!important}.factory-bootstrap-444 table.hidden-lg{display:table}.factory-bootstrap-444 tr.hidden-lg{display:table-row!important}.factory-bootstrap-444 td.hidden-lg,.factory-bootstrap-444 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-444 .hidden-lg.hidden-xs,.factory-bootstrap-444 td.hidden-lg.hidden-xs,.factory-bootstrap-444 th.hidden-lg.hidden-xs,.factory-bootstrap-444 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-444 .hidden-lg.hidden-sm,.factory-bootstrap-444 td.hidden-lg.hidden-sm,.factory-bootstrap-444 th.hidden-lg.hidden-sm,.factory-bootstrap-444 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-444 .hidden-lg.hidden-md,.factory-bootstrap-444 td.hidden-lg.hidden-md,.factory-bootstrap-444 th.hidden-lg.hidden-md,.factory-bootstrap-444 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-444 .hidden-lg,.factory-bootstrap-444 td.hidden-lg,.factory-bootstrap-444 th.hidden-lg,.factory-bootstrap-444 tr.hidden-lg{display:none!important}}.factory-bootstrap-444 .visible-print,.factory-bootstrap-444 td.visible-print,.factory-bootstrap-444 th.visible-print,.factory-bootstrap-444 tr.visible-print{display:none!important}@media print{.factory-bootstrap-444 .visible-print{display:block!important}.factory-bootstrap-444 table.visible-print{display:table}.factory-bootstrap-444 tr.visible-print{display:table-row!important}.factory-bootstrap-444 td.visible-print,.factory-bootstrap-444 th.visible-print{display:table-cell!important}.factory-bootstrap-444 .hidden-print,.factory-bootstrap-444 td.hidden-print,.factory-bootstrap-444 th.hidden-print,.factory-bootstrap-444 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-444 .btn-danger,.factory-bootstrap-444 .btn-default,.factory-bootstrap-444 .btn-info,.factory-bootstrap-444 .btn-primary,.factory-bootstrap-444 .btn-success,.factory-bootstrap-444 .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-444 .btn-danger.active,.factory-bootstrap-444 .btn-danger:active,.factory-bootstrap-444 .btn-default.active,.factory-bootstrap-444 .btn-default:active,.factory-bootstrap-444 .btn-info.active,.factory-bootstrap-444 .btn-info:active,.factory-bootstrap-444 .btn-primary.active,.factory-bootstrap-444 .btn-primary:active,.factory-bootstrap-444 .btn-success.active,.factory-bootstrap-444 .btn-success:active,.factory-bootstrap-444 .btn-warning.active,.factory-bootstrap-444 .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-444 .btn.active,.factory-bootstrap-444 .btn:active{background-image:none}.factory-bootstrap-444 .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-444 .btn-default.active,.factory-bootstrap-444 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-444 .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-444 .btn-gold:focus,.factory-bootstrap-444 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-444 .btn-gold.active,.factory-bootstrap-444 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-444 .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-444 .btn-primary:focus,.factory-bootstrap-444 .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-444 .btn-primary.active,.factory-bootstrap-444 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-444 .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-444 .btn-success:focus,.factory-bootstrap-444 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-444 .btn-success.active,.factory-bootstrap-444 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-444 .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-444 .btn-warning:focus,.factory-bootstrap-444 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-444 .btn-warning.active,.factory-bootstrap-444 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-444 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-444 .btn-danger.active,.factory-bootstrap-444 .btn-danger:active,.factory-bootstrap-444 .btn-danger:focus,.factory-bootstrap-444 .btn-danger:hover,.factory-bootstrap-444 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-444 .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-444 .btn-info:focus,.factory-bootstrap-444 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-444 .btn-info.active,.factory-bootstrap-444 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-444 .img-thumbnail,.factory-bootstrap-444 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-444 .dropdown-menu>li>a:focus,.factory-bootstrap-444 .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-444 .dropdown-menu>.active>a,.factory-bootstrap-444 .dropdown-menu>.active>a:focus,.factory-bootstrap-444 .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-444 .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-444 .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-444 .navbar-brand,.factory-bootstrap-444 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-444 .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-444 .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-444 .navbar-inverse .navbar-brand,.factory-bootstrap-444 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-444 .navbar-fixed-bottom,.factory-bootstrap-444 .navbar-fixed-top,.factory-bootstrap-444 .navbar-static-top{border-radius:0}.factory-bootstrap-444 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-444 .alert .actions{padding-top:10px}.factory-bootstrap-444 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-444 .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-444 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-444 .alert-normal,.factory-bootstrap-444 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-444 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-444 .alert-danger a:not(.btn),.factory-bootstrap-444 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-444 .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-444 .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-444 .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-444 .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-444 .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-444 .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-444 .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-444 .list-group-item.active,.factory-bootstrap-444 .list-group-item.active:focus,.factory-bootstrap-444 .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-444 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-444 .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-444 .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-444 .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-444 .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-444 .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-444 .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-444 .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-444 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-444 .factory-hidden{display:none}.factory-bootstrap-444 .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-445 article,.factory-bootstrap-445 aside,.factory-bootstrap-445 details,.factory-bootstrap-445 figcaption,.factory-bootstrap-445 figure,.factory-bootstrap-445 footer,.factory-bootstrap-445 header,.factory-bootstrap-445 hgroup,.factory-bootstrap-445 main,.factory-bootstrap-445 nav,.factory-bootstrap-445 section,.factory-bootstrap-445 summary{display:block}.factory-bootstrap-445 audio,.factory-bootstrap-445 canvas,.factory-bootstrap-445 video{display:inline-block}.factory-bootstrap-445 audio:not([controls]){display:none;height:0}.factory-bootstrap-445 [hidden],.factory-bootstrap-445 template{display:none}.factory-bootstrap-445 body{margin:0}.factory-bootstrap-445 a{background:0 0}.factory-bootstrap-445 a:focus{outline:thin dotted}.factory-bootstrap-445 a:active,.factory-bootstrap-445 a:hover{outline:0}.factory-bootstrap-445 h1{margin:.67em 0}.factory-bootstrap-445 b,.factory-bootstrap-445 strong{font-weight:700}.factory-bootstrap-445 dfn{font-style:italic}.factory-bootstrap-445 hr{height:0;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-445 mark{color:#000;background:#ff0}.factory-bootstrap-445 code,.factory-bootstrap-445 kbd,.factory-bootstrap-445 pre,.factory-bootstrap-445 samp{font-size:1em}.factory-bootstrap-445 pre{white-space:pre-wrap}.factory-bootstrap-445 q{quotes:"\201C" "\201D" "\2018" "\2019"}.factory-bootstrap-445 sub,.factory-bootstrap-445 sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}.factory-bootstrap-445 sup{top:-.5em}.factory-bootstrap-445 sub{bottom:-.25em}.factory-bootstrap-445 img{border:0}.factory-bootstrap-445 svg:not(:root){overflow:hidden}.factory-bootstrap-445 figure{margin:0}.factory-bootstrap-445 button,.factory-bootstrap-445 input,.factory-bootstrap-445 select,.factory-bootstrap-445 textarea{margin:0}.factory-bootstrap-445 button,.factory-bootstrap-445 select{text-transform:none}.factory-bootstrap-445 select{padding-right:4px!important}.factory-bootstrap-445 button,.factory-bootstrap-445 input[type=reset],.factory-bootstrap-445 input[type=submit],html .factory-bootstrap-445 input[type=button]{cursor:pointer;-webkit-appearance:button}.factory-bootstrap-445 button[disabled],html .factory-bootstrap-445 input[disabled]{cursor:default}.factory-bootstrap-445 input[type=checkbox],.factory-bootstrap-445 input[type=radio]{padding:0;box-sizing:border-box}.factory-bootstrap-445 input[type=search]{-webkit-appearance:textfield}.factory-bootstrap-445 input[type=search]::-webkit-search-cancel-button,.factory-bootstrap-445 input[type=search]::-webkit-search-decoration{-webkit-appearance:none}.factory-bootstrap-445 button::-moz-focus-inner,.factory-bootstrap-445 input::-moz-focus-inner{padding:0;border:0}.factory-bootstrap-445 textarea{overflow:auto;vertical-align:top}.factory-bootstrap-445 table{border-collapse:collapse;border-spacing:0}@media print{.factory-bootstrap-445 *{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}.factory-bootstrap-445 a,.factory-bootstrap-445 a:visited{text-decoration:underline}.factory-bootstrap-445 a[href]:after{content:" (" attr(href) ")"}.factory-bootstrap-445 abbr[title]:after{content:" (" attr(title) ")"}.factory-bootstrap-445 a[href^="javascript:"]:after,.factory-bootstrap-445 a[href^="#"]:after{content:""}.factory-bootstrap-445 blockquote,.factory-bootstrap-445 pre{border:1px solid #999;page-break-inside:avoid}.factory-bootstrap-445 thead{display:table-header-group}.factory-bootstrap-445 img,.factory-bootstrap-445 tr{page-break-inside:avoid}.factory-bootstrap-445 img{max-width:100%!important}@page{margin:2cm .5cm}.factory-bootstrap-445 h2,.factory-bootstrap-445 h3,.factory-bootstrap-445 p{orphans:3;widows:3}.factory-bootstrap-445 h2,.factory-bootstrap-445 h3{page-break-after:avoid}.factory-bootstrap-445 select{background:#fff!important}.factory-bootstrap-445 .navbar{display:none}.factory-bootstrap-445 .table td,.factory-bootstrap-445 .table th{background-color:#fff!important}.factory-bootstrap-445 .btn>.caret,.factory-bootstrap-445 .dropup>.btn>.caret{border-top-color:#000!important}.factory-bootstrap-445 .label{border:1px solid #000}.factory-bootstrap-445 .table{border-collapse:collapse!important}.factory-bootstrap-445 .table-bordered td,.factory-bootstrap-445 .table-bordered th{border:1px solid #ddd!important}}.factory-bootstrap-445 *,.factory-bootstrap-445 :after,.factory-bootstrap-445 :before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html .factory-bootstrap-445{-webkit-tap-highlight-color:rgba(0,0,0,0)}.factory-bootstrap-445 body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}.factory-bootstrap-445 button,.factory-bootstrap-445 input,.factory-bootstrap-445 select,.factory-bootstrap-445 textarea{font-family:inherit;font-size:inherit;line-height:inherit}.factory-bootstrap-445 img{vertical-align:middle}.factory-bootstrap-445 .img-responsive{display:block;height:auto;max-width:100%}.factory-bootstrap-445 .img-rounded{border-radius:6px}.factory-bootstrap-445 .img-thumbnail{display:inline-block;height:auto;max-width:100%;padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-445 .img-circle{border-radius:50%}.factory-bootstrap-445 hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.factory-bootstrap-445 .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.factory-bootstrap-445 .h1,.factory-bootstrap-445 .h2,.factory-bootstrap-445 .h3,.factory-bootstrap-445 .h4,.factory-bootstrap-445 .h5,.factory-bootstrap-445 .h6,.factory-bootstrap-445 h1,.factory-bootstrap-445 h2,.factory-bootstrap-445 h3,.factory-bootstrap-445 h4,.factory-bootstrap-445 h5,.factory-bootstrap-445 h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.1;color:inherit}.factory-bootstrap-445 .h1 .small,.factory-bootstrap-445 .h1 small,.factory-bootstrap-445 .h2 .small,.factory-bootstrap-445 .h2 small,.factory-bootstrap-445 .h3 .small,.factory-bootstrap-445 .h3 small,.factory-bootstrap-445 .h4 .small,.factory-bootstrap-445 .h4 small,.factory-bootstrap-445 .h5 .small,.factory-bootstrap-445 .h5 small,.factory-bootstrap-445 .h6 .small,.factory-bootstrap-445 .h6 small,.factory-bootstrap-445 h1 .small,.factory-bootstrap-445 h1 small,.factory-bootstrap-445 h2 .small,.factory-bootstrap-445 h2 small,.factory-bootstrap-445 h3 .small,.factory-bootstrap-445 h3 small,.factory-bootstrap-445 h4 .small,.factory-bootstrap-445 h4 small,.factory-bootstrap-445 h5 .small,.factory-bootstrap-445 h5 small,.factory-bootstrap-445 h6 .small,.factory-bootstrap-445 h6 small{font-weight:400;line-height:1;color:#999}.factory-bootstrap-445 h1,.factory-bootstrap-445 h2,.factory-bootstrap-445 h3{margin-top:20px;margin-bottom:10px}.factory-bootstrap-445 h1 .small,.factory-bootstrap-445 h1 small,.factory-bootstrap-445 h2 .small,.factory-bootstrap-445 h2 small,.factory-bootstrap-445 h3 .small,.factory-bootstrap-445 h3 small{font-size:65%}.factory-bootstrap-445 h4,.factory-bootstrap-445 h5,.factory-bootstrap-445 h6{margin-top:10px;margin-bottom:10px}.factory-bootstrap-445 h4 .small,.factory-bootstrap-445 h4 small,.factory-bootstrap-445 h5 .small,.factory-bootstrap-445 h5 small,.factory-bootstrap-445 h6 .small,.factory-bootstrap-445 h6 small{font-size:75%}.factory-bootstrap-445 .h1,.factory-bootstrap-445 h1{font-size:36px}.factory-bootstrap-445 .h2,.factory-bootstrap-445 h2{font-size:30px}.factory-bootstrap-445 .h3,.factory-bootstrap-445 h3{font-size:24px}.factory-bootstrap-445 .h4,.factory-bootstrap-445 h4{font-size:18px}.factory-bootstrap-445 .h5,.factory-bootstrap-445 h5{font-size:14px}.factory-bootstrap-445 .h6,.factory-bootstrap-445 h6{font-size:12px}.factory-bootstrap-445 p{margin:0 0 10px}.factory-bootstrap-445 .lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.factory-bootstrap-445 .small,.factory-bootstrap-445 small{font-size:85%}.factory-bootstrap-445 cite{font-style:normal}.factory-bootstrap-445 .text-muted{color:#999}.factory-bootstrap-445 .text-primary{color:#428bca}.factory-bootstrap-445 .text-primary:hover{color:#3071a9}.factory-bootstrap-445 .text-warning{color:#8a6d3b}.factory-bootstrap-445 .text-warning:hover{color:#66512c}.factory-bootstrap-445 .text-danger{color:#a94442}.factory-bootstrap-445 .text-danger:hover{color:#843534}.factory-bootstrap-445 .text-success{color:#3c763d}.factory-bootstrap-445 .text-success:hover{color:#2b542c}.factory-bootstrap-445 .text-info{color:#31708f}.factory-bootstrap-445 .text-info:hover{color:#245269}.factory-bootstrap-445 .text-left{text-align:left}.factory-bootstrap-445 .text-right{text-align:right}.factory-bootstrap-445 .text-center{text-align:center}.factory-bootstrap-445 .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}.factory-bootstrap-445 ol,.factory-bootstrap-445 ul{margin-top:0;margin-bottom:10px}.factory-bootstrap-445 ol ol,.factory-bootstrap-445 ol ul,.factory-bootstrap-445 ul ol,.factory-bootstrap-445 ul ul{margin-bottom:0}.factory-bootstrap-445 .list-inline,.factory-bootstrap-445 .list-unstyled{padding-left:0;list-style:none}.factory-bootstrap-445 .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}.factory-bootstrap-445 .list-inline>li:first-child{padding-left:0}.factory-bootstrap-445 dl{margin-top:0;margin-bottom:20px}.factory-bootstrap-445 dd,.factory-bootstrap-445 dt{line-height:1.428571429}.factory-bootstrap-445 dt{font-weight:700}.factory-bootstrap-445 dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}.dl-horizontal dd:after,.dl-horizontal dd:before{display:table;content:" "}.dl-horizontal dd:after{clear:both}}.factory-bootstrap-445 abbr[data-original-title],.factory-bootstrap-445 abbr[title]{cursor:help;border-bottom:1px dotted #999}.factory-bootstrap-445 .initialism{font-size:90%;text-transform:uppercase}.factory-bootstrap-445 blockquote{padding:10px 20px;margin:0 0 20px;border-left:5px solid #eee}.factory-bootstrap-445 blockquote p{font-size:17.5px;font-weight:300;line-height:1.25}.factory-bootstrap-445 blockquote p:last-child{margin-bottom:0}.factory-bootstrap-445 blockquote .small,.factory-bootstrap-445 blockquote small{display:block;line-height:1.428571429;color:#999}.factory-bootstrap-445 blockquote .small:before,.factory-bootstrap-445 blockquote small:before{content:'\2014 \00A0'}.factory-bootstrap-445 blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}.factory-bootstrap-445 blockquote.pull-right .small,.factory-bootstrap-445 blockquote.pull-right p,.factory-bootstrap-445 blockquote.pull-right small{text-align:right}.factory-bootstrap-445 blockquote.pull-right .small:before,.factory-bootstrap-445 blockquote.pull-right small:before{content:''}.factory-bootstrap-445 blockquote.pull-right .small:after,.factory-bootstrap-445 blockquote.pull-right small:after{content:'\00A0 \2014'}.factory-bootstrap-445 blockquote:after,.factory-bootstrap-445 blockquote:before{content:""}.factory-bootstrap-445 address{margin-bottom:20px;font-style:normal;line-height:1.428571429}.factory-bootstrap-445 code,.factory-bootstrap-445 kbd,.factory-bootstrap-445 pre,.factory-bootstrap-445 samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}.factory-bootstrap-445 code{padding:2px 4px;font-size:90%;color:#c7254e;white-space:nowrap;background-color:#f9f2f4;border-radius:4px}.factory-bootstrap-445 pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-445 pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.factory-bootstrap-445 .pre-scrollable{max-height:340px;overflow-y:scroll}.factory-bootstrap-445 .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.factory-bootstrap-445 .container:after,.factory-bootstrap-445 .container:before{display:table;content:" "}.factory-bootstrap-445 .container:after{clear:both}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.factory-bootstrap-445 .row{margin-right:-15px;margin-left:-15px}.factory-bootstrap-445 .row:after,.factory-bootstrap-445 .row:before{display:table;content:" "}.factory-bootstrap-445 .row:after{clear:both}.factory-bootstrap-445 .col-lg-1,.factory-bootstrap-445 .col-lg-10,.factory-bootstrap-445 .col-lg-11,.factory-bootstrap-445 .col-lg-12,.factory-bootstrap-445 .col-lg-2,.factory-bootstrap-445 .col-lg-3,.factory-bootstrap-445 .col-lg-4,.factory-bootstrap-445 .col-lg-5,.factory-bootstrap-445 .col-lg-6,.factory-bootstrap-445 .col-lg-7,.factory-bootstrap-445 .col-lg-8,.factory-bootstrap-445 .col-lg-9,.factory-bootstrap-445 .col-md-1,.factory-bootstrap-445 .col-md-10,.factory-bootstrap-445 .col-md-11,.factory-bootstrap-445 .col-md-12,.factory-bootstrap-445 .col-md-2,.factory-bootstrap-445 .col-md-3,.factory-bootstrap-445 .col-md-4,.factory-bootstrap-445 .col-md-5,.factory-bootstrap-445 .col-md-6,.factory-bootstrap-445 .col-md-7,.factory-bootstrap-445 .col-md-8,.factory-bootstrap-445 .col-md-9,.factory-bootstrap-445 .col-sm-1,.factory-bootstrap-445 .col-sm-10,.factory-bootstrap-445 .col-sm-11,.factory-bootstrap-445 .col-sm-12,.factory-bootstrap-445 .col-sm-2,.factory-bootstrap-445 .col-sm-3,.factory-bootstrap-445 .col-sm-4,.factory-bootstrap-445 .col-sm-5,.factory-bootstrap-445 .col-sm-6,.factory-bootstrap-445 .col-sm-7,.factory-bootstrap-445 .col-sm-8,.factory-bootstrap-445 .col-sm-9,.factory-bootstrap-445 .col-xs-1,.factory-bootstrap-445 .col-xs-10,.factory-bootstrap-445 .col-xs-11,.factory-bootstrap-445 .col-xs-12,.factory-bootstrap-445 .col-xs-2,.factory-bootstrap-445 .col-xs-3,.factory-bootstrap-445 .col-xs-4,.factory-bootstrap-445 .col-xs-5,.factory-bootstrap-445 .col-xs-6,.factory-bootstrap-445 .col-xs-7,.factory-bootstrap-445 .col-xs-8,.factory-bootstrap-445 .col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.factory-bootstrap-445 .col-xs-1,.factory-bootstrap-445 .col-xs-10,.factory-bootstrap-445 .col-xs-11,.factory-bootstrap-445 .col-xs-12,.factory-bootstrap-445 .col-xs-2,.factory-bootstrap-445 .col-xs-3,.factory-bootstrap-445 .col-xs-4,.factory-bootstrap-445 .col-xs-5,.factory-bootstrap-445 .col-xs-6,.factory-bootstrap-445 .col-xs-7,.factory-bootstrap-445 .col-xs-8,.factory-bootstrap-445 .col-xs-9{float:left}.factory-bootstrap-445 .col-xs-12{width:100%}.factory-bootstrap-445 .col-xs-11{width:91.66666666666666%}.factory-bootstrap-445 .col-xs-10{width:83.33333333333334%}.factory-bootstrap-445 .col-xs-9{width:75%}.factory-bootstrap-445 .col-xs-8{width:66.66666666666666%}.factory-bootstrap-445 .col-xs-7{width:58.333333333333336%}.factory-bootstrap-445 .col-xs-6{width:50%}.factory-bootstrap-445 .col-xs-5{width:41.66666666666667%}.factory-bootstrap-445 .col-xs-4{width:33.33333333333333%}.factory-bootstrap-445 .col-xs-3{width:25%}.factory-bootstrap-445 .col-xs-2{width:16.666666666666664%}.factory-bootstrap-445 .col-xs-1{width:8.333333333333332%}.factory-bootstrap-445 .col-xs-pull-12{right:100%}.factory-bootstrap-445 .col-xs-pull-11{right:91.66666666666666%}.factory-bootstrap-445 .col-xs-pull-10{right:83.33333333333334%}.factory-bootstrap-445 .col-xs-pull-9{right:75%}.factory-bootstrap-445 .col-xs-pull-8{right:66.66666666666666%}.factory-bootstrap-445 .col-xs-pull-7{right:58.333333333333336%}.factory-bootstrap-445 .col-xs-pull-6{right:50%}.factory-bootstrap-445 .col-xs-pull-5{right:41.66666666666667%}.factory-bootstrap-445 .col-xs-pull-4{right:33.33333333333333%}.factory-bootstrap-445 .col-xs-pull-3{right:25%}.factory-bootstrap-445 .col-xs-pull-2{right:16.666666666666664%}.factory-bootstrap-445 .col-xs-pull-1{right:8.333333333333332%}.factory-bootstrap-445 .col-xs-pull-0{right:0}.factory-bootstrap-445 .col-xs-push-12{left:100%}.factory-bootstrap-445 .col-xs-push-11{left:91.66666666666666%}.factory-bootstrap-445 .col-xs-push-10{left:83.33333333333334%}.factory-bootstrap-445 .col-xs-push-9{left:75%}.factory-bootstrap-445 .col-xs-push-8{left:66.66666666666666%}.factory-bootstrap-445 .col-xs-push-7{left:58.333333333333336%}.factory-bootstrap-445 .col-xs-push-6{left:50%}.factory-bootstrap-445 .col-xs-push-5{left:41.66666666666667%}.factory-bootstrap-445 .col-xs-push-4{left:33.33333333333333%}.factory-bootstrap-445 .col-xs-push-3{left:25%}.factory-bootstrap-445 .col-xs-push-2{left:16.666666666666664%}.factory-bootstrap-445 .col-xs-push-1{left:8.333333333333332%}.factory-bootstrap-445 .col-xs-push-0{left:0}.factory-bootstrap-445 .col-xs-offset-12{margin-left:100%}.factory-bootstrap-445 .col-xs-offset-11{margin-left:91.66666666666666%}.factory-bootstrap-445 .col-xs-offset-10{margin-left:83.33333333333334%}.factory-bootstrap-445 .col-xs-offset-9{margin-left:75%}.factory-bootstrap-445 .col-xs-offset-8{margin-left:66.66666666666666%}.factory-bootstrap-445 .col-xs-offset-7{margin-left:58.333333333333336%}.factory-bootstrap-445 .col-xs-offset-6{margin-left:50%}.factory-bootstrap-445 .col-xs-offset-5{margin-left:41.66666666666667%}.factory-bootstrap-445 .col-xs-offset-4{margin-left:33.33333333333333%}.factory-bootstrap-445 .col-xs-offset-3{margin-left:25%}.factory-bootstrap-445 .col-xs-offset-2{margin-left:16.666666666666664%}.factory-bootstrap-445 .col-xs-offset-1{margin-left:8.333333333333332%}.factory-bootstrap-445 .col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}.factory-bootstrap-445 table{max-width:100%;background-color:transparent}.factory-bootstrap-445 th{text-align:left}.factory-bootstrap-445 .table{width:100%;margin-bottom:20px}.factory-bootstrap-445 .table>tbody>tr>td,.factory-bootstrap-445 .table>tbody>tr>th,.factory-bootstrap-445 .table>tfoot>tr>td,.factory-bootstrap-445 .table>tfoot>tr>th,.factory-bootstrap-445 .table>thead>tr>td,.factory-bootstrap-445 .table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.factory-bootstrap-445 .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.factory-bootstrap-445 .table>caption+thead>tr:first-child>td,.factory-bootstrap-445 .table>caption+thead>tr:first-child>th,.factory-bootstrap-445 .table>colgroup+thead>tr:first-child>td,.factory-bootstrap-445 .table>colgroup+thead>tr:first-child>th,.factory-bootstrap-445 .table>thead:first-child>tr:first-child>td,.factory-bootstrap-445 .table>thead:first-child>tr:first-child>th{border-top:0}.factory-bootstrap-445 .table>tbody+tbody{border-top:2px solid #ddd}.factory-bootstrap-445 .table .table{background-color:#fff}.factory-bootstrap-445 .table-condensed>tbody>tr>td,.factory-bootstrap-445 .table-condensed>tbody>tr>th,.factory-bootstrap-445 .table-condensed>tfoot>tr>td,.factory-bootstrap-445 .table-condensed>tfoot>tr>th,.factory-bootstrap-445 .table-condensed>thead>tr>td,.factory-bootstrap-445 .table-condensed>thead>tr>th{padding:5px}.factory-bootstrap-445 .table-bordered,.factory-bootstrap-445 .table-bordered>tbody>tr>td,.factory-bootstrap-445 .table-bordered>tbody>tr>th,.factory-bootstrap-445 .table-bordered>tfoot>tr>td,.factory-bootstrap-445 .table-bordered>tfoot>tr>th,.factory-bootstrap-445 .table-bordered>thead>tr>td,.factory-bootstrap-445 .table-bordered>thead>tr>th{border:1px solid #ddd}.factory-bootstrap-445 .table-bordered>thead>tr>td,.factory-bootstrap-445 .table-bordered>thead>tr>th{border-bottom-width:2px}.factory-bootstrap-445 .table-striped>tbody>tr:nth-child(odd)>td,.factory-bootstrap-445 .table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.factory-bootstrap-445 .table-hover>tbody>tr:hover>td,.factory-bootstrap-445 .table-hover>tbody>tr:hover>th{background-color:#f5f5f5}.factory-bootstrap-445 table col[class*=col-]{position:static;display:table-column;float:none}.factory-bootstrap-445 table td[class*=col-],.factory-bootstrap-445 table th[class*=col-]{display:table-cell;float:none}.factory-bootstrap-445 .table>tbody>.active>td,.factory-bootstrap-445 .table>tbody>.active>th,.factory-bootstrap-445 .table>tbody>tr>.active,.factory-bootstrap-445 .table>tfoot>.active>td,.factory-bootstrap-445 .table>tfoot>.active>th,.factory-bootstrap-445 .table>tfoot>tr>.active,.factory-bootstrap-445 .table>thead>.active>td,.factory-bootstrap-445 .table>thead>.active>th,.factory-bootstrap-445 .table>thead>tr>.active{background-color:#f5f5f5}.factory-bootstrap-445 .table-hover>tbody>.active:hover>td,.factory-bootstrap-445 .table-hover>tbody>.active:hover>th,.factory-bootstrap-445 .table-hover>tbody>tr>.active:hover{background-color:#e8e8e8}.factory-bootstrap-445 .table>tbody>.success>td,.factory-bootstrap-445 .table>tbody>.success>th,.factory-bootstrap-445 .table>tbody>tr>.success,.factory-bootstrap-445 .table>tfoot>.success>td,.factory-bootstrap-445 .table>tfoot>.success>th,.factory-bootstrap-445 .table>tfoot>tr>.success,.factory-bootstrap-445 .table>thead>.success>td,.factory-bootstrap-445 .table>thead>.success>th,.factory-bootstrap-445 .table>thead>tr>.success{background-color:#dff0d8}.factory-bootstrap-445 .table-hover>tbody>.success:hover>td,.factory-bootstrap-445 .table-hover>tbody>.success:hover>th,.factory-bootstrap-445 .table-hover>tbody>tr>.success:hover{background-color:#d0e9c6}.factory-bootstrap-445 .table>tbody>.danger>td,.factory-bootstrap-445 .table>tbody>.danger>th,.factory-bootstrap-445 .table>tbody>tr>.danger,.factory-bootstrap-445 .table>tfoot>.danger>td,.factory-bootstrap-445 .table>tfoot>.danger>th,.factory-bootstrap-445 .table>tfoot>tr>.danger,.factory-bootstrap-445 .table>thead>.danger>td,.factory-bootstrap-445 .table>thead>.danger>th,.factory-bootstrap-445 .table>thead>tr>.danger{background-color:#f2dede}.factory-bootstrap-445 .table-hover>tbody>.danger:hover>td,.factory-bootstrap-445 .table-hover>tbody>.danger:hover>th,.factory-bootstrap-445 .table-hover>tbody>tr>.danger:hover{background-color:#ebcccc}.factory-bootstrap-445 .table>tbody>.warning>td,.factory-bootstrap-445 .table>tbody>.warning>th,.factory-bootstrap-445 .table>tbody>tr>.warning,.factory-bootstrap-445 .table>tfoot>.warning>td,.factory-bootstrap-445 .table>tfoot>.warning>th,.factory-bootstrap-445 .table>tfoot>tr>.warning,.factory-bootstrap-445 .table>thead>.warning>td,.factory-bootstrap-445 .table>thead>.warning>th,.factory-bootstrap-445 .table>thead>tr>.warning{background-color:#fcf8e3}.factory-bootstrap-445 .table-hover>tbody>.warning:hover>td,.factory-bootstrap-445 .table-hover>tbody>.warning:hover>th,.factory-bootstrap-445 .table-hover>tbody>tr>.warning:hover{background-color:#faf2cc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-x:scroll;overflow-y:hidden;border:1px solid #ddd;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}.factory-bootstrap-445 fieldset{padding:0;margin:0;border:0}.factory-bootstrap-445 legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5;-moz-box-sizing:content-box;box-sizing:content-box}.factory-bootstrap-445 label{display:inline-block;margin-bottom:5px;font-weight:700}.factory-bootstrap-445 input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.factory-bootstrap-445 input[type=checkbox],.factory-bootstrap-445 input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}.factory-bootstrap-445 input[type=file]{display:block}.factory-bootstrap-445 select[multiple],.factory-bootstrap-445 select[size]{height:auto}.factory-bootstrap-445 select optgroup{font-family:inherit;font-size:inherit;font-style:inherit}.factory-bootstrap-445 input[type=checkbox]:focus,.factory-bootstrap-445 input[type=file]:focus,.factory-bootstrap-445 input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-445 input[type=number]::-webkit-inner-spin-button,.factory-bootstrap-445 input[type=number]::-webkit-outer-spin-button{height:auto}.factory-bootstrap-445 output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle}.factory-bootstrap-445 .form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;vertical-align:middle;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:3px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.factory-bootstrap-445 .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-445 .form-control:-moz-placeholder{color:#999}.factory-bootstrap-445 .form-control::-moz-placeholder{color:#999;opacity:1}.factory-bootstrap-445 .form-control:-ms-input-placeholder{color:#999}.factory-bootstrap-445 .form-control::-webkit-input-placeholder{color:#999}.factory-bootstrap-445 .form-control[disabled],.factory-bootstrap-445 .form-control[readonly],.factory-bootstrap-445 fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee}.factory-bootstrap-445 textarea.form-control{height:auto}.factory-bootstrap-445 .form-group{margin-bottom:15px}.factory-bootstrap-445 .checkbox,.factory-bootstrap-445 .radio{display:block;min-height:20px;padding-left:20px;margin-top:10px;margin-bottom:10px;vertical-align:middle}.factory-bootstrap-445 .checkbox label,.factory-bootstrap-445 .radio label{display:inline;margin-bottom:0;font-weight:400;cursor:pointer}.factory-bootstrap-445 .checkbox input[type=checkbox],.factory-bootstrap-445 .checkbox-inline input[type=checkbox],.factory-bootstrap-445 .radio input[type=radio],.factory-bootstrap-445 .radio-inline input[type=radio]{float:left;margin-left:-20px}.factory-bootstrap-445 .checkbox+.checkbox,.factory-bootstrap-445 .radio+.radio{margin-top:-5px}.factory-bootstrap-445 .checkbox-inline,.factory-bootstrap-445 .radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.factory-bootstrap-445 .checkbox-inline+.checkbox-inline,.factory-bootstrap-445 .radio-inline+.radio-inline{margin-top:0;margin-left:10px}.factory-bootstrap-445 .checkbox-inline[disabled],.factory-bootstrap-445 .checkbox[disabled],.factory-bootstrap-445 .radio-inline[disabled],.factory-bootstrap-445 .radio[disabled],.factory-bootstrap-445 fieldset[disabled] .checkbox,.factory-bootstrap-445 fieldset[disabled] .checkbox-inline,.factory-bootstrap-445 fieldset[disabled] .radio,.factory-bootstrap-445 fieldset[disabled] .radio-inline,.factory-bootstrap-445 fieldset[disabled] input[type=checkbox],.factory-bootstrap-445 fieldset[disabled] input[type=radio],.factory-bootstrap-445 input[type=checkbox][disabled],.factory-bootstrap-445 input[type=radio][disabled]{cursor:not-allowed}.factory-bootstrap-445 .input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-445 select.input-sm{height:30px;line-height:30px}.factory-bootstrap-445 textarea.input-sm{height:auto}.factory-bootstrap-445 .input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-445 select.input-lg{height:46px;line-height:46px}.factory-bootstrap-445 textarea.input-lg{height:auto}.factory-bootstrap-445 .has-warning .checkbox,.factory-bootstrap-445 .has-warning .checkbox-inline,.factory-bootstrap-445 .has-warning .control-label,.factory-bootstrap-445 .has-warning .help-block,.factory-bootstrap-445 .has-warning .radio,.factory-bootstrap-445 .has-warning .radio-inline{color:#8a6d3b}.factory-bootstrap-445 .has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-445 .has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.factory-bootstrap-445 .has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.factory-bootstrap-445 .has-error .checkbox,.factory-bootstrap-445 .has-error .checkbox-inline,.factory-bootstrap-445 .has-error .control-label,.factory-bootstrap-445 .has-error .help-block,.factory-bootstrap-445 .has-error .radio,.factory-bootstrap-445 .has-error .radio-inline{color:#a94442}.factory-bootstrap-445 .controls{display:block}.factory-bootstrap-445 .has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-445 .has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.factory-bootstrap-445 .has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.factory-bootstrap-445 .has-success .checkbox,.factory-bootstrap-445 .has-success .checkbox-inline,.factory-bootstrap-445 .has-success .control-label,.factory-bootstrap-445 .has-success .help-block,.factory-bootstrap-445 .has-success .radio,.factory-bootstrap-445 .has-success .radio-inline{color:#3c763d}.factory-bootstrap-445 .has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-445 .has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.factory-bootstrap-445 .has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.factory-bootstrap-445 .form-control-static{margin-bottom:0}.factory-bootstrap-445 .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373;font-weight:400}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block}.form-inline select.form-control{width:auto}.form-inline .checkbox,.form-inline .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}}.factory-bootstrap-445 .form-horizontal .checkbox,.factory-bootstrap-445 .form-horizontal .checkbox-inline,.factory-bootstrap-445 .form-horizontal .control-label,.factory-bootstrap-445 .form-horizontal .radio,.factory-bootstrap-445 .form-horizontal .radio-inline{position:relative;padding-top:7px;margin-top:0;margin-bottom:0}.factory-bootstrap-445 .form-horizontal .control-label{max-width:200px}.factory-bootstrap-445 .form-horizontal .checkbox,.factory-bootstrap-445 .form-horizontal .radio{min-height:27px}.factory-bootstrap-445 .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}.factory-bootstrap-445 .form-horizontal .form-group:after,.factory-bootstrap-445 .form-horizontal .form-group:before{display:table;content:" "}.factory-bootstrap-445 .form-horizontal .form-group:after{clear:both}.factory-bootstrap-445 .form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.factory-bootstrap-445 .btn{display:inline-block;padding:5px 12px;margin-bottom:0;font-size:13px;font-weight:400;line-height:1.428571429;text-align:center;white-space:nowrap;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.factory-bootstrap-445 .btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.factory-bootstrap-445 .btn{text-decoration:none}.factory-bootstrap-445 .btn:focus,.factory-bootstrap-445 .btn:hover{color:#333;text-decoration:none}.factory-bootstrap-445 .btn.disabled,.factory-bootstrap-445 .btn[disabled],.factory-bootstrap-445 fieldset[disabled] .btn{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-445 .btn-default.active,.factory-bootstrap-445 .btn-default:active,.factory-bootstrap-445 .btn-default:focus,.factory-bootstrap-445 .btn-default:hover,.factory-bootstrap-445 .open .dropdown-toggle.btn-default{background:#fafafa;border-color:#999;color:#222}.factory-bootstrap-445 .btn-default.active,.factory-bootstrap-445 .btn-default:active,.factory-bootstrap-445 .open .dropdown-toggle.btn-default{background-image:none}.factory-bootstrap-445 .btn-default.disabled,.factory-bootstrap-445 .btn-default.disabled.active,.factory-bootstrap-445 .btn-default.disabled:active,.factory-bootstrap-445 .btn-default.disabled:focus,.factory-bootstrap-445 .btn-default.disabled:hover,.factory-bootstrap-445 .btn-default[disabled],.factory-bootstrap-445 .btn-default[disabled].active,.factory-bootstrap-445 .btn-default[disabled]:active,.factory-bootstrap-445 .btn-default[disabled]:focus,.factory-bootstrap-445 .btn-default[disabled]:hover,.factory-bootstrap-445 fieldset[disabled] .btn-default,.factory-bootstrap-445 fieldset[disabled] .btn-default.active,.factory-bootstrap-445 fieldset[disabled] .btn-default:active,.factory-bootstrap-445 fieldset[disabled] .btn-default:focus,.factory-bootstrap-445 fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.factory-bootstrap-445 .btn-default .badge{color:#fff;background-color:#fff}.factory-bootstrap-445 .btn-primary.active,.factory-bootstrap-445 .btn-primary:active,.factory-bootstrap-445 .btn-primary:focus,.factory-bootstrap-445 .btn-primary:hover,.factory-bootstrap-445 .open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.factory-bootstrap-445 .btn-primary.active,.factory-bootstrap-445 .btn-primary:active,.factory-bootstrap-445 .open .dropdown-toggle.btn-primary{background-image:none}.factory-bootstrap-445 .btn-primary.disabled,.factory-bootstrap-445 .btn-primary.disabled.active,.factory-bootstrap-445 .btn-primary.disabled:active,.factory-bootstrap-445 .btn-primary.disabled:focus,.factory-bootstrap-445 .btn-primary.disabled:hover,.factory-bootstrap-445 .btn-primary[disabled],.factory-bootstrap-445 .btn-primary[disabled].active,.factory-bootstrap-445 .btn-primary[disabled]:active,.factory-bootstrap-445 .btn-primary[disabled]:focus,.factory-bootstrap-445 .btn-primary[disabled]:hover,.factory-bootstrap-445 fieldset[disabled] .btn-primary,.factory-bootstrap-445 fieldset[disabled] .btn-primary.active,.factory-bootstrap-445 fieldset[disabled] .btn-primary:active,.factory-bootstrap-445 fieldset[disabled] .btn-primary:focus,.factory-bootstrap-445 fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.factory-bootstrap-445 .btn-primary .badge{color:#428bca;background-color:#fff}.factory-bootstrap-445 .btn-warning{color:#fff;background-color:#f0ad4e}.factory-bootstrap-445 .btn-warning.active,.factory-bootstrap-445 .btn-warning:active,.factory-bootstrap-445 .btn-warning:focus,.factory-bootstrap-445 .btn-warning:hover,.factory-bootstrap-445 .open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.factory-bootstrap-445 .btn-warning.active,.factory-bootstrap-445 .btn-warning:active,.factory-bootstrap-445 .open .dropdown-toggle.btn-warning{background-image:none}.factory-bootstrap-445 .btn-warning.disabled,.factory-bootstrap-445 .btn-warning.disabled.active,.factory-bootstrap-445 .btn-warning.disabled:active,.factory-bootstrap-445 .btn-warning.disabled:focus,.factory-bootstrap-445 .btn-warning.disabled:hover,.factory-bootstrap-445 .btn-warning[disabled],.factory-bootstrap-445 .btn-warning[disabled].active,.factory-bootstrap-445 .btn-warning[disabled]:active,.factory-bootstrap-445 .btn-warning[disabled]:focus,.factory-bootstrap-445 .btn-warning[disabled]:hover,.factory-bootstrap-445 fieldset[disabled] .btn-warning,.factory-bootstrap-445 fieldset[disabled] .btn-warning.active,.factory-bootstrap-445 fieldset[disabled] .btn-warning:active,.factory-bootstrap-445 fieldset[disabled] .btn-warning:focus,.factory-bootstrap-445 fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.factory-bootstrap-445 .btn-warning .badge{color:#f0ad4e;background-color:#fff}.factory-bootstrap-445 .btn-success{color:#fff;background-color:#5cb85c}.factory-bootstrap-445 .btn-success.active,.factory-bootstrap-445 .btn-success:active,.factory-bootstrap-445 .btn-success:focus,.factory-bootstrap-445 .btn-success:hover,.factory-bootstrap-445 .open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.factory-bootstrap-445 .btn-success.active,.factory-bootstrap-445 .btn-success:active,.factory-bootstrap-445 .open .dropdown-toggle.btn-success{background-image:none}.factory-bootstrap-445 .btn-success.disabled,.factory-bootstrap-445 .btn-success.disabled.active,.factory-bootstrap-445 .btn-success.disabled:active,.factory-bootstrap-445 .btn-success.disabled:focus,.factory-bootstrap-445 .btn-success.disabled:hover,.factory-bootstrap-445 .btn-success[disabled],.factory-bootstrap-445 .btn-success[disabled].active,.factory-bootstrap-445 .btn-success[disabled]:active,.factory-bootstrap-445 .btn-success[disabled]:focus,.factory-bootstrap-445 .btn-success[disabled]:hover,.factory-bootstrap-445 fieldset[disabled] .btn-success,.factory-bootstrap-445 fieldset[disabled] .btn-success.active,.factory-bootstrap-445 fieldset[disabled] .btn-success:active,.factory-bootstrap-445 fieldset[disabled] .btn-success:focus,.factory-bootstrap-445 fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.factory-bootstrap-445 .btn-success .badge{color:#5cb85c;background-color:#fff}.factory-bootstrap-445 .btn-info{color:#fff;background-color:#5bc0de}.factory-bootstrap-445 .btn-info.active,.factory-bootstrap-445 .btn-info:active,.factory-bootstrap-445 .btn-info:focus,.factory-bootstrap-445 .btn-info:hover,.factory-bootstrap-445 .open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.factory-bootstrap-445 .btn-info.active,.factory-bootstrap-445 .btn-info:active,.factory-bootstrap-445 .open .dropdown-toggle.btn-info{background-image:none}.factory-bootstrap-445 .btn-info.disabled,.factory-bootstrap-445 .btn-info.disabled.active,.factory-bootstrap-445 .btn-info.disabled:active,.factory-bootstrap-445 .btn-info.disabled:focus,.factory-bootstrap-445 .btn-info.disabled:hover,.factory-bootstrap-445 .btn-info[disabled],.factory-bootstrap-445 .btn-info[disabled].active,.factory-bootstrap-445 .btn-info[disabled]:active,.factory-bootstrap-445 .btn-info[disabled]:focus,.factory-bootstrap-445 .btn-info[disabled]:hover,.factory-bootstrap-445 fieldset[disabled] .btn-info,.factory-bootstrap-445 fieldset[disabled] .btn-info.active,.factory-bootstrap-445 fieldset[disabled] .btn-info:active,.factory-bootstrap-445 fieldset[disabled] .btn-info:focus,.factory-bootstrap-445 fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.factory-bootstrap-445 .btn-info .badge{color:#5bc0de;background-color:#fff}.factory-bootstrap-445 .btn-link{font-weight:400;color:#428bca;cursor:pointer;border-radius:0}.factory-bootstrap-445 .btn-link,.factory-bootstrap-445 .btn-link:active,.factory-bootstrap-445 .btn-link[disabled],.factory-bootstrap-445 fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-445 .btn-link,.factory-bootstrap-445 .btn-link:active,.factory-bootstrap-445 .btn-link:focus,.factory-bootstrap-445 .btn-link:hover{border-color:transparent}.factory-bootstrap-445 .btn-link:focus,.factory-bootstrap-445 .btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.factory-bootstrap-445 .btn-link[disabled]:focus,.factory-bootstrap-445 .btn-link[disabled]:hover,.factory-bootstrap-445 fieldset[disabled] .btn-link:focus,.factory-bootstrap-445 fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.factory-bootstrap-445 .btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-445 .btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-445 .btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-445 .btn-block{display:block;width:100%;padding-right:0;padding-left:0}.factory-bootstrap-445 .btn-block+.btn-block{margin-top:5px}.factory-bootstrap-445 input[type=button].btn-block,.factory-bootstrap-445 input[type=reset].btn-block,.factory-bootstrap-445 input[type=submit].btn-block{width:100%}.factory-bootstrap-445 .fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.factory-bootstrap-445 .fade.in{opacity:1}.factory-bootstrap-445 .collapse{display:none}.factory-bootstrap-445 .collapse.in{display:block}.factory-bootstrap-445 .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons-halflingsregular) format('svg')}.factory-bootstrap-445 .glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:400;line-height:1;-moz-osx-font-smoothing:grayscale}.factory-bootstrap-445 .glyphicon:empty{width:1em}.factory-bootstrap-445 .glyphicon-asterisk:before{content:"\2a"}.factory-bootstrap-445 .glyphicon-plus:before{content:"\2b"}.factory-bootstrap-445 .glyphicon-euro:before{content:"\20ac"}.factory-bootstrap-445 .glyphicon-minus:before{content:"\2212"}.factory-bootstrap-445 .glyphicon-cloud:before{content:"\2601"}.factory-bootstrap-445 .glyphicon-envelope:before{content:"\2709"}.factory-bootstrap-445 .glyphicon-pencil:before{content:"\270f"}.factory-bootstrap-445 .glyphicon-glass:before{content:"\e001"}.factory-bootstrap-445 .glyphicon-music:before{content:"\e002"}.factory-bootstrap-445 .glyphicon-search:before{content:"\e003"}.factory-bootstrap-445 .glyphicon-heart:before{content:"\e005"}.factory-bootstrap-445 .glyphicon-star:before{content:"\e006"}.factory-bootstrap-445 .glyphicon-star-empty:before{content:"\e007"}.factory-bootstrap-445 .glyphicon-user:before{content:"\e008"}.factory-bootstrap-445 .glyphicon-film:before{content:"\e009"}.factory-bootstrap-445 .glyphicon-th-large:before{content:"\e010"}.factory-bootstrap-445 .glyphicon-th:before{content:"\e011"}.factory-bootstrap-445 .glyphicon-th-list:before{content:"\e012"}.factory-bootstrap-445 .glyphicon-ok:before{content:"\e013"}.factory-bootstrap-445 .glyphicon-remove:before{content:"\e014"}.factory-bootstrap-445 .glyphicon-zoom-in:before{content:"\e015"}.factory-bootstrap-445 .glyphicon-zoom-out:before{content:"\e016"}.factory-bootstrap-445 .glyphicon-off:before{content:"\e017"}.factory-bootstrap-445 .glyphicon-signal:before{content:"\e018"}.factory-bootstrap-445 .glyphicon-cog:before{content:"\e019"}.factory-bootstrap-445 .glyphicon-trash:before{content:"\e020"}.factory-bootstrap-445 .glyphicon-home:before{content:"\e021"}.factory-bootstrap-445 .glyphicon-file:before{content:"\e022"}.factory-bootstrap-445 .glyphicon-time:before{content:"\e023"}.factory-bootstrap-445 .glyphicon-road:before{content:"\e024"}.factory-bootstrap-445 .glyphicon-download-alt:before{content:"\e025"}.factory-bootstrap-445 .glyphicon-download:before{content:"\e026"}.factory-bootstrap-445 .glyphicon-upload:before{content:"\e027"}.factory-bootstrap-445 .glyphicon-inbox:before{content:"\e028"}.factory-bootstrap-445 .glyphicon-play-circle:before{content:"\e029"}.factory-bootstrap-445 .glyphicon-repeat:before{content:"\e030"}.factory-bootstrap-445 .glyphicon-refresh:before{content:"\e031"}.factory-bootstrap-445 .glyphicon-list-alt:before{content:"\e032"}.factory-bootstrap-445 .glyphicon-lock:before{content:"\e033"}.factory-bootstrap-445 .glyphicon-flag:before{content:"\e034"}.factory-bootstrap-445 .glyphicon-headphones:before{content:"\e035"}.factory-bootstrap-445 .glyphicon-volume-off:before{content:"\e036"}.factory-bootstrap-445 .glyphicon-volume-down:before{content:"\e037"}.factory-bootstrap-445 .glyphicon-volume-up:before{content:"\e038"}.factory-bootstrap-445 .glyphicon-qrcode:before{content:"\e039"}.factory-bootstrap-445 .glyphicon-barcode:before{content:"\e040"}.factory-bootstrap-445 .glyphicon-tag:before{content:"\e041"}.factory-bootstrap-445 .glyphicon-tags:before{content:"\e042"}.factory-bootstrap-445 .glyphicon-book:before{content:"\e043"}.factory-bootstrap-445 .glyphicon-bookmark:before{content:"\e044"}.factory-bootstrap-445 .glyphicon-print:before{content:"\e045"}.factory-bootstrap-445 .glyphicon-camera:before{content:"\e046"}.factory-bootstrap-445 .glyphicon-font:before{content:"\e047"}.factory-bootstrap-445 .glyphicon-bold:before{content:"\e048"}.factory-bootstrap-445 .glyphicon-italic:before{content:"\e049"}.factory-bootstrap-445 .glyphicon-text-height:before{content:"\e050"}.factory-bootstrap-445 .glyphicon-text-width:before{content:"\e051"}.factory-bootstrap-445 .glyphicon-align-left:before{content:"\e052"}.factory-bootstrap-445 .glyphicon-align-center:before{content:"\e053"}.factory-bootstrap-445 .glyphicon-align-right:before{content:"\e054"}.factory-bootstrap-445 .glyphicon-align-justify:before{content:"\e055"}.factory-bootstrap-445 .glyphicon-list:before{content:"\e056"}.factory-bootstrap-445 .glyphicon-indent-left:before{content:"\e057"}.factory-bootstrap-445 .glyphicon-indent-right:before{content:"\e058"}.factory-bootstrap-445 .glyphicon-facetime-video:before{content:"\e059"}.factory-bootstrap-445 .glyphicon-picture:before{content:"\e060"}.factory-bootstrap-445 .glyphicon-map-marker:before{content:"\e062"}.factory-bootstrap-445 .glyphicon-adjust:before{content:"\e063"}.factory-bootstrap-445 .glyphicon-tint:before{content:"\e064"}.factory-bootstrap-445 .glyphicon-edit:before{content:"\e065"}.factory-bootstrap-445 .glyphicon-share:before{content:"\e066"}.factory-bootstrap-445 .glyphicon-check:before{content:"\e067"}.factory-bootstrap-445 .glyphicon-move:before{content:"\e068"}.factory-bootstrap-445 .glyphicon-step-backward:before{content:"\e069"}.factory-bootstrap-445 .glyphicon-fast-backward:before{content:"\e070"}.factory-bootstrap-445 .glyphicon-backward:before{content:"\e071"}.factory-bootstrap-445 .glyphicon-play:before{content:"\e072"}.factory-bootstrap-445 .glyphicon-pause:before{content:"\e073"}.factory-bootstrap-445 .glyphicon-stop:before{content:"\e074"}.factory-bootstrap-445 .glyphicon-forward:before{content:"\e075"}.factory-bootstrap-445 .glyphicon-fast-forward:before{content:"\e076"}.factory-bootstrap-445 .glyphicon-step-forward:before{content:"\e077"}.factory-bootstrap-445 .glyphicon-eject:before{content:"\e078"}.factory-bootstrap-445 .glyphicon-chevron-left:before{content:"\e079"}.factory-bootstrap-445 .glyphicon-chevron-right:before{content:"\e080"}.factory-bootstrap-445 .glyphicon-plus-sign:before{content:"\e081"}.factory-bootstrap-445 .glyphicon-minus-sign:before{content:"\e082"}.factory-bootstrap-445 .glyphicon-remove-sign:before{content:"\e083"}.factory-bootstrap-445 .glyphicon-ok-sign:before{content:"\e084"}.factory-bootstrap-445 .glyphicon-question-sign:before{content:"\e085"}.factory-bootstrap-445 .glyphicon-info-sign:before{content:"\e086"}.factory-bootstrap-445 .glyphicon-screenshot:before{content:"\e087"}.factory-bootstrap-445 .glyphicon-remove-circle:before{content:"\e088"}.factory-bootstrap-445 .glyphicon-ok-circle:before{content:"\e089"}.factory-bootstrap-445 .glyphicon-ban-circle:before{content:"\e090"}.factory-bootstrap-445 .glyphicon-arrow-left:before{content:"\e091"}.factory-bootstrap-445 .glyphicon-arrow-right:before{content:"\e092"}.factory-bootstrap-445 .glyphicon-arrow-up:before{content:"\e093"}.factory-bootstrap-445 .glyphicon-arrow-down:before{content:"\e094"}.factory-bootstrap-445 .glyphicon-share-alt:before{content:"\e095"}.factory-bootstrap-445 .glyphicon-resize-full:before{content:"\e096"}.factory-bootstrap-445 .glyphicon-resize-small:before{content:"\e097"}.factory-bootstrap-445 .glyphicon-exclamation-sign:before{content:"\e101"}.factory-bootstrap-445 .glyphicon-gift:before{content:"\e102"}.factory-bootstrap-445 .glyphicon-leaf:before{content:"\e103"}.factory-bootstrap-445 .glyphicon-fire:before{content:"\e104"}.factory-bootstrap-445 .glyphicon-eye-open:before{content:"\e105"}.factory-bootstrap-445 .glyphicon-eye-close:before{content:"\e106"}.factory-bootstrap-445 .glyphicon-warning-sign:before{content:"\e107"}.factory-bootstrap-445 .glyphicon-plane:before{content:"\e108"}.factory-bootstrap-445 .glyphicon-calendar:before{content:"\e109"}.factory-bootstrap-445 .glyphicon-random:before{content:"\e110"}.factory-bootstrap-445 .glyphicon-comment:before{content:"\e111"}.factory-bootstrap-445 .glyphicon-magnet:before{content:"\e112"}.factory-bootstrap-445 .glyphicon-chevron-up:before{content:"\e113"}.factory-bootstrap-445 .glyphicon-chevron-down:before{content:"\e114"}.factory-bootstrap-445 .glyphicon-retweet:before{content:"\e115"}.factory-bootstrap-445 .glyphicon-shopping-cart:before{content:"\e116"}.factory-bootstrap-445 .glyphicon-folder-close:before{content:"\e117"}.factory-bootstrap-445 .glyphicon-folder-open:before{content:"\e118"}.factory-bootstrap-445 .glyphicon-resize-vertical:before{content:"\e119"}.factory-bootstrap-445 .glyphicon-resize-horizontal:before{content:"\e120"}.factory-bootstrap-445 .glyphicon-hdd:before{content:"\e121"}.factory-bootstrap-445 .glyphicon-bullhorn:before{content:"\e122"}.factory-bootstrap-445 .glyphicon-bell:before{content:"\e123"}.factory-bootstrap-445 .glyphicon-certificate:before{content:"\e124"}.factory-bootstrap-445 .glyphicon-thumbs-up:before{content:"\e125"}.factory-bootstrap-445 .glyphicon-thumbs-down:before{content:"\e126"}.factory-bootstrap-445 .glyphicon-hand-right:before{content:"\e127"}.factory-bootstrap-445 .glyphicon-hand-left:before{content:"\e128"}.factory-bootstrap-445 .glyphicon-hand-up:before{content:"\e129"}.factory-bootstrap-445 .glyphicon-hand-down:before{content:"\e130"}.factory-bootstrap-445 .glyphicon-circle-arrow-right:before{content:"\e131"}.factory-bootstrap-445 .glyphicon-circle-arrow-left:before{content:"\e132"}.factory-bootstrap-445 .glyphicon-circle-arrow-up:before{content:"\e133"}.factory-bootstrap-445 .glyphicon-circle-arrow-down:before{content:"\e134"}.factory-bootstrap-445 .glyphicon-globe:before{content:"\e135"}.factory-bootstrap-445 .glyphicon-wrench:before{content:"\e136"}.factory-bootstrap-445 .glyphicon-tasks:before{content:"\e137"}.factory-bootstrap-445 .glyphicon-filter:before{content:"\e138"}.factory-bootstrap-445 .glyphicon-briefcase:before{content:"\e139"}.factory-bootstrap-445 .glyphicon-fullscreen:before{content:"\e140"}.factory-bootstrap-445 .glyphicon-dashboard:before{content:"\e141"}.factory-bootstrap-445 .glyphicon-paperclip:before{content:"\e142"}.factory-bootstrap-445 .glyphicon-heart-empty:before{content:"\e143"}.factory-bootstrap-445 .glyphicon-link:before{content:"\e144"}.factory-bootstrap-445 .glyphicon-phone:before{content:"\e145"}.factory-bootstrap-445 .glyphicon-pushpin:before{content:"\e146"}.factory-bootstrap-445 .glyphicon-usd:before{content:"\e148"}.factory-bootstrap-445 .glyphicon-gbp:before{content:"\e149"}.factory-bootstrap-445 .glyphicon-sort:before{content:"\e150"}.factory-bootstrap-445 .glyphicon-sort-by-alphabet:before{content:"\e151"}.factory-bootstrap-445 .glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.factory-bootstrap-445 .glyphicon-sort-by-order:before{content:"\e153"}.factory-bootstrap-445 .glyphicon-sort-by-order-alt:before{content:"\e154"}.factory-bootstrap-445 .glyphicon-sort-by-attributes:before{content:"\e155"}.factory-bootstrap-445 .glyphicon-sort-by-attributes-alt:before{content:"\e156"}.factory-bootstrap-445 .glyphicon-unchecked:before{content:"\e157"}.factory-bootstrap-445 .glyphicon-expand:before{content:"\e158"}.factory-bootstrap-445 .glyphicon-collapse-down:before{content:"\e159"}.factory-bootstrap-445 .glyphicon-collapse-up:before{content:"\e160"}.factory-bootstrap-445 .glyphicon-log-in:before{content:"\e161"}.factory-bootstrap-445 .glyphicon-flash:before{content:"\e162"}.factory-bootstrap-445 .glyphicon-log-out:before{content:"\e163"}.factory-bootstrap-445 .glyphicon-new-window:before{content:"\e164"}.factory-bootstrap-445 .glyphicon-record:before{content:"\e165"}.factory-bootstrap-445 .glyphicon-save:before{content:"\e166"}.factory-bootstrap-445 .glyphicon-open:before{content:"\e167"}.factory-bootstrap-445 .glyphicon-saved:before{content:"\e168"}.factory-bootstrap-445 .glyphicon-import:before{content:"\e169"}.factory-bootstrap-445 .glyphicon-export:before{content:"\e170"}.factory-bootstrap-445 .glyphicon-send:before{content:"\e171"}.factory-bootstrap-445 .glyphicon-floppy-disk:before{content:"\e172"}.factory-bootstrap-445 .glyphicon-floppy-saved:before{content:"\e173"}.factory-bootstrap-445 .glyphicon-floppy-remove:before{content:"\e174"}.factory-bootstrap-445 .glyphicon-floppy-save:before{content:"\e175"}.factory-bootstrap-445 .glyphicon-floppy-open:before{content:"\e176"}.factory-bootstrap-445 .glyphicon-credit-card:before{content:"\e177"}.factory-bootstrap-445 .glyphicon-transfer:before{content:"\e178"}.factory-bootstrap-445 .glyphicon-cutlery:before{content:"\e179"}.factory-bootstrap-445 .glyphicon-header:before{content:"\e180"}.factory-bootstrap-445 .glyphicon-compressed:before{content:"\e181"}.factory-bootstrap-445 .glyphicon-earphone:before{content:"\e182"}.factory-bootstrap-445 .glyphicon-phone-alt:before{content:"\e183"}.factory-bootstrap-445 .glyphicon-tower:before{content:"\e184"}.factory-bootstrap-445 .glyphicon-stats:before{content:"\e185"}.factory-bootstrap-445 .glyphicon-sd-video:before{content:"\e186"}.factory-bootstrap-445 .glyphicon-hd-video:before{content:"\e187"}.factory-bootstrap-445 .glyphicon-subtitles:before{content:"\e188"}.factory-bootstrap-445 .glyphicon-sound-stereo:before{content:"\e189"}.factory-bootstrap-445 .glyphicon-sound-dolby:before{content:"\e190"}.factory-bootstrap-445 .glyphicon-sound-5-1:before{content:"\e191"}.factory-bootstrap-445 .glyphicon-sound-6-1:before{content:"\e192"}.factory-bootstrap-445 .glyphicon-sound-7-1:before{content:"\e193"}.factory-bootstrap-445 .glyphicon-copyright-mark:before{content:"\e194"}.factory-bootstrap-445 .glyphicon-registration-mark:before{content:"\e195"}.factory-bootstrap-445 .glyphicon-cloud-download:before{content:"\e197"}.factory-bootstrap-445 .glyphicon-cloud-upload:before{content:"\e198"}.factory-bootstrap-445 .glyphicon-tree-conifer:before{content:"\e199"}.factory-bootstrap-445 .glyphicon-tree-deciduous:before{content:"\e200"}.factory-bootstrap-445 .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.factory-bootstrap-445 .dropdown{position:relative}.factory-bootstrap-445 .dropdown-toggle:focus{outline:0}.factory-bootstrap-445 .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.factory-bootstrap-445 .dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-445 .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-445 .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.factory-bootstrap-445 .dropdown-menu>li>a:focus,.factory-bootstrap-445 .dropdown-menu>li>a:hover{color:#262626;text-decoration:none}.factory-bootstrap-445 .dropdown-menu>.active>a,.factory-bootstrap-445 .dropdown-menu>.active>a:focus,.factory-bootstrap-445 .dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0}.factory-bootstrap-445 .dropdown-menu>.disabled>a,.factory-bootstrap-445 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-445 .dropdown-menu>.disabled>a:hover{color:#999}.factory-bootstrap-445 .dropdown-menu>.disabled>a:focus,.factory-bootstrap-445 .dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-445 .open>.dropdown-menu{display:block}.factory-bootstrap-445 .open>a{outline:0}.factory-bootstrap-445 .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.factory-bootstrap-445 .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.factory-bootstrap-445 .pull-right>.dropdown-menu{right:0;left:auto}.factory-bootstrap-445 .dropup .caret,.factory-bootstrap-445 .navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.factory-bootstrap-445 .dropup .dropdown-menu,.factory-bootstrap-445 .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}}.factory-bootstrap-445 .btn-group,.factory-bootstrap-445 .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.factory-bootstrap-445 .btn-group-vertical>.btn,.factory-bootstrap-445 .btn-group>.btn{position:relative;float:left}.factory-bootstrap-445 .btn-group-vertical>.btn.active,.factory-bootstrap-445 .btn-group-vertical>.btn:active,.factory-bootstrap-445 .btn-group-vertical>.btn:focus,.factory-bootstrap-445 .btn-group-vertical>.btn:hover,.factory-bootstrap-445 .btn-group>.btn.active,.factory-bootstrap-445 .btn-group>.btn:active,.factory-bootstrap-445 .btn-group>.btn:focus,.factory-bootstrap-445 .btn-group>.btn:hover{z-index:2}.factory-bootstrap-445 .btn-group-vertical>.btn:focus,.factory-bootstrap-445 .btn-group>.btn:focus{outline:0}.factory-bootstrap-445 .btn-group .btn+.btn,.factory-bootstrap-445 .btn-group .btn+.btn-group,.factory-bootstrap-445 .btn-group .btn-group+.btn,.factory-bootstrap-445 .btn-group .btn-group+.btn-group{margin-left:-1px}.factory-bootstrap-445 .btn-toolbar:after,.factory-bootstrap-445 .btn-toolbar:before{display:table;content:" "}.factory-bootstrap-445 .btn-toolbar:after{clear:both}.factory-bootstrap-445 .btn-toolbar .btn-group{float:left}.factory-bootstrap-445 .btn-toolbar>.btn+.btn,.factory-bootstrap-445 .btn-toolbar>.btn+.btn-group,.factory-bootstrap-445 .btn-toolbar>.btn-group+.btn,.factory-bootstrap-445 .btn-toolbar>.btn-group+.btn-group{margin-left:5px}.factory-bootstrap-445 .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.factory-bootstrap-445 .btn-group>.btn:first-child{margin-left:0}.factory-bootstrap-445 .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-445 .btn-group>.btn:last-child:not(:first-child),.factory-bootstrap-445 .btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .btn-group>.btn-group{float:left}.factory-bootstrap-445 .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-445 .btn-group>.btn-group:first-child>.btn:last-child,.factory-bootstrap-445 .btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-445 .btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .btn-group .dropdown-toggle:active,.factory-bootstrap-445 .btn-group.open .dropdown-toggle{outline:0}.factory-bootstrap-445 .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-445 .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-445 .btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-445 .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.factory-bootstrap-445 .btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.factory-bootstrap-445 .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.factory-bootstrap-445 .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-445 .btn-group{border:4px solid #f9f9f9;border-radius:4px}.factory-bootstrap-445 .btn-group .btn.active.value{text-shadow:none;color:#fff;background-color:#33aad5;-webkit-box-shadow:inset 0 1px 1px #0074a2;box-shadow:inset 0 1px 3px #0074a2;border-top:1px solid #0074a2;border-bottom:1px solid #0074a2;border-left:1px solid #0074a2}.factory-bootstrap-445 .btn .caret{margin-left:0}.factory-bootstrap-445 .btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.factory-bootstrap-445 .dropup .btn-lg .caret{border-width:0 5px 5px}.factory-bootstrap-445 .btn-group-vertical>.btn,.factory-bootstrap-445 .btn-group-vertical>.btn-group,.factory-bootstrap-445 .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.factory-bootstrap-445 .btn-group-vertical>.btn-group:after,.factory-bootstrap-445 .btn-group-vertical>.btn-group:before{display:table;content:" "}.factory-bootstrap-445 .btn-group-vertical>.btn-group:after{clear:both}.factory-bootstrap-445 .btn-group-vertical>.btn-group>.btn{float:none}.factory-bootstrap-445 .btn-group-vertical>.btn+.btn,.factory-bootstrap-445 .btn-group-vertical>.btn+.btn-group,.factory-bootstrap-445 .btn-group-vertical>.btn-group+.btn,.factory-bootstrap-445 .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.factory-bootstrap-445 .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-445 .btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-445 .btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:4px;border-top-left-radius:0}.factory-bootstrap-445 .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.factory-bootstrap-445 .btn-group-vertical>.btn-group:first-child>.btn:last-child,.factory-bootstrap-445 .btn-group-vertical>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-445 .btn-group-vertical>.btn-group:last-child>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .btn-group-justified{display:table;width:100%;border-collapse:separate;table-layout:fixed}.factory-bootstrap-445 .btn-group-justified>.btn,.factory-bootstrap-445 .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.factory-bootstrap-445 .btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.factory-bootstrap-445 .input-group{position:relative;display:table;border-collapse:separate}.factory-bootstrap-445 .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.factory-bootstrap-445 .input-group .form-control{width:100%;margin-bottom:0}.factory-bootstrap-445 .input-group-lg>.form-control,.factory-bootstrap-445 .input-group-lg>.input-group-addon,.factory-bootstrap-445 .input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.factory-bootstrap-445 select.input-group-lg>.form-control,.factory-bootstrap-445 select.input-group-lg>.input-group-addon,.factory-bootstrap-445 select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}.factory-bootstrap-445 textarea.input-group-lg>.form-control,.factory-bootstrap-445 textarea.input-group-lg>.input-group-addon,.factory-bootstrap-445 textarea.input-group-lg>.input-group-btn>.btn{height:auto}.factory-bootstrap-445 .input-group-sm>.form-control,.factory-bootstrap-445 .input-group-sm>.input-group-addon,.factory-bootstrap-445 .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.factory-bootstrap-445 select.input-group-sm>.form-control,.factory-bootstrap-445 select.input-group-sm>.input-group-addon,.factory-bootstrap-445 select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}.factory-bootstrap-445 textarea.input-group-sm>.form-control,.factory-bootstrap-445 textarea.input-group-sm>.input-group-addon,.factory-bootstrap-445 textarea.input-group-sm>.input-group-btn>.btn{height:auto}.factory-bootstrap-445 .input-group .form-control,.factory-bootstrap-445 .input-group-addon,.factory-bootstrap-445 .input-group-btn{display:table-cell}.factory-bootstrap-445 .input-group .form-control:not(:first-child):not(:last-child),.factory-bootstrap-445 .input-group-addon:not(:first-child):not(:last-child),.factory-bootstrap-445 .input-group-btn:not(:first-child):not(:last-child){border-radius:0}.factory-bootstrap-445 .input-group-addon,.factory-bootstrap-445 .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.factory-bootstrap-445 .input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.factory-bootstrap-445 .input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.factory-bootstrap-445 .input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.factory-bootstrap-445 .input-group-addon input[type=checkbox],.factory-bootstrap-445 .input-group-addon input[type=radio]{margin-top:0}.factory-bootstrap-445 .input-group .form-control:first-child,.factory-bootstrap-445 .input-group-addon:first-child,.factory-bootstrap-445 .input-group-btn:first-child>.btn,.factory-bootstrap-445 .input-group-btn:first-child>.dropdown-toggle,.factory-bootstrap-445 .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.factory-bootstrap-445 .input-group-addon:first-child{border-right:0}.factory-bootstrap-445 .input-group .form-control:last-child,.factory-bootstrap-445 .input-group-addon:last-child,.factory-bootstrap-445 .input-group-btn:first-child>.btn:not(:first-child),.factory-bootstrap-445 .input-group-btn:last-child>.btn,.factory-bootstrap-445 .input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .input-group-addon:last-child{border-left:0}.factory-bootstrap-445 .input-group-btn{position:relative;white-space:nowrap}.factory-bootstrap-445 .input-group-btn:first-child>.btn{margin-right:-1px}.factory-bootstrap-445 .input-group-btn:last-child>.btn{margin-left:-1px}.factory-bootstrap-445 .input-group-btn>.btn{position:relative}.factory-bootstrap-445 .input-group-btn>.btn+.btn{margin-left:-4px}.factory-bootstrap-445 .input-group-btn>.btn:active,.factory-bootstrap-445 .input-group-btn>.btn:hover{z-index:2}.factory-bootstrap-445 .nav{padding-left:0;margin-bottom:0;list-style:none}.factory-bootstrap-445 .nav:after,.factory-bootstrap-445 .nav:before{display:table;content:" "}.factory-bootstrap-445 .nav:after{clear:both}.factory-bootstrap-445 .nav>li{position:relative;display:block}.factory-bootstrap-445 .nav>li>a{position:relative;display:block;padding:10px 15px}.factory-bootstrap-445 .nav>li>a:focus,.factory-bootstrap-445 .nav>li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-445 .nav>li.disabled>a{color:#999}.factory-bootstrap-445 .nav>li.disabled>a:focus,.factory-bootstrap-445 .nav>li.disabled>a:hover{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}.factory-bootstrap-445 .nav .open>a,.factory-bootstrap-445 .nav .open>a:focus,.factory-bootstrap-445 .nav .open>a:hover{background-color:#eee;border-color:#428bca}.factory-bootstrap-445 .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.factory-bootstrap-445 .nav>li>a>img{max-width:none}.factory-bootstrap-445 .nav-tabs{border-bottom:1px solid #ddd}.factory-bootstrap-445 .nav-tabs>li{float:left;margin-bottom:-1px}.factory-bootstrap-445 .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.factory-bootstrap-445 .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.factory-bootstrap-445 .nav-tabs>li.active>a,.factory-bootstrap-445 .nav-tabs>li.active>a:focus,.factory-bootstrap-445 .nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.factory-bootstrap-445 .nav-tabs.nav-justified{width:100%;border-bottom:0}.factory-bootstrap-445 .nav-tabs.nav-justified>li{float:none}.factory-bootstrap-445 .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-445 .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-445 .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-445 .nav-tabs.nav-justified>.active>a,.factory-bootstrap-445 .nav-tabs.nav-justified>.active>a:focus,.factory-bootstrap-445 .nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-445 .nav-pills>li{float:left}.factory-bootstrap-445 .nav-pills>li>a{border-radius:4px}.factory-bootstrap-445 .nav-pills>li+li{margin-left:2px}.factory-bootstrap-445 .nav-pills>li.active>a,.factory-bootstrap-445 .nav-pills>li.active>a:focus,.factory-bootstrap-445 .nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.factory-bootstrap-445 .nav-stacked>li{float:none}.factory-bootstrap-445 .nav-stacked>li+li{margin-top:2px;margin-left:0}.factory-bootstrap-445 .nav-justified{width:100%}.factory-bootstrap-445 .nav-justified>li{float:none}.factory-bootstrap-445 .nav-justified>li>a{margin-bottom:5px;text-align:center}.factory-bootstrap-445 .nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.factory-bootstrap-445 .nav-tabs-justified{border-bottom:0}.factory-bootstrap-445 .nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.factory-bootstrap-445 .nav-tabs-justified>.active>a,.factory-bootstrap-445 .nav-tabs-justified>.active>a:focus,.factory-bootstrap-445 .nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.factory-bootstrap-445 .tab-content>.tab-pane{display:none}.factory-bootstrap-445 .tab-content>.active{display:block}.factory-bootstrap-445 .nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.factory-bootstrap-445 .navbar:after,.factory-bootstrap-445 .navbar:before{display:table;content:" "}.factory-bootstrap-445 .navbar:after{clear:both}@media (min-width:768px){.navbar{border-radius:4px}}.factory-bootstrap-445 .navbar-header:after,.factory-bootstrap-445 .navbar-header:before{display:table;content:" "}.factory-bootstrap-445 .navbar-header:after{clear:both}@media (min-width:768px){.navbar-header{float:left}}.factory-bootstrap-445 .navbar-collapse{max-height:340px;padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.factory-bootstrap-445 .navbar-collapse:after,.factory-bootstrap-445 .navbar-collapse:before{display:table;content:" "}.factory-bootstrap-445 .navbar-collapse:after{clear:both}.factory-bootstrap-445 .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.factory-bootstrap-445 .container>.navbar-collapse,.factory-bootstrap-445 .container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.factory-bootstrap-445 .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.factory-bootstrap-445 .navbar-fixed-bottom,.factory-bootstrap-445 .navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.factory-bootstrap-445 .navbar-fixed-top{top:0;border-width:0 0 1px}.factory-bootstrap-445 .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.factory-bootstrap-445 .navbar-brand{float:left;padding:15px;font-size:18px;line-height:20px}.factory-bootstrap-445 .navbar-brand:focus,.factory-bootstrap-445 .navbar-brand:hover{text-decoration:none}@media (min-width:768px){.navbar>.container .navbar-brand{margin-left:-15px}}.factory-bootstrap-445 .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.factory-bootstrap-445 .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.factory-bootstrap-445 .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.factory-bootstrap-445 .navbar-nav{margin:7.5px -15px}.factory-bootstrap-445 .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:-15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.factory-bootstrap-445 .navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block}.navbar-form select.form-control{width:auto}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;padding-left:0;margin-top:0;margin-bottom:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:-15px}}.factory-bootstrap-445 .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.factory-bootstrap-445 .navbar-nav.pull-right>li>.dropdown-menu,.factory-bootstrap-445 .navbar-nav>li>.dropdown-menu.pull-right{right:0;left:auto}.factory-bootstrap-445 .navbar-btn{margin-top:8px;margin-bottom:8px}.factory-bootstrap-445 .navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.factory-bootstrap-445 .navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.factory-bootstrap-445 .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}.navbar-text.navbar-right:last-child{margin-right:0}}.factory-bootstrap-445 .navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.factory-bootstrap-445 .navbar-default .navbar-brand{color:#777}.factory-bootstrap-445 .navbar-default .navbar-brand:focus,.factory-bootstrap-445 .navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.factory-bootstrap-445 .navbar-default .navbar-nav>li>a,.factory-bootstrap-445 .navbar-default .navbar-text{color:#777}.factory-bootstrap-445 .navbar-default .navbar-nav>li>a:focus,.factory-bootstrap-445 .navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.factory-bootstrap-445 .navbar-default .navbar-nav>.active>a,.factory-bootstrap-445 .navbar-default .navbar-nav>.active>a:focus,.factory-bootstrap-445 .navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.factory-bootstrap-445 .navbar-default .navbar-nav>.disabled>a,.factory-bootstrap-445 .navbar-default .navbar-nav>.disabled>a:focus,.factory-bootstrap-445 .navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.factory-bootstrap-445 .navbar-default .navbar-toggle{border-color:#ddd}.factory-bootstrap-445 .navbar-default .navbar-toggle:focus,.factory-bootstrap-445 .navbar-default .navbar-toggle:hover{background-color:#ddd}.factory-bootstrap-445 .navbar-default .navbar-toggle .icon-bar{background-color:#ccc}.factory-bootstrap-445 .navbar-default .navbar-collapse,.factory-bootstrap-445 .navbar-default .navbar-form{border-color:#e7e7e7}.factory-bootstrap-445 .navbar-default .navbar-nav>.open>a,.factory-bootstrap-445 .navbar-default .navbar-nav>.open>a:focus,.factory-bootstrap-445 .navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.factory-bootstrap-445 .navbar-default .navbar-link{color:#777}.factory-bootstrap-445 .navbar-default .navbar-link:hover{color:#333}.factory-bootstrap-445 .navbar-inverse{background-color:#222;border-color:#080808}.factory-bootstrap-445 .navbar-inverse .navbar-brand{color:#999}.factory-bootstrap-445 .navbar-inverse .navbar-brand:focus,.factory-bootstrap-445 .navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.factory-bootstrap-445 .navbar-inverse .navbar-nav>li>a,.factory-bootstrap-445 .navbar-inverse .navbar-text{color:#999}.factory-bootstrap-445 .navbar-inverse .navbar-nav>li>a:focus,.factory-bootstrap-445 .navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.factory-bootstrap-445 .navbar-inverse .navbar-nav>.active>a,.factory-bootstrap-445 .navbar-inverse .navbar-nav>.active>a:focus,.factory-bootstrap-445 .navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.factory-bootstrap-445 .navbar-inverse .navbar-nav>.disabled>a,.factory-bootstrap-445 .navbar-inverse .navbar-nav>.disabled>a:focus,.factory-bootstrap-445 .navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.factory-bootstrap-445 .navbar-inverse .navbar-toggle{border-color:#333}.factory-bootstrap-445 .navbar-inverse .navbar-toggle:focus,.factory-bootstrap-445 .navbar-inverse .navbar-toggle:hover{background-color:#333}.factory-bootstrap-445 .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.factory-bootstrap-445 .navbar-inverse .navbar-collapse,.factory-bootstrap-445 .navbar-inverse .navbar-form{border-color:#101010}.factory-bootstrap-445 .navbar-inverse .navbar-nav>.open>a,.factory-bootstrap-445 .navbar-inverse .navbar-nav>.open>a:focus,.factory-bootstrap-445 .navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.factory-bootstrap-445 .navbar-inverse .navbar-link{color:#999}.factory-bootstrap-445 .navbar-inverse .navbar-link:hover{color:#fff}.factory-bootstrap-445 .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.factory-bootstrap-445 .breadcrumb>li{display:inline-block}.factory-bootstrap-445 .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.factory-bootstrap-445 .breadcrumb>.active{color:#999}.factory-bootstrap-445 .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.factory-bootstrap-445 .pagination>li{display:inline}.factory-bootstrap-445 .pagination>li>a,.factory-bootstrap-445 .pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.428571429;text-decoration:none;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-445 .pagination>li:first-child>a,.factory-bootstrap-445 .pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.factory-bootstrap-445 .pagination>li:last-child>a,.factory-bootstrap-445 .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.factory-bootstrap-445 .pagination>li>a:focus,.factory-bootstrap-445 .pagination>li>a:hover,.factory-bootstrap-445 .pagination>li>span:focus,.factory-bootstrap-445 .pagination>li>span:hover{background-color:#eee}.factory-bootstrap-445 .pagination>.active>a,.factory-bootstrap-445 .pagination>.active>a:focus,.factory-bootstrap-445 .pagination>.active>a:hover,.factory-bootstrap-445 .pagination>.active>span,.factory-bootstrap-445 .pagination>.active>span:focus,.factory-bootstrap-445 .pagination>.active>span:hover{z-index:2;color:#fff;cursor:default;background-color:#1e8cbe;border-color:#0074a2}.factory-bootstrap-445 .pagination>.disabled>a,.factory-bootstrap-445 .pagination>.disabled>a:focus,.factory-bootstrap-445 .pagination>.disabled>a:hover,.factory-bootstrap-445 .pagination>.disabled>span,.factory-bootstrap-445 .pagination>.disabled>span:focus,.factory-bootstrap-445 .pagination>.disabled>span:hover{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}.factory-bootstrap-445 .pagination-lg>li>a,.factory-bootstrap-445 .pagination-lg>li>span{padding:10px 16px;font-size:18px}.factory-bootstrap-445 .pagination-lg>li:first-child>a,.factory-bootstrap-445 .pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.factory-bootstrap-445 .pagination-lg>li:last-child>a,.factory-bootstrap-445 .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.factory-bootstrap-445 .pagination-sm>li>a,.factory-bootstrap-445 .pagination-sm>li>span{padding:5px 10px;font-size:12px}.factory-bootstrap-445 .pagination-sm>li:first-child>a,.factory-bootstrap-445 .pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.factory-bootstrap-445 .pagination-sm>li:last-child>a,.factory-bootstrap-445 .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.factory-bootstrap-445 .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.factory-bootstrap-445 .pager:after,.factory-bootstrap-445 .pager:before{display:table;content:" "}.factory-bootstrap-445 .pager:after{clear:both}.factory-bootstrap-445 .pager li{display:inline}.factory-bootstrap-445 .pager li>a,.factory-bootstrap-445 .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.factory-bootstrap-445 .pager li>a:focus,.factory-bootstrap-445 .pager li>a:hover{text-decoration:none;background-color:#eee}.factory-bootstrap-445 .pager .next>a,.factory-bootstrap-445 .pager .next>span{float:right}.factory-bootstrap-445 .pager .previous>a,.factory-bootstrap-445 .pager .previous>span{float:left}.factory-bootstrap-445 .pager .disabled>a,.factory-bootstrap-445 .pager .disabled>a:focus,.factory-bootstrap-445 .pager .disabled>a:hover,.factory-bootstrap-445 .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}.factory-bootstrap-445 .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.factory-bootstrap-445 .label[href]:focus,.factory-bootstrap-445 .label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-445 .label:empty{display:none}.factory-bootstrap-445 .btn .label{position:relative;top:-1px}.factory-bootstrap-445 .label-default{background-color:#999}.factory-bootstrap-445 .label-default[href]:focus,.factory-bootstrap-445 .label-default[href]:hover{background-color:gray}.factory-bootstrap-445 .label-primary{background-color:#428bca}.factory-bootstrap-445 .label-primary[href]:focus,.factory-bootstrap-445 .label-primary[href]:hover{background-color:#3071a9}.factory-bootstrap-445 .label-success{background-color:#5cb85c}.factory-bootstrap-445 .label-success[href]:focus,.factory-bootstrap-445 .label-success[href]:hover{background-color:#449d44}.factory-bootstrap-445 .label-info{background-color:#5bc0de}.factory-bootstrap-445 .label-info[href]:focus,.factory-bootstrap-445 .label-info[href]:hover{background-color:#31b0d5}.factory-bootstrap-445 .label-warning{background-color:#f0ad4e}.factory-bootstrap-445 .label-warning[href]:focus,.factory-bootstrap-445 .label-warning[href]:hover{background-color:#ec971f}.factory-bootstrap-445 .label-danger{background-color:#d9534f}.factory-bootstrap-445 .label-danger[href]:focus,.factory-bootstrap-445 .label-danger[href]:hover{background-color:#c9302c}.factory-bootstrap-445 .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#999;border-radius:10px}.factory-bootstrap-445 .badge:empty{display:none}.factory-bootstrap-445 .btn .badge{position:relative;top:-1px}.factory-bootstrap-445 a.badge:focus,.factory-bootstrap-445 a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.factory-bootstrap-445 .nav-pills>.active>a>.badge,.factory-bootstrap-445 a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.factory-bootstrap-445 .nav-pills>li>a>.badge{margin-left:3px}.factory-bootstrap-445 .jumbotron{padding:30px;margin-bottom:30px;font-size:21px;font-weight:200;line-height:2.1428571435;color:inherit;background-color:#eee}.factory-bootstrap-445 .jumbotron .h1,.factory-bootstrap-445 .jumbotron h1{line-height:1;color:inherit}.factory-bootstrap-445 .jumbotron p{line-height:1.4}.factory-bootstrap-445 .container .jumbotron{border-radius:6px}.factory-bootstrap-445 .jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.factory-bootstrap-445 .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.factory-bootstrap-445 .thumbnail a>img,.factory-bootstrap-445 .thumbnail>img{display:block;height:auto;max-width:100%;margin-right:auto;margin-left:auto}.factory-bootstrap-445 a.thumbnail.active,.factory-bootstrap-445 a.thumbnail:focus,.factory-bootstrap-445 a.thumbnail:hover{border-color:#428bca}.factory-bootstrap-445 .thumbnail .caption{padding:9px;color:#333}.factory-bootstrap-445 .alert{border:1px solid transparent;border-radius:4px}.factory-bootstrap-445 .alert h4{margin-top:0;color:inherit}.factory-bootstrap-445 .alert .alert-link{font-weight:700}.factory-bootstrap-445 .alert>p,.factory-bootstrap-445 .alert>ul{margin-bottom:0}.factory-bootstrap-445 .alert>p+p{margin-top:5px}.factory-bootstrap-445 .alert-dismissable{padding-right:35px}.factory-bootstrap-445 .alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.factory-bootstrap-445 .alert-info{color:#31708f;background-color:#d9edf7}.factory-bootstrap-445 .alert-info hr{border-top-color:#a6e1ec}.factory-bootstrap-445 .alert-info .alert-link{color:#245269}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.factory-bootstrap-445 .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.factory-bootstrap-445 .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#2ea2cc;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.factory-bootstrap-445 .progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.factory-bootstrap-445 .progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.factory-bootstrap-445 .progress-bar-success{background-color:#5cb85c}.factory-bootstrap-445 .progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-445 .progress-bar-info{background-color:#5bc0de}.factory-bootstrap-445 .progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-445 .progress-bar-warning{background-color:#f0ad4e}.factory-bootstrap-445 .progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-445 .progress-bar-danger{background-color:#d9534f}.factory-bootstrap-445 .progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.factory-bootstrap-445 .media,.factory-bootstrap-445 .media-body{overflow:hidden;zoom:1}.factory-bootstrap-445 .media,.factory-bootstrap-445 .media .media{margin-top:15px}.factory-bootstrap-445 .media:first-child{margin-top:0}.factory-bootstrap-445 .media-object{display:block}.factory-bootstrap-445 .media-heading{margin:0 0 5px}.factory-bootstrap-445 .media>.pull-left{margin-right:10px}.factory-bootstrap-445 .media>.pull-right{margin-left:10px}.factory-bootstrap-445 .media-list{padding-left:0;list-style:none}.factory-bootstrap-445 .list-group{padding-left:0;margin-bottom:20px}.factory-bootstrap-445 .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.factory-bootstrap-445 .list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.factory-bootstrap-445 .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.factory-bootstrap-445 .list-group-item>.badge{float:right}.factory-bootstrap-445 .list-group-item>.badge+.badge{margin-right:5px}.factory-bootstrap-445 a.list-group-item{color:#555}.factory-bootstrap-445 a.list-group-item .list-group-item-heading{color:#333}.factory-bootstrap-445 a.list-group-item:focus,.factory-bootstrap-445 a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}.factory-bootstrap-445 a.list-group-item.active,.factory-bootstrap-445 a.list-group-item.active:focus,.factory-bootstrap-445 a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-445 a.list-group-item.active .list-group-item-heading,.factory-bootstrap-445 a.list-group-item.active:focus .list-group-item-heading,.factory-bootstrap-445 a.list-group-item.active:hover .list-group-item-heading{color:inherit}.factory-bootstrap-445 a.list-group-item.active .list-group-item-text,.factory-bootstrap-445 a.list-group-item.active:focus .list-group-item-text,.factory-bootstrap-445 a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.factory-bootstrap-445 .list-group-item-heading{margin-top:0;margin-bottom:5px}.factory-bootstrap-445 .list-group-item-text{margin-bottom:0;line-height:1.3}.factory-bootstrap-445 .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px}.factory-bootstrap-445 .panel-body{padding:15px}.factory-bootstrap-445 .panel-body:after,.factory-bootstrap-445 .panel-body:before{display:table;content:" "}.factory-bootstrap-445 .panel-body:after{clear:both}.factory-bootstrap-445 .panel>.list-group{margin-bottom:0}.factory-bootstrap-445 .panel>.list-group .list-group-item{border-width:1px 0}.factory-bootstrap-445 .panel>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.factory-bootstrap-445 .panel>.list-group .list-group-item:last-child{border-bottom:0}.factory-bootstrap-445 .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.factory-bootstrap-445 .panel>.table,.factory-bootstrap-445 .panel>.table-responsive>.table{margin-bottom:0}.factory-bootstrap-445 .panel>.panel-body+.table,.factory-bootstrap-445 .panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.factory-bootstrap-445 .panel>.table>tbody:first-child td,.factory-bootstrap-445 .panel>.table>tbody:first-child th{border-top:0}.factory-bootstrap-445 .panel>.table-bordered,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered{border:0}.factory-bootstrap-445 .panel>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-445 .panel>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-445 .panel>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-445 .panel>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-445 .panel>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-445 .panel>.table-bordered>thead>tr>th:first-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.factory-bootstrap-445 .panel>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-445 .panel>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-445 .panel>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-445 .panel>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-445 .panel>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-445 .panel>.table-bordered>thead>tr>th:last-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.factory-bootstrap-445 .panel>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-445 .panel>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-445 .panel>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-445 .panel>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-445 .panel>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-445 .panel>.table-bordered>thead>tr:last-child>th,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.factory-bootstrap-445 .panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.factory-bootstrap-445 .panel>.table-responsive{margin-bottom:0;border:0}.factory-bootstrap-445 .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.factory-bootstrap-445 .panel-heading>.dropdown .dropdown-toggle{color:inherit}.factory-bootstrap-445 .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.factory-bootstrap-445 .panel-title>a{color:inherit}.factory-bootstrap-445 .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.factory-bootstrap-445 .panel-group .panel{margin-bottom:0;overflow:hidden;border-radius:4px}.factory-bootstrap-445 .panel-group .panel+.panel{margin-top:5px}.factory-bootstrap-445 .panel-group .panel-heading{border-bottom:0}.factory-bootstrap-445 .panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.factory-bootstrap-445 .panel-group .panel-footer{border-top:0}.factory-bootstrap-445 .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.factory-bootstrap-445 .panel-default{border-color:#ddd}.factory-bootstrap-445 .panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.factory-bootstrap-445 .panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.factory-bootstrap-445 .panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.factory-bootstrap-445 .panel-primary{border-color:#428bca}.factory-bootstrap-445 .panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.factory-bootstrap-445 .panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.factory-bootstrap-445 .panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.factory-bootstrap-445 .panel-success{border-color:#d6e9c6}.factory-bootstrap-445 .panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.factory-bootstrap-445 .panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.factory-bootstrap-445 .panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.factory-bootstrap-445 .panel-warning{border-color:#faebcc}.factory-bootstrap-445 .panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.factory-bootstrap-445 .panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.factory-bootstrap-445 .panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.factory-bootstrap-445 .panel-danger{border-color:#ebccd1}.factory-bootstrap-445 .panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.factory-bootstrap-445 .panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.factory-bootstrap-445 .panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.factory-bootstrap-445 .panel-info{border-color:#bce8f1}.factory-bootstrap-445 .panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.factory-bootstrap-445 .panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.factory-bootstrap-445 .panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.factory-bootstrap-445 .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px}.factory-bootstrap-445 .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.factory-bootstrap-445 .well-lg{padding:24px;border-radius:6px}.factory-bootstrap-445 .well-sm{padding:9px;border-radius:3px}.factory-bootstrap-445 .close{float:right;font-size:14px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.3;filter:alpha(opacity=30)}.factory-bootstrap-445 .alert .close{position:relative;top:-8px;right:-7px}.factory-bootstrap-445 .close:focus,.factory-bootstrap-445 .close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-445 button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.factory-bootstrap-445 .modal-open{overflow:hidden}.factory-bootstrap-445 .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;display:none;overflow:auto;overflow-y:scroll;width:auto;margin-left:0;background-color:transparent;border:0}.factory-bootstrap-445 .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.factory-bootstrap-445 .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.factory-bootstrap-445 .modal-dialog{position:relative;z-index:1050;width:auto;margin:10px}.factory-bootstrap-445 .modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box}.factory-bootstrap-445 .modal-backdrop,.factory-bootstrap-445-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1030;background-color:#000}.factory-bootstrap-445 .modal-backdrop.fade,.factory-bootstrap-445-modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.factory-bootstrap-445 .modal-backdrop.in,.factory-bootstrap-445-modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-445 .modal-header{min-height:16.428571429px;padding:15px;border-bottom:1px solid #e5e5e5}.factory-bootstrap-445 .modal-header .close{margin-top:-2px}.factory-bootstrap-445 .modal-title{margin:0;line-height:1.428571429}.factory-bootstrap-445 .modal-body{position:relative;padding:20px;max-height:none}.factory-bootstrap-445 .modal-footer{padding:19px 20px 20px;margin-top:15px;text-align:right;border-top:1px solid #e5e5e5}.factory-bootstrap-445 .modal-footer:after,.factory-bootstrap-445 .modal-footer:before{display:table;content:" "}.factory-bootstrap-445 .modal-footer:after{clear:both}.factory-bootstrap-445 .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.factory-bootstrap-445 .modal-footer .btn-group .btn+.btn{margin-left:-1px}.factory-bootstrap-445 .modal-footer .btn-block+.btn-block{margin-left:0}@media screen and (min-width:768px){.factory-bootstrap-445 .modal-dialog{width:600px;margin:30px auto}.factory-bootstrap-445 .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}}.factory-bootstrap-445 .tooltip{position:absolute;z-index:1030;display:block;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0);visibility:visible}.factory-bootstrap-445 .tooltip.in{opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-445 .tooltip.top{padding:5px 0;margin-top:-3px}.factory-bootstrap-445 .tooltip.right{padding:0 5px;margin-left:3px}.factory-bootstrap-445 .tooltip.bottom{padding:5px 0;margin-top:3px}.factory-bootstrap-445 .tooltip.left{padding:0 5px;margin-left:-3px}.factory-bootstrap-445 .tooltip-inner{width:400px;padding:15px 20px;color:#fff;text-align:left;text-decoration:none;background-color:#673ab7;border-radius:3px}.factory-bootstrap-445 .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-445 .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-445 .tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-445 .tooltip.top-right .tooltip-arrow{right:5px;bottom:0;border-top-color:#673ab7;border-width:5px 5px 0}.factory-bootstrap-445 .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#673ab7;border-width:5px 5px 5px 0}.factory-bootstrap-445 .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#673ab7;border-width:5px 0 5px 5px}.factory-bootstrap-445 .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-445 .tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-445 .tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-bottom-color:#673ab7;border-width:0 5px 5px}.factory-bootstrap-445 .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);background-clip:padding-box}.factory-bootstrap-445 .popover.top{margin-top:-10px}.factory-bootstrap-445 .popover.right{margin-left:10px}.factory-bootstrap-445 .popover.bottom{margin-top:10px}.factory-bootstrap-445 .popover.left{margin-left:-10px}.factory-bootstrap-445 .popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.factory-bootstrap-445 .popover-content{padding:9px 14px}.factory-bootstrap-445 .popover .arrow,.factory-bootstrap-445 .popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.factory-bootstrap-445 .popover .arrow{border-width:11px}.factory-bootstrap-445 .popover .arrow:after{border-width:10px;content:""}.factory-bootstrap-445 .popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.factory-bootstrap-445 .popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0;content:" "}.factory-bootstrap-445 .popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.factory-bootstrap-445 .popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0;content:" "}.factory-bootstrap-445 .popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);border-top-width:0}.factory-bootstrap-445 .popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0;content:" "}.factory-bootstrap-445 .popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,.25);border-right-width:0}.factory-bootstrap-445 .popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0;content:" "}.factory-bootstrap-445 .carousel{position:relative}.factory-bootstrap-445 .carousel-inner{position:relative;width:100%;overflow:hidden}.factory-bootstrap-445 .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.factory-bootstrap-445 .carousel-inner>.item>a>img,.factory-bootstrap-445 .carousel-inner>.item>img{display:block;height:auto;max-width:100%;line-height:1}.factory-bootstrap-445 .carousel-inner>.active,.factory-bootstrap-445 .carousel-inner>.next,.factory-bootstrap-445 .carousel-inner>.prev{display:block}.factory-bootstrap-445 .carousel-inner>.active{left:0}.factory-bootstrap-445 .carousel-inner>.next,.factory-bootstrap-445 .carousel-inner>.prev{position:absolute;top:0;width:100%}.factory-bootstrap-445 .carousel-inner>.next{left:100%}.factory-bootstrap-445 .carousel-inner>.prev{left:-100%}.factory-bootstrap-445 .carousel-inner>.next.left,.factory-bootstrap-445 .carousel-inner>.prev.right{left:0}.factory-bootstrap-445 .carousel-inner>.active.left{left:-100%}.factory-bootstrap-445 .carousel-inner>.active.right{left:100%}.factory-bootstrap-445 .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);opacity:.5;filter:alpha(opacity=50)}.factory-bootstrap-445 .carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.factory-bootstrap-445 .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.factory-bootstrap-445 .carousel-control:focus,.factory-bootstrap-445 .carousel-control:hover{color:#fff;text-decoration:none;outline:0;opacity:.9;filter:alpha(opacity=90)}.factory-bootstrap-445 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-445 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-445 .carousel-control .icon-next,.factory-bootstrap-445 .carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.factory-bootstrap-445 .carousel-control .glyphicon-chevron-left,.factory-bootstrap-445 .carousel-control .icon-prev{left:50%}.factory-bootstrap-445 .carousel-control .glyphicon-chevron-right,.factory-bootstrap-445 .carousel-control .icon-next{right:50%}.factory-bootstrap-445 .carousel-control .icon-next,.factory-bootstrap-445 .carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.factory-bootstrap-445 .carousel-control .icon-prev:before{content:'\2039'}.factory-bootstrap-445 .carousel-control .icon-next:before{content:'\203a'}.factory-bootstrap-445 .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.factory-bootstrap-445 .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.factory-bootstrap-445 .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.factory-bootstrap-445 .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.factory-bootstrap-445 .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.factory-bootstrap-445 .clearfix:after,.factory-bootstrap-445 .clearfix:before{display:table;content:" "}.factory-bootstrap-445 .clearfix:after{clear:both}.factory-bootstrap-445 .center-block{display:block;margin-right:auto;margin-left:auto}.factory-bootstrap-445 .pull-right{float:right!important}.factory-bootstrap-445 .pull-left{float:left!important}.factory-bootstrap-445 .hide{display:none!important}.factory-bootstrap-445 .show{display:block!important}.factory-bootstrap-445 .invisible{visibility:hidden}.factory-bootstrap-445 .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.factory-bootstrap-445 .hidden{display:none!important;visibility:hidden!important}.factory-bootstrap-445 .affix{position:fixed}@-ms-viewport{width:device-width}.factory-bootstrap-445 .visible-lg,.factory-bootstrap-445 .visible-md,.factory-bootstrap-445 .visible-sm,.factory-bootstrap-445 .visible-xs,.factory-bootstrap-445 td.visible-lg,.factory-bootstrap-445 td.visible-md,.factory-bootstrap-445 td.visible-sm,.factory-bootstrap-445 td.visible-xs,.factory-bootstrap-445 th.visible-lg,.factory-bootstrap-445 th.visible-md,.factory-bootstrap-445 th.visible-sm,.factory-bootstrap-445 th.visible-xs,.factory-bootstrap-445 tr.visible-lg,.factory-bootstrap-445 tr.visible-md,.factory-bootstrap-445 tr.visible-sm,.factory-bootstrap-445 tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-xs.visible-sm{display:block!important}table.visible-xs.visible-sm{display:table}tr.visible-xs.visible-sm{display:table-row!important}td.visible-xs.visible-sm,th.visible-xs.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-xs.visible-md{display:block!important}table.visible-xs.visible-md{display:table}tr.visible-xs.visible-md{display:table-row!important}td.visible-xs.visible-md,th.visible-xs.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-xs.visible-lg{display:block!important}table.visible-xs.visible-lg{display:table}tr.visible-xs.visible-lg{display:table-row!important}td.visible-xs.visible-lg,th.visible-xs.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-sm.visible-xs{display:block!important}table.visible-sm.visible-xs{display:table}tr.visible-sm.visible-xs{display:table-row!important}td.visible-sm.visible-xs,th.visible-sm.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-sm.visible-md{display:block!important}table.visible-sm.visible-md{display:table}tr.visible-sm.visible-md{display:table-row!important}td.visible-sm.visible-md,th.visible-sm.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-sm.visible-lg{display:block!important}table.visible-sm.visible-lg{display:table}tr.visible-sm.visible-lg{display:table-row!important}td.visible-sm.visible-lg,th.visible-sm.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-md.visible-xs{display:block!important}table.visible-md.visible-xs{display:table}tr.visible-md.visible-xs{display:table-row!important}td.visible-md.visible-xs,th.visible-md.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-md.visible-sm{display:block!important}table.visible-md.visible-sm{display:table}tr.visible-md.visible-sm{display:table-row!important}td.visible-md.visible-sm,th.visible-md.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-md.visible-lg{display:block!important}table.visible-md.visible-lg{display:table}tr.visible-md.visible-lg{display:table-row!important}td.visible-md.visible-lg,th.visible-md.visible-lg{display:table-cell!important}}@media (max-width:767px){.visible-lg.visible-xs{display:block!important}table.visible-lg.visible-xs{display:table}tr.visible-lg.visible-xs{display:table-row!important}td.visible-lg.visible-xs,th.visible-lg.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-lg.visible-sm{display:block!important}table.visible-lg.visible-sm{display:table}tr.visible-lg.visible-sm{display:table-row!important}td.visible-lg.visible-sm,th.visible-lg.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-lg.visible-md{display:block!important}table.visible-lg.visible-md{display:table}tr.visible-lg.visible-md{display:table-row!important}td.visible-lg.visible-md,th.visible-lg.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}.factory-bootstrap-445 .hidden-xs{display:block!important}.factory-bootstrap-445 table.hidden-xs{display:table}.factory-bootstrap-445 tr.hidden-xs{display:table-row!important}.factory-bootstrap-445 td.hidden-xs,.factory-bootstrap-445 th.hidden-xs{display:table-cell!important}@media (max-width:767px){.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-xs.hidden-sm,td.hidden-xs.hidden-sm,th.hidden-xs.hidden-sm,tr.hidden-xs.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-xs.hidden-md,td.hidden-xs.hidden-md,th.hidden-xs.hidden-md,tr.hidden-xs.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-xs.hidden-lg,td.hidden-xs.hidden-lg,th.hidden-xs.hidden-lg,tr.hidden-xs.hidden-lg{display:none!important}}.factory-bootstrap-445 .hidden-sm{display:block!important}.factory-bootstrap-445 table.hidden-sm{display:table}.factory-bootstrap-445 tr.hidden-sm{display:table-row!important}.factory-bootstrap-445 td.hidden-sm,.factory-bootstrap-445 th.hidden-sm{display:table-cell!important}@media (max-width:767px){.hidden-sm.hidden-xs,td.hidden-sm.hidden-xs,th.hidden-sm.hidden-xs,tr.hidden-sm.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-sm.hidden-md,td.hidden-sm.hidden-md,th.hidden-sm.hidden-md,tr.hidden-sm.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-sm.hidden-lg,td.hidden-sm.hidden-lg,th.hidden-sm.hidden-lg,tr.hidden-sm.hidden-lg{display:none!important}}.factory-bootstrap-445 .hidden-md{display:block!important}.factory-bootstrap-445 table.hidden-md{display:table}.factory-bootstrap-445 tr.hidden-md{display:table-row!important}.factory-bootstrap-445 td.hidden-md,.factory-bootstrap-445 th.hidden-md{display:table-cell!important}@media (max-width:767px){.hidden-md.hidden-xs,td.hidden-md.hidden-xs,th.hidden-md.hidden-xs,tr.hidden-md.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-md.hidden-sm,td.hidden-md.hidden-sm,th.hidden-md.hidden-sm,tr.hidden-md.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-md.hidden-lg,td.hidden-md.hidden-lg,th.hidden-md.hidden-lg,tr.hidden-md.hidden-lg{display:none!important}}.factory-bootstrap-445 .hidden-lg{display:block!important}.factory-bootstrap-445 table.hidden-lg{display:table}.factory-bootstrap-445 tr.hidden-lg{display:table-row!important}.factory-bootstrap-445 td.hidden-lg,.factory-bootstrap-445 th.hidden-lg{display:table-cell!important}@media (max-width:767px){.factory-bootstrap-445 .hidden-lg.hidden-xs,.factory-bootstrap-445 td.hidden-lg.hidden-xs,.factory-bootstrap-445 th.hidden-lg.hidden-xs,.factory-bootstrap-445 tr.hidden-lg.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.factory-bootstrap-445 .hidden-lg.hidden-sm,.factory-bootstrap-445 td.hidden-lg.hidden-sm,.factory-bootstrap-445 th.hidden-lg.hidden-sm,.factory-bootstrap-445 tr.hidden-lg.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.factory-bootstrap-445 .hidden-lg.hidden-md,.factory-bootstrap-445 td.hidden-lg.hidden-md,.factory-bootstrap-445 th.hidden-lg.hidden-md,.factory-bootstrap-445 tr.hidden-lg.hidden-md{display:none!important}}@media (min-width:1200px){.factory-bootstrap-445 .hidden-lg,.factory-bootstrap-445 td.hidden-lg,.factory-bootstrap-445 th.hidden-lg,.factory-bootstrap-445 tr.hidden-lg{display:none!important}}.factory-bootstrap-445 .visible-print,.factory-bootstrap-445 td.visible-print,.factory-bootstrap-445 th.visible-print,.factory-bootstrap-445 tr.visible-print{display:none!important}@media print{.factory-bootstrap-445 .visible-print{display:block!important}.factory-bootstrap-445 table.visible-print{display:table}.factory-bootstrap-445 tr.visible-print{display:table-row!important}.factory-bootstrap-445 td.visible-print,.factory-bootstrap-445 th.visible-print{display:table-cell!important}.factory-bootstrap-445 .hidden-print,.factory-bootstrap-445 td.hidden-print,.factory-bootstrap-445 th.hidden-print,.factory-bootstrap-445 tr.hidden-print{display:none!important}}/*!
|
12 |
* Factory Default Bootstrap Theme
|
13 |
*
|
14 |
* The code is based on Bootstrap v2.1.1
|
22 |
*
|
23 |
* @package factory-bootstrap
|
24 |
* @since 1.0.0
|
25 |
+
*/.factory-bootstrap-445 .btn-danger,.factory-bootstrap-445 .btn-default,.factory-bootstrap-445 .btn-info,.factory-bootstrap-445 .btn-primary,.factory-bootstrap-445 .btn-success,.factory-bootstrap-445 .btn-warning{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.factory-bootstrap-445 .btn-danger.active,.factory-bootstrap-445 .btn-danger:active,.factory-bootstrap-445 .btn-default.active,.factory-bootstrap-445 .btn-default:active,.factory-bootstrap-445 .btn-info.active,.factory-bootstrap-445 .btn-info:active,.factory-bootstrap-445 .btn-primary.active,.factory-bootstrap-445 .btn-primary:active,.factory-bootstrap-445 .btn-success.active,.factory-bootstrap-445 .btn-success:active,.factory-bootstrap-445 .btn-warning.active,.factory-bootstrap-445 .btn-warning:active{-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 1px 1px rgba(0,0,0,.1)}.factory-bootstrap-445 .btn.active,.factory-bootstrap-445 .btn:active{background-image:none}.factory-bootstrap-445 .btn-default{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.factory-bootstrap-445 .btn-default.active,.factory-bootstrap-445 .btn-default:active{background-color:#fff;border-color:#dbdbdb}.factory-bootstrap-445 .btn-gold{font-weight:700;padding:7px 12px;cursor:pointer;line-height:16px;display:inline-block;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px;box-shadow:#e3e3e3 0 1px 1px;-moz-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);-webkit-box-shadow:0 1px 1px rgba(000,000,000,.1),inset 0 1px 1px rgba(255,255,255,.7);text-shadow:1px 1px 0 #ffe8b2;color:#7c5d1b;border:1px solid #d6a437;background:#feeb80}.factory-bootstrap-445 .btn-gold:focus,.factory-bootstrap-445 .btn-gold:hover{background:#fef0a1}.factory-bootstrap-445 .btn-gold.active,.factory-bootstrap-445 .btn-gold:active{background:#fef0a1;-webkit-box-shadow:inset 0 3px 8px 0 #f8ba36;box-shadow:inset 0 3px 8px 0 #f8ba36}.factory-bootstrap-445 .btn-primary{background:#2ea2cc;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.factory-bootstrap-445 .btn-primary:focus,.factory-bootstrap-445 .btn-primary:hover{background:#1e8cbe;border-color:#0074a2;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.factory-bootstrap-445 .btn-primary.active,.factory-bootstrap-445 .btn-primary:active{background-color:#2d6ca2;border-color:#2b669a}.factory-bootstrap-445 .btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);background-repeat:repeat-x;border-color:#3e8f3e;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-445 .btn-success:focus,.factory-bootstrap-445 .btn-success:hover{background-color:#419641;background-position:0 -15px}.factory-bootstrap-445 .btn-success.active,.factory-bootstrap-445 .btn-success:active{background-color:#419641;border-color:#3e8f3e}.factory-bootstrap-445 .btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);background-repeat:repeat-x;border-color:#e38d13;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-445 .btn-warning:focus,.factory-bootstrap-445 .btn-warning:hover{background-color:#eb9316;background-position:0 -15px}.factory-bootstrap-445 .btn-warning.active,.factory-bootstrap-445 .btn-warning:active{background-color:#eb9316;border-color:#e38d13}.factory-bootstrap-445 .btn-danger{color:#fff;background:#d9534f;border-color:#d43f3a}.factory-bootstrap-445 .btn-danger.active,.factory-bootstrap-445 .btn-danger:active,.factory-bootstrap-445 .btn-danger:focus,.factory-bootstrap-445 .btn-danger:hover,.factory-bootstrap-445 .open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.factory-bootstrap-445 .btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);background-repeat:repeat-x;border-color:#28a4c9;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-445 .btn-info:focus,.factory-bootstrap-445 .btn-info:hover{background-color:#2aabd2;background-position:0 -15px}.factory-bootstrap-445 .btn-info.active,.factory-bootstrap-445 .btn-info:active{background-color:#2aabd2;border-color:#28a4c9}.factory-bootstrap-445 .img-thumbnail,.factory-bootstrap-445 .thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-445 .dropdown-menu>li>a:focus,.factory-bootstrap-445 .dropdown-menu>li>a:hover{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-445 .dropdown-menu>.active>a,.factory-bootstrap-445 .dropdown-menu>.active>a:focus,.factory-bootstrap-445 .dropdown-menu>.active>a:hover{background-color:#357ebd;background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-445 .navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);background-repeat:repeat-x;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.factory-bootstrap-445 .navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f3f3f3 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff3f3f3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.factory-bootstrap-445 .navbar-brand,.factory-bootstrap-445 .navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.factory-bootstrap-445 .navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.factory-bootstrap-445 .navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#222 0,#282828 100%);background-image:linear-gradient(to bottom,#222 0,#282828 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff282828', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.factory-bootstrap-445 .navbar-inverse .navbar-brand,.factory-bootstrap-445 .navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.factory-bootstrap-445 .navbar-fixed-bottom,.factory-bootstrap-445 .navbar-fixed-top,.factory-bootstrap-445 .navbar-static-top{border-radius:0}.factory-bootstrap-445 .alert{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-445 .alert .actions{padding-top:10px}.factory-bootstrap-445 .alert-success{color:#3c763d;background-color:#dff0d8;border-bottom:2px solid #c8e5bc}.factory-bootstrap-445 .alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#b9def0 100%);background-repeat:repeat-x;border-color:#9acfea;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0)}.factory-bootstrap-445 .alert{text-shadow:none;box-shadow:none;margin:0;margin-top:10px;margin-bottom:10px;padding:10px}.factory-bootstrap-445 .alert-normal,.factory-bootstrap-445 .alert-warning{background:#fcf8e3;color:#8a6d3b;border:1px solid #b8823b}.factory-bootstrap-445 .alert-danger{background:#cf4944;color:#fff;border-bottom:2px solid #b23e3a}.factory-bootstrap-445 .alert-danger a:not(.btn),.factory-bootstrap-445 .alert-error a:not(.btn){color:#fff}.factory-bootstrap-445 .progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0)}.factory-bootstrap-445 .progress-bar{background-image:-webkit-linear-gradient(top,#428bca 0,#3071a9 100%);background-image:linear-gradient(to bottom,#428bca 0,#3071a9 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3071a9', GradientType=0)}.factory-bootstrap-445 .progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0)}.factory-bootstrap-445 .progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0)}.factory-bootstrap-445 .progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0)}.factory-bootstrap-445 .progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0)}.factory-bootstrap-445 .list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.factory-bootstrap-445 .list-group-item.active,.factory-bootstrap-445 .list-group-item.active:focus,.factory-bootstrap-445 .list-group-item.active:hover{text-shadow:0 -1px 0 #3071a9;background-image:-webkit-linear-gradient(top,#428bca 0,#3278b3 100%);background-image:linear-gradient(to bottom,#428bca 0,#3278b3 100%);background-repeat:repeat-x;border-color:#3278b3;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff3278b3', GradientType=0)}.factory-bootstrap-445 .panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.factory-bootstrap-445 .panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0)}.factory-bootstrap-445 .panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#428bca 0,#357ebd 100%);background-image:linear-gradient(to bottom,#428bca 0,#357ebd 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff428bca', endColorstr='#ff357ebd', GradientType=0)}.factory-bootstrap-445 .panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0)}.factory-bootstrap-445 .panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:linear-gradient(to bottom,#d9edf7 0,#c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0)}.factory-bootstrap-445 .panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0)}.factory-bootstrap-445 .panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0)}.factory-bootstrap-445 .well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);background-repeat:repeat-x;border-color:#dcdcdc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}.factory-bootstrap-445 .factory-after{margin-left:7px;display:inline-block}.factory-bootstrap-445 .factory-hidden{display:none}.factory-bootstrap-445 .factory-ajax-loader{width:25px;height:25px;background:url(../assets/images/loader-sm-tr.gif)}.factory-control-error{background-color:rgba(0,0,0,.8);white-space:normal;z-index:10;font-weight:400;line-height:150%;border-radius:4px;color:#fff;font-size:13px;margin-top:5px;padding:4px 10px 3px;max-width:500px;display:inline-block}.factory-control-error i{margin:0 7px 0 1px}
|
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-445 .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-445 .btn-primary:focus,.factory-bootstrap-445 .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-445 .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-445 .btn-primary:disabled,.factory-bootstrap-445 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-445 .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-445 .pagination>.active>a,.factory-bootstrap-445 .pagination>.active>a:focus,.factory-bootstrap-445 .pagination>.active>a:hover,.factory-bootstrap-445 .pagination>.active>span,.factory-bootstrap-445 .pagination>.active>span:focus,.factory-bootstrap-445 .pagination>.active>span:hover{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-445 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-445 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-445 .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-445 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-445 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-445 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-445 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-445 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-445 .factory-form-group legend+.control-group{margin-top:0}
|
libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-445 .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-445 .btn-primary:focus,.factory-bootstrap-445 .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-445 .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-445 .btn-primary:disabled,.factory-bootstrap-445 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-445 .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-445 .pagination>.active>a,.factory-bootstrap-445 .pagination>.active>a:focus,.factory-bootstrap-445 .pagination>.active>a:hover,.factory-bootstrap-445 .pagination>.active>span,.factory-bootstrap-445 .pagination>.active>span:focus,.factory-bootstrap-445 .pagination>.active>span:hover{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-445 .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-445 .btn-primary:focus,.factory-bootstrap-445 .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-445 .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-445 .btn-primary:disabled,.factory-bootstrap-445 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-445 .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-445 .pagination>.active>a,.factory-bootstrap-445 .pagination>.active>a:focus,.factory-bootstrap-445 .pagination>.active>a:hover,.factory-bootstrap-445 .pagination>.active>span,.factory-bootstrap-445 .pagination>.active>span:focus,.factory-bootstrap-445 .pagination>.active>span:hover{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-445 .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-445 .btn-primary:focus,.factory-bootstrap-445 .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-445 .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-445 .btn-primary:disabled,.factory-bootstrap-445 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-445 .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-445 .pagination>.active>a,.factory-bootstrap-445 .pagination>.active>a:focus,.factory-bootstrap-445 .pagination>.active>a:hover,.factory-bootstrap-445 .pagination>.active>span,.factory-bootstrap-445 .pagination>.active>span:focus,.factory-bootstrap-445 .pagination>.active>span:hover{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-445 .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-445 .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-445 .btn-primary:focus,.factory-bootstrap-445 .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-445 .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-445 .btn-primary:disabled,.factory-bootstrap-445 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-445 .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-445 .pagination>.active>a,.factory-bootstrap-445 .pagination>.active>a:focus,.factory-bootstrap-445 .pagination>.active>a:hover,.factory-bootstrap-445 .pagination>.active>span,.factory-bootstrap-445 .pagination>.active>span:focus,.factory-bootstrap-445 .pagination>.active>span:hover{background-color:#dd823b;border-color:#c36822}
|
libs/factory/bootstrap/assets/css-min/control.checkbox.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
#side-sortables .factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
#side-sortables .factory-bootstrap-445 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-445 .factory-checkbox-disabled button,.factory-bootstrap-445 .factory-checkbox-disabled input{pointer-events:none;cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.factory-bootstrap-445 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-445 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-445 .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-445 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-445 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-445 .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-445 .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-445 .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-445 .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-445 .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-445 .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-445 .factory-buttons-way .factory-on.active{background-color:#dd823b;-webkit-box-shadow:inset 0 1px 2px #c36822;box-shadow:inset 0 1px 2px #c36822;border-top:1px solid #c36822;border-bottom:1px solid #c36822;border-left:1px solid #c36822}
|
libs/factory/bootstrap/assets/css-min/control.dropdown.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-445 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-445 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-445 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-445 .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-445 .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-445 .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-445 .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-445 .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-445 .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-445 .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-445 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-445 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-445 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-445 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
|
libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-445 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-445 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-445 .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-445 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-445 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-445 .factory-mtextbox-add-item{display:block;margin-top:10px}
|
libs/factory/bootstrap/assets/css-min/holder.more-link.min.css
CHANGED
@@ -8,4 +8,4 @@
|
|
8 |
*/
|
9 |
|
10 |
|
11 |
-
.factory-bootstrap-
|
8 |
*/
|
9 |
|
10 |
|
11 |
+
.factory-bootstrap-445 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-445 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-445 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-445 .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-445 .factory-tab .factory-more-link-hide:hover{color:#999}
|
libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=factory-dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}},a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=factory-dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}},a.fn.factoryBootstrap445_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.factoryBootstrap445_dropdown.Constructor=f,a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.checkbox.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=this;this.$element=a(b),this.$result=this.$element.find(".factory-result"),this.$on=this.$element.find(".factory-on"),this.$off=this.$element.find(".factory-off");var d=this.$element.is(".factory-tumbler"),e=this.$element.is(".factory-has-tumbler-hint"),f=this.$element.data("tumbler-function"),g=this.$element.data("tumbler-delay");g||(g=3e3),this.callByPath=function(a,b){for(var c=a.split("."),d=window,e=0;e<c.length;e++)d=d[c[e]];d.apply(d,b)},this.$on.click(function(){return c.$off.removeClass("active"),c.$on.addClass("active"),d?setTimeout(function(){c.$on.removeClass("active"),c.$off.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!0),c.$result.val(1),c.$result.trigger("change")),!1}),this.$off.click(function(){return c.$on.removeClass("active"),c.$off.addClass("active"),d?setTimeout(function(){c.$off.removeClass("active"),c.$on.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!1),c.$result.val(0),c.$result.trigger("change")),!1}),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){(void 0!==window.__factory_checkbox_control_events_off_data||void 0!==window.__factory_checkbox_control_events_on_data)&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.prop("checked"),f=window.__factory_checkbox_control_events_on_data[d],g=window.__factory_checkbox_control_events_off_data[d];if(f||g){var h,i;void 0===window.__factory_checkbox_control_detach_elements&&(window.__factory_checkbox_control_detach_elements={}),h=window.__factory_checkbox_control_detach_elements,i=e?f:g;for(var j in i)if(i.hasOwnProperty(j)){var k,l=i[j];a.isArray(l)||(k=c.hashCode(d+l));var m;switch(j){case"hide":"string"==typeof l&&a(l).hide(0);break;case"show":"string"==typeof l&&a(l).fadeIn(200);break;case"detach":"string"==typeof l&&a(l).each(function(b){h[k]||(h[k]={}),h[k][b]||(h[k][b]={}),h[k][b].recovery_contanier=a(this).parent(),h[k][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(h[k]){for(var n in h[k])h[k].hasOwnProperty(n)&&h[k][n].recovery_contanier&&h[k][n].element&&h[k][n].recovery_contanier.append(h[k][n].element);delete h[k]}break;case"removeClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).removeClass(l[m]);break;case"addClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).addClass(l[m]);break;case"setValue":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&void 0!==l[m]&&null!==l[m]&&a(m).val(l[m])}}}},this.executeEvents(this.$result)};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=this;this.$element=a(b),this.$result=this.$element.find(".factory-result"),this.$on=this.$element.find(".factory-on"),this.$off=this.$element.find(".factory-off");var d=this.$element.is(".factory-tumbler"),e=this.$element.is(".factory-has-tumbler-hint"),f=this.$element.data("tumbler-function"),g=this.$element.data("tumbler-delay");g||(g=3e3),this.callByPath=function(a,b){for(var c=a.split("."),d=window,e=0;e<c.length;e++)d=d[c[e]];d.apply(d,b)},this.$on.click(function(){return c.$off.removeClass("active"),c.$on.addClass("active"),d?setTimeout(function(){c.$on.removeClass("active"),c.$off.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!0),c.$result.val(1),c.$result.trigger("change")),!1}),this.$off.click(function(){return c.$on.removeClass("active"),c.$off.addClass("active"),d?setTimeout(function(){c.$off.removeClass("active"),c.$on.addClass("active");var a=e?c.$element.next():null;f?c.callByPath(f,[c.$element,a]):e&&(c.$element.next().fadeIn(300),setTimeout(function(){c.$element.next().fadeOut(500)},g))},300):(c.$result.prop("checked",!1),c.$result.val(0),c.$result.trigger("change")),!1}),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){(void 0!==window.__factory_checkbox_control_events_off_data||void 0!==window.__factory_checkbox_control_events_on_data)&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.prop("checked"),f=window.__factory_checkbox_control_events_on_data[d],g=window.__factory_checkbox_control_events_off_data[d];if(f||g){var h,i;void 0===window.__factory_checkbox_control_detach_elements&&(window.__factory_checkbox_control_detach_elements={}),h=window.__factory_checkbox_control_detach_elements,i=e?f:g;for(var j in i)if(i.hasOwnProperty(j)){var k,l=i[j];a.isArray(l)||(k=c.hashCode(d+l));var m;switch(j){case"hide":"string"==typeof l&&a(l).hide(0);break;case"show":"string"==typeof l&&a(l).fadeIn(200);break;case"detach":"string"==typeof l&&a(l).each(function(b){h[k]||(h[k]={}),h[k][b]||(h[k][b]={}),h[k][b].recovery_contanier=a(this).parent(),h[k][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(h[k]){for(var n in h[k])h[k].hasOwnProperty(n)&&h[k][n].recovery_contanier&&h[k][n].element&&h[k][n].recovery_contanier.append(h[k][n].element);delete h[k]}break;case"removeClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).removeClass(l[m]);break;case"addClasses":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&l[m]&&a(m).addClass(l[m]);break;case"setValue":if("object"==typeof l)for(m in l)l.hasOwnProperty(m)&&void 0!==l[m]&&null!==l[m]&&a(m).val(l[m])}}}},this.executeEvents(this.$result)};a.fn.factoryBootstrap445_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.factoryBootstrap445_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-445 .factory-checkbox.factory-buttons-way").factoryBootstrap445_checkboxControl(),a(".factory-bootstrap-445 .factory-checkbox").not(".factory-buttons-way").click(function(){a(this).prop("checked")?a(this).val(1):a(this).val(0)})})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.dropdown.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name")||this.$element.attr("name"),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){void 0!==window.factory_dropdown_control_events_data&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.val(),f=window.factory_dropdown_control_events_data[d];if(f&&f[e]){var g;void 0===window.__factory_dropdown_control_detach_elements&&(window.__factory_dropdown_control_detach_elements={}),g=window.__factory_dropdown_control_detach_elements;for(var h in f[e])if(f[e].hasOwnProperty(h)){var i,j=f[e][h];switch(a.isArray(j)||(i=c.hashCode(d+j)),h){case"hide":"string"==typeof j&&a(j).hide(0);break;case"show":"string"==typeof j&&a(j).fadeIn(200);break;case"detach":"string"==typeof j&&a(j).each(function(b){g[i]||(g[i]={}),g[i][b]||(g[i][b]={}),g[i][b].recovery_contanier=a(this).parent(),g[i][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(g[i]){for(var k in g[i])g[i].hasOwnProperty(k)&&g[i][k].recovery_contanier&&g[i][k].element&&g[i][k].recovery_contanier.append(g[i][k].element);delete g[i]}break;case"removeClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).removeClass(j[l]);break;case"addClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).addClass(j[l])}}}},"buttons"===this.way)this.$result=this.$element.find(".factory-result"),this.$hints=this.$element.find(".factory-hints"),this.$buttons=this.$element.find(".btn"),c.executeEvents(this.$result),this.$buttons.click(function(){var b=a(this).data("value");return c.$buttons.removeClass("active"),a(this).addClass("active"),c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+b).fadeIn(),c.$result.val(b),c.$result.trigger("change"),!1});else if("ddslick"===this.way){c.executeEvents(c.$element.find(".factory-result"));var d=window["factory_"+this.name+"_data"],e=this.$element.find(".factory-ddslick"),f=this.$element.data("width")||300,g=this.$element.data("align")||"right";a(d).each(function(){return this.imageHoverSrc?void(a("<img/>")[0].src=this.imageHoverSrc):!0}),e.ddslick({data:d,width:f,imagePosition:g,selectText:"- select -",onSelected:function(a){a.selectedData.imageHoverSrc&&c.$element.find(".dd-selected-image").attr("src",a.selectedData.imageHoverSrc);var b=c.$element.find(".factory-result").val(a.selectedData.value);b.change()}})}else{c.executeEvents(this.$element),this.$hints=this.$element.next(),this.$hints.hasClass("factory-hints")&&(this.$element.change(function(){return c.updateHints(),!1}),this.updateHints=function(){var a=c.$element.val();c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+a).show()},c.updateHints()),this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(a){console&&console.log&&console.log(a.responseText),c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length)for(var d in a){var e=a[d];c.addListItem(e)}else this.$element.append("<option>"+b.emptyList+"</li>");this.$element.trigger("factory-loaded")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<option />").attr("value",b.value).text(b.title).appendTo(this.$element),e=c.getAjaxData();e.selected&&e.selected==b.value&&d.attr("selected","selected")},this.showError=function(b){this.clearList();var d=a("<div class='factory-control-error'></div>").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),e=c.getAjaxData();this.$element.append("<option>"+e.emptyList+"</li>"),this.$element.after(d),this.$element.addClass("factory-has-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var h=this.$element.data("ajax");h&&this.loadData()}};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name")||this.$element.attr("name"),this.hashCode=function(a){var b=0;if(!a||0===a.length)return b;for(var c=0;c<a.length;c++){var d=a.charCodeAt(c);b=(b<<5)-b+d,b&=b}return b=b.toString(16),b=b.replace("-","")},this.executeEvents=function(a){void 0!==window.factory_dropdown_control_events_data&&(a.change(function(){c.eventsProcess(a)}),c.eventsProcess(a))},this.eventsProcess=function(b){var d=b.attr("name"),e=b.val(),f=window.factory_dropdown_control_events_data[d];if(f&&f[e]){var g;void 0===window.__factory_dropdown_control_detach_elements&&(window.__factory_dropdown_control_detach_elements={}),g=window.__factory_dropdown_control_detach_elements;for(var h in f[e])if(f[e].hasOwnProperty(h)){var i,j=f[e][h];switch(a.isArray(j)||(i=c.hashCode(d+j)),h){case"hide":"string"==typeof j&&a(j).hide(0);break;case"show":"string"==typeof j&&a(j).fadeIn(200);break;case"detach":"string"==typeof j&&a(j).each(function(b){g[i]||(g[i]={}),g[i][b]||(g[i][b]={}),g[i][b].recovery_contanier=a(this).parent(),g[i][b].element=a(this).clone(!0),a(this).remove()});break;case"recovery":if(g[i]){for(var k in g[i])g[i].hasOwnProperty(k)&&g[i][k].recovery_contanier&&g[i][k].element&&g[i][k].recovery_contanier.append(g[i][k].element);delete g[i]}break;case"removeClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).removeClass(j[l]);break;case"addClasses":if("object"==typeof j)for(var l in j)j.hasOwnProperty(l)&&j[l]&&a(l).addClass(j[l])}}}},"buttons"===this.way)this.$result=this.$element.find(".factory-result"),this.$hints=this.$element.find(".factory-hints"),this.$buttons=this.$element.find(".btn"),c.executeEvents(this.$result),this.$buttons.click(function(){var b=a(this).data("value");return c.$buttons.removeClass("active"),a(this).addClass("active"),c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+b).fadeIn(),c.$result.val(b),c.$result.trigger("change"),!1});else if("ddslick"===this.way){c.executeEvents(c.$element.find(".factory-result"));var d=window["factory_"+this.name+"_data"],e=this.$element.find(".factory-ddslick"),f=this.$element.data("width")||300,g=this.$element.data("align")||"right";a(d).each(function(){return this.imageHoverSrc?void(a("<img/>")[0].src=this.imageHoverSrc):!0}),e.ddslick({data:d,width:f,imagePosition:g,selectText:"- select -",onSelected:function(a){a.selectedData.imageHoverSrc&&c.$element.find(".dd-selected-image").attr("src",a.selectedData.imageHoverSrc);var b=c.$element.find(".factory-result").val(a.selectedData.value);b.change()}})}else{c.executeEvents(this.$element),this.$hints=this.$element.next(),this.$hints.hasClass("factory-hints")&&(this.$element.change(function(){return c.updateHints(),!1}),this.updateHints=function(){var a=c.$element.val();c.$hints.find(".factory-hint").hide(),c.$hints.find(".factory-hint-"+a).show()},c.updateHints()),this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(a){console&&console.log&&console.log(a.responseText),c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length)for(var d in a){var e=a[d];c.addListItem(e)}else this.$element.append("<option>"+b.emptyList+"</li>");this.$element.trigger("factory-loaded")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<option />").attr("value",b.value).text(b.title).appendTo(this.$element),e=c.getAjaxData();e.selected&&e.selected==b.value&&d.attr("selected","selected")},this.showError=function(b){this.clearList();var d=a("<div class='factory-control-error'></div>").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),e=c.getAjaxData();this.$element.append("<option>"+e.emptyList+"</li>"),this.$element.after(d),this.$element.addClass("factory-has-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var h=this.$element.data("ajax");h&&this.loadData()}};a.fn.factoryBootstrap445_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.factoryBootstrap445_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-445 .factory-dropdown").factoryBootstrap445_dropdownControl()})}(jQuery);
|
libs/factory/bootstrap/assets/js-min/control.list.min.js
CHANGED
@@ -7,4 +7,4 @@
|
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
-
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name"),"checklist"===this.way){this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(){c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length){this.$element.removeClass("factory-empty");for(var d in a){var e=a[d];c.addListItem(e)}}else this.$element.addClass("factory-empty"),this.$element.append("<li>"+b.emptyList+"</li>")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<li>"),e=a("<label>").attr("for","factory-checklist-"+c.name+"-"+b.value).appendTo(d),f=a("<span>").appendTo(e),g=a("<input />").attr("type","checkbox").attr("name",c.name+"[]").val(b.value).attr("id","factory-checklist-"+c.name+"-"+b.value).appendTo(f),h=(a("<span>"+b.title+"</span>").appendTo(e),c.getAjaxData());h.selected.length&&a.inArray(b.value,h.selected)>=0&&g.attr("checked","checked"),this.$element.append(d)},this.showError=function(b){this.$element.html("").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),this.$element.addClass("factory-list-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var d=this.$element.data("ajax");d&&this.loadData()}};a.fn.
|
7 |
* Support: http://webcraftic.com/contact-us/
|
8 |
*/
|
9 |
|
10 |
+
!function(a){var b=function(b){var c=this;if(this.$element=a(b),this.way=this.$element.data("way"),this.name=this.$element.data("name"),"checklist"===this.way){this.getAjaxData=function(){var a=c.$element.data("ajax-data-id");return window[a]},this.loadData=function(){var b=c.getAjaxData();a.ajax({url:b.url,data:b.data,dataType:"json",success:function(a){return a.error?c.showError(a.error):void c.fill(a.items)},error:function(){c.showError("Unexpected error occurred during the ajax request.")},complete:function(){c.removeLoader()}})},this.fill=function(a){this.clearList();var b=c.getAjaxData();if(a&&a.length){this.$element.removeClass("factory-empty");for(var d in a){var e=a[d];c.addListItem(e)}}else this.$element.addClass("factory-empty"),this.$element.append("<li>"+b.emptyList+"</li>")},this.clearList=function(){this.$element.html("")},this.addListItem=function(b){var d=a("<li>"),e=a("<label>").attr("for","factory-checklist-"+c.name+"-"+b.value).appendTo(d),f=a("<span>").appendTo(e),g=a("<input />").attr("type","checkbox").attr("name",c.name+"[]").val(b.value).attr("id","factory-checklist-"+c.name+"-"+b.value).appendTo(f),h=(a("<span>"+b.title+"</span>").appendTo(e),c.getAjaxData());h.selected.length&&a.inArray(b.value,h.selected)>=0&&g.attr("checked","checked"),this.$element.append(d)},this.showError=function(b){this.$element.html("").append(a("<i class='fa fa-exclamation-triangle'></i>")).append(b),this.$element.addClass("factory-list-error")},this.removeLoader=function(){this.$element.removeClass("factory-hidden");var b=c.getAjaxData();a(b.loader).remove()};var d=this.$element.data("ajax");d&&this.loadData()}};a.fn.factoryBootstrap445_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.factoryBootstrap445_listControl.Constructor=b,a(function(){a(".factory-bootstrap-445 .factory-list").factoryBootstrap445_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.factoryBootstrap445_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-445 .factory-multiple-textbox-group").factoryBootstrap445_MultipleTextboxControl()})}(jQuery);
|
libs/factory/bootstrap/boot.php
CHANGED
@@ -19,27 +19,27 @@ if( !is_admin() ) {
|
|
19 |
return;
|
20 |
}
|
21 |
|
22 |
-
if( defined('
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
-
define('
|
27 |
-
define('
|
28 |
|
29 |
if( !defined('FACTORY_FLAT_ADMIN') ) {
|
30 |
define('FACTORY_FLAT_ADMIN', true);
|
31 |
}
|
32 |
|
33 |
-
define('
|
34 |
-
define('
|
35 |
|
36 |
-
require_once(
|
37 |
|
38 |
/**
|
39 |
-
* @param
|
40 |
*/
|
41 |
-
add_action('
|
42 |
-
$manager = new
|
43 |
$plugin->setBootstap($manager);
|
44 |
});
|
45 |
|
19 |
return;
|
20 |
}
|
21 |
|
22 |
+
if( defined('FACTORY_BOOTSTRAP_445_LOADED') ) {
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
+
define('FACTORY_BOOTSTRAP_445_VERSION', '4.4.5');
|
27 |
+
define('FACTORY_BOOTSTRAP_445_LOADED', true);
|
28 |
|
29 |
if( !defined('FACTORY_FLAT_ADMIN') ) {
|
30 |
define('FACTORY_FLAT_ADMIN', true);
|
31 |
}
|
32 |
|
33 |
+
define('FACTORY_BOOTSTRAP_445_DIR', dirname(__FILE__));
|
34 |
+
define('FACTORY_BOOTSTRAP_445_URL', plugins_url(null, __FILE__));
|
35 |
|
36 |
+
require_once(FACTORY_BOOTSTRAP_445_DIR . '/includes/functions.php');
|
37 |
|
38 |
/**
|
39 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
40 |
*/
|
41 |
+
add_action('wbcr_factory_bootstrap_445_plugin_created', function ($plugin) {
|
42 |
+
$manager = new Wbcr_FactoryBootstrap445_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_FactoryBootstrap444_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_FactoryBootstrap444_Manager {
|
|
111 |
*/
|
112 |
public function loadAssets( $hook ) {
|
113 |
|
114 |
-
do_action( '
|
115 |
-
do_action( '
|
116 |
|
117 |
$dependencies = [];
|
118 |
if ( ! empty( $this->scripts ) ) {
|
@@ -156,8 +156,8 @@ class Wbcr_FactoryBootstrap444_Manager {
|
|
156 |
$cache_enable = apply_filters( 'wbcr/factory/bootstrap/cache_enable', true );
|
157 |
|
158 |
$cache_id = md5( implode( ',', $this->scripts ) . $type . $this->plugin->getPluginVersion() );
|
159 |
-
$cache_dir_path =
|
160 |
-
$cache_dir_url =
|
161 |
|
162 |
$cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
|
163 |
$cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
|
@@ -184,7 +184,7 @@ class Wbcr_FactoryBootstrap444_Manager {
|
|
184 |
foreach ( $scripts as $script_to_load ) {
|
185 |
$script_to_load = sanitize_text_field( $script_to_load );
|
186 |
if ( $cache_enable && $cache_dir_exists ) {
|
187 |
-
$fname =
|
188 |
if ( file_exists( $fname ) ) {
|
189 |
$f = @fopen( $fname, 'r' );
|
190 |
$concat_files[] = @fread( $f, filesize( $fname ) );
|
@@ -192,9 +192,9 @@ class Wbcr_FactoryBootstrap444_Manager {
|
|
192 |
}
|
193 |
} else {
|
194 |
if ( $type == 'js' ) {
|
195 |
-
wp_enqueue_script( md5( $script_to_load ),
|
196 |
} else {
|
197 |
-
wp_enqueue_style( md5( $script_to_load ),
|
198 |
}
|
199 |
$is_first = false;
|
200 |
}
|
20 |
*
|
21 |
* @since 3.2.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryBootstrap445_Manager {
|
24 |
|
25 |
/**
|
26 |
* A plugin for which the manager was created.
|
27 |
*
|
28 |
* @since 3.2.0
|
29 |
+
* @var Wbcr_Factory445_Plugin
|
30 |
*/
|
31 |
public $plugin;
|
32 |
|
51 |
*
|
52 |
* @since 1.0.0
|
53 |
*/
|
54 |
+
public function __construct( Wbcr_Factory445_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_445_bootstrap_enqueue_scripts', $hook );
|
115 |
+
do_action( 'wbcr_factory_445_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook );
|
116 |
|
117 |
$dependencies = [];
|
118 |
if ( ! empty( $this->scripts ) ) {
|
156 |
$cache_enable = apply_filters( 'wbcr/factory/bootstrap/cache_enable', true );
|
157 |
|
158 |
$cache_id = md5( implode( ',', $this->scripts ) . $type . $this->plugin->getPluginVersion() );
|
159 |
+
$cache_dir_path = FACTORY_BOOTSTRAP_445_DIR . '/assets/cache/';
|
160 |
+
$cache_dir_url = FACTORY_BOOTSTRAP_445_URL . '/assets/cache/';
|
161 |
|
162 |
$cache_filepath = $cache_dir_path . $cache_id . ".min." . $type;
|
163 |
$cache_fileurl = $cache_dir_url . $cache_id . ".min." . $type;
|
184 |
foreach ( $scripts as $script_to_load ) {
|
185 |
$script_to_load = sanitize_text_field( $script_to_load );
|
186 |
if ( $cache_enable && $cache_dir_exists ) {
|
187 |
+
$fname = FACTORY_BOOTSTRAP_445_DIR . "/assets/$type-min/$script_to_load.min." . $type;
|
188 |
if ( file_exists( $fname ) ) {
|
189 |
$f = @fopen( $fname, 'r' );
|
190 |
$concat_files[] = @fread( $f, filesize( $fname ) );
|
192 |
}
|
193 |
} else {
|
194 |
if ( $type == 'js' ) {
|
195 |
+
wp_enqueue_script( md5( $script_to_load ), FACTORY_BOOTSTRAP_445_URL . "/assets/$type-min/$script_to_load.min." . $type, $is_first ? $dependencies : false, $this->plugin->getPluginVersion() );
|
196 |
} else {
|
197 |
+
wp_enqueue_style( md5( $script_to_load ), FACTORY_BOOTSTRAP_445_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion() );
|
198 |
}
|
199 |
$is_first = false;
|
200 |
}
|
libs/factory/core/ajax/install-addons.php
CHANGED
@@ -15,7 +15,7 @@ if( !defined('ABSPATH') ) {
|
|
15 |
/**
|
16 |
* This action allows you to process Ajax requests to activate external components Clearfy
|
17 |
*/
|
18 |
-
function
|
19 |
{
|
20 |
check_ajax_referer('updates');
|
21 |
|
@@ -24,11 +24,11 @@ function wfactory_444_install_components($plugin_instance)
|
|
24 |
$storage = $plugin_instance->request->post('storage', null, true);
|
25 |
|
26 |
if( !current_user_can('update_plugins') ) {
|
27 |
-
wp_die(__('You don\'t have enough capability to edit this information.', '
|
28 |
}
|
29 |
|
30 |
if( empty($slug) || empty($action) ) {
|
31 |
-
wp_send_json_error(['error_message' => __('Required attributes are not passed or empty.', '
|
32 |
}
|
33 |
$success = false;
|
34 |
$send_data = [];
|
@@ -44,7 +44,7 @@ function wfactory_444_install_components($plugin_instance)
|
|
44 |
$success = true;
|
45 |
}
|
46 |
} else {
|
47 |
-
wp_send_json_error(['error_message' => __('You are trying to perform an invalid action.', '
|
48 |
}
|
49 |
} else if( $storage == 'wordpress' || $storage == 'creativemotion' ) {
|
50 |
if( !empty($slug) ) {
|
@@ -80,7 +80,7 @@ function wfactory_444_install_components($plugin_instance)
|
|
80 |
/*if ( $action == 'deactivate' ) {
|
81 |
$is_need_rewrite_rules = $plugin_instance->getPopulateOption( 'need_rewrite_rules' );
|
82 |
if ( $is_need_rewrite_rules ) {
|
83 |
-
$send_data['need_rewrite_rules'] = sprintf( '<span class="wbcr-clr-need-rewrite-rules-message">' . __( 'When you deactivate some components, permanent links may work incorrectly. If this happens, please, <a href="%s">update the permalinks</a>, so you could complete the deactivation.', '
|
84 |
}
|
85 |
}*/
|
86 |
|
@@ -94,7 +94,7 @@ function wfactory_444_install_components($plugin_instance)
|
|
94 |
wp_send_json_success($send_data);
|
95 |
}
|
96 |
|
97 |
-
wp_send_json_error(['error_message' => __('An unknown error occurred during the activation of the component.', '
|
98 |
}
|
99 |
|
100 |
/**
|
@@ -102,18 +102,18 @@ function wfactory_444_install_components($plugin_instance)
|
|
102 |
* to get the component to work. Usually this is a call to the installation functions,
|
103 |
* but in some cases, overwriting permanent references or compatibility checks.
|
104 |
*/
|
105 |
-
function
|
106 |
{
|
107 |
check_ajax_referer('updates');
|
108 |
|
109 |
$component_name = $plugin_instance->request->post('plugin', null, true);
|
110 |
|
111 |
if( !current_user_can('update_plugins') ) {
|
112 |
-
wp_send_json_error(['error_message' => __('You don\'t have enough capability to edit this information.', '
|
113 |
}
|
114 |
|
115 |
if( empty($component_name) ) {
|
116 |
-
wp_send_json_error(['error_message' => __('Required attribute [component_name] is empty.', '
|
117 |
}
|
118 |
// todo: для совместимости с плагином Clearfy
|
119 |
if( "wbcr_clearfy" === $plugin_instance->getPluginName() ) {
|
@@ -133,7 +133,7 @@ function wfactory_444_prepare_component($plugin_instance)
|
|
133 |
*
|
134 |
* @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
|
135 |
*/
|
136 |
-
function
|
137 |
{
|
138 |
check_ajax_referer('updates');
|
139 |
|
15 |
/**
|
16 |
* This action allows you to process Ajax requests to activate external components Clearfy
|
17 |
*/
|
18 |
+
function wfactory_445_install_components($plugin_instance)
|
19 |
{
|
20 |
check_ajax_referer('updates');
|
21 |
|
24 |
$storage = $plugin_instance->request->post('storage', null, true);
|
25 |
|
26 |
if( !current_user_can('update_plugins') ) {
|
27 |
+
wp_die(__('You don\'t have enough capability to edit this information.', 'wbcr_factory_445'), __('Something went wrong.'), 403);
|
28 |
}
|
29 |
|
30 |
if( empty($slug) || empty($action) ) {
|
31 |
+
wp_send_json_error(['error_message' => __('Required attributes are not passed or empty.', 'wbcr_factory_445')]);
|
32 |
}
|
33 |
$success = false;
|
34 |
$send_data = [];
|
44 |
$success = true;
|
45 |
}
|
46 |
} else {
|
47 |
+
wp_send_json_error(['error_message' => __('You are trying to perform an invalid action.', 'wbcr_factory_445')]);
|
48 |
}
|
49 |
} else if( $storage == 'wordpress' || $storage == 'creativemotion' ) {
|
50 |
if( !empty($slug) ) {
|
80 |
/*if ( $action == 'deactivate' ) {
|
81 |
$is_need_rewrite_rules = $plugin_instance->getPopulateOption( 'need_rewrite_rules' );
|
82 |
if ( $is_need_rewrite_rules ) {
|
83 |
+
$send_data['need_rewrite_rules'] = sprintf( '<span class="wbcr-clr-need-rewrite-rules-message">' . __( 'When you deactivate some components, permanent links may work incorrectly. If this happens, please, <a href="%s">update the permalinks</a>, so you could complete the deactivation.', 'wbcr_factory_445' ), admin_url( 'options-permalink.php' ) . '</span>' );
|
84 |
}
|
85 |
}*/
|
86 |
|
94 |
wp_send_json_success($send_data);
|
95 |
}
|
96 |
|
97 |
+
wp_send_json_error(['error_message' => __('An unknown error occurred during the activation of the component.', 'wbcr_factory_445')]);
|
98 |
}
|
99 |
|
100 |
/**
|
102 |
* to get the component to work. Usually this is a call to the installation functions,
|
103 |
* but in some cases, overwriting permanent references or compatibility checks.
|
104 |
*/
|
105 |
+
function wfactory_445_prepare_component($plugin_instance)
|
106 |
{
|
107 |
check_ajax_referer('updates');
|
108 |
|
109 |
$component_name = $plugin_instance->request->post('plugin', null, true);
|
110 |
|
111 |
if( !current_user_can('update_plugins') ) {
|
112 |
+
wp_send_json_error(['error_message' => __('You don\'t have enough capability to edit this information.', 'wbcr_factory_445')], 403);
|
113 |
}
|
114 |
|
115 |
if( empty($component_name) ) {
|
116 |
+
wp_send_json_error(['error_message' => __('Required attribute [component_name] is empty.', 'wbcr_factory_445')]);
|
117 |
}
|
118 |
// todo: для совместимости с плагином Clearfy
|
119 |
if( "wbcr_clearfy" === $plugin_instance->getPluginName() ) {
|
133 |
*
|
134 |
* @global WP_Filesystem_Base $wp_filesystem WordPress filesystem subclass.
|
135 |
*/
|
136 |
+
function wfactory_445_creativemotion_install_plugin($plugin_instance)
|
137 |
{
|
138 |
check_ajax_referer('updates');
|
139 |
|
libs/factory/core/assets/js/core-components.js
CHANGED
@@ -20,7 +20,7 @@
|
|
20 |
* This event is intended for installation, removal, activation, deactivation of external add-ons
|
21 |
*/
|
22 |
|
23 |
-
$(document).on('click', '.wfactory-
|
24 |
var $this = $(this),
|
25 |
button_i18n = $(this).data('i18n'),
|
26 |
plugin_slug = $(this).data('slug'),
|
@@ -30,11 +30,11 @@
|
|
30 |
wpnonce = $(this).data('wpnonce');
|
31 |
|
32 |
var action = ('creativemotion' === storage)
|
33 |
-
? 'wfactory-
|
34 |
: 'install-plugin';
|
35 |
|
36 |
if( storage === 'freemius' || ((storage === 'wordpress' || storage === 'creativemotion' || storage === 'internal') && (plugin_action === 'activate' || plugin_action === 'deactivate')) ) {
|
37 |
-
action = 'wfactory-
|
38 |
} else if( storage === 'wordpress' && plugin_action === 'delete' ) {
|
39 |
action = 'delete-plugin';
|
40 |
}
|
@@ -54,11 +54,11 @@
|
|
54 |
|
55 |
$this.addClass('disabled').text(button_i18n.loading);
|
56 |
|
57 |
-
$.
|
58 |
|
59 |
self.sendRequest(data, function(response) {
|
60 |
if( !response || !response.success ) {
|
61 |
-
$.
|
62 |
$this,
|
63 |
data,
|
64 |
response
|
@@ -80,7 +80,7 @@
|
|
80 |
$this.removeClass('button-default').addClass('button-primary');
|
81 |
}
|
82 |
|
83 |
-
$.
|
84 |
$this,
|
85 |
data,
|
86 |
response
|
@@ -96,7 +96,7 @@
|
|
96 |
$this.removeClass('button-primary').addClass('button-default');
|
97 |
}
|
98 |
|
99 |
-
$.
|
100 |
$this,
|
101 |
data,
|
102 |
response
|
@@ -124,7 +124,7 @@
|
|
124 |
$this.removeClass('button-default').addClass('button-primary');
|
125 |
}
|
126 |
|
127 |
-
$.
|
128 |
$this,
|
129 |
data,
|
130 |
response
|
@@ -134,7 +134,7 @@
|
|
134 |
|
135 |
plugin_action = 'install';
|
136 |
|
137 |
-
$.
|
138 |
}
|
139 |
} else {
|
140 |
if( plugin_action === 'install' ) {
|
@@ -144,7 +144,7 @@
|
|
144 |
|
145 |
$this.text(button_i18n[plugin_action]);
|
146 |
|
147 |
-
$.
|
148 |
});
|
149 |
|
150 |
return false;
|
@@ -169,7 +169,7 @@
|
|
169 |
.addClass('disabled')
|
170 |
.text(button_i18n.preparation);
|
171 |
|
172 |
-
sendData.action = 'wfactory-
|
173 |
|
174 |
this.sendRequest(sendData, function(response) {
|
175 |
componentButton.removeClass('disabled');
|
@@ -177,7 +177,7 @@
|
|
177 |
if( !response || !response.success ) {
|
178 |
componentButton.text(button_i18n['activate']);
|
179 |
|
180 |
-
$.
|
181 |
componentButton,
|
182 |
sendData,
|
183 |
response
|
@@ -187,7 +187,7 @@
|
|
187 |
|
188 |
componentButton.removeClass('button-primary').text(button_i18n['deactivate']);
|
189 |
|
190 |
-
$.
|
191 |
componentButton,
|
192 |
sendData,
|
193 |
response
|
@@ -210,7 +210,7 @@
|
|
210 |
console.log(xhr.responseText);
|
211 |
console.log(thrownError);
|
212 |
|
213 |
-
$.
|
214 |
xhr,
|
215 |
ajaxOptions,
|
216 |
thrownError
|
20 |
* This event is intended for installation, removal, activation, deactivation of external add-ons
|
21 |
*/
|
22 |
|
23 |
+
$(document).on('click', '.wfactory-445-process-button', function() {
|
24 |
var $this = $(this),
|
25 |
button_i18n = $(this).data('i18n'),
|
26 |
plugin_slug = $(this).data('slug'),
|
30 |
wpnonce = $(this).data('wpnonce');
|
31 |
|
32 |
var action = ('creativemotion' === storage)
|
33 |
+
? 'wfactory-445-creativemotion-install-plugin'
|
34 |
: 'install-plugin';
|
35 |
|
36 |
if( storage === 'freemius' || ((storage === 'wordpress' || storage === 'creativemotion' || storage === 'internal') && (plugin_action === 'activate' || plugin_action === 'deactivate')) ) {
|
37 |
+
action = 'wfactory-445-intall-component';
|
38 |
} else if( storage === 'wordpress' && plugin_action === 'delete' ) {
|
39 |
action = 'delete-plugin';
|
40 |
}
|
54 |
|
55 |
$this.addClass('disabled').text(button_i18n.loading);
|
56 |
|
57 |
+
$.wfactory_445.hooks.run('core/components/pre_update', [$this, data]);
|
58 |
|
59 |
self.sendRequest(data, function(response) {
|
60 |
if( !response || !response.success ) {
|
61 |
+
$.wfactory_445.hooks.run('core/components/update_error', [
|
62 |
$this,
|
63 |
data,
|
64 |
response
|
80 |
$this.removeClass('button-default').addClass('button-primary');
|
81 |
}
|
82 |
|
83 |
+
$.wfactory_445.hooks.run('core/components/installed', [
|
84 |
$this,
|
85 |
data,
|
86 |
response
|
96 |
$this.removeClass('button-primary').addClass('button-default');
|
97 |
}
|
98 |
|
99 |
+
$.wfactory_445.hooks.run('core/components/pre_activate', [
|
100 |
$this,
|
101 |
data,
|
102 |
response
|
124 |
$this.removeClass('button-default').addClass('button-primary');
|
125 |
}
|
126 |
|
127 |
+
$.wfactory_445.hooks.run('core/components/deactivated', [
|
128 |
$this,
|
129 |
data,
|
130 |
response
|
134 |
|
135 |
plugin_action = 'install';
|
136 |
|
137 |
+
$.wfactory_445.hooks.run('core/components/deleted', [$this, data, response]);
|
138 |
}
|
139 |
} else {
|
140 |
if( plugin_action === 'install' ) {
|
144 |
|
145 |
$this.text(button_i18n[plugin_action]);
|
146 |
|
147 |
+
$.wfactory_445.hooks.run('core/components/updated', [$this, data, response]);
|
148 |
});
|
149 |
|
150 |
return false;
|
169 |
.addClass('disabled')
|
170 |
.text(button_i18n.preparation);
|
171 |
|
172 |
+
sendData.action = 'wfactory-445-prepare-component';
|
173 |
|
174 |
this.sendRequest(sendData, function(response) {
|
175 |
componentButton.removeClass('disabled');
|
177 |
if( !response || !response.success ) {
|
178 |
componentButton.text(button_i18n['activate']);
|
179 |
|
180 |
+
$.wfactory_445.hooks.run('core/components/activation_error', [
|
181 |
componentButton,
|
182 |
sendData,
|
183 |
response
|
187 |
|
188 |
componentButton.removeClass('button-primary').text(button_i18n['deactivate']);
|
189 |
|
190 |
+
$.wfactory_445.hooks.run('core/components/activated', [
|
191 |
componentButton,
|
192 |
sendData,
|
193 |
response
|
210 |
console.log(xhr.responseText);
|
211 |
console.log(thrownError);
|
212 |
|
213 |
+
$.wfactory_445.hooks.run('core/components/ajax_error', [
|
214 |
xhr,
|
215 |
ajaxOptions,
|
216 |
thrownError
|
libs/factory/core/assets/js/core-general.js
CHANGED
@@ -8,11 +8,11 @@
|
|
8 |
(function($) {
|
9 |
'use strict';
|
10 |
|
11 |
-
if( !$.
|
12 |
-
$.
|
13 |
}
|
14 |
|
15 |
-
$.
|
16 |
|
17 |
/**
|
18 |
* A set of registered filters.
|
@@ -79,20 +79,20 @@
|
|
79 |
}
|
80 |
};
|
81 |
|
82 |
-
$.
|
83 |
|
84 |
/**
|
85 |
* Applies filters to a given input value.
|
86 |
*/
|
87 |
run: function(filterName, args) {
|
88 |
-
$.
|
89 |
},
|
90 |
|
91 |
/**
|
92 |
* Registers a new filter.
|
93 |
*/
|
94 |
add: function(filterName, callback, priority) {
|
95 |
-
$.
|
96 |
}
|
97 |
};
|
98 |
|
8 |
(function($) {
|
9 |
'use strict';
|
10 |
|
11 |
+
if( !$.wfactory_445 ) {
|
12 |
+
$.wfactory_445 = {};
|
13 |
}
|
14 |
|
15 |
+
$.wfactory_445.filters = $.wfactory_445.filters || {
|
16 |
|
17 |
/**
|
18 |
* A set of registered filters.
|
79 |
}
|
80 |
};
|
81 |
|
82 |
+
$.wfactory_445.hooks = $.wfactory_445.hooks || {
|
83 |
|
84 |
/**
|
85 |
* Applies filters to a given input value.
|
86 |
*/
|
87 |
run: function(filterName, args) {
|
88 |
+
$.wfactory_445.filters.run(filterName, args);
|
89 |
},
|
90 |
|
91 |
/**
|
92 |
* Registers a new filter.
|
93 |
*/
|
94 |
add: function(filterName, callback, priority) {
|
95 |
+
$.wfactory_445.filters.add(filterName, callback, priority);
|
96 |
}
|
97 |
};
|
98 |
|
libs/factory/core/boot.php
CHANGED
@@ -14,60 +14,60 @@ if( !defined('ABSPATH') ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if( defined('
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
-
define('
|
22 |
|
23 |
-
define('
|
24 |
|
25 |
-
define('
|
26 |
-
define('
|
27 |
|
28 |
-
load_plugin_textdomain('
|
29 |
|
30 |
#comp merge
|
31 |
-
require_once(
|
32 |
|
33 |
-
require_once(
|
34 |
-
require_once(
|
35 |
|
36 |
-
require_once(
|
37 |
-
require_once(
|
38 |
-
require_once(
|
39 |
-
require_once(
|
40 |
-
require_once(
|
41 |
|
42 |
// ASSETS
|
43 |
-
require_once(
|
44 |
-
require_once(
|
45 |
-
require_once(
|
46 |
|
47 |
// PREMIUM
|
48 |
-
require_once(
|
49 |
-
require_once(
|
50 |
-
require_once(
|
51 |
|
52 |
// UPDATES
|
53 |
-
require_once(
|
54 |
-
require_once(
|
55 |
-
require_once(
|
56 |
-
require_once(
|
57 |
-
require_once(
|
58 |
|
59 |
-
require_once(
|
60 |
|
61 |
-
require_once(
|
62 |
-
require_once(
|
63 |
#endcomp
|
64 |
|
65 |
add_action('admin_enqueue_scripts', function () {
|
66 |
-
wp_enqueue_script('wfactory-
|
67 |
'jquery'
|
68 |
-
],
|
69 |
-
wp_enqueue_script('wfactory-
|
70 |
'jquery',
|
71 |
-
'wfactory-
|
72 |
-
],
|
73 |
});
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( defined('FACTORY_445_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
define('FACTORY_445_LOADED', true);
|
22 |
|
23 |
+
define('FACTORY_445_VERSION', '4.4.5');
|
24 |
|
25 |
+
define('FACTORY_445_DIR', dirname(__FILE__));
|
26 |
+
define('FACTORY_445_URL', plugins_url(null, __FILE__));
|
27 |
|
28 |
+
load_plugin_textdomain('wbcr_factory_445', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
29 |
|
30 |
#comp merge
|
31 |
+
require_once(FACTORY_445_DIR . '/includes/functions.php');
|
32 |
|
33 |
+
require_once(FACTORY_445_DIR . '/includes/entities/class-factory-paths.php');
|
34 |
+
require_once(FACTORY_445_DIR . '/includes/entities/class-factory-support.php');
|
35 |
|
36 |
+
require_once(FACTORY_445_DIR . '/includes/class-factory-requests.php');
|
37 |
+
require_once(FACTORY_445_DIR . '/includes/class-factory-options.php');
|
38 |
+
require_once(FACTORY_445_DIR . '/includes/class-factory-plugin-base.php');
|
39 |
+
require_once(FACTORY_445_DIR . '/includes/class-factory-migrations.php');
|
40 |
+
require_once(FACTORY_445_DIR . '/includes/class-factory-notices.php');
|
41 |
|
42 |
// ASSETS
|
43 |
+
require_once(FACTORY_445_DIR . '/includes/assets-managment/class-factory-assets-list.php');
|
44 |
+
require_once(FACTORY_445_DIR . '/includes/assets-managment/class-factory-script-list.php');
|
45 |
+
require_once(FACTORY_445_DIR . '/includes/assets-managment/class-factory-style-list.php');
|
46 |
|
47 |
// PREMIUM
|
48 |
+
require_once(FACTORY_445_DIR . '/includes/premium/class-factory-license-interface.php');
|
49 |
+
require_once(FACTORY_445_DIR . '/includes/premium/class-factory-provider-abstract.php');
|
50 |
+
require_once(FACTORY_445_DIR . '/includes/premium/class-factory-manager.php');
|
51 |
|
52 |
// UPDATES
|
53 |
+
require_once(FACTORY_445_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php');
|
54 |
+
require_once(FACTORY_445_DIR . '/includes/updates/repositories/class-factory-wordpress.php');
|
55 |
+
require_once(FACTORY_445_DIR . '/includes/updates/repositories/class-factory-github.php');
|
56 |
+
require_once(FACTORY_445_DIR . '/includes/updates/class-factory-upgrader.php');
|
57 |
+
require_once(FACTORY_445_DIR . '/includes/updates/class-factory-premium-upgrader.php');
|
58 |
|
59 |
+
require_once(FACTORY_445_DIR . '/includes/class-factory-plugin-abstract.php');
|
60 |
|
61 |
+
require_once(FACTORY_445_DIR . '/includes/activation/class-factory-activator.php');
|
62 |
+
require_once(FACTORY_445_DIR . '/includes/activation/class-factory-update.php');
|
63 |
#endcomp
|
64 |
|
65 |
add_action('admin_enqueue_scripts', function () {
|
66 |
+
wp_enqueue_script('wfactory-445-core-general', FACTORY_445_URL . '/assets/js/core-general.js', [
|
67 |
'jquery'
|
68 |
+
], FACTORY_445_VERSION);
|
69 |
+
wp_enqueue_script('wfactory-445-core-components', FACTORY_445_URL . '/assets/js/core-components.js', [
|
70 |
'jquery',
|
71 |
+
'wfactory-445-core-general'
|
72 |
+
], FACTORY_445_VERSION);
|
73 |
});
|
libs/factory/core/includes/activation/class-factory-activator.php
CHANGED
@@ -19,16 +19,16 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
-
abstract class
|
23 |
|
24 |
/**
|
25 |
* Curent plugin.
|
26 |
*
|
27 |
-
* @var
|
28 |
*/
|
29 |
public $plugin;
|
30 |
|
31 |
-
public function __construct(
|
32 |
$this->plugin = $plugin;
|
33 |
}
|
34 |
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
abstract class Wbcr_Factory445_Activator {
|
23 |
|
24 |
/**
|
25 |
* Curent plugin.
|
26 |
*
|
27 |
+
* @var Wbcr_Factory445_Plugin
|
28 |
*/
|
29 |
public $plugin;
|
30 |
|
31 |
+
public function __construct( Wbcr_Factory445_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_Factory445_Update {
|
24 |
|
25 |
/**
|
26 |
* Current plugin
|
27 |
*
|
28 |
+
* @var Wbcr_Factory445_Plugin
|
29 |
*/
|
30 |
var $plugin;
|
31 |
|
32 |
+
public function __construct( Wbcr_Factory445_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_Factory444_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_Factory445_AssetsList {
|
23 |
|
24 |
protected $all = [];
|
25 |
public $header_place = [];
|
29 |
protected $default_place;
|
30 |
|
31 |
/**
|
32 |
+
* @var Wbcr_Factory445_Plugin
|
33 |
*/
|
34 |
protected $plugin;
|
35 |
|
36 |
/**
|
37 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
38 |
* @param bool $defaultIsFooter
|
39 |
*/
|
40 |
+
public function __construct( Wbcr_Factory445_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_Factory444_ScriptList extends Wbcr_Factory444_AssetsList {
|
|
149 |
* @param string $varname
|
150 |
* @param array $data
|
151 |
*
|
152 |
-
* @return
|
153 |
*/
|
154 |
public function localize( $varname, $data ) {
|
155 |
$bindTo = count( $this->all ) == 0 ? null : end( $this->all );
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_Factory445_ScriptList extends Wbcr_Factory445_AssetsList {
|
24 |
|
25 |
public $localize_data = [];
|
26 |
public $use_ajax = false;
|
149 |
* @param string $varname
|
150 |
* @param array $data
|
151 |
*
|
152 |
+
* @return Wbcr_Factory445_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_Factory445_StyleList extends Wbcr_Factory445_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_445' ), $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_445' ), $this->required_wp_version ) . '<br>';
|
91 |
}
|
92 |
|
93 |
if ( $has_one ) {
|
libs/factory/core/includes/class-factory-migrations.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use Exception;
|
6 |
-
use
|
7 |
|
8 |
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit;
|
@@ -35,11 +35,11 @@ class Migrations {
|
|
35 |
/**
|
36 |
* Migrations constructor.
|
37 |
*
|
38 |
-
* @param
|
39 |
*
|
40 |
* @throws Exception
|
41 |
*/
|
42 |
-
public function __construct(
|
43 |
|
44 |
$this->plugin = $plugin;
|
45 |
$plugin_name = $plugin->getPluginName();
|
@@ -129,14 +129,14 @@ class Migrations {
|
|
129 |
$fix_migration_error_url = add_query_arg( 'wbcr_factory_fix_migration_error', 1 );
|
130 |
|
131 |
$notice_text = $migration_error_text;
|
132 |
-
$notice_text .= "<br><br><a href='{$fix_migration_error_url}' class='button button-default'>" . __( 'I fixed, confirm migration', '
|
133 |
|
134 |
$notices[] = [
|
135 |
'id' => 'migration_debug_bar',
|
136 |
'type' => 'error',
|
137 |
'dismissible' => false,
|
138 |
'dismiss_expires' => 0,
|
139 |
-
'text' => '<p><b>' . $this->plugin->getPluginTitle() . ' ' . __( 'migration error', '
|
140 |
];
|
141 |
|
142 |
return $notices;
|
@@ -162,19 +162,19 @@ class Migrations {
|
|
162 |
|
163 |
$migrate_url = add_query_arg( 'wbcr_factory_test_migration', 1 );
|
164 |
|
165 |
-
$notice_text = __( "Plugin activated:", "
|
166 |
|
167 |
-
$notice_text .= __( "Old plugin version (debug):", "
|
168 |
-
$notice_text .= __( "Current plugin version:", "
|
169 |
-
$notice_text .= __( "Need migration:", "
|
170 |
-
$notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "
|
171 |
|
172 |
$notices[] = [
|
173 |
'id' => 'migration_debug_bar',
|
174 |
'type' => 'warning',
|
175 |
'dismissible' => false,
|
176 |
'dismiss_expires' => 0,
|
177 |
-
'text' => '<p><b style="color:red;">' . $this->plugin->getPluginTitle() . ' ' . __( 'migrations DEBUG bar', '
|
178 |
];
|
179 |
|
180 |
return $notices;
|
@@ -505,7 +505,7 @@ class Migrations {
|
|
505 |
$classes = [];
|
506 |
|
507 |
if ( ! function_exists( 'token_get_all' ) ) {
|
508 |
-
throw new Exception( __( 'There is no PHP Tokenizer extension installed on your server, you cannot use the token_get_all function.', '
|
509 |
}
|
510 |
|
511 |
$tokens = token_get_all( $phpCode );
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_445;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory445_Plugin;
|
7 |
|
8 |
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
exit;
|
35 |
/**
|
36 |
* Migrations constructor.
|
37 |
*
|
38 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
39 |
*
|
40 |
* @throws Exception
|
41 |
*/
|
42 |
+
public function __construct( Wbcr_Factory445_Plugin $plugin ) {
|
43 |
|
44 |
$this->plugin = $plugin;
|
45 |
$plugin_name = $plugin->getPluginName();
|
129 |
$fix_migration_error_url = add_query_arg( 'wbcr_factory_fix_migration_error', 1 );
|
130 |
|
131 |
$notice_text = $migration_error_text;
|
132 |
+
$notice_text .= "<br><br><a href='{$fix_migration_error_url}' class='button button-default'>" . __( 'I fixed, confirm migration', 'wbcr_factory_445' ) . "</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_445' ) . '</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_445" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
|
166 |
|
167 |
+
$notice_text .= __( "Old plugin version (debug):", "wbcr_factory_445" ) . ' ' . $this->get_old_plugin_version() . "<br>";
|
168 |
+
$notice_text .= __( "Current plugin version:", "wbcr_factory_445" ) . ' ' . $this->get_current_plugin_version() . "<br>";
|
169 |
+
$notice_text .= __( "Need migration:", "wbcr_factory_445" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
|
170 |
+
$notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_445" ) . "</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_445' ) . '</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_445' ) );
|
509 |
}
|
510 |
|
511 |
$tokens = token_get_all( $phpCode );
|
libs/factory/core/includes/class-factory-notices.php
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
-
use
|
6 |
|
7 |
// Exit if accessed directly
|
8 |
if( !defined('ABSPATH') ) {
|
@@ -27,7 +27,7 @@ if( !defined('ABSPATH') ) {
|
|
27 |
class Notices {
|
28 |
|
29 |
/**
|
30 |
-
* @var
|
31 |
*/
|
32 |
protected $plugin;
|
33 |
/**
|
@@ -58,7 +58,7 @@ class Notices {
|
|
58 |
/**
|
59 |
* Инициализируем уведомлений сразу после загрузки модуля уведомлений
|
60 |
*
|
61 |
-
* @param
|
62 |
*/
|
63 |
public function __construct($plugin)
|
64 |
{
|
@@ -86,7 +86,7 @@ class Notices {
|
|
86 |
public function currentScreenAction()
|
87 |
{
|
88 |
/**
|
89 |
-
* @since 2.1.2 - Добавлен, модуль factory_notices_000 был удален. Поэтому в этому хуке мы заменили префикс на
|
90 |
*/
|
91 |
$this->notices = apply_filters('wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName());
|
92 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_445;
|
4 |
|
5 |
+
use Wbcr_Factory445_Plugin;
|
6 |
|
7 |
// Exit if accessed directly
|
8 |
if( !defined('ABSPATH') ) {
|
27 |
class Notices {
|
28 |
|
29 |
/**
|
30 |
+
* @var Wbcr_Factory445_Plugin
|
31 |
*/
|
32 |
protected $plugin;
|
33 |
/**
|
58 |
/**
|
59 |
* Инициализируем уведомлений сразу после загрузки модуля уведомлений
|
60 |
*
|
61 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
62 |
*/
|
63 |
public function __construct($plugin)
|
64 |
{
|
86 |
public function currentScreenAction()
|
87 |
{
|
88 |
/**
|
89 |
+
* @since 2.1.2 - Добавлен, модуль factory_notices_000 был удален. Поэтому в этому хуке мы заменили префикс на factory_445
|
90 |
*/
|
91 |
$this->notices = apply_filters('wbcr/factory/admin_notices', $this->notices, $this->plugin->getPluginName());
|
92 |
|
libs/factory/core/includes/class-factory-options.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
@@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
10 |
}
|
11 |
|
12 |
/**
|
13 |
-
* Трейт используется для расширения базового класса плагина
|
14 |
*
|
15 |
* Этот трейт является оберткой для Wordpress функций get_option, get_site_option, update_option, update_site_option,
|
16 |
* delete_option, delete_site_option. Основная задача была получать, обновлять, удалять опции без использования префиксов,
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_445;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
10 |
}
|
11 |
|
12 |
/**
|
13 |
+
* Трейт используется для расширения базового класса плагина Wbcr_Factory445_Base, позволяя работать с опциями плагина.
|
14 |
*
|
15 |
* Этот трейт является оберткой для Wordpress функций get_option, get_site_option, update_option, update_site_option,
|
16 |
* delete_option, delete_site_option. Основная задача была получать, обновлять, удалять опции без использования префиксов,
|
libs/factory/core/includes/class-factory-plugin-abstract.php
CHANGED
@@ -24,42 +24,42 @@ if( !defined('ABSPATH') ) {
|
|
24 |
* @package factory-core
|
25 |
*
|
26 |
*/
|
27 |
-
abstract class
|
28 |
|
29 |
/**
|
30 |
-
* Instance class
|
31 |
*
|
32 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
|
33 |
-
* @var
|
34 |
*/
|
35 |
public $request;
|
36 |
|
37 |
/**
|
38 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
|
39 |
-
* @var \WBCR\
|
40 |
*/
|
41 |
public $premium;
|
42 |
|
43 |
/**
|
44 |
* The Bootstrap Manager class
|
45 |
*
|
46 |
-
* @var
|
47 |
*/
|
48 |
public $bootstrap;
|
49 |
|
50 |
/**
|
51 |
* The Bootstrap Manager class
|
52 |
*
|
53 |
-
* @var
|
54 |
*/
|
55 |
public $forms;
|
56 |
|
57 |
/**
|
58 |
-
* Простой массив со списком зарегистрированных классов унаследованных от
|
59 |
* Классы активации используются для упаковки набора функций, которые нужно выполнить во время
|
60 |
* активации плагина.
|
61 |
*
|
62 |
-
* @var array[]
|
63 |
*/
|
64 |
protected $activator_class = [];
|
65 |
|
@@ -86,7 +86,7 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
86 |
*
|
87 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
88 |
* @since 4.1.9
|
89 |
-
* @var WBCR\
|
90 |
*/
|
91 |
private $adverts;
|
92 |
|
@@ -115,8 +115,8 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
115 |
|
116 |
parent::__construct($plugin_path, $data);
|
117 |
|
118 |
-
$this->request = new
|
119 |
-
//$this->route = new
|
120 |
|
121 |
// INIT PLUGIN FRAMEWORK MODULES
|
122 |
// Framework modules should always be loaded first,
|
@@ -144,15 +144,15 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
144 |
$this->init_plugin_components();
|
145 |
|
146 |
if( wp_doing_ajax() && isset($_REQUEST['action']) ) {
|
147 |
-
if( "wfactory-
|
148 |
-
add_action('wp_ajax_wfactory-
|
149 |
}
|
150 |
|
151 |
-
if( "wfactory-
|
152 |
-
add_action('wp_ajax_wfactory-
|
153 |
}
|
154 |
-
if( "wfactory-
|
155 |
-
add_action('wp_ajax_wfactory-
|
156 |
$this,
|
157 |
'ajax_handler_install_creativemotion_plugins'
|
158 |
]);
|
@@ -165,20 +165,20 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
165 |
|
166 |
public function ajax_handler_install_components()
|
167 |
{
|
168 |
-
require_once
|
169 |
-
|
170 |
}
|
171 |
|
172 |
public function ajax_handler_prepare_component()
|
173 |
{
|
174 |
-
require_once
|
175 |
-
|
176 |
}
|
177 |
|
178 |
public function ajax_handler_install_creativemotion_plugins()
|
179 |
{
|
180 |
-
require_once
|
181 |
-
|
182 |
}
|
183 |
// --------------------------------------------------------
|
184 |
|
@@ -186,9 +186,9 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
186 |
* Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
|
187 |
* скриптов, стилей) фреймворка.
|
188 |
*
|
189 |
-
* @param
|
190 |
*/
|
191 |
-
public function setBootstap(
|
192 |
{
|
193 |
$this->bootstrap = $bootstrap;
|
194 |
}
|
@@ -196,9 +196,9 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
196 |
/**
|
197 |
* Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
|
198 |
*
|
199 |
-
* @param
|
200 |
*/
|
201 |
-
public function setForms(
|
202 |
{
|
203 |
$this->forms = $forms;
|
204 |
}
|
@@ -246,8 +246,8 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
246 |
*/
|
247 |
public function set_license_provider($name, $class_name)
|
248 |
{
|
249 |
-
if( !isset(WBCR\
|
250 |
-
WBCR\
|
251 |
}
|
252 |
}
|
253 |
|
@@ -265,8 +265,8 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
265 |
*/
|
266 |
public function set_update_repository($name, $class_name)
|
267 |
{
|
268 |
-
if( !isset(WBCR\
|
269 |
-
WBCR\
|
270 |
}
|
271 |
}
|
272 |
|
@@ -276,7 +276,7 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
276 |
* Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
|
277 |
* рекламных объявлений.
|
278 |
*
|
279 |
-
* @return \WBCR\
|
280 |
* @since 1.1
|
281 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
282 |
*/
|
@@ -312,18 +312,18 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
312 |
|
313 |
public function newScriptList()
|
314 |
{
|
315 |
-
return new
|
316 |
}
|
317 |
|
318 |
public function newStyleList()
|
319 |
{
|
320 |
-
return new
|
321 |
}
|
322 |
|
323 |
/**
|
324 |
* Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
|
325 |
* фреймворка pages. Разработчик создает собственный класс, унаследованный от
|
326 |
-
*
|
327 |
* Метод выполняет подключение класса страницы и регистрирует его в модуле фреймворка
|
328 |
* pages.
|
329 |
*
|
@@ -333,7 +333,7 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
333 |
* @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/222887949 - документация по созданию страниц
|
334 |
*
|
335 |
* @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Page_Name.
|
336 |
-
* Регистрируемый класс должен быть унаследован от класса
|
337 |
* @param string $file_path Абсолютный путь к файлу с классом страницы.
|
338 |
*
|
339 |
* @throws Exception
|
@@ -355,11 +355,11 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
355 |
throw new Exception('A class with this name {' . $class_name . '} does not exist.');
|
356 |
}
|
357 |
|
358 |
-
if( !class_exists('
|
359 |
-
throw new Exception('The
|
360 |
}
|
361 |
|
362 |
-
|
363 |
}
|
364 |
|
365 |
/**
|
@@ -409,16 +409,16 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
409 |
/**
|
410 |
* @since 4.1.1 - change hook name
|
411 |
*/
|
412 |
-
if( apply_filters("wbcr/
|
413 |
return;
|
414 |
}
|
415 |
|
416 |
/**
|
417 |
-
*
|
418 |
*
|
419 |
* @since 4.1.1 - deprecated
|
420 |
*/
|
421 |
-
|
422 |
$this
|
423 |
], '4.1.1', "wbcr/factory/plugin_activation");
|
424 |
|
@@ -427,7 +427,7 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
427 |
*
|
428 |
* @since 4.1.2 - deprecated
|
429 |
*/
|
430 |
-
|
431 |
$this
|
432 |
], '4.1.2', "wbcr/factory/before_plugin_activation");
|
433 |
|
@@ -443,16 +443,16 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
443 |
*
|
444 |
* @since 4.1.2 - deprecated
|
445 |
*/
|
446 |
-
|
447 |
$this
|
448 |
], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_activation");
|
449 |
|
450 |
/**
|
451 |
-
*
|
452 |
*
|
453 |
* @since 4.1.1 - deprecated
|
454 |
*/
|
455 |
-
|
456 |
$this
|
457 |
], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_activation");
|
458 |
|
@@ -493,16 +493,16 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
493 |
/**
|
494 |
* @since 4.1.1 - change hook name
|
495 |
*/
|
496 |
-
if( apply_filters("wbcr/
|
497 |
return;
|
498 |
}
|
499 |
|
500 |
/**
|
501 |
-
*
|
502 |
*
|
503 |
* @since 4.1.1 - deprecated
|
504 |
*/
|
505 |
-
|
506 |
$this
|
507 |
], '4.1.1', "wbcr/factory/plugin_deactivation");
|
508 |
|
@@ -511,7 +511,7 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
511 |
*
|
512 |
* @since 4.1.2 - deprecated
|
513 |
*/
|
514 |
-
|
515 |
$this
|
516 |
], '4.1.2', "wbcr/factory/before_plugin_deactivation");
|
517 |
|
@@ -523,11 +523,11 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
523 |
do_action('wbcr/factory/plugin_deactivation', $this);
|
524 |
|
525 |
/**
|
526 |
-
*
|
527 |
*
|
528 |
* @since 4.1.1 - deprecated
|
529 |
*/
|
530 |
-
|
531 |
$this
|
532 |
], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation");
|
533 |
|
@@ -536,7 +536,7 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
536 |
*
|
537 |
* @since 4.1.2 - deprecated
|
538 |
*/
|
539 |
-
|
540 |
$this
|
541 |
], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation");
|
542 |
|
@@ -574,8 +574,8 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
574 |
*/
|
575 |
public function getPluginPageUrl($page_id, $args = [])
|
576 |
{
|
577 |
-
if( !class_exists('
|
578 |
-
throw new Exception('The
|
579 |
}
|
580 |
|
581 |
if( !is_admin() ) {
|
@@ -584,7 +584,7 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
584 |
return null;
|
585 |
}
|
586 |
|
587 |
-
return
|
588 |
}
|
589 |
|
590 |
/**
|
@@ -594,13 +594,13 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
594 |
* @param $slug
|
595 |
* param $premium
|
596 |
*
|
597 |
-
* @return \WBCR\
|
598 |
*/
|
599 |
public function get_install_component_button($component_type, $slug)
|
600 |
{
|
601 |
-
require_once
|
602 |
|
603 |
-
return new \WBCR\
|
604 |
}
|
605 |
|
606 |
/**
|
@@ -609,13 +609,13 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
609 |
* @param $component_type
|
610 |
* @param $slug
|
611 |
*
|
612 |
-
* @return \WBCR\
|
613 |
*/
|
614 |
public function get_delete_component_button($component_type, $slug)
|
615 |
{
|
616 |
-
require_once
|
617 |
|
618 |
-
return new WBCR\
|
619 |
}
|
620 |
|
621 |
/**
|
@@ -798,12 +798,12 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
798 |
/**
|
799 |
* @since 4.1.1 - deprecated
|
800 |
*/
|
801 |
-
|
802 |
|
803 |
/**
|
804 |
* @since 4.1.1 - add
|
805 |
*/
|
806 |
-
do_action('wbcr/
|
807 |
}
|
808 |
|
809 |
|
@@ -830,7 +830,7 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
830 |
});
|
831 |
|
832 |
if( is_admin() ) {
|
833 |
-
add_filter('
|
834 |
|
835 |
register_activation_hook($this->get_paths()->main_file, [$this, 'activation_hook']);
|
836 |
register_deactivation_hook($this->get_paths()->main_file, [$this, 'deactivation_hook']);
|
@@ -846,7 +846,7 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
846 |
*/
|
847 |
protected function init_plugin_migrations()
|
848 |
{
|
849 |
-
new WBCR\
|
850 |
}
|
851 |
|
852 |
/**
|
@@ -857,7 +857,7 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
857 |
*/
|
858 |
protected function init_plugin_notices()
|
859 |
{
|
860 |
-
new Wbcr\
|
861 |
}
|
862 |
|
863 |
/**
|
@@ -873,7 +873,7 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
873 |
protected function init_plugin_updates()
|
874 |
{
|
875 |
if( $this->has_updates ) {
|
876 |
-
new WBCR\
|
877 |
}
|
878 |
}
|
879 |
|
@@ -896,11 +896,11 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
|
|
896 |
}
|
897 |
|
898 |
// Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
|
899 |
-
$this->premium = WBCR\
|
900 |
|
901 |
// Подключаем премиум апгрейдер
|
902 |
if( isset($this->license_settings['has_updates']) && $this->license_settings['has_updates'] ) {
|
903 |
-
new WBCR\
|
904 |
}
|
905 |
}
|
906 |
}
|
24 |
* @package factory-core
|
25 |
*
|
26 |
*/
|
27 |
+
abstract class Wbcr_Factory445_Plugin extends Wbcr_Factory445_Base {
|
28 |
|
29 |
/**
|
30 |
+
* Instance class Wbcr_Factory445_Request, required manages http requests
|
31 |
*
|
32 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
|
33 |
+
* @var Wbcr_Factory445_Request
|
34 |
*/
|
35 |
public $request;
|
36 |
|
37 |
/**
|
38 |
* @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
|
39 |
+
* @var \WBCR\Factory_445\Premium\Provider
|
40 |
*/
|
41 |
public $premium;
|
42 |
|
43 |
/**
|
44 |
* The Bootstrap Manager class
|
45 |
*
|
46 |
+
* @var Wbcr_FactoryBootstrap445_Manager
|
47 |
*/
|
48 |
public $bootstrap;
|
49 |
|
50 |
/**
|
51 |
* The Bootstrap Manager class
|
52 |
*
|
53 |
+
* @var Wbcr_FactoryForms442_Manager
|
54 |
*/
|
55 |
public $forms;
|
56 |
|
57 |
/**
|
58 |
+
* Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory445_Activator.
|
59 |
* Классы активации используются для упаковки набора функций, которые нужно выполнить во время
|
60 |
* активации плагина.
|
61 |
*
|
62 |
+
* @var array[] Wbcr_Factory445_Activator
|
63 |
*/
|
64 |
protected $activator_class = [];
|
65 |
|
86 |
*
|
87 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
88 |
* @since 4.1.9
|
89 |
+
* @var WBCR\Factory_Adverts_123\Base
|
90 |
*/
|
91 |
private $adverts;
|
92 |
|
115 |
|
116 |
parent::__construct($plugin_path, $data);
|
117 |
|
118 |
+
$this->request = new Wbcr_Factory445_Request();
|
119 |
+
//$this->route = new Wbcr_Factory445_Route();
|
120 |
|
121 |
// INIT PLUGIN FRAMEWORK MODULES
|
122 |
// Framework modules should always be loaded first,
|
144 |
$this->init_plugin_components();
|
145 |
|
146 |
if( wp_doing_ajax() && isset($_REQUEST['action']) ) {
|
147 |
+
if( "wfactory-445-intall-component" == $_REQUEST['action'] ) {
|
148 |
+
add_action('wp_ajax_wfactory-445-intall-component', [$this, 'ajax_handler_install_components']);
|
149 |
}
|
150 |
|
151 |
+
if( "wfactory-445-prepare-component" == $_REQUEST['action'] ) {
|
152 |
+
add_action('wp_ajax_wfactory-445-prepare-component', [$this, 'ajax_handler_prepare_component']);
|
153 |
}
|
154 |
+
if( "wfactory-445-creativemotion-install-plugin" == $_REQUEST['action'] ) {
|
155 |
+
add_action('wp_ajax_wfactory-445-creativemotion-install-plugin', [
|
156 |
$this,
|
157 |
'ajax_handler_install_creativemotion_plugins'
|
158 |
]);
|
165 |
|
166 |
public function ajax_handler_install_components()
|
167 |
{
|
168 |
+
require_once FACTORY_445_DIR . '/ajax/install-addons.php';
|
169 |
+
wfactory_445_install_components($this);
|
170 |
}
|
171 |
|
172 |
public function ajax_handler_prepare_component()
|
173 |
{
|
174 |
+
require_once FACTORY_445_DIR . '/ajax/install-addons.php';
|
175 |
+
wfactory_445_prepare_component($this);
|
176 |
}
|
177 |
|
178 |
public function ajax_handler_install_creativemotion_plugins()
|
179 |
{
|
180 |
+
require_once FACTORY_445_DIR . '/ajax/install-addons.php';
|
181 |
+
wfactory_445_creativemotion_install_plugin($this);
|
182 |
}
|
183 |
// --------------------------------------------------------
|
184 |
|
186 |
* Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
|
187 |
* скриптов, стилей) фреймворка.
|
188 |
*
|
189 |
+
* @param Wbcr_FactoryBootstrap445_Manager $bootstrap
|
190 |
*/
|
191 |
+
public function setBootstap(Wbcr_FactoryBootstrap445_Manager $bootstrap)
|
192 |
{
|
193 |
$this->bootstrap = $bootstrap;
|
194 |
}
|
196 |
/**
|
197 |
* Устанавливает класс менеджер, которому будет делегирована работа с html формами фреймворка.
|
198 |
*
|
199 |
+
* @param Wbcr_FactoryForms442_Manager $forms
|
200 |
*/
|
201 |
+
public function setForms(Wbcr_FactoryForms442_Manager $forms)
|
202 |
{
|
203 |
$this->forms = $forms;
|
204 |
}
|
246 |
*/
|
247 |
public function set_license_provider($name, $class_name)
|
248 |
{
|
249 |
+
if( !isset(WBCR\Factory_445\Premium\Manager::$providers[$name]) ) {
|
250 |
+
WBCR\Factory_445\Premium\Manager::$providers[$name] = $class_name;
|
251 |
}
|
252 |
}
|
253 |
|
265 |
*/
|
266 |
public function set_update_repository($name, $class_name)
|
267 |
{
|
268 |
+
if( !isset(WBCR\Factory_445\Updates\Upgrader::$repositories[$name]) ) {
|
269 |
+
WBCR\Factory_445\Updates\Upgrader::$repositories[$name] = $class_name;
|
270 |
}
|
271 |
}
|
272 |
|
276 |
* Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
|
277 |
* рекламных объявлений.
|
278 |
*
|
279 |
+
* @return \WBCR\Factory_Adverts_123\Base
|
280 |
* @since 1.1
|
281 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
282 |
*/
|
312 |
|
313 |
public function newScriptList()
|
314 |
{
|
315 |
+
return new Wbcr_Factory445_ScriptList($this);
|
316 |
}
|
317 |
|
318 |
public function newStyleList()
|
319 |
{
|
320 |
+
return new Wbcr_Factory445_StyleList($this);
|
321 |
}
|
322 |
|
323 |
/**
|
324 |
* Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
|
325 |
* фреймворка pages. Разработчик создает собственный класс, унаследованный от
|
326 |
+
* Wbcr_FactoryPages444_AdminPage, а затем регистрирует его через этот метод.
|
327 |
* Метод выполняет подключение класса страницы и регистрирует его в модуле фреймворка
|
328 |
* pages.
|
329 |
*
|
333 |
* @see https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/222887949 - документация по созданию страниц
|
334 |
*
|
335 |
* @param string $class_name Имя регистрируемого класса страницы. Пример: WCL_Page_Name.
|
336 |
+
* Регистрируемый класс должен быть унаследован от класса Wbcr_FactoryPages444_AdminPage.
|
337 |
* @param string $file_path Абсолютный путь к файлу с классом страницы.
|
338 |
*
|
339 |
* @throws Exception
|
355 |
throw new Exception('A class with this name {' . $class_name . '} does not exist.');
|
356 |
}
|
357 |
|
358 |
+
if( !class_exists('Wbcr_FactoryPages444') ) {
|
359 |
+
throw new Exception('The factory_pages_444 module is not included.');
|
360 |
}
|
361 |
|
362 |
+
Wbcr_FactoryPages444::register($this, $class_name);
|
363 |
}
|
364 |
|
365 |
/**
|
409 |
/**
|
410 |
* @since 4.1.1 - change hook name
|
411 |
*/
|
412 |
+
if( apply_filters("wbcr/factory_445/cancel_plugin_activation_{$this->plugin_name}", false) ) {
|
413 |
return;
|
414 |
}
|
415 |
|
416 |
/**
|
417 |
+
* wbcr_factory_445_plugin_activation
|
418 |
*
|
419 |
* @since 4.1.1 - deprecated
|
420 |
*/
|
421 |
+
wbcr_factory_445_do_action_deprecated('wbcr_factory_445_plugin_activation', [
|
422 |
$this
|
423 |
], '4.1.1', "wbcr/factory/plugin_activation");
|
424 |
|
427 |
*
|
428 |
* @since 4.1.2 - deprecated
|
429 |
*/
|
430 |
+
wbcr_factory_445_do_action_deprecated('wbcr/factory/plugin_activation', [
|
431 |
$this
|
432 |
], '4.1.2', "wbcr/factory/before_plugin_activation");
|
433 |
|
443 |
*
|
444 |
* @since 4.1.2 - deprecated
|
445 |
*/
|
446 |
+
wbcr_factory_445_do_action_deprecated("wbcr/factory/plugin_{$this->plugin_name}_activation", [
|
447 |
$this
|
448 |
], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_activation");
|
449 |
|
450 |
/**
|
451 |
+
* wbcr_factory_445_plugin_activation_' . $this->plugin_name
|
452 |
*
|
453 |
* @since 4.1.1 - deprecated
|
454 |
*/
|
455 |
+
wbcr_factory_445_do_action_deprecated('wbcr_factory_445_plugin_activation_' . $this->plugin_name, [
|
456 |
$this
|
457 |
], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_activation");
|
458 |
|
493 |
/**
|
494 |
* @since 4.1.1 - change hook name
|
495 |
*/
|
496 |
+
if( apply_filters("wbcr/factory_445/cancel_plugin_deactivation_{$this->plugin_name}", false) ) {
|
497 |
return;
|
498 |
}
|
499 |
|
500 |
/**
|
501 |
+
* wbcr_factory_445_plugin_deactivation
|
502 |
*
|
503 |
* @since 4.1.1 - deprecated
|
504 |
*/
|
505 |
+
wbcr_factory_445_do_action_deprecated('wbcr_factory_445_plugin_deactivation', [
|
506 |
$this
|
507 |
], '4.1.1', "wbcr/factory/plugin_deactivation");
|
508 |
|
511 |
*
|
512 |
* @since 4.1.2 - deprecated
|
513 |
*/
|
514 |
+
wbcr_factory_445_do_action_deprecated('wbcr/factory/plugin_deactivation', [
|
515 |
$this
|
516 |
], '4.1.2', "wbcr/factory/before_plugin_deactivation");
|
517 |
|
523 |
do_action('wbcr/factory/plugin_deactivation', $this);
|
524 |
|
525 |
/**
|
526 |
+
* wbcr_factory_445_plugin_deactivation_ . $this->plugin_name
|
527 |
*
|
528 |
* @since 4.1.1 - deprecated
|
529 |
*/
|
530 |
+
wbcr_factory_445_do_action_deprecated('wbcr_factory_445_plugin_deactivation_' . $this->plugin_name, [
|
531 |
$this
|
532 |
], '4.1.1', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation");
|
533 |
|
536 |
*
|
537 |
* @since 4.1.2 - deprecated
|
538 |
*/
|
539 |
+
wbcr_factory_445_do_action_deprecated("wbcr/factory/plugin_{$this->plugin_name}_deactivation", [
|
540 |
$this
|
541 |
], '4.1.2', "wbcr/factory/before_plugin_{$this->plugin_name}_deactivation");
|
542 |
|
574 |
*/
|
575 |
public function getPluginPageUrl($page_id, $args = [])
|
576 |
{
|
577 |
+
if( !class_exists('Wbcr_FactoryPages444') ) {
|
578 |
+
throw new Exception('The factory_pages_444 module is not included.');
|
579 |
}
|
580 |
|
581 |
if( !is_admin() ) {
|
584 |
return null;
|
585 |
}
|
586 |
|
587 |
+
return Wbcr_FactoryPages444::getPageUrl($this, $page_id, $args);
|
588 |
}
|
589 |
|
590 |
/**
|
594 |
* @param $slug
|
595 |
* param $premium
|
596 |
*
|
597 |
+
* @return \WBCR\Factory_445\Components\Install_Button
|
598 |
*/
|
599 |
public function get_install_component_button($component_type, $slug)
|
600 |
{
|
601 |
+
require_once FACTORY_445_DIR . '/includes/components/class-install-component-button.php';
|
602 |
|
603 |
+
return new \WBCR\Factory_445\Components\Install_Button($this, $component_type, $slug);
|
604 |
}
|
605 |
|
606 |
/**
|
609 |
* @param $component_type
|
610 |
* @param $slug
|
611 |
*
|
612 |
+
* @return \WBCR\Factory_445\Components\Delete_Button
|
613 |
*/
|
614 |
public function get_delete_component_button($component_type, $slug)
|
615 |
{
|
616 |
+
require_once FACTORY_445_DIR . '/includes/components/class-delete-component-button.php';
|
617 |
|
618 |
+
return new WBCR\Factory_445\Components\Delete_Button($this, $component_type, $slug);
|
619 |
}
|
620 |
|
621 |
/**
|
798 |
/**
|
799 |
* @since 4.1.1 - deprecated
|
800 |
*/
|
801 |
+
wbcr_factory_445_do_action_deprecated('wbcr_factory_445_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_445/modules_loaded-" . $this->plugin_name);
|
802 |
|
803 |
/**
|
804 |
* @since 4.1.1 - add
|
805 |
*/
|
806 |
+
do_action('wbcr/factory_445/modules_loaded-' . $this->plugin_name);
|
807 |
}
|
808 |
|
809 |
|
830 |
});
|
831 |
|
832 |
if( is_admin() ) {
|
833 |
+
add_filter('wbcr_factory_445_core_admin_allow_multisite', '__return_true');
|
834 |
|
835 |
register_activation_hook($this->get_paths()->main_file, [$this, 'activation_hook']);
|
836 |
register_deactivation_hook($this->get_paths()->main_file, [$this, 'deactivation_hook']);
|
846 |
*/
|
847 |
protected function init_plugin_migrations()
|
848 |
{
|
849 |
+
new WBCR\Factory_445\Migrations($this);
|
850 |
}
|
851 |
|
852 |
/**
|
857 |
*/
|
858 |
protected function init_plugin_notices()
|
859 |
{
|
860 |
+
new Wbcr\Factory_445\Notices($this);
|
861 |
}
|
862 |
|
863 |
/**
|
873 |
protected function init_plugin_updates()
|
874 |
{
|
875 |
if( $this->has_updates ) {
|
876 |
+
new WBCR\Factory_445\Updates\Upgrader($this);
|
877 |
}
|
878 |
}
|
879 |
|
896 |
}
|
897 |
|
898 |
// Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
|
899 |
+
$this->premium = WBCR\Factory_445\Premium\Manager::instance($this, $this->license_settings);
|
900 |
|
901 |
// Подключаем премиум апгрейдер
|
902 |
if( isset($this->license_settings['has_updates']) && $this->license_settings['has_updates'] ) {
|
903 |
+
new WBCR\Factory_445\Updates\Premium_Upgrader($this);
|
904 |
}
|
905 |
}
|
906 |
}
|
libs/factory/core/includes/class-factory-plugin-base.php
CHANGED
@@ -5,7 +5,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
5 |
}
|
6 |
|
7 |
/**
|
8 |
-
* Базовый класс для создания нового плагина. Полную реализацию класса смотрите в
|
9 |
*
|
10 |
* Документация по классу: https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/392724484
|
11 |
* Документация по созданию плагина: https://webcraftic.atlassian.net/wiki/spaces/CNCFC/pages/327828
|
@@ -17,9 +17,9 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
17 |
* @since 1.0.0
|
18 |
* @package factory-core
|
19 |
*/
|
20 |
-
class
|
21 |
|
22 |
-
use WBCR\
|
23 |
|
24 |
/**
|
25 |
* Обязательное свойство. Префикс, используется для создания пространство имен.
|
@@ -81,7 +81,7 @@ class Wbcr_Factory444_Base {
|
|
81 |
* https://robin-image-optimizer.webcraftic.com/premium-features.
|
82 |
*
|
83 |
* Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
|
84 |
-
* экземпляр класса \WBCR\
|
85 |
* Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
|
86 |
* можете изменить все ссылки в одном месте.
|
87 |
*
|
@@ -127,7 +127,7 @@ class Wbcr_Factory444_Base {
|
|
127 |
* к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
|
128 |
* взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
|
129 |
* индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
|
130 |
-
* WBCR\
|
131 |
*
|
132 |
* На текущий момент существует только реализация для freemius провайдера.
|
133 |
*
|
@@ -177,9 +177,9 @@ class Wbcr_Factory444_Base {
|
|
177 |
* }
|
178 |
*/
|
179 |
protected $load_factory_modules = [
|
180 |
-
[ 'libs/factory/bootstrap', '
|
181 |
-
[ 'libs/factory/forms', '
|
182 |
-
[ 'libs/factory/pages', '
|
183 |
];
|
184 |
|
185 |
/**
|
@@ -209,20 +209,20 @@ class Wbcr_Factory444_Base {
|
|
209 |
|
210 |
|
211 |
/**
|
212 |
-
* Экземпляр класса \WBCR\
|
213 |
* о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
|
214 |
* ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
|
215 |
*
|
216 |
-
* @var \WBCR\
|
217 |
*/
|
218 |
protected $support;
|
219 |
|
220 |
/**
|
221 |
-
* Экземпляр класса \WBCR\
|
222 |
* путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
|
223 |
* или его входного файла.
|
224 |
*
|
225 |
-
* @var \WBCR\
|
226 |
*/
|
227 |
protected $paths;
|
228 |
|
@@ -270,8 +270,8 @@ class Wbcr_Factory444_Base {
|
|
270 |
throw new Exception( 'One of the required attributes has not been passed (prefix, plugin_title, plugin_name, plugin_version, plugin_text_domain).' );
|
271 |
}
|
272 |
|
273 |
-
$this->support = new \WBCR\
|
274 |
-
$this->paths = new \WBCR\
|
275 |
|
276 |
// used only in the module 'updates'
|
277 |
$this->plugin_slug = ! empty( $this->plugin_name ) ? $this->plugin_name : basename( $plugin_file );
|
@@ -391,7 +391,7 @@ class Wbcr_Factory444_Base {
|
|
391 |
* Проверяет, включен ли премиум для этого плагина или нет.
|
392 |
*
|
393 |
* @return bool Возвращает true, если премиум пакет включен для этого плагина.
|
394 |
-
* См.
|
395 |
*/
|
396 |
public function has_premium() {
|
397 |
return $this->has_premium;
|
@@ -400,7 +400,7 @@ class Wbcr_Factory444_Base {
|
|
400 |
/**
|
401 |
* Позволяет получить заголовок плагина.
|
402 |
*
|
403 |
-
* @return string Возвращает заголовок плагина. См.
|
404 |
*/
|
405 |
public function getPluginTitle() {
|
406 |
return $this->plugin_title;
|
@@ -409,7 +409,7 @@ class Wbcr_Factory444_Base {
|
|
409 |
/**
|
410 |
* Позволяет получить префикс плагина.
|
411 |
*
|
412 |
-
* @return string Возвращает префикс плагина.См.
|
413 |
*/
|
414 |
public function getPrefix() {
|
415 |
return $this->prefix;
|
@@ -418,7 +418,7 @@ class Wbcr_Factory444_Base {
|
|
418 |
/**
|
419 |
* Позволяет получить имя плагина.
|
420 |
*
|
421 |
-
* @return string Возвращает имя плагина. См.
|
422 |
*/
|
423 |
public function getPluginName() {
|
424 |
return $this->plugin_name;
|
@@ -427,7 +427,7 @@ class Wbcr_Factory444_Base {
|
|
427 |
/**
|
428 |
* Позволяет получить версию плагина.
|
429 |
*
|
430 |
-
* @return string Возвращает версию плагина. См.
|
431 |
*/
|
432 |
public function getPluginVersion() {
|
433 |
return $this->plugin_version;
|
@@ -449,7 +449,7 @@ class Wbcr_Factory444_Base {
|
|
449 |
* какие-то данные не описанные в интерфейсе этого плагина.
|
450 |
*
|
451 |
* @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
|
452 |
-
*
|
453 |
*
|
454 |
* @return null
|
455 |
*/
|
@@ -462,18 +462,18 @@ class Wbcr_Factory444_Base {
|
|
462 |
}
|
463 |
|
464 |
/**
|
465 |
-
* Предоставляет доступ к экземпляру класса \WBCR\
|
466 |
*
|
467 |
-
* @return \WBCR\
|
468 |
*/
|
469 |
public function get_support() {
|
470 |
return $this->support;
|
471 |
}
|
472 |
|
473 |
/**
|
474 |
-
* Предоставляет доступ к экземпляру класса \WBCR\
|
475 |
*
|
476 |
-
* @return \WBCR\
|
477 |
*/
|
478 |
public function get_paths() {
|
479 |
return $this->paths;
|
@@ -482,7 +482,7 @@ class Wbcr_Factory444_Base {
|
|
482 |
/**
|
483 |
* Позволяет получить сырые данные плагина в виде объекта StdClass.
|
484 |
*
|
485 |
-
* @return object Возвращает объект с сырыми данными плагина. См.
|
486 |
*/
|
487 |
public function getPluginInfo() {
|
488 |
return (object) $this->plugin_data;
|
5 |
}
|
6 |
|
7 |
/**
|
8 |
+
* Базовый класс для создания нового плагина. Полную реализацию класса смотрите в Wbcr_Factory445_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_Factory445_Base {
|
21 |
|
22 |
+
use WBCR\Factory_445\Options;
|
23 |
|
24 |
/**
|
25 |
* Обязательное свойство. Префикс, используется для создания пространство имен.
|
81 |
* https://robin-image-optimizer.webcraftic.com/premium-features.
|
82 |
*
|
83 |
* Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
|
84 |
+
* экземпляр класса \WBCR\Factory_445\Entities\Support, для получения информации о сайте плагина.
|
85 |
* Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
|
86 |
* можете изменить все ссылки в одном месте.
|
87 |
*
|
127 |
* к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
|
128 |
* взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
|
129 |
* индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
|
130 |
+
* WBCR\Factory_445\Premium\Provider > WBCR\Factory_Freemius_133\Premium\Provider
|
131 |
*
|
132 |
* На текущий момент существует только реализация для freemius провайдера.
|
133 |
*
|
177 |
* }
|
178 |
*/
|
179 |
protected $load_factory_modules = [
|
180 |
+
[ 'libs/factory/bootstrap', 'factory_bootstrap_445', 'admin' ],
|
181 |
+
[ 'libs/factory/forms', 'factory_forms_442', 'admin' ],
|
182 |
+
[ 'libs/factory/pages', 'factory_pages_444', 'admin' ],
|
183 |
];
|
184 |
|
185 |
/**
|
209 |
|
210 |
|
211 |
/**
|
212 |
+
* Экземпляр класса \WBCR\Factory_445\Entities\Support используется для получения информации
|
213 |
* о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
|
214 |
* ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
|
215 |
*
|
216 |
+
* @var \WBCR\Factory_445\Entities\Support
|
217 |
*/
|
218 |
protected $support;
|
219 |
|
220 |
/**
|
221 |
+
* Экземпляр класса \WBCR\Factory_445\Entities\Paths используется для получения информации о
|
222 |
* путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
|
223 |
* или его входного файла.
|
224 |
*
|
225 |
+
* @var \WBCR\Factory_445\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_445\Entities\Support( $this->support_details );
|
274 |
+
$this->paths = new \WBCR\Factory_445\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_Factory445_Base::has_premium
|
395 |
*/
|
396 |
public function has_premium() {
|
397 |
return $this->has_premium;
|
400 |
/**
|
401 |
* Позволяет получить заголовок плагина.
|
402 |
*
|
403 |
+
* @return string Возвращает заголовок плагина. См. Wbcr_Factory445_Base::plugin_title
|
404 |
*/
|
405 |
public function getPluginTitle() {
|
406 |
return $this->plugin_title;
|
409 |
/**
|
410 |
* Позволяет получить префикс плагина.
|
411 |
*
|
412 |
+
* @return string Возвращает префикс плагина.См. Wbcr_Factory445_Base::prefix
|
413 |
*/
|
414 |
public function getPrefix() {
|
415 |
return $this->prefix;
|
418 |
/**
|
419 |
* Позволяет получить имя плагина.
|
420 |
*
|
421 |
+
* @return string Возвращает имя плагина. См. Wbcr_Factory445_Base::plugin_name
|
422 |
*/
|
423 |
public function getPluginName() {
|
424 |
return $this->plugin_name;
|
427 |
/**
|
428 |
* Позволяет получить версию плагина.
|
429 |
*
|
430 |
+
* @return string Возвращает версию плагина. См. Wbcr_Factory445_Base::plugin_version
|
431 |
*/
|
432 |
public function getPluginVersion() {
|
433 |
return $this->plugin_version;
|
449 |
* какие-то данные не описанные в интерфейсе этого плагина.
|
450 |
*
|
451 |
* @param string $attr_name Имя атрибута, который нужно получить. Идентично ключу в массиве
|
452 |
+
* Wbcr_Factory445_Base::plugin_data
|
453 |
*
|
454 |
* @return null
|
455 |
*/
|
462 |
}
|
463 |
|
464 |
/**
|
465 |
+
* Предоставляет доступ к экземпляру класса \WBCR\Factory_445\Entities\Support.
|
466 |
*
|
467 |
+
* @return \WBCR\Factory_445\Entities\Support
|
468 |
*/
|
469 |
public function get_support() {
|
470 |
return $this->support;
|
471 |
}
|
472 |
|
473 |
/**
|
474 |
+
* Предоставляет доступ к экземпляру класса \WBCR\Factory_445\Entities\Paths.
|
475 |
*
|
476 |
+
* @return \WBCR\Factory_445\Entities\Paths
|
477 |
*/
|
478 |
public function get_paths() {
|
479 |
return $this->paths;
|
482 |
/**
|
483 |
* Позволяет получить сырые данные плагина в виде объекта StdClass.
|
484 |
*
|
485 |
+
* @return object Возвращает объект с сырыми данными плагина. См. Wbcr_Factory445_Base::plugin_data
|
486 |
*/
|
487 |
public function getPluginInfo() {
|
488 |
return (object) $this->plugin_data;
|
libs/factory/core/includes/class-factory-requests.php
CHANGED
@@ -11,7 +11,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
11 |
* @package factory-core
|
12 |
*/
|
13 |
|
14 |
-
class
|
15 |
|
16 |
/**
|
17 |
* @param null $param
|
11 |
* @package factory-core
|
12 |
*/
|
13 |
|
14 |
+
class Wbcr_Factory445_Request {
|
15 |
|
16 |
/**
|
17 |
* @param null $param
|
libs/factory/core/includes/class-factory-requirements.php
CHANGED
@@ -12,8 +12,8 @@
|
|
12 |
* @since 4.0.9
|
13 |
*/
|
14 |
// @formatter:off
|
15 |
-
if ( ! class_exists( '
|
16 |
-
class
|
17 |
|
18 |
/**
|
19 |
* Factory framework version
|
@@ -273,21 +273,21 @@ if ( ! class_exists( 'Wbcr_Factory444_Requirements' ) ) {
|
|
273 |
* @return string
|
274 |
*/
|
275 |
protected function get_php_incompat_text() {
|
276 |
-
return sprintf( __( 'You need to update the PHP version to %s or higher!', '
|
277 |
}
|
278 |
|
279 |
/**
|
280 |
* @return string
|
281 |
*/
|
282 |
protected function get_wp_incompat_text() {
|
283 |
-
return sprintf( __( 'You need to update WordPress to %s or higher!', '
|
284 |
}
|
285 |
|
286 |
/**
|
287 |
* @return string
|
288 |
*/
|
289 |
protected function get_plugin_already_activate_text() {
|
290 |
-
return sprintf( __( 'Plugin %s is already activated, you are trying to activate it again.', '
|
291 |
}
|
292 |
}
|
293 |
}
|
12 |
* @since 4.0.9
|
13 |
*/
|
14 |
// @formatter:off
|
15 |
+
if ( ! class_exists( 'Wbcr_Factory445_Requirements' ) ) {
|
16 |
+
class Wbcr_Factory445_Requirements {
|
17 |
|
18 |
/**
|
19 |
* Factory framework version
|
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_445' ), $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_445' ), $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_445' ), $this->plugin_title );
|
291 |
}
|
292 |
}
|
293 |
}
|
libs/factory/core/includes/components/class-delete-component-button.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* This file groups the settings for quick setup
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_445\Components;
|
4 |
|
5 |
/**
|
6 |
* This file groups the settings for quick setup
|
libs/factory/core/includes/components/class-install-component-button.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
/**
|
6 |
* This file groups the settings for quick setup
|
@@ -22,7 +22,7 @@ class Install_Button {
|
|
22 |
|
23 |
protected $classes = [
|
24 |
'button',
|
25 |
-
'wfactory-
|
26 |
];
|
27 |
protected $data = [];
|
28 |
protected $base_path;
|
@@ -37,7 +37,7 @@ class Install_Button {
|
|
37 |
* @throws \Exception
|
38 |
* @since 4.3.3
|
39 |
*/
|
40 |
-
public function __construct(\
|
41 |
{
|
42 |
if( empty($type) || !is_string($plugin_slug) ) {
|
43 |
throw new \Exception('Empty type or plugin_slug attribute.');
|
@@ -420,13 +420,13 @@ class Install_Button {
|
|
420 |
protected function get_i18n()
|
421 |
{
|
422 |
return [
|
423 |
-
'activate' => __('Activate', '
|
424 |
-
'install' => __('Install', '
|
425 |
-
'deactivate' => __('Deactivate', '
|
426 |
-
'delete' => __('Delete', '
|
427 |
-
'loading' => __('Please wait...', '
|
428 |
-
'preparation' => __('Preparation...', '
|
429 |
-
'read' => __('Read more', '
|
430 |
];
|
431 |
}
|
432 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_445\Components;
|
4 |
|
5 |
/**
|
6 |
* This file groups the settings for quick setup
|
22 |
|
23 |
protected $classes = [
|
24 |
'button',
|
25 |
+
'wfactory-445-process-button'
|
26 |
];
|
27 |
protected $data = [];
|
28 |
protected $base_path;
|
37 |
* @throws \Exception
|
38 |
* @since 4.3.3
|
39 |
*/
|
40 |
+
public function __construct(\Wbcr_Factory445_Plugin $plugin, $type, $plugin_slug)
|
41 |
{
|
42 |
if( empty($type) || !is_string($plugin_slug) ) {
|
43 |
throw new \Exception('Empty type or plugin_slug attribute.');
|
420 |
protected function get_i18n()
|
421 |
{
|
422 |
return [
|
423 |
+
'activate' => __('Activate', 'wbcr_factory_445'),
|
424 |
+
'install' => __('Install', 'wbcr_factory_445'),
|
425 |
+
'deactivate' => __('Deactivate', 'wbcr_factory_445'),
|
426 |
+
'delete' => __('Delete', 'wbcr_factory_445'),
|
427 |
+
'loading' => __('Please wait...', 'wbcr_factory_445'),
|
428 |
+
'preparation' => __('Preparation...', 'wbcr_factory_445'),
|
429 |
+
'read' => __('Read more', 'wbcr_factory_445')
|
430 |
];
|
431 |
}
|
432 |
|
libs/factory/core/includes/entities/class-factory-paths.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
if ( ! defined( 'ABSPATH' ) ) {
|
6 |
exit;
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_445\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_445\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_444_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_444_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_444_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_445_deprecated_hook()
|
57 |
*
|
58 |
*/
|
59 |
+
function wbcr_factory_445_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_445_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_445_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_445_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_445_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_445_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_445\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_445\Premium;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory445_Plugin;
|
7 |
|
8 |
// Exit if accessed directly
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
24 |
public static $providers;
|
25 |
|
26 |
/**
|
27 |
+
* @var Wbcr_Factory445_Plugin
|
28 |
*/
|
29 |
protected $plugin;
|
30 |
|
36 |
/**
|
37 |
* Manager constructor.
|
38 |
*
|
39 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
40 |
* @param array $settings
|
41 |
*
|
42 |
* @throws Exception
|
43 |
*/
|
44 |
+
public function __construct( Wbcr_Factory445_Plugin $plugin, array $settings ) {
|
45 |
$this->plugin = $plugin;
|
46 |
$this->settings = $settings;
|
47 |
}
|
48 |
|
49 |
/**
|
50 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
51 |
* @param array $settings
|
52 |
*
|
53 |
+
* @return \WBCR\Factory_Freemius_133\Premium\Provider
|
54 |
* @throws Exception
|
55 |
*/
|
56 |
+
public static function instance( Wbcr_Factory445_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_133\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_445\Premium\Provider interface!" );
|
74 |
}
|
75 |
|
76 |
return new self::$providers[ $provider_name ]( $this->plugin, $this->settings );
|
libs/factory/core/includes/premium/class-factory-provider-abstract.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use Exception;
|
6 |
-
use
|
7 |
|
8 |
// Exit if accessed directly
|
9 |
if( !defined('ABSPATH') ) {
|
@@ -21,7 +21,7 @@ if( !defined('ABSPATH') ) {
|
|
21 |
abstract class Provider {
|
22 |
|
23 |
/**
|
24 |
-
* @var
|
25 |
*/
|
26 |
protected $plugin;
|
27 |
|
@@ -38,10 +38,10 @@ abstract class Provider {
|
|
38 |
/**
|
39 |
* Provider constructor.
|
40 |
*
|
41 |
-
* @param
|
42 |
* @param array $settings
|
43 |
*/
|
44 |
-
public function __construct(
|
45 |
{
|
46 |
$this->plugin = $plugin;
|
47 |
$this->settings = $settings;
|
@@ -244,7 +244,7 @@ abstract class Provider {
|
|
244 |
abstract public function get_billing_cycle();
|
245 |
|
246 |
/**
|
247 |
-
* @return \WBCR\
|
248 |
*/
|
249 |
abstract public function get_license();
|
250 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_445\Premium;
|
4 |
|
5 |
use Exception;
|
6 |
+
use Wbcr_Factory445_Plugin;
|
7 |
|
8 |
// Exit if accessed directly
|
9 |
if( !defined('ABSPATH') ) {
|
21 |
abstract class Provider {
|
22 |
|
23 |
/**
|
24 |
+
* @var Wbcr_Factory445_Plugin
|
25 |
*/
|
26 |
protected $plugin;
|
27 |
|
38 |
/**
|
39 |
* Provider constructor.
|
40 |
*
|
41 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
42 |
* @param array $settings
|
43 |
*/
|
44 |
+
public function __construct(Wbcr_Factory445_Plugin $plugin, array $settings)
|
45 |
{
|
46 |
$this->plugin = $plugin;
|
47 |
$this->settings = $settings;
|
244 |
abstract public function get_billing_cycle();
|
245 |
|
246 |
/**
|
247 |
+
* @return \WBCR\Factory_445\Premium\Interfaces\License
|
248 |
*/
|
249 |
abstract public function get_license();
|
250 |
|
libs/factory/core/includes/updates/class-factory-premium-upgrader.php
CHANGED
@@ -1,12 +1,12 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use Exception;
|
6 |
use Plugin_Installer_Skin;
|
7 |
use Plugin_Upgrader;
|
8 |
-
use
|
9 |
-
use
|
10 |
use WP_Filesystem_Base;
|
11 |
use WP_Upgrader;
|
12 |
use WP_Upgrader_Skin;
|
@@ -45,13 +45,13 @@ class Premium_Upgrader extends Upgrader {
|
|
45 |
* @param $args
|
46 |
* @param bool $is_premium
|
47 |
*
|
48 |
-
* @param
|
49 |
*
|
50 |
* @throws Exception
|
51 |
* @since 4.1.1
|
52 |
*
|
53 |
*/
|
54 |
-
public function __construct(
|
55 |
{
|
56 |
parent::__construct($plugin);
|
57 |
|
@@ -242,9 +242,9 @@ class Premium_Upgrader extends Upgrader {
|
|
242 |
/**
|
243 |
* Выводит уведомление внутри интерфейса плагина, на всех страницах плагина.
|
244 |
*
|
245 |
-
* @param
|
246 |
*
|
247 |
-
* @param
|
248 |
*
|
249 |
* @return void
|
250 |
* @since 4.1.1
|
@@ -617,7 +617,8 @@ class Premium_Upgrader extends Upgrader {
|
|
617 |
'plugin' => '',
|
618 |
'api' => null,
|
619 |
'extra' => [
|
620 |
-
'slug' => $this->plugin_slug
|
|
|
621 |
],
|
622 |
];
|
623 |
|
@@ -808,12 +809,12 @@ class Premium_Upgrader extends Upgrader {
|
|
808 |
$cancel_license_url = $this->get_action_url('cancel_license');
|
809 |
|
810 |
$texts = [
|
811 |
-
'need_activate_license' => __('License activation required. A license is required to get premium plugin updates, as well as to get additional services.', '
|
812 |
-
'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.', '
|
813 |
'please_install_premium' => sprintf(__('Congratulations, you have activated a premium license! Please install premium add-on to use pro features now.
|
814 |
-
<a href="%s">Install</a> premium add-on or <a href="%s">cancel</a> license.', '
|
815 |
'please_activate_premium' => sprintf(__('Congratulations, you have activated a premium license! Please activate premium add-on to use pro features now.
|
816 |
-
<a href="%s">Activate</a> premium add-on or <a href="%s">cancel</a> license.', '
|
817 |
];
|
818 |
|
819 |
if( isset($texts[$type]) ) {
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_445\Updates;
|
4 |
|
5 |
use Exception;
|
6 |
use Plugin_Installer_Skin;
|
7 |
use Plugin_Upgrader;
|
8 |
+
use Wbcr_Factory445_Plugin;
|
9 |
+
use Wbcr_FactoryPages444_ImpressiveThemplate;
|
10 |
use WP_Filesystem_Base;
|
11 |
use WP_Upgrader;
|
12 |
use WP_Upgrader_Skin;
|
45 |
* @param $args
|
46 |
* @param bool $is_premium
|
47 |
*
|
48 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
49 |
*
|
50 |
* @throws Exception
|
51 |
* @since 4.1.1
|
52 |
*
|
53 |
*/
|
54 |
+
public function __construct(Wbcr_Factory445_Plugin $plugin)
|
55 |
{
|
56 |
parent::__construct($plugin);
|
57 |
|
242 |
/**
|
243 |
* Выводит уведомление внутри интерфейса плагина, на всех страницах плагина.
|
244 |
*
|
245 |
+
* @param Wbcr_FactoryPages444_ImpressiveThemplate $obj
|
246 |
*
|
247 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
248 |
*
|
249 |
* @return void
|
250 |
* @since 4.1.1
|
617 |
'plugin' => '',
|
618 |
'api' => null,
|
619 |
'extra' => [
|
620 |
+
'slug' => $this->plugin_slug,
|
621 |
+
'freemius' => true
|
622 |
],
|
623 |
];
|
624 |
|
809 |
$cancel_license_url = $this->get_action_url('cancel_license');
|
810 |
|
811 |
$texts = [
|
812 |
+
'need_activate_license' => __('License activation required. A license is required to get premium plugin updates, as well as to get additional services.', 'wbcr_factory_445'),
|
813 |
+
'need_renew_license' => __('Your license has expired. You can no longer get premium plugin updates, premium support and your access to Webcraftic services has been suspended.', 'wbcr_factory_445'),
|
814 |
'please_install_premium' => sprintf(__('Congratulations, you have activated a premium license! Please install premium add-on to use pro features now.
|
815 |
+
<a href="%s">Install</a> premium add-on or <a href="%s">cancel</a> license.', 'wbcr_factory_445'), $upgrade_url, $cancel_license_url),
|
816 |
'please_activate_premium' => sprintf(__('Congratulations, you have activated a premium license! Please activate premium add-on to use pro features now.
|
817 |
+
<a href="%s">Activate</a> premium add-on or <a href="%s">cancel</a> license.', 'wbcr_factory_445'), $activate_plugin_url, $cancel_license_url)
|
818 |
];
|
819 |
|
820 |
if( isset($texts[$type]) ) {
|
libs/factory/core/includes/updates/class-factory-upgrader.php
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use Exception;
|
6 |
use stdClass;
|
7 |
-
use
|
8 |
|
9 |
// Exit if accessed directly
|
10 |
if( !defined('ABSPATH') ) {
|
@@ -28,8 +28,8 @@ class Upgrader {
|
|
28 |
* @since 4.1.7
|
29 |
* @var array хранит имя репозитория и его имя класса
|
30 |
* [
|
31 |
-
* 'wordpress' => 'WBCR\
|
32 |
-
* 'freemius' => '\WBCR\
|
33 |
* ]
|
34 |
*/
|
35 |
public static $repositories = [];
|
@@ -42,7 +42,7 @@ class Upgrader {
|
|
42 |
protected $type = 'default';
|
43 |
|
44 |
/**
|
45 |
-
* @var
|
46 |
*/
|
47 |
protected $plugin;
|
48 |
|
@@ -88,7 +88,7 @@ class Upgrader {
|
|
88 |
/**
|
89 |
* Manager constructor.
|
90 |
*
|
91 |
-
* @param
|
92 |
* @param $args
|
93 |
* @param bool $is_premium
|
94 |
*
|
@@ -96,7 +96,7 @@ class Upgrader {
|
|
96 |
* @since 4.1.1
|
97 |
*
|
98 |
*/
|
99 |
-
public function __construct(
|
100 |
{
|
101 |
|
102 |
$this->plugin = $plugin;
|
@@ -107,8 +107,8 @@ class Upgrader {
|
|
107 |
$this->is_debug = defined('FACTORY_UPDATES_DEBUG') && FACTORY_UPDATES_DEBUG;
|
108 |
|
109 |
# Добавляем Wordpress репозиторий в список доступных репозиториев по умолчанию
|
110 |
-
self::$repositories['wordpress'] = '\WBCR\
|
111 |
-
self::$repositories['github'] = '\WBCR\
|
112 |
|
113 |
$settings = $this->get_settings();
|
114 |
|
@@ -183,7 +183,7 @@ class Upgrader {
|
|
183 |
public function site_transient_update_plugins_hook($transient)
|
184 |
{
|
185 |
|
186 |
-
if( !$transient || !is_object($transient) ) {
|
187 |
return $transient;
|
188 |
}
|
189 |
|
@@ -298,7 +298,7 @@ class Upgrader {
|
|
298 |
|
299 |
if( isset(self::$repositories[$repository_name]) && class_exists(self::$repositories[$repository_name]) ) {
|
300 |
if( self::$repositories[$repository_name] instanceof Repository ) {
|
301 |
-
throw new Exception("Repository {$repository_name} must extend the class WBCR\
|
302 |
}
|
303 |
|
304 |
return new self::$repositories[$repository_name]($this->plugin, $this->get_settings());
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_445\Updates;
|
4 |
|
5 |
use Exception;
|
6 |
use stdClass;
|
7 |
+
use Wbcr_Factory445_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_133\Updates\Freemius_Repository',
|
32 |
+
* 'freemius' => '\WBCR\Factory_445\Updates\Wordpress_Repository'
|
33 |
* ]
|
34 |
*/
|
35 |
public static $repositories = [];
|
42 |
protected $type = 'default';
|
43 |
|
44 |
/**
|
45 |
+
* @var Wbcr_Factory445_Plugin
|
46 |
*/
|
47 |
protected $plugin;
|
48 |
|
88 |
/**
|
89 |
* Manager constructor.
|
90 |
*
|
91 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
92 |
* @param $args
|
93 |
* @param bool $is_premium
|
94 |
*
|
96 |
* @since 4.1.1
|
97 |
*
|
98 |
*/
|
99 |
+
public function __construct(Wbcr_Factory445_Plugin $plugin)
|
100 |
{
|
101 |
|
102 |
$this->plugin = $plugin;
|
107 |
$this->is_debug = defined('FACTORY_UPDATES_DEBUG') && FACTORY_UPDATES_DEBUG;
|
108 |
|
109 |
# Добавляем Wordpress репозиторий в список доступных репозиториев по умолчанию
|
110 |
+
self::$repositories['wordpress'] = '\WBCR\Factory_445\Updates\Wordpress_Repository';
|
111 |
+
self::$repositories['github'] = '\WBCR\Factory_445\Updates\Github_Repository';
|
112 |
|
113 |
$settings = $this->get_settings();
|
114 |
|
183 |
public function site_transient_update_plugins_hook($transient)
|
184 |
{
|
185 |
|
186 |
+
if( !$transient || !is_object($transient) || empty($this->plugin_basename) ) {
|
187 |
return $transient;
|
188 |
}
|
189 |
|
298 |
|
299 |
if( isset(self::$repositories[$repository_name]) && class_exists(self::$repositories[$repository_name]) ) {
|
300 |
if( self::$repositories[$repository_name] instanceof Repository ) {
|
301 |
+
throw new Exception("Repository {$repository_name} must extend the class WBCR\Factory_445\Updates\Repository interface!");
|
302 |
}
|
303 |
|
304 |
return new self::$repositories[$repository_name]($this->plugin, $this->get_settings());
|
libs/factory/core/includes/updates/repositories/class-factory-github.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
-
use
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
@@ -57,11 +57,11 @@ class Github_Repository extends Repository {
|
|
57 |
/**
|
58 |
* Wordpress constructor.
|
59 |
*
|
60 |
-
* @param
|
61 |
* @param bool $is_premium
|
62 |
* @since 4.4.1
|
63 |
*/
|
64 |
-
public function __construct(
|
65 |
{
|
66 |
$settings = wp_parse_args($settings, [
|
67 |
'github_username' => '',
|
@@ -86,7 +86,7 @@ class Github_Repository extends Repository {
|
|
86 |
|
87 |
public function init()
|
88 |
{
|
89 |
-
add_filter('upgrader_source_selection', array($this, 'change_source_package'), 10,
|
90 |
}
|
91 |
|
92 |
/**
|
@@ -176,7 +176,7 @@ class Github_Repository extends Repository {
|
|
176 |
* @since 4.4.1
|
177 |
*
|
178 |
*/
|
179 |
-
public function change_source_package($source, $remote_source)
|
180 |
{
|
181 |
global $wp_filesystem;
|
182 |
|
@@ -184,8 +184,7 @@ class Github_Repository extends Repository {
|
|
184 |
return $source;
|
185 |
}
|
186 |
|
187 |
-
if(
|
188 |
-
|
189 |
$new_source = $wp_filesystem->wp_content_dir() . 'upgrade/' . $this->plugin_slug;
|
190 |
|
191 |
$wp_filesystem->move($source, $new_source);
|
@@ -194,7 +193,7 @@ class Github_Repository extends Repository {
|
|
194 |
}
|
195 |
|
196 |
return $source;
|
197 |
-
}
|
198 |
|
199 |
/**
|
200 |
* Метод получает информацию о последнем релизе на Github
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_445\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory445_Plugin;
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
57 |
/**
|
58 |
* Wordpress constructor.
|
59 |
*
|
60 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
61 |
* @param bool $is_premium
|
62 |
* @since 4.4.1
|
63 |
*/
|
64 |
+
public function __construct(Wbcr_Factory445_Plugin $plugin, array $settings = [])
|
65 |
{
|
66 |
$settings = wp_parse_args($settings, [
|
67 |
'github_username' => '',
|
86 |
|
87 |
public function init()
|
88 |
{
|
89 |
+
//add_filter('upgrader_source_selection', array($this, 'change_source_package'), 10, 4);
|
90 |
}
|
91 |
|
92 |
/**
|
176 |
* @since 4.4.1
|
177 |
*
|
178 |
*/
|
179 |
+
/*public function change_source_package($source, $remote_source, $upgrader, $hook_extra)
|
180 |
{
|
181 |
global $wp_filesystem;
|
182 |
|
184 |
return $source;
|
185 |
}
|
186 |
|
187 |
+
if( !empty($hook_extra) && "plugin" === $hook_extra['type'] && "update" === $hook_extra['action'] && basename($source) === $this->plugin_slug ) {
|
|
|
188 |
$new_source = $wp_filesystem->wp_content_dir() . 'upgrade/' . $this->plugin_slug;
|
189 |
|
190 |
$wp_filesystem->move($source, $new_source);
|
193 |
}
|
194 |
|
195 |
return $source;
|
196 |
+
}*/
|
197 |
|
198 |
/**
|
199 |
* Метод получает информацию о последнем релизе на Github
|
libs/factory/core/includes/updates/repositories/class-factory-repository-abstract.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
-
use
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
@@ -23,17 +23,17 @@ abstract class Repository {
|
|
23 |
protected $initialized = false;
|
24 |
|
25 |
/**
|
26 |
-
* @var
|
27 |
*/
|
28 |
protected $plugin;
|
29 |
|
30 |
/**
|
31 |
* Repository constructor.
|
32 |
*
|
33 |
-
* @param
|
34 |
* @param array $settings
|
35 |
*/
|
36 |
-
abstract public function __construct(
|
37 |
|
38 |
/**
|
39 |
* @return void
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_445\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory445_Plugin;
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
23 |
protected $initialized = false;
|
24 |
|
25 |
/**
|
26 |
+
* @var Wbcr_Factory445_Plugin
|
27 |
*/
|
28 |
protected $plugin;
|
29 |
|
30 |
/**
|
31 |
* Repository constructor.
|
32 |
*
|
33 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
34 |
* @param array $settings
|
35 |
*/
|
36 |
+
abstract public function __construct(Wbcr_Factory445_Plugin $plugin, array $settings = []);
|
37 |
|
38 |
/**
|
39 |
* @return void
|
libs/factory/core/includes/updates/repositories/class-factory-wordpress.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
-
use
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
@@ -20,10 +20,10 @@ class Wordpress_Repository extends Repository {
|
|
20 |
/**
|
21 |
* Wordpress constructor.
|
22 |
*
|
23 |
-
* @param
|
24 |
* @param array $settings
|
25 |
*/
|
26 |
-
public function __construct(
|
27 |
{
|
28 |
$this->plugin = $plugin;
|
29 |
}
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_445\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
+
use Wbcr_Factory445_Plugin;
|
7 |
|
8 |
if( !defined('ABSPATH') ) {
|
9 |
exit;
|
20 |
/**
|
21 |
* Wordpress constructor.
|
22 |
*
|
23 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
24 |
* @param array $settings
|
25 |
*/
|
26 |
+
public function __construct(Wbcr_Factory445_Plugin $plugin, array $settings = [])
|
27 |
{
|
28 |
$this->plugin = $plugin;
|
29 |
}
|
libs/factory/core/langs/{wbcr_factory_444-ru_RU.mo → wbcr_factory_445-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/core/langs/{wbcr_factory_444-ru_RU.po → wbcr_factory_445-ru_RU.po}
RENAMED
File without changes
|
libs/factory/feedback/boot.php
CHANGED
@@ -40,7 +40,7 @@ require_once(FACTORY_FEEDBACK_109_DIR . '/includes/class-base.php');
|
|
40 |
require_once(FACTORY_FEEDBACK_109_DIR . '/includes/class-rest-request.php');
|
41 |
|
42 |
/**
|
43 |
-
* @param
|
44 |
*/
|
45 |
add_action('wbcr_factory_feedback_109_plugin_created', function ($plugin) {
|
46 |
new WBCR\Factory_Feedback_109\Base($plugin);
|
40 |
require_once(FACTORY_FEEDBACK_109_DIR . '/includes/class-rest-request.php');
|
41 |
|
42 |
/**
|
43 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
44 |
*/
|
45 |
add_action('wbcr_factory_feedback_109_plugin_created', function ($plugin) {
|
46 |
new WBCR\Factory_Feedback_109\Base($plugin);
|
libs/factory/feedback/includes/class-base.php
CHANGED
@@ -28,7 +28,7 @@ class Base {
|
|
28 |
* Plugin instance this module interacts with
|
29 |
*
|
30 |
* @since 1.0.0 Added
|
31 |
-
* @var \
|
32 |
*/
|
33 |
private $plugin;
|
34 |
|
@@ -43,12 +43,12 @@ class Base {
|
|
43 |
/**
|
44 |
* Wbcr_Factory_Feedback constructor.
|
45 |
*
|
46 |
-
* @param \
|
47 |
*
|
48 |
* @since 1.0.0 Added
|
49 |
*
|
50 |
*/
|
51 |
-
public function __construct( \
|
52 |
$this->plugin = $plugin;
|
53 |
|
54 |
$this->api = new Creative_Motion_API( $this->plugin );
|
28 |
* Plugin instance this module interacts with
|
29 |
*
|
30 |
* @since 1.0.0 Added
|
31 |
+
* @var \Wbcr_Factory445_Plugin
|
32 |
*/
|
33 |
private $plugin;
|
34 |
|
43 |
/**
|
44 |
* Wbcr_Factory_Feedback constructor.
|
45 |
*
|
46 |
+
* @param \Wbcr_Factory445_Plugin $plugin
|
47 |
*
|
48 |
* @since 1.0.0 Added
|
49 |
*
|
50 |
*/
|
51 |
+
public function __construct( \Wbcr_Factory445_Plugin $plugin ) {
|
52 |
$this->plugin = $plugin;
|
53 |
|
54 |
$this->api = new Creative_Motion_API( $this->plugin );
|
libs/factory/feedback/includes/class-rest-request.php
CHANGED
@@ -45,7 +45,7 @@ class Creative_Motion_API {
|
|
45 |
*
|
46 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
47 |
* @since 1.0.0
|
48 |
-
* @var \
|
49 |
*/
|
50 |
private $plugin;
|
51 |
|
@@ -57,9 +57,9 @@ class Creative_Motion_API {
|
|
57 |
*
|
58 |
* @since 1.0.0 Added
|
59 |
*
|
60 |
-
* @param \
|
61 |
*/
|
62 |
-
public function __construct( \
|
63 |
$this->plugin = $plugin;
|
64 |
}
|
65 |
|
45 |
*
|
46 |
* @author Alexander Kovalev <alex.kovalevv@gmail.com>
|
47 |
* @since 1.0.0
|
48 |
+
* @var \Wbcr_Factory445_Plugin
|
49 |
*/
|
50 |
private $plugin;
|
51 |
|
57 |
*
|
58 |
* @since 1.0.0 Added
|
59 |
*
|
60 |
+
* @param \Wbcr_Factory445_Plugin $plugin_name
|
61 |
*/
|
62 |
+
public function __construct( \Wbcr_Factory445_Plugin $plugin ) {
|
63 |
$this->plugin = $plugin;
|
64 |
}
|
65 |
|
libs/factory/forms/boot.php
CHANGED
@@ -22,175 +22,175 @@ if( !is_admin() ) {
|
|
22 |
|
23 |
// checks if the module is already loaded in order to
|
24 |
// prevent loading the same version of the module twice.
|
25 |
-
if( defined('
|
26 |
return;
|
27 |
}
|
28 |
|
29 |
-
define('
|
30 |
|
31 |
-
define('
|
32 |
|
33 |
// absolute path and URL to the files and resources of the module.
|
34 |
-
define('
|
35 |
-
define('
|
36 |
|
37 |
#comp merge
|
38 |
-
require_once(
|
39 |
-
require_once(
|
40 |
-
require_once(
|
41 |
|
42 |
-
require_once(
|
43 |
#endcomp
|
44 |
|
45 |
-
load_plugin_textdomain('
|
46 |
|
47 |
/**
|
48 |
* We add this code into the hook because all these controls quite heavy. So in order to get better perfomance,
|
49 |
* we load the form controls only on pages where the forms are created.
|
50 |
*
|
51 |
* @since 3.0.7
|
52 |
-
* @see the '
|
53 |
*
|
54 |
*/
|
55 |
-
if( !function_exists('
|
56 |
|
57 |
/**
|
58 |
-
* @param
|
59 |
*
|
60 |
* @throws Exception
|
61 |
*/
|
62 |
-
function
|
63 |
{
|
64 |
|
65 |
if( $plugin && !isset($plugin->forms) ) {
|
66 |
throw new Exception("The module Factory Forms is not loaded for the plugin '{$plugin->getPluginName()}'.");
|
67 |
}
|
68 |
|
69 |
-
require_once(
|
70 |
-
require_once(
|
71 |
-
require_once(
|
72 |
-
require_once(
|
73 |
-
require_once(
|
74 |
-
require_once(
|
75 |
-
require_once(
|
76 |
-
require_once(
|
77 |
|
78 |
// registration of controls
|
79 |
$plugin->forms->registerControls([
|
80 |
[
|
81 |
'type' => 'checkbox',
|
82 |
-
'class' => '
|
83 |
-
'include' =>
|
84 |
],
|
85 |
[
|
86 |
'type' => 'list',
|
87 |
-
'class' => '
|
88 |
-
'include' =>
|
89 |
],
|
90 |
[
|
91 |
'type' => 'dropdown',
|
92 |
-
'class' => '
|
93 |
-
'include' =>
|
94 |
],
|
95 |
[
|
96 |
'type' => 'dropdown-and-colors',
|
97 |
-
'class' => '
|
98 |
-
'include' =>
|
99 |
],
|
100 |
[
|
101 |
'type' => 'hidden',
|
102 |
-
'class' => '
|
103 |
-
'include' =>
|
104 |
],
|
105 |
[
|
106 |
'type' => 'hidden',
|
107 |
-
'class' => '
|
108 |
-
'include' =>
|
109 |
],
|
110 |
[
|
111 |
'type' => 'radio',
|
112 |
-
'class' => '
|
113 |
-
'include' =>
|
114 |
],
|
115 |
[
|
116 |
'type' => 'radio-colors',
|
117 |
-
'class' => '
|
118 |
-
'include' =>
|
119 |
],
|
120 |
[
|
121 |
'type' => 'textarea',
|
122 |
-
'class' => '
|
123 |
-
'include' =>
|
124 |
],
|
125 |
[
|
126 |
'type' => 'textbox',
|
127 |
-
'class' => '
|
128 |
-
'include' =>
|
129 |
],
|
130 |
[
|
131 |
'type' => 'multiple-textbox',
|
132 |
-
'class' => '
|
133 |
-
'include' =>
|
134 |
],
|
135 |
[
|
136 |
'type' => 'datetimepicker-range',
|
137 |
-
'class' => '
|
138 |
-
'include' =>
|
139 |
],
|
140 |
[
|
141 |
'type' => 'url',
|
142 |
-
'class' => '
|
143 |
-
'include' =>
|
144 |
],
|
145 |
[
|
146 |
'type' => 'wp-editor',
|
147 |
-
'class' => '
|
148 |
-
'include' =>
|
149 |
],
|
150 |
[
|
151 |
'type' => 'color',
|
152 |
-
'class' => '
|
153 |
-
'include' =>
|
154 |
],
|
155 |
[
|
156 |
'type' => 'color-and-opacity',
|
157 |
-
'class' => '
|
158 |
-
'include' =>
|
159 |
],
|
160 |
[
|
161 |
'type' => 'gradient',
|
162 |
-
'class' => '
|
163 |
-
'include' =>
|
164 |
],
|
165 |
[
|
166 |
'type' => 'font',
|
167 |
-
'class' => '
|
168 |
-
'include' =>
|
169 |
],
|
170 |
[
|
171 |
'type' => 'google-font',
|
172 |
-
'class' => '
|
173 |
-
'include' =>
|
174 |
],
|
175 |
[
|
176 |
'type' => 'pattern',
|
177 |
-
'class' => '
|
178 |
-
'include' =>
|
179 |
],
|
180 |
[
|
181 |
'type' => 'integer',
|
182 |
-
'class' => '
|
183 |
-
'include' =>
|
184 |
],
|
185 |
[
|
186 |
'type' => 'control-group',
|
187 |
-
'class' => '
|
188 |
-
'include' =>
|
189 |
],
|
190 |
[
|
191 |
'type' => 'paddings-editor',
|
192 |
-
'class' => '
|
193 |
-
'include' =>
|
194 |
],
|
195 |
]);
|
196 |
|
@@ -198,53 +198,53 @@ if( !function_exists('wbcr_factory_forms_441_register_default_controls') ) {
|
|
198 |
$plugin->forms->registerHolders([
|
199 |
[
|
200 |
'type' => 'tab',
|
201 |
-
'class' => '
|
202 |
-
'include' =>
|
203 |
],
|
204 |
[
|
205 |
'type' => 'tab-item',
|
206 |
-
'class' => '
|
207 |
-
'include' =>
|
208 |
],
|
209 |
[
|
210 |
'type' => 'accordion',
|
211 |
-
'class' => '
|
212 |
-
'include' =>
|
213 |
],
|
214 |
[
|
215 |
'type' => 'accordion-item',
|
216 |
-
'class' => '
|
217 |
-
'include' =>
|
218 |
],
|
219 |
[
|
220 |
'type' => 'control-group',
|
221 |
-
'class' => '
|
222 |
-
'include' =>
|
223 |
],
|
224 |
[
|
225 |
'type' => 'control-group-item',
|
226 |
-
'class' => '
|
227 |
-
'include' =>
|
228 |
],
|
229 |
[
|
230 |
'type' => 'form-group',
|
231 |
-
'class' => '
|
232 |
-
'include' =>
|
233 |
],
|
234 |
[
|
235 |
'type' => 'more-link',
|
236 |
-
'class' => '
|
237 |
-
'include' =>
|
238 |
],
|
239 |
[
|
240 |
'type' => 'div',
|
241 |
-
'class' => '
|
242 |
-
'include' =>
|
243 |
],
|
244 |
[
|
245 |
'type' => 'columns',
|
246 |
-
'class' => '
|
247 |
-
'include' =>
|
248 |
]
|
249 |
]);
|
250 |
|
@@ -252,23 +252,23 @@ if( !function_exists('wbcr_factory_forms_441_register_default_controls') ) {
|
|
252 |
$plugin->forms->registerCustomElements([
|
253 |
[
|
254 |
'type' => 'html',
|
255 |
-
'class' => '
|
256 |
-
'include' =>
|
257 |
],
|
258 |
[
|
259 |
'type' => 'separator',
|
260 |
-
'class' => '
|
261 |
-
'include' =>
|
262 |
],
|
263 |
]);
|
264 |
|
265 |
// registration of form layouts
|
266 |
$plugin->forms->registerFormLayout([
|
267 |
'name' => 'bootstrap-3',
|
268 |
-
'class' => '
|
269 |
-
'include' =>
|
270 |
]);
|
271 |
}
|
272 |
|
273 |
-
add_action('
|
274 |
}
|
22 |
|
23 |
// checks if the module is already loaded in order to
|
24 |
// prevent loading the same version of the module twice.
|
25 |
+
if( defined('FACTORY_FORMS_442_LOADED') ) {
|
26 |
return;
|
27 |
}
|
28 |
|
29 |
+
define('FACTORY_FORMS_442_LOADED', true);
|
30 |
|
31 |
+
define('FACTORY_FORMS_442_VERSION', '4.4.2');
|
32 |
|
33 |
// absolute path and URL to the files and resources of the module.
|
34 |
+
define('FACTORY_FORMS_442_DIR', dirname(__FILE__));
|
35 |
+
define('FACTORY_FORMS_442_URL', plugins_url(null, __FILE__));
|
36 |
|
37 |
#comp merge
|
38 |
+
require_once(FACTORY_FORMS_442_DIR . '/includes/providers/value-provider.interface.php');
|
39 |
+
require_once(FACTORY_FORMS_442_DIR . '/includes/providers/meta-value-provider.class.php');
|
40 |
+
require_once(FACTORY_FORMS_442_DIR . '/includes/providers/options-value-provider.class.php');
|
41 |
|
42 |
+
require_once(FACTORY_FORMS_442_DIR . '/includes/form.class.php');
|
43 |
#endcomp
|
44 |
|
45 |
+
load_plugin_textdomain('wbcr_factory_forms_442', 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_442_register_controls' hook
|
53 |
*
|
54 |
*/
|
55 |
+
if( !function_exists('wbcr_factory_forms_442_register_default_controls') ) {
|
56 |
|
57 |
/**
|
58 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
59 |
*
|
60 |
* @throws Exception
|
61 |
*/
|
62 |
+
function wbcr_factory_forms_442_register_default_controls(Wbcr_Factory445_Plugin $plugin)
|
63 |
{
|
64 |
|
65 |
if( $plugin && !isset($plugin->forms) ) {
|
66 |
throw new Exception("The module Factory Forms is not loaded for the plugin '{$plugin->getPluginName()}'.");
|
67 |
}
|
68 |
|
69 |
+
require_once(FACTORY_FORMS_442_DIR . '/includes/html-builder.class.php');
|
70 |
+
require_once(FACTORY_FORMS_442_DIR . '/includes/form-element.class.php');
|
71 |
+
require_once(FACTORY_FORMS_442_DIR . '/includes/control.class.php');
|
72 |
+
require_once(FACTORY_FORMS_442_DIR . '/includes/complex-control.class.php');
|
73 |
+
require_once(FACTORY_FORMS_442_DIR . '/includes/holder.class.php');
|
74 |
+
require_once(FACTORY_FORMS_442_DIR . '/includes/control-holder.class.php');
|
75 |
+
require_once(FACTORY_FORMS_442_DIR . '/includes/custom-element.class.php');
|
76 |
+
require_once(FACTORY_FORMS_442_DIR . '/includes/form-layout.class.php');
|
77 |
|
78 |
// registration of controls
|
79 |
$plugin->forms->registerControls([
|
80 |
[
|
81 |
'type' => 'checkbox',
|
82 |
+
'class' => 'Wbcr_FactoryForms442_CheckboxControl',
|
83 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/checkbox.php'
|
84 |
],
|
85 |
[
|
86 |
'type' => 'list',
|
87 |
+
'class' => 'Wbcr_FactoryForms442_ListControl',
|
88 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/list.php'
|
89 |
],
|
90 |
[
|
91 |
'type' => 'dropdown',
|
92 |
+
'class' => 'Wbcr_FactoryForms442_DropdownControl',
|
93 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/dropdown.php'
|
94 |
],
|
95 |
[
|
96 |
'type' => 'dropdown-and-colors',
|
97 |
+
'class' => 'Wbcr_FactoryForms442_DropdownAndColorsControl',
|
98 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/dropdown-and-colors.php'
|
99 |
],
|
100 |
[
|
101 |
'type' => 'hidden',
|
102 |
+
'class' => 'Wbcr_FactoryForms442_HiddenControl',
|
103 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/hidden.php'
|
104 |
],
|
105 |
[
|
106 |
'type' => 'hidden',
|
107 |
+
'class' => 'Wbcr_FactoryForms442_HiddenControl',
|
108 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/hidden.php'
|
109 |
],
|
110 |
[
|
111 |
'type' => 'radio',
|
112 |
+
'class' => 'Wbcr_FactoryForms442_RadioControl',
|
113 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/radio.php'
|
114 |
],
|
115 |
[
|
116 |
'type' => 'radio-colors',
|
117 |
+
'class' => 'Wbcr_FactoryForms442_RadioColorsControl',
|
118 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/radio-colors.php'
|
119 |
],
|
120 |
[
|
121 |
'type' => 'textarea',
|
122 |
+
'class' => 'Wbcr_FactoryForms442_TextareaControl',
|
123 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/textarea.php'
|
124 |
],
|
125 |
[
|
126 |
'type' => 'textbox',
|
127 |
+
'class' => 'Wbcr_FactoryForms442_TextboxControl',
|
128 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/textbox.php'
|
129 |
],
|
130 |
[
|
131 |
'type' => 'multiple-textbox',
|
132 |
+
'class' => 'Wbcr_FactoryForms442_MultipleTextboxControl',
|
133 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/multiple-textbox.php'
|
134 |
],
|
135 |
[
|
136 |
'type' => 'datetimepicker-range',
|
137 |
+
'class' => 'Wbcr_FactoryForms442_DatepickerRangeControl',
|
138 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/datepicker-range.php'
|
139 |
],
|
140 |
[
|
141 |
'type' => 'url',
|
142 |
+
'class' => 'Wbcr_FactoryForms442_UrlControl',
|
143 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/url.php'
|
144 |
],
|
145 |
[
|
146 |
'type' => 'wp-editor',
|
147 |
+
'class' => 'Wbcr_FactoryForms442_WpEditorControl',
|
148 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/wp-editor.php'
|
149 |
],
|
150 |
[
|
151 |
'type' => 'color',
|
152 |
+
'class' => 'Wbcr_FactoryForms442_ColorControl',
|
153 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/color.php'
|
154 |
],
|
155 |
[
|
156 |
'type' => 'color-and-opacity',
|
157 |
+
'class' => 'Wbcr_FactoryForms442_ColorAndOpacityControl',
|
158 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/color-and-opacity.php'
|
159 |
],
|
160 |
[
|
161 |
'type' => 'gradient',
|
162 |
+
'class' => 'Wbcr_FactoryForms442_GradientControl',
|
163 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/gradient.php'
|
164 |
],
|
165 |
[
|
166 |
'type' => 'font',
|
167 |
+
'class' => 'Wbcr_FactoryForms442_FontControl',
|
168 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/font.php'
|
169 |
],
|
170 |
[
|
171 |
'type' => 'google-font',
|
172 |
+
'class' => 'Wbcr_FactoryForms442_GoogleFontControl',
|
173 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/google-font.php'
|
174 |
],
|
175 |
[
|
176 |
'type' => 'pattern',
|
177 |
+
'class' => 'Wbcr_FactoryForms442_PatternControl',
|
178 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/pattern.php'
|
179 |
],
|
180 |
[
|
181 |
'type' => 'integer',
|
182 |
+
'class' => 'Wbcr_FactoryForms442_IntegerControl',
|
183 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/integer.php'
|
184 |
],
|
185 |
[
|
186 |
'type' => 'control-group',
|
187 |
+
'class' => 'Wbcr_FactoryForms442_ControlGroupHolder',
|
188 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/holders/control-group.php'
|
189 |
],
|
190 |
[
|
191 |
'type' => 'paddings-editor',
|
192 |
+
'class' => 'Wbcr_FactoryForms442_PaddingsEditorControl',
|
193 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/paddings-editor.php'
|
194 |
],
|
195 |
]);
|
196 |
|
198 |
$plugin->forms->registerHolders([
|
199 |
[
|
200 |
'type' => 'tab',
|
201 |
+
'class' => 'Wbcr_FactoryForms442_TabHolder',
|
202 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/holders/tab.php'
|
203 |
],
|
204 |
[
|
205 |
'type' => 'tab-item',
|
206 |
+
'class' => 'Wbcr_FactoryForms442_TabItemHolder',
|
207 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/holders/tab-item.php'
|
208 |
],
|
209 |
[
|
210 |
'type' => 'accordion',
|
211 |
+
'class' => 'Wbcr_FactoryForms442_AccordionHolder',
|
212 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/holders/accordion.php'
|
213 |
],
|
214 |
[
|
215 |
'type' => 'accordion-item',
|
216 |
+
'class' => 'Wbcr_FactoryForms442_AccordionItemHolder',
|
217 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/holders/accordion-item.php'
|
218 |
],
|
219 |
[
|
220 |
'type' => 'control-group',
|
221 |
+
'class' => 'Wbcr_FactoryForms442_ControlGroupHolder',
|
222 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/holders/control-group.php'
|
223 |
],
|
224 |
[
|
225 |
'type' => 'control-group-item',
|
226 |
+
'class' => 'Wbcr_FactoryForms442_ControlGroupItem',
|
227 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/holders/control-group-item.php'
|
228 |
],
|
229 |
[
|
230 |
'type' => 'form-group',
|
231 |
+
'class' => 'Wbcr_FactoryForms442_FormGroupHolder',
|
232 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/holders/form-group.php'
|
233 |
],
|
234 |
[
|
235 |
'type' => 'more-link',
|
236 |
+
'class' => 'Wbcr_FactoryForms442_MoreLinkHolder',
|
237 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/holders/more-link.php'
|
238 |
],
|
239 |
[
|
240 |
'type' => 'div',
|
241 |
+
'class' => 'Wbcr_FactoryForms442_DivHolder',
|
242 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/holders/div.php'
|
243 |
],
|
244 |
[
|
245 |
'type' => 'columns',
|
246 |
+
'class' => 'Wbcr_FactoryForms442_ColumnsHolder',
|
247 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/holders/columns.php'
|
248 |
]
|
249 |
]);
|
250 |
|
252 |
$plugin->forms->registerCustomElements([
|
253 |
[
|
254 |
'type' => 'html',
|
255 |
+
'class' => 'Wbcr_FactoryForms442_Html',
|
256 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/customs/html.php',
|
257 |
],
|
258 |
[
|
259 |
'type' => 'separator',
|
260 |
+
'class' => 'Wbcr_FactoryForms442_Separator',
|
261 |
+
'include' => FACTORY_FORMS_442_DIR . '/controls/customs/separator.php',
|
262 |
],
|
263 |
]);
|
264 |
|
265 |
// registration of form layouts
|
266 |
$plugin->forms->registerFormLayout([
|
267 |
'name' => 'bootstrap-3',
|
268 |
+
'class' => 'Wbcr_FactoryForms442_Bootstrap3FormLayout',
|
269 |
+
'include' => FACTORY_FORMS_442_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
|
270 |
]);
|
271 |
}
|
272 |
|
273 |
+
add_action('wbcr_factory_forms_442_register_controls', 'wbcr_factory_forms_442_register_default_controls');
|
274 |
}
|
libs/factory/forms/controls/checkbox.php
CHANGED
@@ -20,9 +20,9 @@
|
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
-
if( !class_exists('
|
24 |
|
25 |
-
class
|
26 |
|
27 |
public $type = 'checkbox';
|
28 |
|
@@ -130,10 +130,10 @@
|
|
130 |
<div <?php $this->attrs() ?>>
|
131 |
<button type="button" class="btn btn-default btn-small btn-sm factory-on <?php if( $value ) {
|
132 |
echo 'active';
|
133 |
-
} ?>"><?php _e('On', '
|
134 |
<button type="button" class="btn btn-default btn-small btn-sm factory-off <?php if( !$value ) {
|
135 |
echo 'active';
|
136 |
-
} ?>" data-value="0"><?php _e('Off', '
|
137 |
<input type="checkbox" style="display: none" id="<?php echo $name_on_form ?>" class="factory-result" name="<?php echo $name_on_form ?>" value="<?= $value ?>" <?php if( $value ) {
|
138 |
echo 'checked="checked"';
|
139 |
} ?>" />
|
20 |
exit;
|
21 |
}
|
22 |
|
23 |
+
if( !class_exists('Wbcr_FactoryForms442_CheckboxControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms442_CheckboxControl extends Wbcr_FactoryForms442_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_442') ?></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_442') ?></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_FactoryForms442_ColorAndOpacityControl') ) {
|
24 |
}
|
25 |
|
26 |
+
class Wbcr_FactoryForms442_ColorAndOpacityControl extends Wbcr_FactoryForms442_ComplexControl {
|
27 |
|
28 |
public $type = 'color-and-opacity';
|
29 |
|
57 |
'way' => 'slider'
|
58 |
));
|
59 |
|
60 |
+
$this->color = new Wbcr_FactoryForms442_ColorControl($options['color'], $form, $provider);
|
61 |
+
$this->opacity = new Wbcr_FactoryForms442_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_FactoryForms442_ColorControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms442_ColorControl extends Wbcr_FactoryForms442_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_FactoryForms442_Html') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryForms442_Html extends Wbcr_FactoryForms442_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_FactoryForms442_Separator') ) {
|
18 |
+
class Wbcr_FactoryForms442_Separator extends Wbcr_FactoryForms442_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_FactoryForms442_DatepickerRangeControl') ) {
|
33 |
|
34 |
+
class Wbcr_FactoryForms442_DatepickerRangeControl extends Wbcr_FactoryForms442_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_FactoryForms442_TextboxControl($options['range_1'], $form, $provider);
|
69 |
+
$this->range_2 = new Wbcr_FactoryForms442_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 FactoryForms442_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 FactoryForms442_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_FactoryForms442_DropdownAndColorsControl') ) {
|
41 |
|
42 |
+
class Wbcr_FactoryForms442_DropdownAndColorsControl extends Wbcr_FactoryForms442_ComplexControl {
|
43 |
|
44 |
public $type = 'dropdown-and-colors';
|
45 |
|
69 |
'name' => $this->options['name'] . '__colors',
|
70 |
));
|
71 |
|
72 |
+
$this->dropdown = new Wbcr_FactoryForms442_DropdownControl($options['dropdown'], $form, $provider);
|
73 |
+
$this->colors = new Wbcr_FactoryForms442_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_FactoryForms442_DropdownControl' ) ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms442_DropdownControl extends Wbcr_FactoryForms442_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_442' ) ) ?>'
|
127 |
};
|
128 |
</script>
|
129 |
<?php
|
268 |
}
|
269 |
|
270 |
$is_empty = $this->isAjax() || empty( $items );
|
271 |
+
$empty_list = $this->getOption( 'empty', __( '- empty -', 'wbcr_factory_forms_442' ) );
|
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_442' );
|
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_FactoryForms442_FontControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms442_FontControl extends Wbcr_FactoryForms442_ComplexControl {
|
26 |
|
27 |
public $type = 'font';
|
28 |
|
54 |
'pickerTarget' => '.factory-control-' . $this->options['name'] . ' .factory-picker-target'
|
55 |
);
|
56 |
|
57 |
+
$this->size = new Wbcr_FactoryForms442_IntegerControl($option_font_size, $form, $provider);
|
58 |
+
$this->family = new Wbcr_FactoryForms442_DropdownControl($option_font_family, $form, $provider);
|
59 |
+
$this->color = new Wbcr_FactoryForms442_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_442_fonts', $fonts);
|
70 |
+
$fonts = apply_filters('wbcr_factory_forms_442_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_442')),
|
81 |
array(
|
82 |
'group',
|
83 |
+
__('Sans Serif:', 'wbcr_factory_forms_442'),
|
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_442'),
|
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_442'),
|
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_FactoryForms442_GoogleFontControl extends Wbcr_FactoryForms442_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_FactoryForms442_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_442'))
|
53 |
);
|
54 |
|
55 |
$fontsCommon = array(
|
56 |
'group',
|
57 |
+
__('Standard:', 'wbcr_factory_forms_442'),
|
58 |
array(
|
59 |
|
60 |
array('Arial, "Helvetica Neue", Helvetica, sans-serif', 'Arial'),
|
65 |
)
|
66 |
);
|
67 |
|
68 |
+
$fontsGoogleFonts = array('group', __('Google Fonts:', 'wbcr_factory_forms_442'), 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_442');
|
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_442');
|
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_442');
|
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_FactoryForms442_GradientControl') ) {
|
29 |
+
class Wbcr_FactoryForms442_GradientControl extends Wbcr_FactoryForms442_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_442' ) ?>';
|
70 |
+
factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_442' ) ?>';
|
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_FactoryForms442_HiddenControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms442_HiddenControl extends Wbcr_FactoryForms442_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_FactoryForms442_AccordionItemHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms442_AccordionItemHolder extends Wbcr_FactoryForms442_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_FactoryForms442_AccordionHolder') ) {
|
17 |
/**
|
18 |
* Tab Control Holder
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
class Wbcr_FactoryForms442_AccordionHolder extends Wbcr_FactoryForms442_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_FactoryForms442_ColumnsHolder') ) {
|
18 |
/**
|
19 |
* Columns Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms442_ColumnsHolder extends Wbcr_FactoryForms442_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_FactoryForms442_ControlGroupItem') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms442_ControlGroupItem extends Wbcr_FactoryForms442_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_FactoryForms442_ControlGroupHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms442_ControlGroupHolder extends Wbcr_FactoryForms442_ControlHolder {
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
61 |
continue;
|
62 |
}
|
63 |
|
64 |
+
$builder = new Wbcr_FactoryForms442_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_FactoryForms442_DivHolder') ) {
|
18 |
/**
|
19 |
* Div Control Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms442_DivHolder extends Wbcr_FactoryForms442_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_FactoryForms442_FormGroupHolder') ) {
|
18 |
/**
|
19 |
* Group Holder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms442_FormGroupHolder extends Wbcr_FactoryForms442_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_FactoryForms442_MoreLinkHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Collapsed Group Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms442_MoreLinkHolder extends Wbcr_FactoryForms442_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_FactoryForms442_TabItemHolder') ) {
|
17 |
/**
|
18 |
* Tab Item Control Holder
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
class Wbcr_FactoryForms442_TabItemHolder extends Wbcr_FactoryForms442_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_FactoryForms442_TabHolder') ) {
|
18 |
|
19 |
/**
|
20 |
* Tab Control Holder
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
class Wbcr_FactoryForms442_TabHolder extends Wbcr_FactoryForms442_Holder {
|
25 |
|
26 |
/**
|
27 |
* A holder type.
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
* @param mixed[] $options A holder options.
|
47 |
+
* @param FactoryForms442_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_FactoryForms442_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_FactoryForms442_IntegerControl') ) {
|
36 |
|
37 |
+
class Wbcr_FactoryForms442_IntegerControl extends Wbcr_FactoryForms442_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_FactoryForms442_ListControl') ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms442_ListControl extends Wbcr_FactoryForms442_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_442') ) ?>'
|
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_442'));
|
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_FactoryForms442_MultipleTextboxControl') ) {
|
19 |
|
20 |
+
class Wbcr_FactoryForms442_MultipleTextboxControl extends Wbcr_FactoryForms442_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_442') ?>
|
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_FactoryForms442_PaddingsEditorControl') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryForms442_PaddingsEditorControl extends Wbcr_FactoryForms442_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_442') ?>
|
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_FactoryForms442_PatternControl') ) {
|
19 |
|
20 |
+
class Wbcr_FactoryForms442_PatternControl extends Wbcr_FactoryForms442_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_442_patterns', array());
|
56 |
+
$this->patterns = apply_filters('wbcr_factory_forms_442_patterns-' . $name, $this->patterns);
|
57 |
|
58 |
$this->custom_patterns = $this->getOption('patterns', array());
|
59 |
|
60 |
+
$this->color = new Wbcr_FactoryForms442_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_442') ?>">
|
106 |
<i class="fa fa-flask"></i>
|
107 |
+
<span><?php _e('re-color', 'wbcr_factory_forms_442') ?></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_442') ?></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_442') ?></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_FactoryForms442_RadioColorsControl') ) {
|
31 |
|
32 |
+
class Wbcr_FactoryForms442_RadioColorsControl extends Wbcr_FactoryForms442_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_FactoryForms442_RadioControl') ) {
|
25 |
|
26 |
+
class Wbcr_FactoryForms442_RadioControl extends Wbcr_FactoryForms442_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_FactoryForms442_TextareaControl') ) {
|
24 |
|
25 |
+
class Wbcr_FactoryForms442_TextareaControl extends Wbcr_FactoryForms442_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_FactoryForms442_TextboxControl') ) {
|
33 |
|
34 |
+
class Wbcr_FactoryForms442_TextboxControl extends Wbcr_FactoryForms442_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 FactoryForms442_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_FactoryForms442_UrlControl') ) {
|
22 |
|
23 |
+
class Wbcr_FactoryForms442_UrlControl extends Wbcr_FactoryForms442_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_FactoryForms442_WpEditorControl') ) {
|
26 |
|
27 |
+
class Wbcr_FactoryForms442_WpEditorControl extends Wbcr_FactoryForms442_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_442_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_FactoryForms442_ComplexControl') ) {
|
17 |
/**
|
18 |
* The base class for all controls.
|
19 |
*
|
20 |
* @since 1.0.0
|
21 |
*/
|
22 |
+
abstract class Wbcr_FactoryForms442_ComplexControl extends Wbcr_FactoryForms442_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_FactoryForms442_Control[]
|
37 |
*/
|
38 |
public $inner_controls = array();
|
39 |
|
41 |
* Sets a provider for the control.
|
42 |
*
|
43 |
* @since 1.0.0
|
44 |
+
* @param Wbcr_IFactoryForms442_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_FactoryForms442_ControlHolder') ) {
|
18 |
/**
|
19 |
* The base class for control holders.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
abstract class Wbcr_FactoryForms442_ControlHolder extends Wbcr_FactoryForms442_Control {
|
24 |
|
25 |
/**
|
26 |
* Holder Elements.
|
27 |
*
|
28 |
* @since 1.0.0
|
29 |
+
* @var Wbcr_FactoryForms442_Control[]
|
30 |
*/
|
31 |
protected $elements = array();
|
32 |
|
43 |
*
|
44 |
* @since 1.0.0
|
45 |
* @param mixed[] $options A holder options.
|
46 |
+
* @param Wbcr_FactoryForms442_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_FactoryForms442_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_FactoryForms442_Control') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all controls.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
abstract class Wbcr_FactoryForms442_Control extends Wbcr_FactoryForms442_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_IFactoryForms442_ValueProvider
|
47 |
*/
|
48 |
protected $provider = null;
|
49 |
|
51 |
* Create a new instance of the control.
|
52 |
*
|
53 |
* @param mixed[] $options
|
54 |
+
* @param FactoryForms442_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 IFactoryForms442_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_FactoryForms442_CustomElement') ) {
|
18 |
/**
|
19 |
* The base class for all controls.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
abstract class Wbcr_FactoryForms442_CustomElement extends Wbcr_FactoryForms442_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_FactoryForms442_FormElement') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all form element (controls, holders).
|
23 |
*
|
24 |
* @since 1.0.0
|
25 |
*/
|
26 |
+
abstract class Wbcr_FactoryForms442_FormElement {
|
27 |
|
28 |
/**
|
29 |
* A type of an elemnt.
|
37 |
* An html attribute builder.
|
38 |
*
|
39 |
* @since 1.0.0
|
40 |
+
* @var Wbcr_FactoryForms442_HtmlAttributeBuilder
|
41 |
*/
|
42 |
private $html_builder;
|
43 |
|
53 |
* A parent form.
|
54 |
*
|
55 |
* @since 1.0.0
|
56 |
+
* @var Wbcr_FactoryForms442_Form
|
57 |
*/
|
58 |
protected $form;
|
59 |
|
61 |
* A form layout.
|
62 |
*
|
63 |
* @since 1.0.0
|
64 |
+
* @var Wbcr_FactoryForms442_FormLayout
|
65 |
*/
|
66 |
protected $layout;
|
67 |
|
94 |
*
|
95 |
* @since 1.0.0
|
96 |
* @param mixed[] $options A holder options.
|
97 |
+
* @param Wbcr_FactoryForms442_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_FactoryForms442_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_FactoryForms442_FormLayout') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for all form layouts.
|
21 |
*/
|
22 |
+
abstract class Wbcr_FactoryForms442_FormLayout extends Wbcr_FactoryForms442_Holder {
|
23 |
|
24 |
/**
|
25 |
* A form layout name.
|
42 |
*
|
43 |
* @since 1.0.0
|
44 |
* @param mixed[] $options A holder options.
|
45 |
+
* @param Wbcr_FactoryForms442_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-442-' . $this->type);
|
56 |
+
$this->addCssClass('factory-forms-442-' . $this->name);
|
57 |
}
|
58 |
|
59 |
/**
|
libs/factory/forms/includes/form.class.php
CHANGED
@@ -15,16 +15,16 @@
|
|
15 |
}
|
16 |
|
17 |
// creating a license manager for each plugin created via the factory
|
18 |
-
add_action('
|
19 |
|
20 |
-
function
|
21 |
{
|
22 |
-
$plugin->forms = new
|
23 |
}
|
24 |
|
25 |
-
if( !class_exists('
|
26 |
|
27 |
-
class
|
28 |
|
29 |
// ----------------------------------------------------
|
30 |
// Static fields and methods
|
@@ -57,7 +57,7 @@
|
|
57 |
/**
|
58 |
* Registers a set of new controls.
|
59 |
*
|
60 |
-
* @see
|
61 |
*
|
62 |
* @since 1.0.0
|
63 |
* @return void
|
@@ -95,7 +95,7 @@
|
|
95 |
/**
|
96 |
* Registers a set of new holder controls.
|
97 |
*
|
98 |
-
* @see
|
99 |
*
|
100 |
* @since 1.0.0
|
101 |
* @return void
|
@@ -129,7 +129,7 @@
|
|
129 |
/**
|
130 |
* Registers a set of new custom form elements.
|
131 |
*
|
132 |
-
* @see
|
133 |
*
|
134 |
* @since 1.0.0
|
135 |
* @return void
|
@@ -180,11 +180,11 @@
|
|
180 |
public static $controls_registered = false;
|
181 |
}
|
182 |
}
|
183 |
-
if( !class_exists('
|
184 |
/**
|
185 |
* An abstraction for forms.
|
186 |
*/
|
187 |
-
class
|
188 |
|
189 |
// ----------------------------------------------------
|
190 |
// Object fields and methods
|
@@ -194,7 +194,7 @@
|
|
194 |
* A value provider of the form that is used to save and load values.
|
195 |
*
|
196 |
* @since 1.0.0
|
197 |
-
* @var
|
198 |
*/
|
199 |
private $provider;
|
200 |
|
@@ -245,7 +245,7 @@
|
|
245 |
* A current form layout used to render a form.
|
246 |
*
|
247 |
* @since 1.0.0
|
248 |
-
* @var
|
249 |
*/
|
250 |
public $layout;
|
251 |
|
@@ -261,20 +261,20 @@
|
|
261 |
*
|
262 |
* @since 1.0.0
|
263 |
* @param array $options
|
264 |
-
* @param
|
265 |
*/
|
266 |
-
public function __construct(array $options,
|
267 |
{
|
268 |
// register controls once, when the first form is created
|
269 |
-
if( !
|
270 |
|
271 |
-
do_action('
|
272 |
|
273 |
//if( !empty($plugin) ) {
|
274 |
-
do_action('
|
275 |
//}
|
276 |
|
277 |
-
|
278 |
}
|
279 |
|
280 |
$this->scope = isset($options['scope']) ? $options['scope'] : null;
|
@@ -289,14 +289,14 @@
|
|
289 |
$this->form_layout = 'bootstrap-3';
|
290 |
}
|
291 |
|
292 |
-
|
293 |
}
|
294 |
|
295 |
/**
|
296 |
* Sets a provider for the control.
|
297 |
*
|
298 |
* @since 1.0.0
|
299 |
-
* @param
|
300 |
* @return void
|
301 |
*/
|
302 |
public function setProvider($provider)
|
@@ -332,14 +332,14 @@
|
|
332 |
*/
|
333 |
public function getItems()
|
334 |
{
|
335 |
-
return apply_filters('
|
336 |
}
|
337 |
|
338 |
/**
|
339 |
* Returns form controls (control objects).
|
340 |
*
|
341 |
* @since 1.0.0
|
342 |
-
* @return
|
343 |
*/
|
344 |
public function getControls()
|
345 |
{
|
@@ -355,7 +355,7 @@
|
|
355 |
* Builds a form items to the control objects ready to use.
|
356 |
*
|
357 |
* @param null $holder
|
358 |
-
* @return
|
359 |
*/
|
360 |
|
361 |
public function createControls($holder = null)
|
@@ -395,7 +395,7 @@
|
|
395 |
*
|
396 |
* @since 1.0.0
|
397 |
* @param array $item Item data.
|
398 |
-
* @return
|
399 |
*/
|
400 |
public function createElement($item)
|
401 |
{
|
@@ -417,7 +417,7 @@
|
|
417 |
*
|
418 |
* @since 1.0.0
|
419 |
* @param mixed[] $item Data of items.
|
420 |
-
* @return
|
421 |
*/
|
422 |
public function createElements($items = array())
|
423 |
{
|
@@ -433,7 +433,7 @@
|
|
433 |
*
|
434 |
* @since 1.0.0
|
435 |
* @param array $item Item data.
|
436 |
-
* @return
|
437 |
*/
|
438 |
public function createControl($item)
|
439 |
{
|
@@ -441,7 +441,7 @@
|
|
441 |
|
442 |
if( is_array($item) ) {
|
443 |
|
444 |
-
$control_data =
|
445 |
|
446 |
require_once($control_data['include']);
|
447 |
|
@@ -465,7 +465,7 @@
|
|
465 |
*
|
466 |
* @since 1.0.0
|
467 |
* @param array $item Item data.
|
468 |
-
* @return
|
469 |
*/
|
470 |
public function createHolder($item)
|
471 |
{
|
@@ -473,7 +473,7 @@
|
|
473 |
|
474 |
if( is_array($item) ) {
|
475 |
|
476 |
-
$holderData =
|
477 |
require_once($holderData['include']);
|
478 |
|
479 |
$object = new $holderData['class']($item, $this);
|
@@ -491,7 +491,7 @@
|
|
491 |
*
|
492 |
* @since 1.0.0
|
493 |
* @param mixed $item Item data.
|
494 |
-
* @return
|
495 |
*/
|
496 |
public function createCustomElement($item)
|
497 |
{
|
@@ -499,7 +499,7 @@
|
|
499 |
|
500 |
if( is_array($item) ) {
|
501 |
|
502 |
-
$data =
|
503 |
require_once($data['include']);
|
504 |
|
505 |
$options = $item;
|
@@ -523,12 +523,12 @@
|
|
523 |
public function html($options = array())
|
524 |
{
|
525 |
|
526 |
-
if( !isset(
|
527 |
die(sprintf('[ERROR] The form layout %s was not found.', $this->form_layout));
|
528 |
}
|
529 |
|
530 |
// include a render code
|
531 |
-
$layout_data =
|
532 |
require_once($layout_data['include']);
|
533 |
|
534 |
$this->connectAssets();
|
@@ -552,7 +552,7 @@
|
|
552 |
{
|
553 |
|
554 |
$this->connectAssetsForItems();
|
555 |
-
$layout_data =
|
556 |
|
557 |
if( $layout_data['name'] == 'default' ) {
|
558 |
if( isset($layout_data['style']) ) {
|
@@ -602,9 +602,9 @@
|
|
602 |
|
603 |
$haystack = array();
|
604 |
if( self::isControl($type) ) {
|
605 |
-
$haystack =
|
606 |
} elseif( self::isControlHolder($type) ) {
|
607 |
-
$haystack =
|
608 |
}
|
609 |
|
610 |
if( isset($haystack[$type]) ) {
|
@@ -660,7 +660,7 @@
|
|
660 |
*/
|
661 |
public static function isControl($item)
|
662 |
{
|
663 |
-
return isset(
|
664 |
}
|
665 |
|
666 |
/**
|
@@ -672,7 +672,7 @@
|
|
672 |
*/
|
673 |
public static function isControlHolder($item)
|
674 |
{
|
675 |
-
return isset(
|
676 |
}
|
677 |
|
678 |
/**
|
@@ -684,7 +684,7 @@
|
|
684 |
*/
|
685 |
public static function isCustomElement($item)
|
686 |
{
|
687 |
-
return isset(
|
688 |
}
|
689 |
}
|
690 |
}
|
15 |
}
|
16 |
|
17 |
// creating a license manager for each plugin created via the factory
|
18 |
+
add_action('wbcr_factory_forms_442_plugin_created', 'wbcr_factory_forms_442_plugin_created');
|
19 |
|
20 |
+
function wbcr_factory_forms_442_plugin_created($plugin)
|
21 |
{
|
22 |
+
$plugin->forms = new Wbcr_FactoryForms442_Manager($plugin);
|
23 |
}
|
24 |
|
25 |
+
if( !class_exists('Wbcr_FactoryForms442_Manager') ) {
|
26 |
|
27 |
+
class Wbcr_FactoryForms442_Manager {
|
28 |
|
29 |
// ----------------------------------------------------
|
30 |
// Static fields and methods
|
57 |
/**
|
58 |
* Registers a set of new controls.
|
59 |
*
|
60 |
+
* @see FactoryForms442_Form::registerControl()
|
61 |
*
|
62 |
* @since 1.0.0
|
63 |
* @return void
|
95 |
/**
|
96 |
* Registers a set of new holder controls.
|
97 |
*
|
98 |
+
* @see FactoryForms442_Form::registerHolder()
|
99 |
*
|
100 |
* @since 1.0.0
|
101 |
* @return void
|
129 |
/**
|
130 |
* Registers a set of new custom form elements.
|
131 |
*
|
132 |
+
* @see FactoryForms442_Form::registerCustomElement()
|
133 |
*
|
134 |
* @since 1.0.0
|
135 |
* @return void
|
180 |
public static $controls_registered = false;
|
181 |
}
|
182 |
}
|
183 |
+
if( !class_exists('Wbcr_FactoryForms442_Form') ) {
|
184 |
/**
|
185 |
* An abstraction for forms.
|
186 |
*/
|
187 |
+
class Wbcr_FactoryForms442_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_IFactoryForms442_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_FactoryForms442_FormLayout
|
249 |
*/
|
250 |
public $layout;
|
251 |
|
261 |
*
|
262 |
* @since 1.0.0
|
263 |
* @param array $options
|
264 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
265 |
*/
|
266 |
+
public function __construct(array $options, Wbcr_Factory445_Plugin $plugin)
|
267 |
{
|
268 |
// register controls once, when the first form is created
|
269 |
+
if( !Wbcr_FactoryForms442_Manager::$controls_registered ) {
|
270 |
|
271 |
+
do_action('wbcr_factory_forms_442_register_controls', $plugin);
|
272 |
|
273 |
//if( !empty($plugin) ) {
|
274 |
+
do_action('wbcr_factory_forms_442_register_controls_' . $plugin->getPluginName(), $plugin);
|
275 |
//}
|
276 |
|
277 |
+
Wbcr_FactoryForms442_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_FactoryForms442_Manager::$temper = 'flat';
|
293 |
}
|
294 |
|
295 |
/**
|
296 |
* Sets a provider for the control.
|
297 |
*
|
298 |
* @since 1.0.0
|
299 |
+
* @param Wbcr_IFactoryForms442_ValueProvider $provider
|
300 |
* @return void
|
301 |
*/
|
302 |
public function setProvider($provider)
|
332 |
*/
|
333 |
public function getItems()
|
334 |
{
|
335 |
+
return apply_filters('wbcr_factory_445_form_items', $this->items, $this->name);
|
336 |
}
|
337 |
|
338 |
/**
|
339 |
* Returns form controls (control objects).
|
340 |
*
|
341 |
* @since 1.0.0
|
342 |
+
* @return Wbcr_FactoryForms442_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_FactoryForms442_Control[]
|
359 |
*/
|
360 |
|
361 |
public function createControls($holder = null)
|
395 |
*
|
396 |
* @since 1.0.0
|
397 |
* @param array $item Item data.
|
398 |
+
* @return Wbcr_FactoryForms442_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_FactoryForms442_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_FactoryForms442_Control A control object.
|
437 |
*/
|
438 |
public function createControl($item)
|
439 |
{
|
441 |
|
442 |
if( is_array($item) ) {
|
443 |
|
444 |
+
$control_data = Wbcr_FactoryForms442_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_FactoryForms442_Holder A control holder object.
|
469 |
*/
|
470 |
public function createHolder($item)
|
471 |
{
|
473 |
|
474 |
if( is_array($item) ) {
|
475 |
|
476 |
+
$holderData = Wbcr_FactoryForms442_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_FactoryForms442_FormElement A custom form element object.
|
495 |
*/
|
496 |
public function createCustomElement($item)
|
497 |
{
|
499 |
|
500 |
if( is_array($item) ) {
|
501 |
|
502 |
+
$data = Wbcr_FactoryForms442_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_FactoryForms442_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_FactoryForms442_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_FactoryForms442_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_FactoryForms442_Manager::$registered_controls;
|
606 |
} elseif( self::isControlHolder($type) ) {
|
607 |
+
$haystack = Wbcr_FactoryForms442_Manager::$registered_holders;
|
608 |
}
|
609 |
|
610 |
if( isset($haystack[$type]) ) {
|
660 |
*/
|
661 |
public static function isControl($item)
|
662 |
{
|
663 |
+
return isset(Wbcr_FactoryForms442_Manager::$registered_controls[$item['type']]);
|
664 |
}
|
665 |
|
666 |
/**
|
672 |
*/
|
673 |
public static function isControlHolder($item)
|
674 |
{
|
675 |
+
return isset(Wbcr_FactoryForms442_Manager::$registered_holders[$item['type']]);
|
676 |
}
|
677 |
|
678 |
/**
|
684 |
*/
|
685 |
public static function isCustomElement($item)
|
686 |
{
|
687 |
+
return isset(Wbcr_FactoryForms442_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_FactoryForms442_Holder') ) {
|
18 |
|
19 |
/**
|
20 |
* The base class for control holders.
|
21 |
*
|
22 |
* @since 1.0.0
|
23 |
*/
|
24 |
+
abstract class Wbcr_FactoryForms442_Holder extends Wbcr_FactoryForms442_FormElement {
|
25 |
|
26 |
/**
|
27 |
* Holder Elements.
|
28 |
*
|
29 |
* @since 1.0.0
|
30 |
+
* @var Wbcr_FactoryForms442_Control[]
|
31 |
*/
|
32 |
protected $elements = array();
|
33 |
|
44 |
*
|
45 |
* @since 1.0.0
|
46 |
* @param mixed[] $options A holder options.
|
47 |
+
* @param Wbcr_FactoryForms442_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_FactoryForms442_Control[].
|
60 |
*/
|
61 |
public function getElements()
|
62 |
{
|
84 |
$is_first_item = false;
|
85 |
}
|
86 |
|
87 |
+
do_action('wbcr_factory_445_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_FactoryForms442_HtmlAttributeBuilder') ) {
|
18 |
/**
|
19 |
* Html Attribute Builder
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
class Wbcr_FactoryForms442_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_FactoryForms442_OptionsValueProvider') ) {
|
18 |
|
19 |
/**
|
20 |
* Factory Meta Value Provider
|
24 |
*
|
25 |
* @since 1.0.0
|
26 |
*/
|
27 |
+
class Wbcr_FactoryForms442_MetaValueProvider implements Wbcr_IFactoryForms442_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_FactoryForms442_OptionsValueProvider') ) {
|
17 |
|
18 |
/**
|
19 |
* Factory Options Value Provider
|
22 |
*
|
23 |
* @since 1.0.0
|
24 |
*/
|
25 |
+
class Wbcr_FactoryForms442_OptionsValueProvider implements Wbcr_IFactoryForms442_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_Factory445_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_IFactoryForms442_ValueProvider') ) {
|
18 |
/**
|
19 |
* The interface for all value provides.
|
20 |
*
|
21 |
* @since 1.0.0
|
22 |
*/
|
23 |
+
interface Wbcr_IFactoryForms442_ValueProvider {
|
24 |
|
25 |
/**
|
26 |
* Inits a form a provider to get data from a storage.
|
libs/factory/forms/langs/{wbcr_factory_forms_441-ru_RU.mo → wbcr_factory_forms_442-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/forms/langs/{wbcr_factory_forms_441-ru_RU.po → wbcr_factory_forms_442-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_FactoryForms442_Bootstrap3FormLayout') ) {
|
18 |
/**
|
19 |
* A form layout based on Twitter Bootstrap 3
|
20 |
*/
|
21 |
+
class Wbcr_FactoryForms442_Bootstrap3FormLayout extends Wbcr_FactoryForms442_FormLayout {
|
22 |
|
23 |
public $name = 'default';
|
24 |
|
27 |
*
|
28 |
* @since 1.0.0
|
29 |
* @param array $options A holder options.
|
30 |
+
* @param Wbcr_FactoryForms442_Form $form A parent form.
|
31 |
*/
|
32 |
public function __construct($options, $form)
|
33 |
{
|
68 |
}
|
69 |
|
70 |
/**
|
71 |
+
* @param Wbcr_FactoryForms442_Control $control
|
72 |
*/
|
73 |
public function beforeControl($control)
|
74 |
{
|
116 |
}
|
117 |
|
118 |
/**
|
119 |
+
* @param Wbcr_FactoryForms442_Control $control
|
120 |
*/
|
121 |
public function afterControl($control)
|
122 |
{
|
168 |
}
|
169 |
|
170 |
/**
|
171 |
+
* @param Wbcr_FactoryForms442_Control $control
|
172 |
* @param int $index
|
173 |
* @param int $total
|
174 |
*/
|
193 |
}
|
194 |
|
195 |
/**
|
196 |
+
* @param Wbcr_FactoryForms442_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_133_LOADED') ) {
|
18 |
return;
|
19 |
}
|
20 |
|
21 |
+
define('FACTORY_FREEMIUS_133_VERSION', '1.3.3');
|
22 |
|
23 |
+
define('FACTORY_FREEMIUS_133_LOADED', true);
|
24 |
+
define('FACTORY_FREEMIUS_133_DIR', dirname(__FILE__));
|
25 |
+
define('FACTORY_FREEMIUS_133_URL', plugins_url(null, __FILE__));
|
26 |
|
27 |
#comp merge
|
28 |
// Freemius
|
29 |
+
require_once(FACTORY_FREEMIUS_133_DIR . '/includes/entities/class-freemius-entity.php');
|
30 |
+
require_once(FACTORY_FREEMIUS_133_DIR . '/includes/entities/class-freemius-scope.php');
|
31 |
+
require_once(FACTORY_FREEMIUS_133_DIR . '/includes/entities/class-freemius-user.php');
|
32 |
+
require_once(FACTORY_FREEMIUS_133_DIR . '/includes/entities/class-freemius-site.php');
|
33 |
+
require_once(FACTORY_FREEMIUS_133_DIR . '/includes/entities/class-freemius-license.php');
|
34 |
+
require_once(FACTORY_FREEMIUS_133_DIR . '/includes/licensing/class-freemius-provider.php');
|
35 |
+
require_once(FACTORY_FREEMIUS_133_DIR . '/includes/updates/class-freemius-repository.php');
|
36 |
|
37 |
if( !class_exists('Freemius_Api_WordPress') ) {
|
38 |
+
require_once FACTORY_FREEMIUS_133_DIR . '/includes/sdk/FreemiusWordPress.php';
|
39 |
}
|
40 |
|
41 |
+
require_once(FACTORY_FREEMIUS_133_DIR . '/includes/class-freemius-api.php');
|
42 |
|
43 |
/**
|
44 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
45 |
*/
|
46 |
+
add_action('wbcr_factory_freemius_133_plugin_created', function ($plugin) {
|
47 |
# Устанавливаем класс провайдера лицензий для премиум менеджера
|
48 |
+
$plugin->set_license_provider('freemius', 'WBCR\Factory_Freemius_133\Premium\Provider');
|
49 |
# Устанавливаем класс репозитория обновлений для менеджера обновлений
|
50 |
+
$plugin->set_update_repository('freemius', 'WBCR\Factory_Freemius_133\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_133;
|
4 |
|
5 |
use Freemius_Api_WordPress;
|
6 |
use Freemius_Exception;
|
7 |
+
use Wbcr_Factory445_Plugin;
|
8 |
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
exit;
|
33 |
private $api;
|
34 |
|
35 |
/**
|
36 |
+
* @var Wbcr_Factory445_Plugin
|
37 |
*/
|
38 |
private $plugin;
|
39 |
|
48 |
private static $clock_diff;
|
49 |
|
50 |
/**
|
51 |
+
* @param Wbcr_Factory445_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_Factory445_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_Factory445_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_Factory445_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_133\Entities;
|
4 |
|
5 |
use stdClass;
|
6 |
|
libs/factory/freemius/includes/entities/class-freemius-license.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
use stdClass;
|
6 |
|
@@ -14,7 +14,7 @@
|
|
14 |
* @copyright (c) 2018 Webraftic Ltd, Freemius, Inc.
|
15 |
* @version 1.0
|
16 |
*/
|
17 |
-
class License extends Entity implements \WBCR\
|
18 |
|
19 |
/**
|
20 |
* @var number
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_133\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_445\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_133\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_133\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_133\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_133\Entities;
|
4 |
|
5 |
if ( ! defined( 'ABSPATH' ) ) {
|
6 |
exit;
|
libs/factory/freemius/includes/licensing/class-freemius-provider.php
CHANGED
@@ -1,14 +1,14 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
-
|
5 |
-
use WBCR\
|
6 |
-
use WBCR\
|
7 |
-
use WBCR\
|
8 |
-
use WBCR\
|
9 |
-
use WBCR\
|
10 |
-
use
|
11 |
-
use WBCR\
|
12 |
use WP_Error;
|
13 |
use Exception;
|
14 |
|
@@ -40,17 +40,17 @@ final class Provider extends License_Provider {
|
|
40 |
private $slug;
|
41 |
|
42 |
/**
|
43 |
-
* @var \WBCR\
|
44 |
*/
|
45 |
private $site_api;
|
46 |
|
47 |
/**
|
48 |
-
* @var \WBCR\
|
49 |
*/
|
50 |
private $plugin_api;
|
51 |
|
52 |
/**
|
53 |
-
* @var \WBCR\
|
54 |
*/
|
55 |
private $user_api;
|
56 |
|
@@ -82,11 +82,11 @@ final class Provider extends License_Provider {
|
|
82 |
/**
|
83 |
* Manager constructor.
|
84 |
*
|
85 |
-
* @param
|
86 |
*
|
87 |
* @throws Exception
|
88 |
*/
|
89 |
-
public function __construct(
|
90 |
{
|
91 |
parent::__construct($plugin, $settings);
|
92 |
|
@@ -150,7 +150,7 @@ final class Provider extends License_Provider {
|
|
150 |
}
|
151 |
|
152 |
/**
|
153 |
-
* @return \WBCR\
|
154 |
* @throws Exception
|
155 |
*/
|
156 |
public function get_license()
|
@@ -613,7 +613,7 @@ final class Provider extends License_Provider {
|
|
613 |
/**
|
614 |
* @param bool $flush
|
615 |
*
|
616 |
-
* @return \WBCR\
|
617 |
* @throws Exception
|
618 |
*/
|
619 |
private function get_api_user_scope(User $user, $flush = false)
|
@@ -628,7 +628,7 @@ final class Provider extends License_Provider {
|
|
628 |
/**
|
629 |
* @param bool $flush
|
630 |
*
|
631 |
-
* @return \WBCR\
|
632 |
* @throws Exception
|
633 |
*/
|
634 |
private function get_api_site_scope(Site $site, $flush = false)
|
@@ -643,7 +643,7 @@ final class Provider extends License_Provider {
|
|
643 |
/**
|
644 |
* Get plugin public API scope.
|
645 |
*
|
646 |
-
* @return \WBCR\
|
647 |
* @throws Exception
|
648 |
*/
|
649 |
private function get_api_plugin_scope()
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_133\Premium;
|
4 |
+
|
5 |
+
use WBCR\Factory_Freemius_133\Entities\License;
|
6 |
+
use WBCR\Factory_Freemius_133\Entities\Plugin;
|
7 |
+
use WBCR\Factory_Freemius_133\Entities\Site;
|
8 |
+
use WBCR\Factory_Freemius_133\Entities\User;
|
9 |
+
use WBCR\Factory_445\Premium\Provider as License_Provider;
|
10 |
+
use Wbcr_Factory445_Plugin;
|
11 |
+
use WBCR\Factory_Freemius_133\Api;
|
12 |
use WP_Error;
|
13 |
use Exception;
|
14 |
|
40 |
private $slug;
|
41 |
|
42 |
/**
|
43 |
+
* @var \WBCR\Factory_Freemius_133\Api
|
44 |
*/
|
45 |
private $site_api;
|
46 |
|
47 |
/**
|
48 |
+
* @var \WBCR\Factory_Freemius_133\Api
|
49 |
*/
|
50 |
private $plugin_api;
|
51 |
|
52 |
/**
|
53 |
+
* @var \WBCR\Factory_Freemius_133\Api
|
54 |
*/
|
55 |
private $user_api;
|
56 |
|
82 |
/**
|
83 |
* Manager constructor.
|
84 |
*
|
85 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
86 |
*
|
87 |
* @throws Exception
|
88 |
*/
|
89 |
+
public function __construct(Wbcr_Factory445_Plugin $plugin, array $settings)
|
90 |
{
|
91 |
parent::__construct($plugin, $settings);
|
92 |
|
150 |
}
|
151 |
|
152 |
/**
|
153 |
+
* @return \WBCR\Factory_Freemius_133\Entities\License|null
|
154 |
* @throws Exception
|
155 |
*/
|
156 |
public function get_license()
|
613 |
/**
|
614 |
* @param bool $flush
|
615 |
*
|
616 |
+
* @return \WBCR\Factory_Freemius_133\Api
|
617 |
* @throws Exception
|
618 |
*/
|
619 |
private function get_api_user_scope(User $user, $flush = false)
|
628 |
/**
|
629 |
* @param bool $flush
|
630 |
*
|
631 |
+
* @return \WBCR\Factory_Freemius_133\Api
|
632 |
* @throws Exception
|
633 |
*/
|
634 |
private function get_api_site_scope(Site $site, $flush = false)
|
643 |
/**
|
644 |
* Get plugin public API scope.
|
645 |
*
|
646 |
+
* @return \WBCR\Factory_Freemius_133\Api
|
647 |
* @throws Exception
|
648 |
*/
|
649 |
private function get_api_plugin_scope()
|
libs/factory/freemius/includes/updates/class-freemius-repository.php
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
<?php
|
2 |
|
3 |
-
namespace WBCR\
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
7 |
-
use
|
8 |
-
use WBCR\
|
9 |
|
10 |
if( !defined('ABSPATH') ) {
|
11 |
exit;
|
@@ -20,19 +20,19 @@ if( !defined('ABSPATH') ) {
|
|
20 |
class Freemius_Repository extends Repository {
|
21 |
|
22 |
/**
|
23 |
-
* @var \WBCR\
|
24 |
*/
|
25 |
private $premium;
|
26 |
|
27 |
/**
|
28 |
* Freemius constructor.
|
29 |
-
* @param
|
30 |
*
|
31 |
* @throws Exception
|
32 |
* @since 4.0.0
|
33 |
*
|
34 |
*/
|
35 |
-
public function __construct(
|
36 |
{
|
37 |
$this->plugin = $plugin;
|
38 |
$this->premium = $this->plugin->premium;
|
@@ -43,7 +43,7 @@ class Freemius_Repository extends Repository {
|
|
43 |
*/
|
44 |
public function init()
|
45 |
{
|
46 |
-
if( !$this->premium instanceof \WBCR\
|
47 |
throw new Exception("This repository type requires Freemius premium provider.");
|
48 |
}
|
49 |
|
1 |
<?php
|
2 |
|
3 |
+
namespace WBCR\Factory_Freemius_133\Updates;
|
4 |
|
5 |
// Exit if accessed directly
|
6 |
use Exception;
|
7 |
+
use Wbcr_Factory445_Plugin;
|
8 |
+
use WBCR\Factory_445\Updates\Repository;
|
9 |
|
10 |
if( !defined('ABSPATH') ) {
|
11 |
exit;
|
20 |
class Freemius_Repository extends Repository {
|
21 |
|
22 |
/**
|
23 |
+
* @var \WBCR\Factory_Freemius_133\Premium\Provider
|
24 |
*/
|
25 |
private $premium;
|
26 |
|
27 |
/**
|
28 |
* Freemius constructor.
|
29 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
30 |
*
|
31 |
* @throws Exception
|
32 |
* @since 4.0.0
|
33 |
*
|
34 |
*/
|
35 |
+
public function __construct(Wbcr_Factory445_Plugin $plugin, array $settings = [])
|
36 |
{
|
37 |
$this->plugin = $plugin;
|
38 |
$this->premium = $this->plugin->premium;
|
43 |
*/
|
44 |
public function init()
|
45 |
{
|
46 |
+
if( !$this->premium instanceof \WBCR\Factory_Freemius_133\Premium\Provider ) {
|
47 |
throw new Exception("This repository type requires Freemius premium provider.");
|
48 |
}
|
49 |
|
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_444_LOADED') ) {
|
23 |
return;
|
24 |
}
|
25 |
|
26 |
+
define('FACTORY_PAGES_444_LOADED', true);
|
27 |
|
28 |
+
define('FACTORY_PAGES_444_VERSION', '4.4.4');
|
29 |
|
30 |
+
define('FACTORY_PAGES_444_DIR', dirname(__FILE__));
|
31 |
+
define('FACTORY_PAGES_444_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_444', false, dirname(plugin_basename(__FILE__)) . '/langs');
|
38 |
|
39 |
+
require(FACTORY_PAGES_444_DIR . '/pages.php');
|
40 |
+
require(FACTORY_PAGES_444_DIR . '/includes/page.class.php');
|
41 |
+
require(FACTORY_PAGES_444_DIR . '/includes/admin-page.class.php');
|
42 |
+
require(FACTORY_PAGES_444_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_FactoryPages443_AdminPage') ) {
|
|
209 |
*/
|
210 |
public $add_link_to_plugin_actions = false;
|
211 |
|
212 |
-
public function __construct(
|
213 |
{
|
214 |
parent::__construct($plugin);
|
215 |
$this->configure();
|
@@ -325,13 +325,13 @@ if( !class_exists('Wbcr_FactoryPages443_AdminPage') ) {
|
|
325 |
{
|
326 |
$result_id = $this->getResultId();
|
327 |
|
328 |
-
$this->hidden = apply_filters('
|
329 |
|
330 |
if( $this->hidden ) {
|
331 |
return;
|
332 |
}
|
333 |
|
334 |
-
$this->internal = apply_filters('
|
335 |
|
336 |
if( $this->internal ) {
|
337 |
$this->menu_target = null;
|
@@ -370,7 +370,7 @@ if( !class_exists('Wbcr_FactoryPages443_AdminPage') ) {
|
|
370 |
$this->assets($this->scripts, $this->styles);
|
371 |
|
372 |
if( !$this->scripts->isEmpty('bootstrap') || !$this->styles->isEmpty('bootstrap') ) {
|
373 |
-
add_action('
|
374 |
$this,
|
375 |
'actionAdminBootstrapScripts'
|
376 |
]);
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryPages444_AdminPage') ) {
|
18 |
|
19 |
+
class Wbcr_FactoryPages444_AdminPage extends Wbcr_FactoryPages444_Page {
|
20 |
|
21 |
/**
|
22 |
* Visible page title.
|
209 |
*/
|
210 |
public $add_link_to_plugin_actions = false;
|
211 |
|
212 |
+
public function __construct(Wbcr_Factory445_Plugin $plugin)
|
213 |
{
|
214 |
parent::__construct($plugin);
|
215 |
$this->configure();
|
325 |
{
|
326 |
$result_id = $this->getResultId();
|
327 |
|
328 |
+
$this->hidden = apply_filters('wbcr_factory_445_page_is_hidden_' . $result_id, $this->hidden);
|
329 |
|
330 |
if( $this->hidden ) {
|
331 |
return;
|
332 |
}
|
333 |
|
334 |
+
$this->internal = apply_filters('wbcr_factory_445_page_is_internal_' . $result_id, $this->internal);
|
335 |
|
336 |
if( $this->internal ) {
|
337 |
$this->menu_target = null;
|
370 |
$this->assets($this->scripts, $this->styles);
|
371 |
|
372 |
if( !$this->scripts->isEmpty('bootstrap') || !$this->styles->isEmpty('bootstrap') ) {
|
373 |
+
add_action('wbcr_factory_445_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), [
|
374 |
$this,
|
375 |
'actionAdminBootstrapScripts'
|
376 |
]);
|
libs/factory/pages/includes/page.class.php
CHANGED
@@ -14,9 +14,9 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
-
if ( ! class_exists( '
|
18 |
|
19 |
-
class
|
20 |
|
21 |
|
22 |
/**
|
@@ -30,7 +30,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages443_Page' ) ) {
|
|
30 |
* Чтобы не было конфликтов с другими плагинами, используйте префиксы.
|
31 |
*
|
32 |
* @since 1.0.0
|
33 |
-
* @see
|
34 |
*
|
35 |
* @var string
|
36 |
*/
|
@@ -39,7 +39,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages443_Page' ) ) {
|
|
39 |
/**
|
40 |
* Current Factory Plugin.
|
41 |
*
|
42 |
-
* @var
|
43 |
*/
|
44 |
public $plugin;
|
45 |
|
@@ -51,11 +51,11 @@ if ( ! class_exists( 'Wbcr_FactoryPages443_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_FactoryPages443_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_FactoryPages444_Page' ) ) {
|
18 |
|
19 |
+
class Wbcr_FactoryPages444_Page {
|
20 |
|
21 |
|
22 |
/**
|
30 |
* Чтобы не было конфликтов с другими плагинами, используйте префиксы.
|
31 |
*
|
32 |
* @since 1.0.0
|
33 |
+
* @see FactoryPages444_AdminPage
|
34 |
*
|
35 |
* @var string
|
36 |
*/
|
39 |
/**
|
40 |
* Current Factory Plugin.
|
41 |
*
|
42 |
+
* @var Wbcr_Factory445_Plugin
|
43 |
*/
|
44 |
public $plugin;
|
45 |
|
51 |
//private $default_actions = array();
|
52 |
|
53 |
/**
|
54 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
55 |
*
|
56 |
* @throws Exception
|
57 |
*/
|
58 |
+
public function __construct( Wbcr_Factory445_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_444/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_443-fr_FR.mo → wbcr_factory_pages_444-fr_FR.mo}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_443-fr_FR.po → wbcr_factory_pages_444-fr_FR.po}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_443-ru_RU.mo → wbcr_factory_pages_444-ru_RU.mo}
RENAMED
File without changes
|
libs/factory/pages/langs/{wbcr_factory_pages_443-ru_RU.po → wbcr_factory_pages_444-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_FactoryPages444::actionAdminMenu');
|
18 |
+
add_action('network_admin_menu', 'Wbcr_FactoryPages444::actionAdminMenu');
|
19 |
|
20 |
+
if( !class_exists('Wbcr_FactoryPages444') ) {
|
21 |
/**
|
22 |
* A base class to manage pages.
|
23 |
*
|
24 |
* @since 1.0.0
|
25 |
*/
|
26 |
+
class Wbcr_FactoryPages444 {
|
27 |
|
28 |
/**
|
29 |
+
* @var Wbcr_FactoryPages444_Page[]
|
30 |
*/
|
31 |
private static $pages = array();
|
32 |
|
33 |
/**
|
34 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
35 |
* @param $class_name
|
36 |
*/
|
37 |
public static function register($plugin, $class_name)
|
59 |
}
|
60 |
}
|
61 |
|
62 |
+
public static function getPageUrl(Wbcr_Factory445_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_Factory445_Plugin $plugin
|
79 |
* @return array
|
80 |
*/
|
81 |
public static function getIds($plugin)
|
93 |
}
|
94 |
}
|
95 |
|
96 |
+
if( !function_exists('wbcr_factory_pages_444_get_page_id') ) {
|
97 |
/**
|
98 |
*
|
99 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
100 |
* @param string $page_id
|
101 |
* @return string
|
102 |
*/
|
103 |
+
function wbcr_factory_pages_444_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
@@ -9,7 +9,7 @@
|
|
9 |
#WBCR .wdan-notices-compact-panel {
|
10 |
display: none !important;
|
11 |
}
|
12 |
-
#WBCR .wbcr-factory-pages-
|
13 |
position: relative;
|
14 |
/**
|
15 |
Content sections
|
@@ -18,134 +18,134 @@
|
|
18 |
Widget in the sidebar of the plugin
|
19 |
*/
|
20 |
}
|
21 |
-
#WBCR .wbcr-factory-pages-
|
22 |
color: #9a9a9a;
|
23 |
}
|
24 |
-
#WBCR .wbcr-factory-pages-
|
25 |
color: #ffc107;
|
26 |
}
|
27 |
-
#WBCR .wbcr-factory-pages-
|
28 |
color: #ffeb3b;
|
29 |
}
|
30 |
-
#WBCR .wbcr-factory-pages-
|
31 |
padding: 0 20px;
|
32 |
}
|
33 |
-
#WBCR .wbcr-factory-pages-
|
34 |
font-weight: normal;
|
35 |
}
|
36 |
-
#WBCR .wbcr-factory-pages-
|
37 |
max-width: 300px;
|
38 |
}
|
39 |
-
#WBCR .wbcr-factory-pages-
|
40 |
text-align: right;
|
41 |
padding-right: 20px;
|
42 |
}
|
43 |
-
#WBCR .wbcr-factory-pages-
|
44 |
display: inline-block;
|
45 |
vertical-align: bottom;
|
46 |
}
|
47 |
-
#WBCR .wbcr-factory-pages-
|
48 |
-
#WBCR .wbcr-factory-pages-
|
49 |
outline: none;
|
50 |
}
|
51 |
-
#WBCR .wbcr-factory-pages-
|
52 |
font-weight: bold;
|
53 |
margin: 0 !important;
|
54 |
border: 0;
|
55 |
border-radius: 0;
|
56 |
padding: 15px;
|
57 |
}
|
58 |
-
#WBCR .wbcr-factory-pages-
|
59 |
margin-top: 0 !important;
|
60 |
}
|
61 |
-
#WBCR .wbcr-factory-pages-
|
62 |
background: #fff3d0;
|
63 |
}
|
64 |
-
#WBCR .wbcr-factory-pages-
|
65 |
background: #fffde9;
|
66 |
}
|
67 |
-
#WBCR .wbcr-factory-pages-
|
68 |
background: #de716d;
|
69 |
}
|
70 |
-
#WBCR .wbcr-factory-pages-
|
71 |
background: #ec8c89;
|
72 |
}
|
73 |
-
#WBCR .wbcr-factory-pages-
|
74 |
background: #d0ecc4;
|
75 |
}
|
76 |
-
#WBCR .wbcr-factory-pages-
|
77 |
background: #e0eadb;
|
78 |
}
|
79 |
-
#WBCR .wbcr-factory-pages-
|
80 |
padding: 20px 20px 40px;
|
81 |
}
|
82 |
-
#WBCR .wbcr-factory-pages-
|
83 |
display: block;
|
84 |
font-size: 11px;
|
85 |
font-weight: lighter;
|
86 |
color: #179347;
|
87 |
}
|
88 |
-
#WBCR .wbcr-factory-pages-
|
89 |
-
#WBCR .wbcr-factory-pages-
|
90 |
position: relative;
|
91 |
background: #e6e6e6;
|
92 |
overflow: hidden;
|
93 |
}
|
94 |
-
#WBCR .wbcr-factory-pages-
|
95 |
-
#WBCR .wbcr-factory-pages-
|
96 |
display: block;
|
97 |
content: '';
|
98 |
clear: both;
|
99 |
}
|
100 |
-
#WBCR .wbcr-factory-pages-
|
101 |
background: #efefef;
|
102 |
padding: 20px 0 10px 20px;
|
103 |
margin: 30px 0;
|
104 |
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
105 |
}
|
106 |
-
#WBCR .wbcr-factory-pages-
|
107 |
margin-top: 0;
|
108 |
}
|
109 |
-
#WBCR .wbcr-factory-pages-
|
110 |
font-size: 15px;
|
111 |
}
|
112 |
-
#WBCR .wbcr-factory-pages-
|
113 |
color: #8c8888;
|
114 |
font-size: 12px;
|
115 |
}
|
116 |
-
#WBCR .wbcr-factory-pages-
|
117 |
margin-left: 230px;
|
118 |
padding: 80px 0 0 0;
|
119 |
vertical-align: top;
|
120 |
background: #fff;
|
121 |
}
|
122 |
-
#WBCR .wbcr-factory-pages-
|
123 |
-
#WBCR .wbcr-factory-pages-
|
124 |
-
#WBCR .wbcr-factory-pages-
|
125 |
border: 0;
|
126 |
}
|
127 |
-
#WBCR .wbcr-factory-pages-
|
128 |
background: #efefef !important;
|
129 |
margin-bottom: -2px !important;
|
130 |
border-bottom: 1px solid #efefef !important;
|
131 |
}
|
132 |
-
#WBCR .wbcr-factory-pages-
|
133 |
margin: 0;
|
134 |
}
|
135 |
-
#WBCR .wbcr-factory-pages-
|
136 |
background: #f7f7f7;
|
137 |
}
|
138 |
-
#WBCR .wbcr-factory-pages-
|
139 |
border: 2px solid #dedede;
|
140 |
border-bottom: 0;
|
141 |
box-shadow: -1px 0 0 rgba(0, 0, 0, 0.1);
|
142 |
}
|
143 |
-
#WBCR .wbcr-factory-pages-
|
144 |
-
#WBCR .wbcr-factory-pages-
|
145 |
box-shadow: none;
|
146 |
outline: none;
|
147 |
}
|
148 |
-
#WBCR .wbcr-factory-pages-
|
149 |
position: absolute;
|
150 |
z-index: 13;
|
151 |
top: 0;
|
@@ -156,7 +156,7 @@
|
|
156 |
color: #fff;
|
157 |
border-radius: 5px 5px 0 0;
|
158 |
}
|
159 |
-
#WBCR .wbcr-factory-pages-
|
160 |
float: left;
|
161 |
padding: 25px 0;
|
162 |
font-size: 20px;
|
@@ -169,11 +169,11 @@
|
|
169 |
margin-right: 10px;
|
170 |
background: none;
|
171 |
}
|
172 |
-
#WBCR .wbcr-factory-pages-
|
173 |
display: inline-block;
|
174 |
vertical-align: middle;
|
175 |
}
|
176 |
-
#WBCR .wbcr-factory-pages-
|
177 |
font-size: 18px;
|
178 |
line-height: 30px;
|
179 |
font-weight: 300;
|
@@ -184,12 +184,12 @@
|
|
184 |
text-overflow: ellipsis;
|
185 |
color: #fff;
|
186 |
}
|
187 |
-
#WBCR .wbcr-factory-pages-
|
188 |
position: relative;
|
189 |
float: right;
|
190 |
margin: 12px;
|
191 |
}
|
192 |
-
#WBCR .wbcr-factory-pages-
|
193 |
display: inline-block;
|
194 |
vertical-align: top;
|
195 |
font-size: 13px;
|
@@ -212,49 +212,49 @@
|
|
212 |
text-decoration: none;
|
213 |
z-index: 3;
|
214 |
}
|
215 |
-
#WBCR .wbcr-factory-pages-
|
216 |
box-shadow: none;
|
217 |
min-width: 100px;
|
218 |
background-color: #8bc34a;
|
219 |
color: #fff;
|
220 |
}
|
221 |
-
#WBCR .wbcr-factory-pages-
|
222 |
background: #9dbb7b;
|
223 |
color: #fff;
|
224 |
}
|
225 |
-
#WBCR .wbcr-factory-pages-
|
226 |
box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
|
227 |
}
|
228 |
-
#WBCR .wbcr-factory-pages-
|
229 |
box-shadow: none;
|
230 |
min-width: 200px;
|
231 |
background-color: #9e9e9e;
|
232 |
color: #fff;
|
233 |
}
|
234 |
-
#WBCR .wbcr-factory-pages-
|
235 |
background: #797979;
|
236 |
color: #fff;
|
237 |
}
|
238 |
-
#WBCR .wbcr-factory-pages-
|
239 |
box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
|
240 |
}
|
241 |
-
#WBCR .wbcr-factory-pages-
|
242 |
float: left;
|
243 |
vertical-align: top;
|
244 |
width: 230px;
|
245 |
background: #e6e6e6;
|
246 |
}
|
247 |
-
#WBCR .wbcr-factory-pages-
|
248 |
padding: 0;
|
249 |
margin-bottom: 0;
|
250 |
margin-top: 80px;
|
251 |
}
|
252 |
-
#WBCR .wbcr-factory-pages-
|
253 |
display: block;
|
254 |
background: #efefef;
|
255 |
margin: 1px 0;
|
256 |
}
|
257 |
-
#WBCR .wbcr-factory-pages-
|
258 |
display: block;
|
259 |
width: 100%;
|
260 |
padding: 20px 20px;
|
@@ -265,58 +265,58 @@
|
|
265 |
text-align: left;
|
266 |
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
|
267 |
}
|
268 |
-
#WBCR .wbcr-factory-pages-
|
269 |
display: block;
|
270 |
font-weight: bold;
|
271 |
}
|
272 |
-
#WBCR .wbcr-factory-pages-
|
273 |
display: block;
|
274 |
font-size: 13px;
|
275 |
font-weight: normal;
|
276 |
text-transform: none;
|
277 |
color: #9a9a9a;
|
278 |
}
|
279 |
-
#WBCR .wbcr-factory-pages-
|
280 |
float: right;
|
281 |
color: #ccc;
|
282 |
}
|
283 |
-
#WBCR .wbcr-factory-pages-
|
284 |
clear: both;
|
285 |
}
|
286 |
-
#WBCR .wbcr-factory-pages-
|
287 |
background: #f7f6f6;
|
288 |
}
|
289 |
-
#WBCR .wbcr-factory-pages-
|
290 |
color: #9a9a9a;
|
291 |
}
|
292 |
-
#WBCR .wbcr-factory-pages-
|
293 |
-
#WBCR .wbcr-factory-pages-
|
294 |
-
#WBCR .wbcr-factory-pages-
|
295 |
-
#WBCR .wbcr-factory-pages-
|
296 |
-
#WBCR .wbcr-factory-pages-
|
297 |
outline: 0 !important;
|
298 |
box-shadow: none !important;
|
299 |
}
|
300 |
-
#WBCR .wbcr-factory-pages-
|
301 |
background: #fff;
|
302 |
border-left: 5px solid #ff5722;
|
303 |
}
|
304 |
-
#WBCR .wbcr-factory-pages-
|
305 |
color: #ff5722;
|
306 |
font-weight: bold;
|
307 |
}
|
308 |
-
#WBCR .wbcr-factory-pages-
|
309 |
color: #9a9a9a;
|
310 |
}
|
311 |
-
#WBCR .wbcr-factory-pages-
|
312 |
padding: 0;
|
313 |
margin: 0;
|
314 |
}
|
315 |
-
#WBCR .wbcr-factory-pages-
|
316 |
margin: 1px 0 0;
|
317 |
padding: 0;
|
318 |
}
|
319 |
-
#WBCR .wbcr-factory-pages-
|
320 |
display: block;
|
321 |
font-weight: normal;
|
322 |
color: #222;
|
@@ -327,12 +327,12 @@
|
|
327 |
text-decoration: none;
|
328 |
outline: none;
|
329 |
}
|
330 |
-
#WBCR .wbcr-factory-pages-
|
331 |
-
#WBCR .wbcr-factory-pages-
|
332 |
outline: 0 !important;
|
333 |
text-shadow: none !important;
|
334 |
}
|
335 |
-
#WBCR .wbcr-factory-pages-
|
336 |
color: #9a9a9a;
|
337 |
font-size: 13px;
|
338 |
border: 0;
|
@@ -343,48 +343,48 @@
|
|
343 |
-ms-filter: fliph;
|
344 |
filter: fliph;
|
345 |
}
|
346 |
-
#WBCR .wbcr-factory-pages-
|
347 |
background: #fff;
|
348 |
color: #ff5722;
|
349 |
font-weight: 600;
|
350 |
}
|
351 |
-
#WBCR .wbcr-factory-pages-
|
352 |
color: #ff5722;
|
353 |
}
|
354 |
-
#WBCR .wbcr-factory-pages-
|
355 |
-
#WBCR .wbcr-factory-pages-
|
356 |
display: inline-block;
|
357 |
vertical-align: top;
|
358 |
}
|
359 |
-
#WBCR .wbcr-factory-pages-
|
360 |
width: 74.6%;
|
361 |
}
|
362 |
-
#WBCR .wbcr-factory-pages-
|
363 |
width: 100%;
|
364 |
}
|
365 |
-
#WBCR .wbcr-factory-pages-
|
366 |
margin-top: 15px;
|
367 |
}
|
368 |
-
#WBCR .wbcr-factory-pages-
|
369 |
background: #f7f7f7;
|
370 |
padding: 0 0 20px 0;
|
371 |
border: 1px solid #dad8d8;
|
372 |
box-shadow: -1px 0px 1px rgba(0, 0, 0, 0.1);
|
373 |
}
|
374 |
-
#WBCR .wbcr-factory-pages-
|
375 |
padding-top: 0 !important;
|
376 |
}
|
377 |
-
#WBCR .wbcr-factory-pages-
|
378 |
width: 25%;
|
379 |
padding: 10px;
|
380 |
margin: 0 0 -20px;
|
381 |
background-color: #f9f9f9;
|
382 |
box-shadow: -1px 1px 5px rgba(0, 0, 0, 0.1);
|
383 |
}
|
384 |
-
#WBCR .wbcr-factory-pages-
|
385 |
margin: 0 0 20px;
|
386 |
}
|
387 |
-
#WBCR .wbcr-factory-pages-
|
388 |
display: inline-block;
|
389 |
min-height: 230px;
|
390 |
width: 100%;
|
@@ -393,19 +393,19 @@
|
|
393 |
padding: 20px 15px;
|
394 |
vertical-align: top;
|
395 |
}
|
396 |
-
#WBCR .wbcr-factory-pages-
|
397 |
display: none;
|
398 |
}
|
399 |
-
#WBCR .wbcr-factory-pages-
|
400 |
background: #fff4d0;
|
401 |
}
|
402 |
-
#WBCR .wbcr-factory-pages-
|
403 |
background: #e2ffc0;
|
404 |
}
|
405 |
-
#WBCR .wbcr-factory-pages-
|
406 |
background: #ffebe9;
|
407 |
}
|
408 |
-
#WBCR .wbcr-factory-pages-
|
409 |
display: inline-block;
|
410 |
width: 16px;
|
411 |
height: 16px;
|
@@ -417,16 +417,16 @@
|
|
417 |
background: #E91E63;
|
418 |
border-radius: 3px;
|
419 |
}
|
420 |
-
#WBCR .wbcr-factory-pages-
|
421 |
background: #E91E63;
|
422 |
}
|
423 |
-
#WBCR .wbcr-factory-pages-
|
424 |
background: #9e9e9e;
|
425 |
}
|
426 |
-
#WBCR .wbcr-factory-pages-
|
427 |
background: #8bc34a;
|
428 |
}
|
429 |
-
#WBCR .wbcr-factory-pages-
|
430 |
display: block;
|
431 |
width: 80px;
|
432 |
height: 17px;
|
@@ -434,23 +434,23 @@
|
|
434 |
vertical-align: middle;
|
435 |
margin-bottom: 5px;
|
436 |
}
|
437 |
-
#WBCR .wbcr-factory-pages-
|
438 |
display: block;
|
439 |
margin: 30px auto 0;
|
440 |
outline: none;
|
441 |
}
|
442 |
-
#WBCR .wbcr-factory-pages-
|
443 |
-
#WBCR .wbcr-factory-pages-
|
444 |
box-shadow: none;
|
445 |
}
|
446 |
-
#WBCR .wbcr-factory-pages-
|
447 |
font-size: 50px;
|
448 |
margin-top: 30px;
|
449 |
text-align: center;
|
450 |
font-weight: 600;
|
451 |
color: #8BC34A;
|
452 |
}
|
453 |
-
#WBCR .wbcr-factory-pages-
|
454 |
min-height: 240px;
|
455 |
margin-bottom: 20px;
|
456 |
text-align: center;
|
@@ -458,24 +458,24 @@
|
|
458 |
padding: 30px;
|
459 |
border: 1px solid #f3f1e7;
|
460 |
}
|
461 |
-
#WBCR .wbcr-factory-pages-
|
462 |
width: 50px;
|
463 |
height: 50px;
|
464 |
font-size: 50px;
|
465 |
color: #FFC107;
|
466 |
line-height: normal;
|
467 |
}
|
468 |
-
#WBCR .wbcr-factory-pages-
|
469 |
color: #7b6111;
|
470 |
}
|
471 |
-
#WBCR .wbcr-factory-pages-
|
472 |
color: #9e9e9e;
|
473 |
}
|
474 |
-
#WBCR .wbcr-factory-pages-
|
475 |
margin-top: 20px;
|
476 |
text-align: center;
|
477 |
}
|
478 |
-
#WBCR .wbcr-factory-pages-
|
479 |
display: inline-block;
|
480 |
padding: 20px 60px;
|
481 |
background-color: #FFC107;
|
@@ -485,67 +485,67 @@
|
|
485 |
font-weight: bold;
|
486 |
transition: background-color 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
|
487 |
}
|
488 |
-
#WBCR .wbcr-factory-pages-
|
489 |
background-color: #ffce3a;
|
490 |
}
|
491 |
-
#WBCR .wbcr-factory-pages-
|
492 |
padding: 20px;
|
493 |
background: #ffffff;
|
494 |
}
|
495 |
-
#WBCR .wbcr-factory-pages-
|
496 |
-
#WBCR .wbcr-factory-pages-
|
497 |
display: none;
|
498 |
}
|
499 |
-
#WBCR .wbcr-factory-pages-
|
500 |
font-size: 18px;
|
501 |
margin-top: 10px;
|
502 |
}
|
503 |
-
#WBCR .wbcr-factory-pages-
|
504 |
padding: 10px;
|
505 |
background: #ffedeb;
|
506 |
border: 1px solid #ffdfdc;
|
507 |
margin: 15px 0;
|
508 |
}
|
509 |
-
#WBCR .wbcr-factory-pages-
|
510 |
margin-bottom: 15px;
|
511 |
color: #7b7b7b;
|
512 |
}
|
513 |
@media screen and (max-width: 1367px) {
|
514 |
-
#WBCR .wbcr-factory-pages-
|
515 |
width: 69.6%;
|
516 |
}
|
517 |
-
#WBCR .wbcr-factory-pages-
|
518 |
width: 30%;
|
519 |
}
|
520 |
}
|
521 |
@media screen and (max-width: 1320px) {
|
522 |
-
#WBCR .wbcr-factory-pages-
|
523 |
width: 100%;
|
524 |
}
|
525 |
-
#WBCR .wbcr-factory-pages-
|
526 |
display: none !important;
|
527 |
}
|
528 |
-
#WBCR .wbcr-factory-pages-
|
529 |
display: none !important;
|
530 |
}
|
531 |
-
#WBCR .wbcr-factory-pages-
|
532 |
display: none !important;
|
533 |
}
|
534 |
}
|
535 |
@media screen and (max-width: 950px) {
|
536 |
-
#WBCR .wbcr-factory-pages-
|
537 |
width: 70px;
|
538 |
}
|
539 |
-
#WBCR .wbcr-factory-pages-
|
540 |
font-size: 0;
|
541 |
}
|
542 |
-
#WBCR .wbcr-factory-pages-
|
543 |
font-size: 0;
|
544 |
}
|
545 |
-
#WBCR .wbcr-factory-pages-
|
546 |
display: none !important;
|
547 |
}
|
548 |
-
#WBCR .wbcr-factory-pages-
|
549 |
margin-left: 70px;
|
550 |
}
|
551 |
}
|
9 |
#WBCR .wdan-notices-compact-panel {
|
10 |
display: none !important;
|
11 |
}
|
12 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template {
|
13 |
position: relative;
|
14 |
/**
|
15 |
Content sections
|
18 |
Widget in the sidebar of the plugin
|
19 |
*/
|
20 |
}
|
21 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-color-grey {
|
22 |
color: #9a9a9a;
|
23 |
}
|
24 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-orange-color {
|
25 |
color: #ffc107;
|
26 |
}
|
27 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-light-orange-color {
|
28 |
color: #ffeb3b;
|
29 |
}
|
30 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .form-group {
|
31 |
padding: 0 20px;
|
32 |
}
|
33 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .form-group label {
|
34 |
font-weight: normal;
|
35 |
}
|
36 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .form-horizontal .control-label {
|
37 |
max-width: 300px;
|
38 |
}
|
39 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .factory-control-buttons {
|
40 |
text-align: right;
|
41 |
padding-right: 20px;
|
42 |
}
|
43 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .factory-from-control-list label span {
|
44 |
display: inline-block;
|
45 |
vertical-align: bottom;
|
46 |
}
|
47 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .factory-from-control-list label span input[type="checkbox"],
|
48 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .factory-from-control-list label span input[type="checkbox"]:focus {
|
49 |
outline: none;
|
50 |
}
|
51 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .alert {
|
52 |
font-weight: bold;
|
53 |
margin: 0 !important;
|
54 |
border: 0;
|
55 |
border-radius: 0;
|
56 |
padding: 15px;
|
57 |
}
|
58 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .alert + .wbcr-factory-page-group-header {
|
59 |
margin-top: 0 !important;
|
60 |
}
|
61 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .alert.alert-warning {
|
62 |
background: #fff3d0;
|
63 |
}
|
64 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .alert.alert-warning:nth-child(2n+1) {
|
65 |
background: #fffde9;
|
66 |
}
|
67 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .alert.alert-danger {
|
68 |
background: #de716d;
|
69 |
}
|
70 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .alert.alert-danger:nth-child(2n+1) {
|
71 |
background: #ec8c89;
|
72 |
}
|
73 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .alert.alert-success {
|
74 |
background: #d0ecc4;
|
75 |
}
|
76 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .alert.alert-success:nth-child(2n+1) {
|
77 |
background: #e0eadb;
|
78 |
}
|
79 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-header {
|
80 |
padding: 20px 20px 40px;
|
81 |
}
|
82 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-recomended-text {
|
83 |
display: block;
|
84 |
font-size: 11px;
|
85 |
font-weight: lighter;
|
86 |
color: #179347;
|
87 |
}
|
88 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-options,
|
89 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page {
|
90 |
position: relative;
|
91 |
background: #e6e6e6;
|
92 |
overflow: hidden;
|
93 |
}
|
94 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-options:after,
|
95 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page:after {
|
96 |
display: block;
|
97 |
content: '';
|
98 |
clear: both;
|
99 |
}
|
100 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-group-header {
|
101 |
background: #efefef;
|
102 |
padding: 20px 0 10px 20px;
|
103 |
margin: 30px 0;
|
104 |
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.1);
|
105 |
}
|
106 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-group-header:first-child {
|
107 |
margin-top: 0;
|
108 |
}
|
109 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-group-header strong {
|
110 |
font-size: 15px;
|
111 |
}
|
112 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-group-header p {
|
113 |
color: #8c8888;
|
114 |
font-size: 12px;
|
115 |
}
|
116 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-inner-wrap {
|
117 |
margin-left: 230px;
|
118 |
padding: 80px 0 0 0;
|
119 |
vertical-align: top;
|
120 |
background: #fff;
|
121 |
}
|
122 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab-wrapper,
|
123 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-inner-wrap h2.nav-tab-wrapper,
|
124 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-inner-wrap h1.nav-tab-wrapper {
|
125 |
border: 0;
|
126 |
}
|
127 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab-active {
|
128 |
background: #efefef !important;
|
129 |
margin-bottom: -2px !important;
|
130 |
border-bottom: 1px solid #efefef !important;
|
131 |
}
|
132 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:first-child {
|
133 |
margin: 0;
|
134 |
}
|
135 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:hover {
|
136 |
background: #f7f7f7;
|
137 |
}
|
138 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab {
|
139 |
border: 2px solid #dedede;
|
140 |
border-bottom: 0;
|
141 |
box-shadow: -1px 0 0 rgba(0, 0, 0, 0.1);
|
142 |
}
|
143 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:active,
|
144 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:focus {
|
145 |
box-shadow: none;
|
146 |
outline: none;
|
147 |
}
|
148 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header {
|
149 |
position: absolute;
|
150 |
z-index: 13;
|
151 |
top: 0;
|
156 |
color: #fff;
|
157 |
border-radius: 5px 5px 0 0;
|
158 |
}
|
159 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-logo {
|
160 |
float: left;
|
161 |
padding: 25px 0;
|
162 |
font-size: 20px;
|
169 |
margin-right: 10px;
|
170 |
background: none;
|
171 |
}
|
172 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-title {
|
173 |
display: inline-block;
|
174 |
vertical-align: middle;
|
175 |
}
|
176 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-title h2 {
|
177 |
font-size: 18px;
|
178 |
line-height: 30px;
|
179 |
font-weight: 300;
|
184 |
text-overflow: ellipsis;
|
185 |
color: #fff;
|
186 |
}
|
187 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header .wbcr-factory-control {
|
188 |
position: relative;
|
189 |
float: right;
|
190 |
margin: 12px;
|
191 |
}
|
192 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button {
|
193 |
display: inline-block;
|
194 |
vertical-align: top;
|
195 |
font-size: 13px;
|
212 |
text-decoration: none;
|
213 |
z-index: 3;
|
214 |
}
|
215 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save {
|
216 |
box-shadow: none;
|
217 |
min-width: 100px;
|
218 |
background-color: #8bc34a;
|
219 |
color: #fff;
|
220 |
}
|
221 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save:hover {
|
222 |
background: #9dbb7b;
|
223 |
color: #fff;
|
224 |
}
|
225 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-save:active {
|
226 |
box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
|
227 |
}
|
228 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings {
|
229 |
box-shadow: none;
|
230 |
min-width: 200px;
|
231 |
background-color: #9e9e9e;
|
232 |
color: #fff;
|
233 |
}
|
234 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings:hover {
|
235 |
background: #797979;
|
236 |
color: #fff;
|
237 |
}
|
238 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button.wbcr-factory-type-settings:active {
|
239 |
box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.3);
|
240 |
}
|
241 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar {
|
242 |
float: left;
|
243 |
vertical-align: top;
|
244 |
width: 230px;
|
245 |
background: #e6e6e6;
|
246 |
}
|
247 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul {
|
248 |
padding: 0;
|
249 |
margin-bottom: 0;
|
250 |
margin-top: 80px;
|
251 |
}
|
252 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab {
|
253 |
display: block;
|
254 |
background: #efefef;
|
255 |
margin: 1px 0;
|
256 |
}
|
257 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link {
|
258 |
display: block;
|
259 |
width: 100%;
|
260 |
padding: 20px 20px;
|
265 |
text-align: left;
|
266 |
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
|
267 |
}
|
268 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .wbcr-factory-tab__title {
|
269 |
display: block;
|
270 |
font-weight: bold;
|
271 |
}
|
272 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .wbcr-factory-tab__short-description {
|
273 |
display: block;
|
274 |
font-size: 13px;
|
275 |
font-weight: normal;
|
276 |
text-transform: none;
|
277 |
color: #9a9a9a;
|
278 |
}
|
279 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link .dashicons {
|
280 |
float: right;
|
281 |
color: #ccc;
|
282 |
}
|
283 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link::after {
|
284 |
clear: both;
|
285 |
}
|
286 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover {
|
287 |
background: #f7f6f6;
|
288 |
}
|
289 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover .dashicons {
|
290 |
color: #9a9a9a;
|
291 |
}
|
292 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link,
|
293 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
|
294 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover,
|
295 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
|
296 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:focus {
|
297 |
outline: 0 !important;
|
298 |
box-shadow: none !important;
|
299 |
}
|
300 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab {
|
301 |
background: #fff;
|
302 |
border-left: 5px solid #ff5722;
|
303 |
}
|
304 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab a {
|
305 |
color: #ff5722;
|
306 |
font-weight: bold;
|
307 |
}
|
308 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab.wbcr-factory-active-tab a .dashicons {
|
309 |
color: #9a9a9a;
|
310 |
}
|
311 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu {
|
312 |
padding: 0;
|
313 |
margin: 0;
|
314 |
}
|
315 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li {
|
316 |
margin: 1px 0 0;
|
317 |
padding: 0;
|
318 |
}
|
319 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a {
|
320 |
display: block;
|
321 |
font-weight: normal;
|
322 |
color: #222;
|
327 |
text-decoration: none;
|
328 |
outline: none;
|
329 |
}
|
330 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a:focus,
|
331 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a:link {
|
332 |
outline: 0 !important;
|
333 |
text-shadow: none !important;
|
334 |
}
|
335 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a .dashicons {
|
336 |
color: #9a9a9a;
|
337 |
font-size: 13px;
|
338 |
border: 0;
|
343 |
-ms-filter: fliph;
|
344 |
filter: fliph;
|
345 |
}
|
346 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a.wbcr-factory-tab-active {
|
347 |
background: #fff;
|
348 |
color: #ff5722;
|
349 |
font-weight: 600;
|
350 |
}
|
351 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a.wbcr-factory-tab-active .dashicons {
|
352 |
color: #ff5722;
|
353 |
}
|
354 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-content-section,
|
355 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section {
|
356 |
display: inline-block;
|
357 |
vertical-align: top;
|
358 |
}
|
359 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-content-section {
|
360 |
width: 74.6%;
|
361 |
}
|
362 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-content-section.wbcr-fullwidth {
|
363 |
width: 100%;
|
364 |
}
|
365 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-content-section .nav-tab-wrapper {
|
366 |
margin-top: 15px;
|
367 |
}
|
368 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-content-section .wbcr-factory-content {
|
369 |
background: #f7f7f7;
|
370 |
padding: 0 0 20px 0;
|
371 |
border: 1px solid #dad8d8;
|
372 |
box-shadow: -1px 0px 1px rgba(0, 0, 0, 0.1);
|
373 |
}
|
374 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-content-section .wbcr-factory-content > form {
|
375 |
padding-top: 0 !important;
|
376 |
}
|
377 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section {
|
378 |
width: 25%;
|
379 |
padding: 10px;
|
380 |
margin: 0 0 -20px;
|
381 |
background-color: #f9f9f9;
|
382 |
box-shadow: -1px 1px 5px rgba(0, 0, 0, 0.1);
|
383 |
}
|
384 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-sidebar-widget {
|
385 |
margin: 0 0 20px;
|
386 |
}
|
387 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget {
|
388 |
display: inline-block;
|
389 |
min-height: 230px;
|
390 |
width: 100%;
|
393 |
padding: 20px 15px;
|
394 |
vertical-align: top;
|
395 |
}
|
396 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-hide {
|
397 |
display: none;
|
398 |
}
|
399 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-warning {
|
400 |
background: #fff4d0;
|
401 |
}
|
402 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-danger {
|
403 |
background: #e2ffc0;
|
404 |
}
|
405 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-success {
|
406 |
background: #ffebe9;
|
407 |
}
|
408 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-hint-icon-simple {
|
409 |
display: inline-block;
|
410 |
width: 16px;
|
411 |
height: 16px;
|
417 |
background: #E91E63;
|
418 |
border-radius: 3px;
|
419 |
}
|
420 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-grey {
|
421 |
background: #E91E63;
|
422 |
}
|
423 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-red {
|
424 |
background: #9e9e9e;
|
425 |
}
|
426 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-green {
|
427 |
background: #8bc34a;
|
428 |
}
|
429 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-icon-5stars {
|
430 |
display: block;
|
431 |
width: 80px;
|
432 |
height: 17px;
|
434 |
vertical-align: middle;
|
435 |
margin-bottom: 5px;
|
436 |
}
|
437 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] {
|
438 |
display: block;
|
439 |
margin: 30px auto 0;
|
440 |
outline: none;
|
441 |
}
|
442 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] :focus,
|
443 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] :active {
|
444 |
box-shadow: none;
|
445 |
}
|
446 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form .wbcr-factory-donation-price {
|
447 |
font-size: 50px;
|
448 |
margin-top: 30px;
|
449 |
text-align: center;
|
450 |
font-weight: 600;
|
451 |
color: #8BC34A;
|
452 |
}
|
453 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box {
|
454 |
min-height: 240px;
|
455 |
margin-bottom: 20px;
|
456 |
text-align: center;
|
458 |
padding: 30px;
|
459 |
border: 1px solid #f3f1e7;
|
460 |
}
|
461 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box .dashicons {
|
462 |
width: 50px;
|
463 |
height: 50px;
|
464 |
font-size: 50px;
|
465 |
color: #FFC107;
|
466 |
line-height: normal;
|
467 |
}
|
468 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box h3 {
|
469 |
color: #7b6111;
|
470 |
}
|
471 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box p {
|
472 |
color: #9e9e9e;
|
473 |
}
|
474 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-buttons-wrap {
|
475 |
margin-top: 20px;
|
476 |
text-align: center;
|
477 |
}
|
478 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-premium-button {
|
479 |
display: inline-block;
|
480 |
padding: 20px 60px;
|
481 |
background-color: #FFC107;
|
485 |
font-weight: bold;
|
486 |
transition: background-color 0.3s, border-color 0.3s, color 0.3s, opacity 0.3s;
|
487 |
}
|
488 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-premium-button:hover {
|
489 |
background-color: #ffce3a;
|
490 |
}
|
491 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template #wbcr-factory-confirm-dialog {
|
492 |
padding: 20px;
|
493 |
background: #ffffff;
|
494 |
}
|
495 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template #wbcr-factory-confirm-dialog .updated,
|
496 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template #wbcr-factory-confirm-dialog .alert {
|
497 |
display: none;
|
498 |
}
|
499 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template #wbcr-factory-confirm-dialog h2 {
|
500 |
font-size: 18px;
|
501 |
margin-top: 10px;
|
502 |
}
|
503 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template #wbcr-factory-confirm-dialog .wbcr-factory-confirm-description {
|
504 |
padding: 10px;
|
505 |
background: #ffedeb;
|
506 |
border: 1px solid #ffdfdc;
|
507 |
margin: 15px 0;
|
508 |
}
|
509 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template #wbcr-factory-confirm-dialog .wbcr-factory-confirm-hint {
|
510 |
margin-bottom: 15px;
|
511 |
color: #7b7b7b;
|
512 |
}
|
513 |
@media screen and (max-width: 1367px) {
|
514 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-content-section {
|
515 |
width: 69.6%;
|
516 |
}
|
517 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section {
|
518 |
width: 30%;
|
519 |
}
|
520 |
}
|
521 |
@media screen and (max-width: 1320px) {
|
522 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-content-section {
|
523 |
width: 100%;
|
524 |
}
|
525 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-right-sidebar-section {
|
526 |
display: none !important;
|
527 |
}
|
528 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-header-logo .dash {
|
529 |
display: none !important;
|
530 |
}
|
531 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-header-title {
|
532 |
display: none !important;
|
533 |
}
|
534 |
}
|
535 |
@media screen and (max-width: 950px) {
|
536 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar {
|
537 |
width: 70px;
|
538 |
}
|
539 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab a {
|
540 |
font-size: 0;
|
541 |
}
|
542 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__title {
|
543 |
font-size: 0;
|
544 |
}
|
545 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__short-description {
|
546 |
display: none !important;
|
547 |
}
|
548 |
+
#WBCR .wbcr-factory-pages-444-impressive-page-template .wbcr-factory-page-inner-wrap {
|
549 |
margin-left: 70px;
|
550 |
}
|
551 |
}
|
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,12 +112,12 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
|
|
112 |
public $page_menu = [];
|
113 |
|
114 |
/**
|
115 |
-
* @param
|
116 |
*/
|
117 |
-
public function __construct(
|
118 |
{
|
119 |
-
$this->menuIcon =
|
120 |
-
//$allow_multisite = apply_filters('
|
121 |
|
122 |
if( is_multisite() && $this->available_for_multisite && $plugin->isNetworkActive() ) {
|
123 |
$this->network = true;
|
@@ -127,7 +127,7 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
|
|
127 |
|
128 |
parent::__construct($plugin);
|
129 |
|
130 |
-
$this->title_plugin_action_link = __('Settings', '
|
131 |
|
132 |
$this->setPageMenu();
|
133 |
}
|
@@ -137,7 +137,7 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
|
|
137 |
*
|
138 |
* @return void
|
139 |
* @since 1.0.0
|
140 |
-
* @see
|
141 |
*
|
142 |
*/
|
143 |
public function assets($scripts, $styles)
|
@@ -159,7 +159,7 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
|
|
159 |
'control.checkbox'
|
160 |
], 'bootstrap');
|
161 |
|
162 |
-
$this->styles->add(
|
163 |
}
|
164 |
|
165 |
/**
|
@@ -263,7 +263,7 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
|
|
263 |
protected function warningNotice()
|
264 |
{
|
265 |
/*if( WP_CACHE ) {
|
266 |
-
$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.", '
|
267 |
}*/
|
268 |
// Метод предназначен для вызова в дочернем классе
|
269 |
}
|
@@ -355,7 +355,7 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
|
|
355 |
$this->plugin->getPluginName() . '_saved' => '1'
|
356 |
],
|
357 |
'type' => 'success',
|
358 |
-
'message' => __('The settings have been updated successfully!', '
|
359 |
]
|
360 |
];
|
361 |
|
@@ -628,7 +628,7 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
|
|
628 |
<?php if( $this->type == 'options' ): ?>
|
629 |
<input name="<?= $this->plugin->getPluginName() ?>_save_action"
|
630 |
class="wbcr-factory-button wbcr-factory-type-save" type="submit"
|
631 |
-
value="<?php _e('Save', '
|
632 |
<?php wp_nonce_field('wbcr_factory_' . $this->getResultId() . '_save_action'); ?>
|
633 |
<?php endif; ?>
|
634 |
</div>
|
@@ -695,12 +695,12 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
|
|
695 |
|
696 |
protected function showOptions()
|
697 |
{
|
698 |
-
$form = new
|
699 |
'scope' => rtrim($this->plugin->getPrefix(), '_'),
|
700 |
'name' => $this->getResultId() . "-options"
|
701 |
], $this->plugin);
|
702 |
|
703 |
-
$form->setProvider(new
|
704 |
|
705 |
$options = $this->getPageOptions();
|
706 |
|
@@ -740,7 +740,7 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
|
|
740 |
check_admin_referer('wbcr_factory_' . $this->getResultId() . '_save_action');
|
741 |
|
742 |
if( !current_user_can('administrator') && !current_user_can($this->capabilitiy) ) {
|
743 |
-
wp_die(__('You do not have permission to edit page.', '
|
744 |
}
|
745 |
|
746 |
/**
|
@@ -768,7 +768,7 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
|
|
768 |
|
769 |
?>
|
770 |
<div id="WBCR" class="wrap">
|
771 |
-
<div class="wbcr-factory-pages-
|
772 |
<div class="wbcr-factory-options wbcr-factory-options-<?= esc_attr($this->id) ?>">
|
773 |
<div class="wbcr-factory-left-navigation-bar">
|
774 |
<?php $this->showPageMenu() ?>
|
@@ -815,7 +815,7 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
|
|
815 |
protected function showPage($content = null)
|
816 |
{ ?>
|
817 |
<div id="WBCR" class="wrap">
|
818 |
-
<div class="wbcr-factory-pages-
|
819 |
<div class="wbcr-factory-page wbcr-factory-page-<?= $this->id ?>">
|
820 |
<?php $this->showHeader(); ?>
|
821 |
<div class="wbcr-factory-left-navigation-bar">
|
@@ -882,7 +882,7 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
|
|
882 |
{
|
883 |
?>
|
884 |
<div id="WBCR" class="wrap">
|
885 |
-
<div class="wbcr-factory-pages-
|
886 |
<div id="wbcr-factory-confirm-dialog">
|
887 |
<h2><?php echo $data['title'] ?></h2>
|
888 |
<p class="wbcr-factory-confirm-description"><?php echo $data['description'] ?></p>
|
14 |
exit;
|
15 |
}
|
16 |
|
17 |
+
if( !class_exists('Wbcr_FactoryPages444_ImpressiveThemplate') ) {
|
18 |
/**
|
19 |
+
* Class Wbcr_FactoryPages444_ImpressiveThemplate
|
20 |
*/
|
21 |
+
abstract class Wbcr_FactoryPages444_ImpressiveThemplate extends Wbcr_FactoryPages444_AdminPage {
|
22 |
|
23 |
/**
|
24 |
* Тип страницы:
|
112 |
public $page_menu = [];
|
113 |
|
114 |
/**
|
115 |
+
* @param Wbcr_Factory445_Plugin $plugin
|
116 |
*/
|
117 |
+
public function __construct(Wbcr_Factory445_Plugin $plugin)
|
118 |
{
|
119 |
+
$this->menuIcon = FACTORY_PAGES_444_URL . '/templates/assets/img/webcraftic-plugin-icon.png';
|
120 |
+
//$allow_multisite = apply_filters('wbcr_factory_445_core_admin_allow_multisite', false);
|
121 |
|
122 |
if( is_multisite() && $this->available_for_multisite && $plugin->isNetworkActive() ) {
|
123 |
$this->network = true;
|
127 |
|
128 |
parent::__construct($plugin);
|
129 |
|
130 |
+
$this->title_plugin_action_link = __('Settings', 'wbcr_factory_pages_444');
|
131 |
|
132 |
$this->setPageMenu();
|
133 |
}
|
137 |
*
|
138 |
* @return void
|
139 |
* @since 1.0.0
|
140 |
+
* @see FactoryPages444_AdminPage
|
141 |
*
|
142 |
*/
|
143 |
public function assets($scripts, $styles)
|
159 |
'control.checkbox'
|
160 |
], 'bootstrap');
|
161 |
|
162 |
+
$this->styles->add(FACTORY_PAGES_444_URL . '/templates/assets/css/impressive.page.template.css');
|
163 |
}
|
164 |
|
165 |
/**
|
263 |
protected function warningNotice()
|
264 |
{
|
265 |
/*if( WP_CACHE ) {
|
266 |
+
$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_444'));
|
267 |
}*/
|
268 |
// Метод предназначен для вызова в дочернем классе
|
269 |
}
|
355 |
$this->plugin->getPluginName() . '_saved' => '1'
|
356 |
],
|
357 |
'type' => 'success',
|
358 |
+
'message' => __('The settings have been updated successfully!', 'wbcr_factory_pages_444') . (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_444') : '')
|
359 |
]
|
360 |
];
|
361 |
|
628 |
<?php if( $this->type == 'options' ): ?>
|
629 |
<input name="<?= $this->plugin->getPluginName() ?>_save_action"
|
630 |
class="wbcr-factory-button wbcr-factory-type-save" type="submit"
|
631 |
+
value="<?php _e('Save', 'wbcr_factory_pages_444'); ?>">
|
632 |
<?php wp_nonce_field('wbcr_factory_' . $this->getResultId() . '_save_action'); ?>
|
633 |
<?php endif; ?>
|
634 |
</div>
|
695 |
|
696 |
protected function showOptions()
|
697 |
{
|
698 |
+
$form = new Wbcr_FactoryForms442_Form([
|
699 |
'scope' => rtrim($this->plugin->getPrefix(), '_'),
|
700 |
'name' => $this->getResultId() . "-options"
|
701 |
], $this->plugin);
|
702 |
|
703 |
+
$form->setProvider(new Wbcr_FactoryForms442_OptionsValueProvider($this->plugin));
|
704 |
|
705 |
$options = $this->getPageOptions();
|
706 |
|
740 |
check_admin_referer('wbcr_factory_' . $this->getResultId() . '_save_action');
|
741 |
|
742 |
if( !current_user_can('administrator') && !current_user_can($this->capabilitiy) ) {
|
743 |
+
wp_die(__('You do not have permission to edit page.', 'wbcr_factory_pages_444'));
|
744 |
}
|
745 |
|
746 |
/**
|
768 |
|
769 |
?>
|
770 |
<div id="WBCR" class="wrap">
|
771 |
+
<div class="wbcr-factory-pages-444-impressive-page-template factory-bootstrap-445 factory-fontawesome-000">
|
772 |
<div class="wbcr-factory-options wbcr-factory-options-<?= esc_attr($this->id) ?>">
|
773 |
<div class="wbcr-factory-left-navigation-bar">
|
774 |
<?php $this->showPageMenu() ?>
|
815 |
protected function showPage($content = null)
|
816 |
{ ?>
|
817 |
<div id="WBCR" class="wrap">
|
818 |
+
<div class="wbcr-factory-pages-444-impressive-page-template factory-bootstrap-445 factory-fontawesome-000">
|
819 |
<div class="wbcr-factory-page wbcr-factory-page-<?= $this->id ?>">
|
820 |
<?php $this->showHeader(); ?>
|
821 |
<div class="wbcr-factory-left-navigation-bar">
|
882 |
{
|
883 |
?>
|
884 |
<div id="WBCR" class="wrap">
|
885 |
+
<div class="wbcr-factory-pages-444-impressive-page-template factory-bootstrap-445 factory-fontawesome-000">
|
886 |
<div id="wbcr-factory-confirm-dialog">
|
887 |
<h2><?php echo $data['title'] ?></h2>
|
888 |
<p class="wbcr-factory-confirm-description"><?php echo $data['description'] ?></p>
|
migrations/030600.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
* Обновление параметра для редиректа на страницу About после обновления плагина
|
5 |
*/
|
6 |
-
class WAPTUpdate030600 extends
|
7 |
|
8 |
public function install() {
|
9 |
if ( is_multisite() && $this->plugin->isNetworkActive() ) {
|
3 |
/**
|
4 |
* Обновление параметра для редиректа на страницу About после обновления плагина
|
5 |
*/
|
6 |
+
class WAPTUpdate030600 extends Wbcr_Factory445_Update {
|
7 |
|
8 |
public function install() {
|
9 |
if ( is_multisite() && $this->plugin->isNetworkActive() ) {
|
migrations/030700.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
/**
|
4 |
* Добавление новых опций в базу данных
|
5 |
*/
|
6 |
-
class WAPTUpdate030700 extends
|
7 |
|
8 |
public function install() {
|
9 |
if ( is_multisite() && $this->plugin->isNetworkActive() ) {
|
3 |
/**
|
4 |
* Добавление новых опций в базу данных
|
5 |
*/
|
6 |
+
class WAPTUpdate030700 extends Wbcr_Factory445_Update {
|
7 |
|
8 |
public function install() {
|
9 |
if ( is_multisite() && $this->plugin->isNetworkActive() ) {
|
readme.md
ADDED
@@ -0,0 +1,243 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Auto Featured Image (Auto Post Thumbnail) === Contributors: creativemotion Tags: post thumbnails, featured image,
|
2 |
+
elementor, thumbnails, featured image from title Requires at least: 4.8 Tested up to: 5.6 Requires PHP: 7.0 Stable tag:
|
3 |
+
trunk License: GPLv2 License URI: https://www.gnu.org/licenses/gpl-2.0.html
|
4 |
+
|
5 |
+
Automatically generate the Featured Image from the first image in post or any custom post type only if Featured Image is
|
6 |
+
not set manually. Featured Image Generation From Title. Native image search for Elementor, Gutenberg, Classic Editor.
|
7 |
+
|
8 |
+
== Description ==
|
9 |
+
|
10 |
+
Automatically generate the Featured Image from the first image in post or any custom post type only if Featured Image is
|
11 |
+
not set manually. Featured Image Generation From Title. Native image search for Elementor, Gutenberg, Classic Editor.
|
12 |
+
|
13 |
+
CREATE A FEATURED IMAGE IN 5 SECONDS
|
14 |
+
|
15 |
+
1. Generate or remove featured images in one click.
|
16 |
+
2. Customize the process – generate or remove featured images from the list of posts or pages.
|
17 |
+
3. Native image search for Elementor, Gutenberg, Classic Editor.
|
18 |
+
4. Use filters – generate or remove featured images based on the post type, status, category, or the creation date.
|
19 |
+
5. Automatically generates an image for each post from the post title and sets it as the featured image. NEW!
|
20 |
+
6. Search & upload featured images from popular stock platforms instantly.
|
21 |
+
|
22 |
+
AFI (APT) users save up to 20 minutes per hour on generating content for a website. Let’s go through the process of
|
23 |
+
creating a post and see how timesaving APT can be.
|
24 |
+
|
25 |
+
1. Enter a post title.
|
26 |
+
2. Add a text.
|
27 |
+
3. Search for images with the Creative Commons license. Download images from a search page or a stock service.
|
28 |
+
4. Upload images. Add them to a post accordingly.
|
29 |
+
5. Upload a featured image.
|
30 |
+
6. Publish a post.
|
31 |
+
|
32 |
+
It takes six steps to create a post. Now imagine that APT turns three steps into one! Learn how to save up to 30% time
|
33 |
+
for more engaging activities!
|
34 |
+
|
35 |
+
This plugin is a must-have for every WordPress blog. Don’t hesitate to install this content maker tool on your website.
|
36 |
+
Recommend it to your friends and colleagues; maximize their time and make their websites better!
|
37 |
+
|
38 |
+
New features of AFI automatically generates an image for each post from the post title and sets it as the featured
|
39 |
+
image. The image will then be included in your theme wherever the featured image for the post is called for. It’s good
|
40 |
+
to have an image in every post and page that you create. It helps for things like search engine optimization, social
|
41 |
+
sharing, and just the attractiveness of your website or blog. But sometimes it can take longer to find a good image for
|
42 |
+
a particular blog post than to write the post itself. And often, quality images are expensive. This features of APT
|
43 |
+
simplifies the process of publishing content and saves you money. It will automatically create a customized image for
|
44 |
+
each post or page that you write. You can select a background image to match the look and feel of your blog, and the
|
45 |
+
plugin will automatically write the title (or other text of your choosing) of a new or updated post or page on top of
|
46 |
+
this background image to create a unique featured image for each post.
|
47 |
+
|
48 |
+
#### AFI PRO(APT) ####
|
49 |
+
|
50 |
+
1. Filters to generate or remove featured images based on the post type, status, category, or the creation date
|
51 |
+
2. Generate or remove featured images from the list of posts or pages
|
52 |
+
3. Featured Image Generation From Title.
|
53 |
+
4. Upload your own background images.
|
54 |
+
5. Upload your own fonts.
|
55 |
+
6. Position the text on the image.
|
56 |
+
7. Unlimited search & upload featured images from Google, Unsplash, Pixabay.
|
57 |
+
8. Images are recommended by the NEURAL NETWORK.
|
58 |
+
|
59 |
+
[learn more](https://cm-wp.com/apt/).
|
60 |
+
|
61 |
+
== What’s Next ==
|
62 |
+
|
63 |
+
If you like this plugin, then consider checking out our other projects:
|
64 |
+
[Clearfy](https://clearfy.pro/) - WordPress optimization plugin and disable ultimate tweaker
|
65 |
+
[Robin image optimizer](https://robinoptimizer.com/) - Make your WordPress site blazingly fast and rank higher in search
|
66 |
+
engines.
|
67 |
+
[Woody ad snippets](https://woodysnippet.com/) - Save up to 70 hours of routine work on your WordPress website monthly!
|
68 |
+
[Social Slider Widget](https://cm-wp.com/instagram-slider-widget/) - Display Instagram feeds in widgets, posts, pages,
|
69 |
+
or anywhere else using shortcodes
|
70 |
+
[AntiSpam](https://anti-spam.space/) - Stop spam form submissions on your WordPress
|
71 |
+
|
72 |
+
THANKS TO THE PLUGIN DEVELOPERS We’ve used some of the powerful features from the plugins: Dynamic Featured Image,
|
73 |
+
Featured Image from URL, Regenerate Thumbnails, Force Regenerate Thumbnails, Recent Posts Widget Extended
|
74 |
+
|
75 |
+
TRANSLATIONS:
|
76 |
+
<ul>
|
77 |
+
<li>English (default), always included</li>
|
78 |
+
<li>Italian — big thanks to @marcnyc</li>
|
79 |
+
<li>Spanish (Spain) — big thanks to @nobnob</li>
|
80 |
+
<li>Dutch — big thanks to @psmits1567</li>
|
81 |
+
<li>Spanish (Venezuela) — big thanks to @nobnob, @yordansoares</li>
|
82 |
+
<li>French (France) — @btpub</li>
|
83 |
+
<li>Swedish — @elbogen</li>
|
84 |
+
</ul>
|
85 |
+
<p>We are very need for your help with <a href="https://translate.wordpress.org/projects/wp-plugins/auto-post-thumbnail//" rel="nofollow ugc">translating the
|
86 |
+
Auto Featured Image plugin</a> into your native language. We want to make it international and understandable for everyone. Please contact us via email inside the plugin, or create a topic on our <a href="https://wordpress.org/support/plugin/auto-post-thumbnail/">support forum</a> if you can help with the translations. In exchange for your help, we will give you better support and our premium plugins absolutely free!</p>
|
87 |
+
https://cm-wp.com/apt/
|
88 |
+
|
89 |
+
== Installation ==
|
90 |
+
|
91 |
+
This section describes how to install the plugin and get it working.
|
92 |
+
|
93 |
+
1. Upload the plugin files to the `/wp-content/plugins/plugin-name` directory, or install the plugin through the
|
94 |
+
WordPress plugins screen directly.
|
95 |
+
2. Activate the plugin through the 'Plugins' screen in WordPress
|
96 |
+
3. Use the Settings->APT - disable unused features screen to configure the plugin
|
97 |
+
|
98 |
+
== Screenshots ==
|
99 |
+
|
100 |
+
1. New image generation tools
|
101 |
+
2. Bulk Featured Images generation
|
102 |
+
3. Featured Images selective generation
|
103 |
+
4. Manual Featured Images Selection
|
104 |
+
5. Image search in Google, Unsplash, Pixabay
|
105 |
+
6. Compatibility with Elementor and Gutenberg
|
106 |
+
7. Feature image generation from title
|
107 |
+
8. Font settings
|
108 |
+
9. Text settings
|
109 |
+
10. Text settings
|
110 |
+
11. Text settings
|
111 |
+
|
112 |
+
== Changelog ==
|
113 |
+
|
114 |
+
= 3.8.0 =
|
115 |
+
|
116 |
+
* Fixed: Encoding issues (On the generated image, the title displayed html entities instead of characters.).
|
117 |
+
* Added: New option in the image settings: dimensions of the generated image
|
118 |
+
* Other minor fixes
|
119 |
+
* Added: NEW OPTION: Search for an image by title of the post in Google (PRO)
|
120 |
+
|
121 |
+
= 3.7.7 =
|
122 |
+
|
123 |
+
* Fixed: Encoding issues. [Solution](https://wordpress.org/support/topic/not-working-with-cyrillic-titles) by @bibliata
|
124 |
+
* Fixed: Uppercase issue (agréable > AGRéABLE) strtoupper() -> mb_strtoupper()
|
125 |
+
* Raised the minimum version of PHP -> 7.0
|
126 |
+
* Other minor fixes
|
127 |
+
|
128 |
+
= 3.7.6 =
|
129 |
+
|
130 |
+
* Fixed: Selecting a date on the mass generation page
|
131 |
+
|
132 |
+
= 3.7.5 =
|
133 |
+
|
134 |
+
* Fixed: jQuery.fn.load() and other bugs after update to Wordpress 5.5
|
135 |
+
|
136 |
+
= 3.7.4 =
|
137 |
+
|
138 |
+
* Fixed: Google image search
|
139 |
+
|
140 |
+
= 3.7.3 =
|
141 |
+
|
142 |
+
* Added: Images in posts are recommended by the NEURAL NETWORK. (PRO)
|
143 |
+
|
144 |
+
= 3.7.2 =
|
145 |
+
|
146 |
+
* Fixed: generation of featured images
|
147 |
+
|
148 |
+
= 3.7.1 =
|
149 |
+
|
150 |
+
* Added: "Commercial and derived use" checkbox for Google search
|
151 |
+
* Fixed: Divi theme compatible
|
152 |
+
|
153 |
+
= 3.7.0 =
|
154 |
+
|
155 |
+
* Added: Automatically generation an image for each post from the post title and sets it as the featured image
|
156 |
+
* Added: Settings for featured image generation
|
157 |
+
* Added: Support for Wordpress mobile apps (automatic add featured image when creating/updating a post)
|
158 |
+
* Redesigned Settings page
|
159 |
+
* Fixed: "Metadata error" when trying to download an image from photobank
|
160 |
+
* Fixed: In some cases the plugin did not find images in the post text
|
161 |
+
* Fixed: (PRO) In the automatic generation filter, you can select a custom post type if it is displayed on the frontend
|
162 |
+
* Many other minor changes and bugfixes
|
163 |
+
|
164 |
+
= 3.6.0 =
|
165 |
+
|
166 |
+
* New: Bulk delete thumbnails
|
167 |
+
* New: Before searching images in the text of the post, the shortcodes are executed
|
168 |
+
* Updated About page
|
169 |
+
* Translation into Russian language
|
170 |
+
* Other minor changes and bugfixes
|
171 |
+
|
172 |
+
= 3.5.0 (2019-09-11) =
|
173 |
+
|
174 |
+
* Fixed: Php warning "is_readable(): open_basedir restriction in effect"
|
175 |
+
. [more](https://wordpress.org/support/topic/today-after-the-update/)
|
176 |
+
|
177 |
+
= 3.5.0 =
|
178 |
+
|
179 |
+
* Fixed: Errors in the plugin on user requests
|
180 |
+
* New: Bulk Featured Images generation
|
181 |
+
* New: Featured Images selective generation
|
182 |
+
* New: Manual Featured Images Selection
|
183 |
+
* New: Image search in Google, Unsplash, Pixabay
|
184 |
+
* New: Compatibility with Elementor and Gutenberg.
|
185 |
+
|
186 |
+
= 3.4.1 =
|
187 |
+
|
188 |
+
* Fix for unchecked extension of uploaded files
|
189 |
+
|
190 |
+
= 3.4.0 =
|
191 |
+
|
192 |
+
* Tested with the latest wordpress release.
|
193 |
+
|
194 |
+
= 3.3.3 =
|
195 |
+
|
196 |
+
* Fix for SQL error begin caused due to no ID
|
197 |
+
|
198 |
+
= 3.3.2 =
|
199 |
+
|
200 |
+
* Tested with WordPress-3.6.x
|
201 |
+
* Small tweaks
|
202 |
+
|
203 |
+
= 3.3.1 =
|
204 |
+
|
205 |
+
* Tested with WordPress-3.5.1
|
206 |
+
|
207 |
+
= 3.3.0 =
|
208 |
+
|
209 |
+
* Added fix for featured images behaving differently in Wordpress version 3.4. NOTE: This version will fix only images
|
210 |
+
in future posts. For fixing images of past posts
|
211 |
+
see http://www.clickthrough-marketing.com/how-to-fix-auto-post-thumbnail-on-wordpress-3.4-seo-friendly-800610805/
|
212 |
+
|
213 |
+
= 3.2.3 =
|
214 |
+
|
215 |
+
* Added fix for jquery progress bar error causing due to Wordpress version 3.1
|
216 |
+
|
217 |
+
= 3.2.2 =
|
218 |
+
|
219 |
+
* Added back publish_post action so that regular posts work without any issues.
|
220 |
+
* Added code to check whether the image exists in database before trying to fetch it.
|
221 |
+
|
222 |
+
= 3.2.1 =
|
223 |
+
|
224 |
+
* Added code to correctly link the featured/post thumbnail with the post so that the Media Library shows the association
|
225 |
+
correctly.
|
226 |
+
* Assigning **title** to the generated featured/post thumbnail by extracting it from the title of processed image.
|
227 |
+
|
228 |
+
= 3.2 = Added support for creating featured thumbnails for custom post types as well. Batch processing will also
|
229 |
+
generate thumbnails for any type of post.
|
230 |
+
|
231 |
+
= 3.1 = Renamed **Gen. Post Thumbnails** to **Auto Featured Image** and moved it under Settings menu.
|
232 |
+
|
233 |
+
= 3.0 =
|
234 |
+
|
235 |
+
* Added Batch Processing capability to generate post thumbnails for already published posts.
|
236 |
+
* A new menu item **Gen. Post Thumbnails** is added under Tools menu.
|
237 |
+
|
238 |
+
= 2.0 = Added functionality to generate Post Thumbnail for scheduled posts. Thumbnail will be generated when scheduled
|
239 |
+
post gets published.
|
240 |
+
|
241 |
+
= 1.1 = Added a wrapper function using cURL for file_get_contents in case 'allow_url_fopen' ini setting is off.
|
242 |
+
|
243 |
+
= 1.0 = First release
|
readme.txt
CHANGED
@@ -49,7 +49,7 @@ It’s good to have an image in every post and page that you create. It helps fo
|
|
49 |
This features of APT simplifies the process of publishing content and saves you money. It will automatically create a customized image for each post or page that you write. You can select a background image to match the look and feel of your blog, and the plugin will automatically write the title (or other text of your choosing) of a new or updated post or page on top of this background image to create a unique featured image for each post.
|
50 |
|
51 |
|
52 |
-
#### AFI PRO(
|
53 |
1. Filters to generate or remove featured images based on the post type, status, category, or the creation date
|
54 |
2. Generate or remove featured images from the list of posts or pages
|
55 |
3. Featured Image Generation From Title.
|
@@ -58,6 +58,7 @@ This features of APT simplifies the process of publishing content and saves you
|
|
58 |
6. Position the text on the image.
|
59 |
7. Unlimited search & upload featured images from Google, Unsplash, Pixabay.
|
60 |
8. Images are recommended by the NEURAL NETWORK.
|
|
|
61 |
|
62 |
[learn more](https://cm-wp.com/apt/).
|
63 |
|
@@ -112,11 +113,16 @@ This section describes how to install the plugin and get it working.
|
|
112 |
|
113 |
== Changelog ==
|
114 |
|
|
|
|
|
|
|
|
|
|
|
115 |
= 3.8.0 =
|
116 |
* Fixed: Encoding issues (On the generated image, the title displayed html entities instead of characters.).
|
117 |
* Added: New option in the image settings: dimensions of the generated image
|
118 |
* Other minor fixes
|
119 |
-
* Added: NEW OPTION: Search for an image by title of the post in Google (PRO)
|
120 |
|
121 |
= 3.7.7 =
|
122 |
* Fixed: Encoding issues. [Solution](https://wordpress.org/support/topic/not-working-with-cyrillic-titles) by @bibliata
|
49 |
This features of APT simplifies the process of publishing content and saves you money. It will automatically create a customized image for each post or page that you write. You can select a background image to match the look and feel of your blog, and the plugin will automatically write the title (or other text of your choosing) of a new or updated post or page on top of this background image to create a unique featured image for each post.
|
50 |
|
51 |
|
52 |
+
#### AFI [PRO](https://cm-wp.com/apt/) ####
|
53 |
1. Filters to generate or remove featured images based on the post type, status, category, or the creation date
|
54 |
2. Generate or remove featured images from the list of posts or pages
|
55 |
3. Featured Image Generation From Title.
|
58 |
6. Position the text on the image.
|
59 |
7. Unlimited search & upload featured images from Google, Unsplash, Pixabay.
|
60 |
8. Images are recommended by the NEURAL NETWORK.
|
61 |
+
9. Import all images from the post text to the media library.
|
62 |
|
63 |
[learn more](https://cm-wp.com/apt/).
|
64 |
|
113 |
|
114 |
== Changelog ==
|
115 |
|
116 |
+
= 3.8.1 =
|
117 |
+
* Fixed: Adding images to the post text.
|
118 |
+
* Add: Import all images from the post text to the media library. [(PRO)](https://cm-wp.com/apt/)
|
119 |
+
* Other minor fixes
|
120 |
+
|
121 |
= 3.8.0 =
|
122 |
* Fixed: Encoding issues (On the generated image, the title displayed html entities instead of characters.).
|
123 |
* Added: New option in the image settings: dimensions of the generated image
|
124 |
* Other minor fixes
|
125 |
+
* Added: NEW OPTION: Search for an image by title of the post in Google [(PRO)](https://cm-wp.com/apt/)
|
126 |
|
127 |
= 3.7.7 =
|
128 |
* Fixed: Encoding issues. [Solution](https://wordpress.org/support/topic/not-working-with-cyrillic-titles) by @bibliata
|