Auto Post Thumbnail - Version 3.8.1

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 Icon 128x128 Auto Post Thumbnail
Version 3.8.1
Comparing to
See all releases

Code changes from version 3.8.0 to 3.8.1

Files changed (163) hide show
  1. admin/assets/css/settings.css +5 -3
  2. admin/assets/css/style.css +91 -44
  3. admin/assets/css/tabs.css +11 -3
  4. admin/assets/img/import-icon.png +0 -0
  5. admin/assets/js/admin-thumbnail.js +7 -5
  6. admin/assets/js/settings.js +3 -2
  7. admin/assets/js/upload-font.js +2 -2
  8. admin/class-wapt-activation.php +2 -2
  9. admin/class-wapt-page.php +2 -2
  10. admin/pages/generate.php +2 -2
  11. admin/pages/license.php +2 -2
  12. admin/pages/settings.php +99 -12
  13. admin/views/media-library.php +37 -20
  14. admin/views/tab-license.php +1 -1
  15. admin/views/tab-main.php +1 -1
  16. admin/views/tab-settings.php +7 -1
  17. auto-post-thumbnail.php +19 -18
  18. includes/class-apt.php +112 -128
  19. includes/class-post-images.php +154 -0
  20. includes/class-wapt-plugin.php +52 -15
  21. includes/controls/class.color.php +1 -1
  22. includes/controls/class.fonts.php +1 -1
  23. includes/controls/class.mediabutton.php +1 -1
  24. includes/image-search/boot.php +3 -2
  25. includes/image-search/class-google-images.php +1 -1
  26. includes/image-search/result/class.founded-image.php +10 -20
  27. includes/image-search/result/class.google-founded-image.php +40 -0
  28. libs/factory/adverts/boot.php +12 -12
  29. libs/factory/adverts/includes/class-base.php +6 -6
  30. libs/factory/adverts/includes/class-dashboard-widget.php +4 -4
  31. libs/factory/adverts/includes/class-rest-request.php +4 -4
  32. libs/factory/adverts/langs/{wbcr_factory_adverts_122-ru_RU.mo → wbcr_factory_adverts_123-ru_RU.mo} +0 -0
  33. libs/factory/adverts/langs/{wbcr_factory_adverts_122-ru_RU.po → wbcr_factory_adverts_123-ru_RU.po} +0 -0
  34. libs/factory/bootstrap/assets/css-min/bootstrap.accordion.min.css +1 -1
  35. libs/factory/bootstrap/assets/css-min/bootstrap.blue.min.css +1 -1
  36. libs/factory/bootstrap/assets/css-min/bootstrap.coffee.min.css +1 -1
  37. libs/factory/bootstrap/assets/css-min/bootstrap.core.min.css +2 -2
  38. libs/factory/bootstrap/assets/css-min/bootstrap.ectoplasm.min.css +1 -1
  39. libs/factory/bootstrap/assets/css-min/bootstrap.form-group.min.css +1 -1
  40. libs/factory/bootstrap/assets/css-min/bootstrap.light.min.css +1 -1
  41. libs/factory/bootstrap/assets/css-min/bootstrap.midnight.min.css +1 -1
  42. libs/factory/bootstrap/assets/css-min/bootstrap.ocean.min.css +1 -1
  43. libs/factory/bootstrap/assets/css-min/bootstrap.separator.min.css +1 -1
  44. libs/factory/bootstrap/assets/css-min/bootstrap.sunrise.min.css +1 -1
  45. libs/factory/bootstrap/assets/css-min/control.checkbox.min.css +1 -1
  46. libs/factory/bootstrap/assets/css-min/control.dropdown.min.css +1 -1
  47. libs/factory/bootstrap/assets/css-min/control.multiple-textbox.min.css +1 -1
  48. libs/factory/bootstrap/assets/css-min/holder.more-link.min.css +1 -1
  49. libs/factory/bootstrap/assets/js-min/bootstrap.dropdown.min.js +1 -1
  50. libs/factory/bootstrap/assets/js-min/control.checkbox.min.js +1 -1
  51. libs/factory/bootstrap/assets/js-min/control.dropdown.min.js +1 -1
  52. libs/factory/bootstrap/assets/js-min/control.list.min.js +1 -1
  53. libs/factory/bootstrap/assets/js-min/control.multiple-textbox.min.js +1 -1
  54. libs/factory/bootstrap/boot.php +9 -9
  55. libs/factory/bootstrap/includes/functions.php +10 -10
  56. libs/factory/core/ajax/install-addons.php +10 -10
  57. libs/factory/core/assets/js/core-components.js +14 -14
  58. libs/factory/core/assets/js/core-general.js +6 -6
  59. libs/factory/core/boot.php +33 -33
  60. libs/factory/core/includes/activation/class-factory-activator.php +3 -3
  61. libs/factory/core/includes/activation/class-factory-update.php +3 -3
  62. libs/factory/core/includes/assets-managment/class-factory-assets-list.php +4 -4
  63. libs/factory/core/includes/assets-managment/class-factory-script-list.php +2 -2
  64. libs/factory/core/includes/assets-managment/class-factory-style-list.php +1 -1
  65. libs/factory/core/includes/class-check-compatibility.php +2 -2
  66. libs/factory/core/includes/class-factory-migrations.php +13 -13
  67. libs/factory/core/includes/class-factory-notices.php +5 -5
  68. libs/factory/core/includes/class-factory-options.php +2 -2
  69. libs/factory/core/includes/class-factory-plugin-abstract.php +70 -70
  70. libs/factory/core/includes/class-factory-plugin-base.php +25 -25
  71. libs/factory/core/includes/class-factory-requests.php +1 -1
  72. libs/factory/core/includes/class-factory-requirements.php +5 -5
  73. libs/factory/core/includes/components/class-delete-component-button.php +1 -1
  74. libs/factory/core/includes/components/class-install-component-button.php +10 -10
  75. libs/factory/core/includes/entities/class-factory-paths.php +1 -1
  76. libs/factory/core/includes/entities/class-factory-support.php +1 -1
  77. libs/factory/core/includes/functions.php +7 -7
  78. libs/factory/core/includes/premium/class-factory-license-interface.php +1 -1
  79. libs/factory/core/includes/premium/class-factory-manager.php +10 -10
  80. libs/factory/core/includes/premium/class-factory-provider-abstract.php +6 -6
  81. libs/factory/core/includes/updates/class-factory-premium-upgrader.php +13 -12
  82. libs/factory/core/includes/updates/class-factory-upgrader.php +11 -11
  83. libs/factory/core/includes/updates/repositories/class-factory-github.php +8 -9
  84. libs/factory/core/includes/updates/repositories/class-factory-repository-abstract.php +5 -5
  85. libs/factory/core/includes/updates/repositories/class-factory-wordpress.php +4 -4
  86. libs/factory/core/langs/{wbcr_factory_444-ru_RU.mo → wbcr_factory_445-ru_RU.mo} +0 -0
  87. libs/factory/core/langs/{wbcr_factory_444-ru_RU.po → wbcr_factory_445-ru_RU.po} +0 -0
  88. libs/factory/feedback/boot.php +1 -1
  89. libs/factory/feedback/includes/class-base.php +3 -3
  90. libs/factory/feedback/includes/class-rest-request.php +3 -3
  91. libs/factory/forms/boot.php +95 -95
  92. libs/factory/forms/controls/checkbox.php +4 -4
  93. libs/factory/forms/controls/color-and-opacity.php +4 -4
  94. libs/factory/forms/controls/color.php +2 -2
  95. libs/factory/forms/controls/customs/html.php +2 -2
  96. libs/factory/forms/controls/customs/separator.php +2 -2
  97. libs/factory/forms/controls/datepicker-range.php +4 -4
  98. libs/factory/forms/controls/dropdown-and-colors.php +6 -6
  99. libs/factory/forms/controls/dropdown.php +5 -5
  100. libs/factory/forms/controls/font.php +11 -11
  101. libs/factory/forms/controls/google-font.php +8 -8
  102. libs/factory/forms/controls/gradient.php +4 -4
  103. libs/factory/forms/controls/hidden.php +2 -2
  104. libs/factory/forms/controls/holders/accordion-item.php +2 -2
  105. libs/factory/forms/controls/holders/accordion.php +2 -2
  106. libs/factory/forms/controls/holders/columns.php +2 -2
  107. libs/factory/forms/controls/holders/control-group-item.php +2 -2
  108. libs/factory/forms/controls/holders/control-group.php +3 -3
  109. libs/factory/forms/controls/holders/div.php +2 -2
  110. libs/factory/forms/controls/holders/form-group.php +2 -2
  111. libs/factory/forms/controls/holders/more-link.php +2 -2
  112. libs/factory/forms/controls/holders/tab-item.php +2 -2
  113. libs/factory/forms/controls/holders/tab.php +4 -4
  114. libs/factory/forms/controls/integer.php +2 -2
  115. libs/factory/forms/controls/list.php +4 -4
  116. libs/factory/forms/controls/multiple-textbox.php +3 -3
  117. libs/factory/forms/controls/paddings-editor.php +3 -3
  118. libs/factory/forms/controls/pattern.php +9 -9
  119. libs/factory/forms/controls/radio-colors.php +2 -2
  120. libs/factory/forms/controls/radio.php +2 -2
  121. libs/factory/forms/controls/textarea.php +2 -2
  122. libs/factory/forms/controls/textbox.php +2 -2
  123. libs/factory/forms/controls/url.php +3 -3
  124. libs/factory/forms/controls/wp-editor.php +3 -3
  125. libs/factory/forms/includes/complex-control.class.php +4 -4
  126. libs/factory/forms/includes/control-holder.class.php +5 -5
  127. libs/factory/forms/includes/control.class.php +5 -5
  128. libs/factory/forms/includes/custom-element.class.php +2 -2
  129. libs/factory/forms/includes/form-element.class.php +7 -7
  130. libs/factory/forms/includes/form-layout.class.php +5 -5
  131. libs/factory/forms/includes/form.class.php +39 -39
  132. libs/factory/forms/includes/holder.class.php +6 -6
  133. libs/factory/forms/includes/html-builder.class.php +2 -2
  134. libs/factory/forms/includes/providers/meta-value-provider.class.php +2 -2
  135. libs/factory/forms/includes/providers/options-value-provider.class.php +3 -3
  136. libs/factory/forms/includes/providers/value-provider.interface.php +2 -2
  137. libs/factory/forms/langs/{wbcr_factory_forms_441-ru_RU.mo → wbcr_factory_forms_442-ru_RU.mo} +0 -0
  138. libs/factory/forms/langs/{wbcr_factory_forms_441-ru_RU.po → wbcr_factory_forms_442-ru_RU.po} +0 -0
  139. libs/factory/forms/layouts/bootstrap-3/bootstrap-3.php +7 -7
  140. libs/factory/freemius/boot.php +18 -18
  141. libs/factory/freemius/includes/class-freemius-api.php +7 -7
  142. libs/factory/freemius/includes/entities/class-freemius-entity.php +1 -1
  143. libs/factory/freemius/includes/entities/class-freemius-license.php +2 -2
  144. libs/factory/freemius/includes/entities/class-freemius-plugin.php +1 -1
  145. libs/factory/freemius/includes/entities/class-freemius-scope.php +1 -1
  146. libs/factory/freemius/includes/entities/class-freemius-site.php +1 -1
  147. libs/factory/freemius/includes/entities/class-freemius-user.php +1 -1
  148. libs/factory/freemius/includes/licensing/class-freemius-provider.php +18 -18
  149. libs/factory/freemius/includes/updates/class-freemius-repository.php +7 -7
  150. libs/factory/pages/boot.php +10 -10
  151. libs/factory/pages/includes/admin-page.class.php +6 -6
  152. libs/factory/pages/includes/page.class.php +7 -7
  153. libs/factory/pages/langs/{wbcr_factory_pages_443-fr_FR.mo → wbcr_factory_pages_444-fr_FR.mo} +0 -0
  154. libs/factory/pages/langs/{wbcr_factory_pages_443-fr_FR.po → wbcr_factory_pages_444-fr_FR.po} +0 -0
  155. libs/factory/pages/langs/{wbcr_factory_pages_443-ru_RU.mo → wbcr_factory_pages_444-ru_RU.mo} +0 -0
  156. libs/factory/pages/langs/{wbcr_factory_pages_443-ru_RU.po → wbcr_factory_pages_444-ru_RU.po} +0 -0
  157. libs/factory/pages/pages.php +11 -11
  158. libs/factory/pages/templates/assets/css/impressive.page.template.css +124 -124
  159. libs/factory/pages/templates/impressive-page.class.php +19 -19
  160. migrations/030600.php +1 -1
  161. migrations/030700.php +1 -1
  162. readme.md +243 -0
  163. readme.txt +8 -2
admin/assets/css/settings.css CHANGED
@@ -2,7 +2,7 @@
2
  padding: 0px 30px;
3
  }
4
 
5
- .factory-bootstrap-444 .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,7 +12,7 @@
12
  top: 5px;
13
  }
14
 
15
- .factory-bootstrap-444 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,7 +23,7 @@
23
  font-size: 16px !important;
24
  }
25
 
26
- .factory-bootstrap-444 .btn-default.active, .factory-bootstrap-444 .btn-default:active {
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
- .apt_thumbs {
74
- float: left;
75
- margin: 5px;
 
 
 
 
 
 
 
 
76
  }
77
 
78
- .column-apt {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  float: left;
80
  margin: 5px;
81
  }
82
 
83
- .wapt-image-box {
84
- overflow: hidden;
85
  display: flex;
86
- width: 100%;
87
- height: 100%;
88
  border-radius: 5px;
89
- box-shadow: 1px 1px 5px 0px rgba(0, 0, 0, 0.2);
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
- li.wapt-grid-item {
104
- width: 180px;
105
- height: 180px;
106
  cursor: pointer;
107
  }
108
 
109
- .wapt-grid-item {
110
- float: left;
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
- .wapt-pro-row input+span:before, .wapt-pro-row select+span:before {
 
 
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-image:before {
 
 
 
 
 
 
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('> p');
30
  var $ajaximg = $('#post_imgs_' + postid).find('> span');
31
  //$modal.html('');
32
- $('.imgs').find('> p').html(''); //очистка всех модальных окон, чтобы исключить конфликты
33
 
34
- tb_show(apt_thumb.modal_title, '/?TB_inline&inlineId=post_imgs_' + postid + '&width=620&height=500');
 
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
- $("label[for*='wapt_']").on('click', function (e) {
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-444 .factory-wapt-fonts");
4
  var upload_button = $('#wapt-upload-button');
5
  var upload_loader = $('#wapt-upload-loader');
6
 
7
- $element.factoryBootstrap444_dropdownControl();
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 Wbcr_Factory444_Activator
8
  *
9
  * @version 1.0.1
10
  */
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WAPT_Activation extends Wbcr_Factory444_Activator {
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 Wbcr_FactoryPages443_AdminPage
8
  *
9
  * @version 1.0.0
10
  */
@@ -14,7 +14,7 @@ if ( ! defined( 'ABSPATH' ) ) {
14
  exit;
15
  }
16
 
17
- class WAPT_Page extends Wbcr_FactoryPages443_AdminPage {
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 FactoryPages443_AdminPage
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 FactoryPages443_AdminPage
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\Factory_444\Premium\Interfaces\License;
5
- use WBCR\Factory_444\Premium\Provider;
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( 'wbcr_factory_forms_441_register_controls', function () {
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' => 'dropdown',
108
- 'way' => 'buttons',
109
- 'name' => 'generate_autoimage',
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' => 'find',
118
- 'title' => __( 'Featured image', 'apt' ),
119
- 'hint' => __( "How to generate featured image:
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 Wbcr_FactoryForms441_Form( [
501
  'scope' => substr( $this->plugin->getPrefix(), 0, - 1 ),
502
  'name' => 'setting'
503
  ], $this->plugin );
504
 
505
- $form->setProvider( new Wbcr_FactoryForms441_OptionsValueProvider( $this->plugin ) );
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
- padding: 0px;
79
  cursor: pointer;
80
  display: block;
81
  float: left;
82
- padding: 10px 0px;
83
  background: #f1f1f1;
84
  color: #0073aa;
85
  width: 15%;
86
- border-radius: 10px 10px 0px 0px;
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-444 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'; ?>"
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-444 factory-fontawesome-000">
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-444 factory-fontawesome-000">
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.0
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' => '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,8 +53,8 @@ $plugin_info = array(
53
  ),
54
 
55
  // Настройка обновлений плагина
56
- 'has_updates' => true,
57
- 'updates_settings' => array(
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' => true,
68
- 'license_settings' => array(
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' => 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_444', 'admin' ),
93
- array( 'libs/factory/forms', 'factory_forms_441', 'admin' ),
94
- array( 'libs/factory/pages', 'factory_pages_443', 'admin' ),
95
- array( 'libs/factory/freemius', 'factory_freemius_132', 'all' ),
96
- array( 'libs/factory/adverts', 'factory_adverts_122', 'admin' ),
97
  array( 'libs/factory/feedback', 'factory_feedback_109', 'admin' ),
98
  )
99
  );
100
 
101
- $wapt_compatibility = new Wbcr_Factory444_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,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
- $apt_ag = \WAPT_Plugin::app()->getOption( 'auto_generation' );
 
 
96
 
97
- if ( $apt_ag ) {
 
 
 
 
 
 
 
 
 
 
 
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( 'rest_api_inserted_post', [ $this, 'publish_post' ], 10, 1 );
 
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
- if ( $generate == 'find' ) {
145
- $auto_generate = false;
146
- } else if ( $generate == 'generate' || $generate == 'both' ) {
147
- $auto_generate = true;
148
- } else {
149
- $auto_generate = false;
 
 
 
 
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 = $this->get_images_from_post( $post->ID );
174
- if ( ( isset( $images['urls'] ) && count( $images['urls'] ) ) || $auto_generate ) {
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 string $image
363
- * @param string $url
364
  *
365
  * @return bool|int
366
  */
367
- public function get_thumbnail_id( $image, $url ) {
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
- preg_match( '/wp-image-([\d]*)/i', $image, $thumb_id );
375
-
376
- if ( $thumb_id ) {
377
- $thumb_id = $thumb_id[1];
378
- }
379
 
380
- if ( ! get_post( $thumb_id ) ) {
381
- $thumb_id = false;
382
- }
383
 
384
- // If thumb id is not found, try to look for the image in DB. Thanks to "Erwin Vrolijk" for providing this code.
385
- if ( ! $thumb_id ) {
386
- //$image = substr( $image, strpos( $image, '"' ) + 1 );
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
- if ( isset( $image ) && ! empty( $image ) ) {
396
- $image_url = trim( $image );
397
- $_parts = explode( '/', $image_url );
398
- $image_url = array_pop( $_parts );
399
- $_parts = explode( '.', $image_url );
400
- $image_url = array_shift( $_parts );
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
- foreach ( $images['tags'] as $key => $image ) {
449
- $thumb_id = $this->get_thumbnail_id( $image, $images['urls'][ $key ] );
 
 
 
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
- $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '%" . $images['urls'][ $key ] . "%'" );
457
- if ( $thumb_id ) {
458
- update_post_meta( $post_id, '_thumbnail_id', $thumb_id );
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
- * @param $matches
551
- * @param $key
552
- * @param $post_content
553
- * @param $post_id
554
  *
555
  * @return int|WP_Error|null
556
  */
557
- public function generate_post_thumb( $image_url, $title, $post_id ) {
558
  // Get the URL now for further processing
559
- //$imageUrl = $matches[1][ $key ];
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 ) //generate image
694
- {
695
- switch ( $_POST['feature'] ) {
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
- //Совместимость с NexGen
710
  $img = preg_replace( '/(thumbs\/thumbs_)/', '.', $img );
711
 
712
- global $wpdb;
713
- $thumb_id = $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE guid LIKE '" . $img . "'" );
714
- if ( ! $thumb_id ) {
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><p>{$content}</p></div>";
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 = $this->insert_attachment( $post, $file_path, $mime_type );
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 Wbcr_Factory444_Plugin {
16
 
17
  /**
18
  * @see self::app()
19
- * @var Wbcr_Factory444_Plugin
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 Wbcr_Factory444_Plugin
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
- wp_localize_script( 'apt-admin-script-thumbnail', 'apt_postid', $pid );
169
 
170
- $action_column_get_thumbnails = "apt_get_thumbnail";
171
- $action_column_get_thumbnails = apply_filters( 'wapt/get-thumbnails/action', $action_column_get_thumbnails );
172
- wp_localize_script( 'apt-admin-script-thumbnail', 'action_column_get_thumbnails', $action_column_get_thumbnails );
 
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( 'Wbcr_FactoryPages443' ) ) {
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 Wbcr_FactoryForms441_Control {
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 Wbcr_FactoryForms441_DropdownControl {
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 Wbcr_FactoryForms441_Control {
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.response.php");
 
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 FoundedImage( $item );
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->link = $item['link'] ?? '';
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\Factory_Adverts_122\Base;
4
 
5
  /**
6
  * Factory Adverts
@@ -20,31 +20,31 @@ if( !defined('ABSPATH') ) {
20
  exit;
21
  }
22
 
23
- if( defined('FACTORY_ADVERTS_122_LOADED') || (defined('FACTORY_ADVERTS_BLOCK') && FACTORY_ADVERTS_BLOCK) ) {
24
  return;
25
  }
26
 
27
  # Устанавливаем константу, что модуль уже загружен
28
- define('FACTORY_ADVERTS_122_LOADED', true);
29
 
30
  # Устанавливаем версию модуля
31
- define('FACTORY_ADVERTS_122_VERSION', '1.2.2');
32
 
33
  # Регистрируем тектовый домен, для интернализации интерфейса модуля
34
- load_plugin_textdomain('wbcr_factory_adverts_122', false, dirname(plugin_basename(__FILE__)) . '/langs');
35
 
36
  # Устанавливаем директорию модуля
37
- define('FACTORY_ADVERTS_122_DIR', dirname(__FILE__));
38
 
39
  # Устанавливаем url модуля
40
- define('FACTORY_ADVERTS_122_URL', plugins_url(null, __FILE__));
41
 
42
- require_once(FACTORY_ADVERTS_122_DIR . '/includes/class-rest-request.php');
43
- require_once(FACTORY_ADVERTS_122_DIR . '/includes/class-base.php');
44
 
45
  /**
46
- * @param Wbcr_Factory444_Plugin $plugin
47
  */
48
- add_action('wbcr_factory_adverts_122_plugin_created', function ($plugin) {
49
- $plugin->set_adverts_manager("WBCR\Factory_Adverts_122\Base");
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\Factory_Adverts_122;
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 \Wbcr_Factory444_Plugin
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\Factory_Adverts_122\Creative_Motion_API
57
  */
58
  private $api;
59
 
@@ -82,9 +82,9 @@ class Base {
82
  *
83
  * @since 1.0.0 Added
84
  *
85
- * @param \Wbcr_Factory444_Plugin $plugin
86
  */
87
- public function __construct( \Wbcr_Factory444_Plugin $plugin, $settings ) {
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 FACTORY_ADVERTS_122_DIR . '/includes/class-dashboard-widget.php';
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\Factory_Adverts_122;
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 \Wbcr_Factory444_Plugin
39
  */
40
  private $plugin;
41
 
@@ -46,10 +46,10 @@ class Dashboard_Widget {
46
  *
47
  * @since 1.0.0 Added
48
  *
49
- * @param \Wbcr_Factory444_Plugin $plugin
50
  * @param string $content
51
  */
52
- public function __construct( \Wbcr_Factory444_Plugin $plugin, $content ) {
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\Factory_Adverts_122;
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 \Wbcr_Factory444_Plugin
69
  */
70
  private $plugin;
71
 
@@ -75,11 +75,11 @@ class Creative_Motion_API {
75
  *
76
  * Variable initialization.
77
  *
78
- * @param \Wbcr_Factory444_Plugin $plugin_name
79
  * @since 1.0.0 Added
80
  *
81
  */
82
- public function __construct(\Wbcr_Factory444_Plugin $plugin)
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-444 .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-444 .factory-accordion>h3{border-bottom:1px solid #DDD;cursor:pointer;padding:8px 15px;margin:0}.factory-bootstrap-444 .factory-accordion>div{display:none;margin:0;border-bottom:1px solid #DDD}.factory-bootstrap-444 .factory-accordion-item{display:none}.factory-bootstrap-444 .inner-factory-accordion-item{padding:10px 0}.factory-bootstrap-444 .factory-accordion>h3.active:hover{cursor:default}
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-444 .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-444 .btn-primary:focus,.factory-bootstrap-444 .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-444 .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-444 .btn-primary:disabled,.factory-bootstrap-444 .btn-primary[disabled]{color:#d1cdc7!important;background:#db9825!important;border-color:#bd831f!important;text-shadow:none!important}.factory-bootstrap-444 .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-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{background-color:#e1a948;border-color:#d39323}
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-444 .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-444 .btn-primary:focus,.factory-bootstrap-444 .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-444 .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-444 .btn-primary:disabled,.factory-bootstrap-444 .btn-primary[disabled]{color:#d1cbc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.factory-bootstrap-444 .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-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{background-color:#c7a589;border-color:#b78a66}
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-444 .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-444 .btn-primary:focus,.factory-bootstrap-444 .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-444 .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-444 .btn-primary:disabled,.factory-bootstrap-444 .btn-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.factory-bootstrap-444 .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-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{background-color:#a3b745;border-color:#839237}
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-444 .factory-form-group .factory-legend{padding:9px 12px;background-color:#f9f9f9}.factory-bootstrap-444 .factory-form-group .factory-title{font-weight:700;font-size:14px;line-height:14px;color:#555;margin:0}.factory-bootstrap-444 .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-444 .factory-form-group .factory-hint-icon.factory-hint-icon-green{background:#8bc34a}.factory-bootstrap-444 .factory-form-group .factory-hint-icon.factory-hint-icon-grey{background:#9e9e9e}.factory-bootstrap-444 .factory-form-group .factory-hint-icon.factory-hint-icon-red{background:#E91E63}.factory-bootstrap-444 .factory-form-group .factory-hint{margin:0;font-size:12px;line-height:16px;margin-top:6px}.factory-bootstrap-444 .factory-form-group+.factory-form-group{margin-top:30px}.factory-bootstrap-444 .factory-form-group legend+.control-group{margin-top:0}
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-444 .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-444 .btn-primary:focus,.factory-bootstrap-444 .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-444 .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-444 .btn-primary:disabled,.factory-bootstrap-444 .btn-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.factory-bootstrap-444 .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-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{background-color:#04a4cc;border-color:#037c9a}
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-444 .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-444 .btn-primary:focus,.factory-bootstrap-444 .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-444 .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-444 .btn-primary:disabled,.factory-bootstrap-444 .btn-primary[disabled]{color:#d1c7c7!important;background:#d92c23!important;border-color:#ba251e!important;text-shadow:none!important}.factory-bootstrap-444 .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-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{background-color:#e14d43;border-color:#d02a21}
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-444 .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-444 .btn-primary:focus,.factory-bootstrap-444 .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-444 .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-444 .btn-primary:disabled,.factory-bootstrap-444 .btn-primary[disabled]{color:#c7d1c8!important;background:#86a988!important;border-color:#719a74!important;text-shadow:none!important}.factory-bootstrap-444 .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-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{background-color:#9ebaa0;border-color:#80a583}
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-444 .factory-separator{border-bottom:1px solid #f9f9f9;border-top:1px solid #d1d1d1;margin-bottom:25px}
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-444 .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-444 .btn-primary:focus,.factory-bootstrap-444 .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-444 .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-444 .btn-primary:disabled,.factory-bootstrap-444 .btn-primary[disabled]{color:#d1cbc7!important;background:#cc6c23!important;border-color:#ad5c1e!important;text-shadow:none!important}.factory-bootstrap-444 .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-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{background-color:#dd823b;border-color:#c36822}
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-444 .factory-buttons-way{float:right;position:relative;top:-25px;left:5px;border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-444 .factory-checkbox-disabled button,.factory-bootstrap-444 .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-444 .factory-buttons-way{border:3px solid #f9f9f9;border-radius:4px}.factory-bootstrap-444 .factory-buttons-way button{padding-left:10px;padding-right:10px}.factory-bootstrap-444 .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-444 .factory-checkbox-tumbler-hint{margin-top:5px}.factory-bootstrap-444 .factory-checkbox-tumbler-hint .factory-tumbler-content{display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-444 .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-444 .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-444 .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-444 .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-444 .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-444 .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-444 .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}
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-444 .factory-dropdown.factory-buttons-way .fa{margin-right:6px;position:relative}.factory-bootstrap-444 .factory-dropdown.factory-buttons-way{border:0;border-radius:0}.factory-bootstrap-444 .factory-hints .factory-hint{margin-top:5px;display:inline-block;background-color:#ffd;padding:1px 5px}.admin-color-light .factory-bootstrap-444 .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-444 .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-444 .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-444 .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-444 .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-444 .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-444 .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-444 .factory-dropdown.factory-ddslick-way .dd-select{background-color:#fff!important}.factory-bootstrap-444 .factory-dropdown.factory-ddslick-way label{margin-bottom:1px}.factory-bootstrap-444 .factory-dropdown.factory-ddslick-way .dd-option,.factory-bootstrap-444 .factory-dropdown.factory-ddslick-way .dd-selected{padding:8px 12px 8px 11px!important}
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-444 .factory-mtextbox-item{position:relative;margin-bottom:5px}.factory-bootstrap-444 .factory-mtextbox-item input,.factory-mtextbox-remove-item{display:inline-block}.factory-bootstrap-444 .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-444 .factory-mtextbox-item .factory-mtextbox-remove-item:focus,.factory-bootstrap-444 .factory-mtextbox-item .factory-mtextbox-remove-item:hover{box-shadow:none;outline:0}.factory-bootstrap-444 .factory-mtextbox-add-item{display:block;margin-top:10px}
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-444 .factory-more-link-content{border-top:1px dashed #DDD;padding-top:25px;width:100%;padding-right:20px;position:relative}.factory-bootstrap-444 .factory-tab .factory-more-link-show{display:inline-block;text-decoration:none;border-bottom:1px dotted #21759b;position:relative}.factory-bootstrap-444 .factory-tab .factory-more-link-show:hover{border-color:#d54e21}.factory-bootstrap-444 .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-444 .factory-tab .factory-more-link-hide:hover{color:#999}
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.factoryBootstrap444_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.factoryBootstrap444_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);
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.factoryBootstrap444_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.factoryBootstrap444_checkboxControl.Constructor=b,a(function(){a(".factory-bootstrap-444 .factory-checkbox.factory-buttons-way").factoryBootstrap444_checkboxControl(),a(".factory-bootstrap-444 .factory-checkbox").not(".factory-buttons-way").click(function(){a(this).prop("checked")?a(this).val(1):a(this).val(0)})})}(jQuery);
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.factoryBootstrap444_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.factoryBootstrap444_dropdownControl.Constructor=b,a(function(){a(".factory-bootstrap-444 .factory-dropdown").factoryBootstrap444_dropdownControl()})}(jQuery);
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.factoryBootstrap444_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.factoryBootstrap444_listControl.Constructor=b,a(function(){a(".factory-bootstrap-444 .factory-list").factoryBootstrap444_listControl()})}(jQuery);
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.factoryBootstrap444_MultipleTextboxControl=function(){return this.each(function(){new b(this)})},a(function(){a(".factory-bootstrap-444 .factory-multiple-textbox-group").factoryBootstrap444_MultipleTextboxControl()})}(jQuery);
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('FACTORY_BOOTSTRAP_444_LOADED') ) {
23
  return;
24
  }
25
 
26
- define('FACTORY_BOOTSTRAP_444_VERSION', '4.4.4');
27
- define('FACTORY_BOOTSTRAP_444_LOADED', true);
28
 
29
  if( !defined('FACTORY_FLAT_ADMIN') ) {
30
  define('FACTORY_FLAT_ADMIN', true);
31
  }
32
 
33
- define('FACTORY_BOOTSTRAP_444_DIR', dirname(__FILE__));
34
- define('FACTORY_BOOTSTRAP_444_URL', plugins_url(null, __FILE__));
35
 
36
- require_once(FACTORY_BOOTSTRAP_444_DIR . '/includes/functions.php');
37
 
38
  /**
39
- * @param Wbcr_Factory444_Plugin $plugin
40
  */
41
- add_action('wbcr_factory_bootstrap_444_plugin_created', function ($plugin) {
42
- $manager = new Wbcr_FactoryBootstrap444_Manager($plugin);
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 Wbcr_FactoryBootstrap444_Manager {
24
 
25
  /**
26
  * A plugin for which the manager was created.
27
  *
28
  * @since 3.2.0
29
- * @var Wbcr_Factory444_Plugin
30
  */
31
  public $plugin;
32
 
@@ -51,7 +51,7 @@ class Wbcr_FactoryBootstrap444_Manager {
51
  *
52
  * @since 1.0.0
53
  */
54
- public function __construct( Wbcr_Factory444_Plugin $plugin ) {
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( 'wbcr_factory_444_bootstrap_enqueue_scripts', $hook );
115
- do_action( 'wbcr_factory_444_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), $hook );
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 = FACTORY_BOOTSTRAP_444_DIR . '/assets/cache/';
160
- $cache_dir_url = FACTORY_BOOTSTRAP_444_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,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 = FACTORY_BOOTSTRAP_444_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,9 +192,9 @@ class Wbcr_FactoryBootstrap444_Manager {
192
  }
193
  } else {
194
  if ( $type == 'js' ) {
195
- wp_enqueue_script( md5( $script_to_load ), FACTORY_BOOTSTRAP_444_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_444_URL . "/assets/$type-min/$script_to_load.min." . $type, [], $this->plugin->getPluginVersion() );
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 wfactory_444_install_components($plugin_instance)
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.', 'wbcr_factory_444'), __('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_444')]);
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.', 'wbcr_factory_444')]);
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.', 'wbcr_factory_444' ), admin_url( 'options-permalink.php' ) . '</span>' );
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.', 'wbcr_factory_444')]);
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 wfactory_444_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_444')], 403);
113
  }
114
 
115
  if( empty($component_name) ) {
116
- wp_send_json_error(['error_message' => __('Required attribute [component_name] is empty.', 'wbcr_factory_444')]);
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 wfactory_444_creativemotion_install_plugin($plugin_instance)
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-444-process-button', function() {
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-444-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-444-intall-component';
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
- $.wfactory_444.hooks.run('core/components/pre_update', [$this, data]);
58
 
59
  self.sendRequest(data, function(response) {
60
  if( !response || !response.success ) {
61
- $.wfactory_444.hooks.run('core/components/update_error', [
62
  $this,
63
  data,
64
  response
@@ -80,7 +80,7 @@
80
  $this.removeClass('button-default').addClass('button-primary');
81
  }
82
 
83
- $.wfactory_444.hooks.run('core/components/installed', [
84
  $this,
85
  data,
86
  response
@@ -96,7 +96,7 @@
96
  $this.removeClass('button-primary').addClass('button-default');
97
  }
98
 
99
- $.wfactory_444.hooks.run('core/components/pre_activate', [
100
  $this,
101
  data,
102
  response
@@ -124,7 +124,7 @@
124
  $this.removeClass('button-default').addClass('button-primary');
125
  }
126
 
127
- $.wfactory_444.hooks.run('core/components/deactivated', [
128
  $this,
129
  data,
130
  response
@@ -134,7 +134,7 @@
134
 
135
  plugin_action = 'install';
136
 
137
- $.wfactory_444.hooks.run('core/components/deleted', [$this, data, response]);
138
  }
139
  } else {
140
  if( plugin_action === 'install' ) {
@@ -144,7 +144,7 @@
144
 
145
  $this.text(button_i18n[plugin_action]);
146
 
147
- $.wfactory_444.hooks.run('core/components/updated', [$this, data, response]);
148
  });
149
 
150
  return false;
@@ -169,7 +169,7 @@
169
  .addClass('disabled')
170
  .text(button_i18n.preparation);
171
 
172
- sendData.action = 'wfactory-444-prepare-component';
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
- $.wfactory_444.hooks.run('core/components/activation_error', [
181
  componentButton,
182
  sendData,
183
  response
@@ -187,7 +187,7 @@
187
 
188
  componentButton.removeClass('button-primary').text(button_i18n['deactivate']);
189
 
190
- $.wfactory_444.hooks.run('core/components/activated', [
191
  componentButton,
192
  sendData,
193
  response
@@ -210,7 +210,7 @@
210
  console.log(xhr.responseText);
211
  console.log(thrownError);
212
 
213
- $.wfactory_444.hooks.run('core/components/ajax_error', [
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( !$.wfactory_444 ) {
12
- $.wfactory_444 = {};
13
  }
14
 
15
- $.wfactory_444.filters = $.wfactory_444.filters || {
16
 
17
  /**
18
  * A set of registered filters.
@@ -79,20 +79,20 @@
79
  }
80
  };
81
 
82
- $.wfactory_444.hooks = $.wfactory_444.hooks || {
83
 
84
  /**
85
  * Applies filters to a given input value.
86
  */
87
  run: function(filterName, args) {
88
- $.wfactory_444.filters.run(filterName, args);
89
  },
90
 
91
  /**
92
  * Registers a new filter.
93
  */
94
  add: function(filterName, callback, priority) {
95
- $.wfactory_444.filters.add(filterName, callback, priority);
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('FACTORY_444_LOADED') ) {
18
  return;
19
  }
20
 
21
- define('FACTORY_444_LOADED', true);
22
 
23
- define('FACTORY_444_VERSION', '4.4.4');
24
 
25
- define('FACTORY_444_DIR', dirname(__FILE__));
26
- define('FACTORY_444_URL', plugins_url(null, __FILE__));
27
 
28
- load_plugin_textdomain('wbcr_factory_444', false, dirname(plugin_basename(__FILE__)) . '/langs');
29
 
30
  #comp merge
31
- require_once(FACTORY_444_DIR . '/includes/functions.php');
32
 
33
- require_once(FACTORY_444_DIR . '/includes/entities/class-factory-paths.php');
34
- require_once(FACTORY_444_DIR . '/includes/entities/class-factory-support.php');
35
 
36
- require_once(FACTORY_444_DIR . '/includes/class-factory-requests.php');
37
- require_once(FACTORY_444_DIR . '/includes/class-factory-options.php');
38
- require_once(FACTORY_444_DIR . '/includes/class-factory-plugin-base.php');
39
- require_once(FACTORY_444_DIR . '/includes/class-factory-migrations.php');
40
- require_once(FACTORY_444_DIR . '/includes/class-factory-notices.php');
41
 
42
  // ASSETS
43
- require_once(FACTORY_444_DIR . '/includes/assets-managment/class-factory-assets-list.php');
44
- require_once(FACTORY_444_DIR . '/includes/assets-managment/class-factory-script-list.php');
45
- require_once(FACTORY_444_DIR . '/includes/assets-managment/class-factory-style-list.php');
46
 
47
  // PREMIUM
48
- require_once(FACTORY_444_DIR . '/includes/premium/class-factory-license-interface.php');
49
- require_once(FACTORY_444_DIR . '/includes/premium/class-factory-provider-abstract.php');
50
- require_once(FACTORY_444_DIR . '/includes/premium/class-factory-manager.php');
51
 
52
  // UPDATES
53
- require_once(FACTORY_444_DIR . '/includes/updates/repositories/class-factory-repository-abstract.php');
54
- require_once(FACTORY_444_DIR . '/includes/updates/repositories/class-factory-wordpress.php');
55
- require_once(FACTORY_444_DIR . '/includes/updates/repositories/class-factory-github.php');
56
- require_once(FACTORY_444_DIR . '/includes/updates/class-factory-upgrader.php');
57
- require_once(FACTORY_444_DIR . '/includes/updates/class-factory-premium-upgrader.php');
58
 
59
- require_once(FACTORY_444_DIR . '/includes/class-factory-plugin-abstract.php');
60
 
61
- require_once(FACTORY_444_DIR . '/includes/activation/class-factory-activator.php');
62
- require_once(FACTORY_444_DIR . '/includes/activation/class-factory-update.php');
63
  #endcomp
64
 
65
  add_action('admin_enqueue_scripts', function () {
66
- wp_enqueue_script('wfactory-444-core-general', FACTORY_444_URL . '/assets/js/core-general.js', [
67
  'jquery'
68
- ], FACTORY_444_VERSION);
69
- wp_enqueue_script('wfactory-444-core-components', FACTORY_444_URL . '/assets/js/core-components.js', [
70
  'jquery',
71
- 'wfactory-444-core-general'
72
- ], FACTORY_444_VERSION);
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 Wbcr_Factory444_Activator {
23
 
24
  /**
25
  * Curent plugin.
26
  *
27
- * @var Wbcr_Factory444_Plugin
28
  */
29
  public $plugin;
30
 
31
- public function __construct( Wbcr_Factory444_Plugin $plugin ) {
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 Wbcr_Factory444_Update {
24
 
25
  /**
26
  * Current plugin
27
  *
28
- * @var Wbcr_Factory444_Plugin
29
  */
30
  var $plugin;
31
 
32
- public function __construct( Wbcr_Factory444_Plugin $plugin ) {
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 Wbcr_Factory444_AssetsList {
23
 
24
  protected $all = [];
25
  public $header_place = [];
@@ -29,15 +29,15 @@ class Wbcr_Factory444_AssetsList {
29
  protected $default_place;
30
 
31
  /**
32
- * @var Wbcr_Factory444_Plugin
33
  */
34
  protected $plugin;
35
 
36
  /**
37
- * @param Wbcr_Factory444_Plugin $plugin
38
  * @param bool $defaultIsFooter
39
  */
40
- public function __construct( Wbcr_Factory444_Plugin $plugin, $defaultIsFooter = true ) {
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 Wbcr_Factory444_ScriptList extends Wbcr_Factory444_AssetsList {
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 Wbcr_Factory444_ScriptList $this
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 Wbcr_Factory444_StyleList extends Wbcr_Factory444_AssetsList {
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!', 'wbcr_factory_444' ), $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_444' ), $this->required_wp_version ) . '<br>';
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\Factory_444;
4
 
5
  use Exception;
6
- use Wbcr_Factory444_Plugin;
7
 
8
  if ( ! defined( 'ABSPATH' ) ) {
9
  exit;
@@ -35,11 +35,11 @@ class Migrations {
35
  /**
36
  * Migrations constructor.
37
  *
38
- * @param Wbcr_Factory444_Plugin $plugin
39
  *
40
  * @throws Exception
41
  */
42
- public function __construct( Wbcr_Factory444_Plugin $plugin ) {
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', 'wbcr_factory_444' ) . "</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_444' ) . '</b><br>' . $notice_text . '</p>'
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:", "wbcr_factory_444" ) . ' ' . date( "Y-m-d H:i:s", $this->get_plugin_activated_time() ) . "<br>";
166
 
167
- $notice_text .= __( "Old plugin version (debug):", "wbcr_factory_444" ) . ' ' . $this->get_old_plugin_version() . "<br>";
168
- $notice_text .= __( "Current plugin version:", "wbcr_factory_444" ) . ' ' . $this->get_current_plugin_version() . "<br>";
169
- $notice_text .= __( "Need migration:", "wbcr_factory_444" ) . ' ' . ( $this->need_migration() ? "true" : "false" ) . "<br><br>";
170
- $notice_text .= "<a href='{$migrate_url}' class='button button-default'>" . __( "Migrate now", "wbcr_factory_444" ) . "</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_444' ) . '</b><br>' . $notice_text . '</p>'
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.', 'wbcr_factory_444' ) );
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\Factory_444;
4
 
5
- use Wbcr_Factory444_Plugin;
6
 
7
  // Exit if accessed directly
8
  if( !defined('ABSPATH') ) {
@@ -27,7 +27,7 @@ if( !defined('ABSPATH') ) {
27
  class Notices {
28
 
29
  /**
30
- * @var Wbcr_Factory444_Plugin
31
  */
32
  protected $plugin;
33
  /**
@@ -58,7 +58,7 @@ class Notices {
58
  /**
59
  * Инициализируем уведомлений сразу после загрузки модуля уведомлений
60
  *
61
- * @param Wbcr_Factory444_Plugin $plugin
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 был удален. Поэтому в этому хуке мы заменили префикс на factory_444
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\Factory_444;
4
 
5
  // Exit if accessed directly
6
  use Exception;
@@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  }
11
 
12
  /**
13
- * Трейт используется для расширения базового класса плагина Wbcr_Factory444_Base, позволяя работать с опциями плагина.
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 Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
28
 
29
  /**
30
- * Instance class Wbcr_Factory444_Request, required manages http requests
31
  *
32
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/390561806
33
- * @var Wbcr_Factory444_Request
34
  */
35
  public $request;
36
 
37
  /**
38
  * @see https://webcraftic.atlassian.net/wiki/spaces/FFD/pages/393936924
39
- * @var \WBCR\Factory_444\Premium\Provider
40
  */
41
  public $premium;
42
 
43
  /**
44
  * The Bootstrap Manager class
45
  *
46
- * @var Wbcr_FactoryBootstrap444_Manager
47
  */
48
  public $bootstrap;
49
 
50
  /**
51
  * The Bootstrap Manager class
52
  *
53
- * @var Wbcr_FactoryForms441_Manager
54
  */
55
  public $forms;
56
 
57
  /**
58
- * Простой массив со списком зарегистрированных классов унаследованных от Wbcr_Factory444_Activator.
59
  * Классы активации используются для упаковки набора функций, которые нужно выполнить во время
60
  * активации плагина.
61
  *
62
- * @var array[] Wbcr_Factory444_Activator
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\Factory_Adverts_122\Base
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 Wbcr_Factory444_Request();
119
- //$this->route = new Wbcr_Factory444_Route();
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-444-intall-component" == $_REQUEST['action'] ) {
148
- add_action('wp_ajax_wfactory-444-intall-component', [$this, 'ajax_handler_install_components']);
149
  }
150
 
151
- if( "wfactory-444-prepare-component" == $_REQUEST['action'] ) {
152
- add_action('wp_ajax_wfactory-444-prepare-component', [$this, 'ajax_handler_prepare_component']);
153
  }
154
- if( "wfactory-444-creativemotion-install-plugin" == $_REQUEST['action'] ) {
155
- add_action('wp_ajax_wfactory-444-creativemotion-install-plugin', [
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 FACTORY_444_DIR . '/ajax/install-addons.php';
169
- wfactory_444_install_components($this);
170
  }
171
 
172
  public function ajax_handler_prepare_component()
173
  {
174
- require_once FACTORY_444_DIR . '/ajax/install-addons.php';
175
- wfactory_444_prepare_component($this);
176
  }
177
 
178
  public function ajax_handler_install_creativemotion_plugins()
179
  {
180
- require_once FACTORY_444_DIR . '/ajax/install-addons.php';
181
- wfactory_444_creativemotion_install_plugin($this);
182
  }
183
  // --------------------------------------------------------
184
 
@@ -186,9 +186,9 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
186
  * Устанавливает класс менеджер, которому плагин будет делегировать подключение ресурсов (картинок,
187
  * скриптов, стилей) фреймворка.
188
  *
189
- * @param Wbcr_FactoryBootstrap444_Manager $bootstrap
190
  */
191
- public function setBootstap(Wbcr_FactoryBootstrap444_Manager $bootstrap)
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 Wbcr_FactoryForms441_Manager $forms
200
  */
201
- public function setForms(Wbcr_FactoryForms441_Manager $forms)
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\Factory_444\Premium\Manager::$providers[$name]) ) {
250
- WBCR\Factory_444\Premium\Manager::$providers[$name] = $class_name;
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\Factory_444\Updates\Upgrader::$repositories[$name]) ) {
269
- WBCR\Factory_444\Updates\Upgrader::$repositories[$name] = $class_name;
270
  }
271
  }
272
 
@@ -276,7 +276,7 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
276
  * Доступен глобально через метод app(), чаще всего используется для создания точек для ротации
277
  * рекламных объявлений.
278
  *
279
- * @return \WBCR\Factory_Adverts_122\Base
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 Wbcr_Factory444_ScriptList($this);
316
  }
317
 
318
  public function newStyleList()
319
  {
320
- return new Wbcr_Factory444_StyleList($this);
321
  }
322
 
323
  /**
324
  * Все страницы плагина создаются через специальную обертку, за которую отвечает модуль
325
  * фреймворка pages. Разработчик создает собственный класс, унаследованный от
326
- * Wbcr_FactoryPages443_AdminPage, а затем регистрирует его через этот метод.
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
- * Регистрируемый класс должен быть унаследован от класса Wbcr_FactoryPages443_AdminPage.
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('Wbcr_FactoryPages443') ) {
359
- throw new Exception('The factory_pages_443 module is not included.');
360
  }
361
 
362
- Wbcr_FactoryPages443::register($this, $class_name);
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/factory_444/cancel_plugin_activation_{$this->plugin_name}", false) ) {
413
  return;
414
  }
415
 
416
  /**
417
- * wbcr_factory_444_plugin_activation
418
  *
419
  * @since 4.1.1 - deprecated
420
  */
421
- wbcr_factory_444_do_action_deprecated('wbcr_factory_444_plugin_activation', [
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
- wbcr_factory_444_do_action_deprecated('wbcr/factory/plugin_activation', [
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
- wbcr_factory_444_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_444_plugin_activation_' . $this->plugin_name
452
  *
453
  * @since 4.1.1 - deprecated
454
  */
455
- wbcr_factory_444_do_action_deprecated('wbcr_factory_444_plugin_activation_' . $this->plugin_name, [
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/factory_444/cancel_plugin_deactivation_{$this->plugin_name}", false) ) {
497
  return;
498
  }
499
 
500
  /**
501
- * wbcr_factory_444_plugin_deactivation
502
  *
503
  * @since 4.1.1 - deprecated
504
  */
505
- wbcr_factory_444_do_action_deprecated('wbcr_factory_444_plugin_deactivation', [
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
- wbcr_factory_444_do_action_deprecated('wbcr/factory/plugin_deactivation', [
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
- * wbcr_factory_444_plugin_deactivation_ . $this->plugin_name
527
  *
528
  * @since 4.1.1 - deprecated
529
  */
530
- wbcr_factory_444_do_action_deprecated('wbcr_factory_444_plugin_deactivation_' . $this->plugin_name, [
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
- wbcr_factory_444_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,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('Wbcr_FactoryPages443') ) {
578
- throw new Exception('The factory_pages_443 module is not included.');
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 Wbcr_FactoryPages443::getPageUrl($this, $page_id, $args);
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\Factory_444\Components\Install_Button
598
  */
599
  public function get_install_component_button($component_type, $slug)
600
  {
601
- require_once FACTORY_444_DIR . '/includes/components/class-install-component-button.php';
602
 
603
- return new \WBCR\Factory_444\Components\Install_Button($this, $component_type, $slug);
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\Factory_444\Components\Delete_Button
613
  */
614
  public function get_delete_component_button($component_type, $slug)
615
  {
616
- require_once FACTORY_444_DIR . '/includes/components/class-delete-component-button.php';
617
 
618
- return new WBCR\Factory_444\Components\Delete_Button($this, $component_type, $slug);
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
- wbcr_factory_444_do_action_deprecated('wbcr_factory_444_core_modules_loaded-' . $this->plugin_name, [], '4.1.1', "wbcr/factory_444/modules_loaded-" . $this->plugin_name);
802
 
803
  /**
804
  * @since 4.1.1 - add
805
  */
806
- do_action('wbcr/factory_444/modules_loaded-' . $this->plugin_name);
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('wbcr_factory_444_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,7 +846,7 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
846
  */
847
  protected function init_plugin_migrations()
848
  {
849
- new WBCR\Factory_444\Migrations($this);
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\Factory_444\Notices($this);
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\Factory_444\Updates\Upgrader($this);
877
  }
878
  }
879
 
@@ -896,11 +896,11 @@ abstract class Wbcr_Factory444_Plugin extends Wbcr_Factory444_Base {
896
  }
897
 
898
  // Создаем экземляр премиум менеджера, мы сможем к нему обращаться глобально.
899
- $this->premium = WBCR\Factory_444\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_444\Updates\Premium_Upgrader($this);
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
- * Базовый класс для создания нового плагина. Полную реализацию класса смотрите в Wbcr_Factory444_Plugin
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 Wbcr_Factory444_Base {
21
 
22
- use WBCR\Factory_444\Options;
23
 
24
  /**
25
  * Обязательное свойство. Префикс, используется для создания пространство имен.
@@ -81,7 +81,7 @@ class Wbcr_Factory444_Base {
81
  * https://robin-image-optimizer.webcraftic.com/premium-features.
82
  *
83
  * Это свойство заполняется для того, чтобы в процессе разработки вы могли использовать
84
- * экземпляр класса \WBCR\Factory_444\Entities\Support, для получения информации о сайте плагина.
85
  * Тем самым вы избавляете себя от жесткого прописывания ссылок на лендинг плагина и
86
  * можете изменить все ссылки в одном месте.
87
  *
@@ -127,7 +127,7 @@ class Wbcr_Factory444_Base {
127
  * к примеру: freemius, codecanyon, templatemonster, вам нужно указать только настройки для
128
  * взаимодействия с выбранным вами провайдером. Каждая реализация провайдера лицензий может иметь
129
  * индивидуальный настройки, в этом примере приведены настройки для freemius провайдера
130
- * WBCR\Factory_444\Premium\Provider > WBCR\Factory_Freemius_132\Premium\Provider
131
  *
132
  * На текущий момент существует только реализация для freemius провайдера.
133
  *
@@ -177,9 +177,9 @@ class Wbcr_Factory444_Base {
177
  * }
178
  */
179
  protected $load_factory_modules = [
180
- [ 'libs/factory/bootstrap', 'factory_bootstrap_444', 'admin' ],
181
- [ 'libs/factory/forms', 'factory_forms_441', 'admin' ],
182
- [ 'libs/factory/pages', 'factory_pages_443', 'admin' ],
183
  ];
184
 
185
  /**
@@ -209,20 +209,20 @@ class Wbcr_Factory444_Base {
209
 
210
 
211
  /**
212
- * Экземпляр класса \WBCR\Factory_444\Entities\Support используется для получения информации
213
  * о сайте плагина. Чаще всего используется для получения ссылки на страницу с тарифами или
214
  * ссылки на форму обратной связи. Встроен механизм отслеживания по utm меткам.
215
  *
216
- * @var \WBCR\Factory_444\Entities\Support
217
  */
218
  protected $support;
219
 
220
  /**
221
- * Экземпляр класса \WBCR\Factory_444\Entities\Paths используется для получения информации о
222
  * путях плагина. Часто используется для получения путей или ссылок на место хранения плагина
223
  * или его входного файла.
224
  *
225
- * @var \WBCR\Factory_444\Entities\Paths
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\Factory_444\Entities\Support( $this->support_details );
274
- $this->paths = new \WBCR\Factory_444\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,7 +391,7 @@ class Wbcr_Factory444_Base {
391
  * Проверяет, включен ли премиум для этого плагина или нет.
392
  *
393
  * @return bool Возвращает true, если премиум пакет включен для этого плагина.
394
- * См. Wbcr_Factory444_Base::has_premium
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 Возвращает заголовок плагина. См. Wbcr_Factory444_Base::plugin_title
404
  */
405
  public function getPluginTitle() {
406
  return $this->plugin_title;
@@ -409,7 +409,7 @@ class Wbcr_Factory444_Base {
409
  /**
410
  * Позволяет получить префикс плагина.
411
  *
412
- * @return string Возвращает префикс плагина.См. Wbcr_Factory444_Base::prefix
413
  */
414
  public function getPrefix() {
415
  return $this->prefix;
@@ -418,7 +418,7 @@ class Wbcr_Factory444_Base {
418
  /**
419
  * Позволяет получить имя плагина.
420
  *
421
- * @return string Возвращает имя плагина. См. Wbcr_Factory444_Base::plugin_name
422
  */
423
  public function getPluginName() {
424
  return $this->plugin_name;
@@ -427,7 +427,7 @@ class Wbcr_Factory444_Base {
427
  /**
428
  * Позволяет получить версию плагина.
429
  *
430
- * @return string Возвращает версию плагина. См. Wbcr_Factory444_Base::plugin_version
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
- * Wbcr_Factory444_Base::plugin_data
453
  *
454
  * @return null
455
  */
@@ -462,18 +462,18 @@ class Wbcr_Factory444_Base {
462
  }
463
 
464
  /**
465
- * Предоставляет доступ к экземпляру класса \WBCR\Factory_444\Entities\Support.
466
  *
467
- * @return \WBCR\Factory_444\Entities\Support
468
  */
469
  public function get_support() {
470
  return $this->support;
471
  }
472
 
473
  /**
474
- * Предоставляет доступ к экземпляру класса \WBCR\Factory_444\Entities\Paths.
475
  *
476
- * @return \WBCR\Factory_444\Entities\Paths
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 Возвращает объект с сырыми данными плагина. См. Wbcr_Factory444_Base::plugin_data
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 Wbcr_Factory444_Request {
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( 'Wbcr_Factory444_Requirements' ) ) {
16
- class Wbcr_Factory444_Requirements {
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!', 'wbcr_factory_444' ), $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_444' ), $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_444' ), $this->plugin_title );
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\Factory_444\Components;
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\Factory_444\Components;
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-444-process-button'
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(\Wbcr_Factory444_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,13 +420,13 @@ class Install_Button {
420
  protected function get_i18n()
421
  {
422
  return [
423
- 'activate' => __('Activate', 'wbcr_factory_444'),
424
- 'install' => __('Install', 'wbcr_factory_444'),
425
- 'deactivate' => __('Deactivate', 'wbcr_factory_444'),
426
- 'delete' => __('Delete', 'wbcr_factory_444'),
427
- 'loading' => __('Please wait...', 'wbcr_factory_444'),
428
- 'preparation' => __('Preparation...', 'wbcr_factory_444'),
429
- 'read' => __('Read more', 'wbcr_factory_444')
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\Factory_444\Entities;
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\Factory_444\Entities;
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 wbcr_factory_444_deprecated_hook()
57
  *
58
  */
59
- function wbcr_factory_444_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_444_deprecated_hook( $tag, $version, $replacement, $message );
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 wbcr_factory_444_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,14 +98,14 @@ function wbcr_factory_444_do_action_deprecated( $tag, $args, $version, $replacem
98
  if ( ! has_action( $tag ) ) {
99
  return;
100
  }
101
- wbcr_factory_444_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_444_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,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 wbcr_factory_444_deprecated_hook( $hook, $version, $replacement = null, $message = null ) {
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\Factory_444\Premium\Interfaces;
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\Factory_444\Premium;
4
 
5
  use Exception;
6
- use Wbcr_Factory444_Plugin;
7
 
8
  // Exit if accessed directly
9
  if ( ! defined( 'ABSPATH' ) ) {
@@ -24,7 +24,7 @@ class Manager {
24
  public static $providers;
25
 
26
  /**
27
- * @var Wbcr_Factory444_Plugin
28
  */
29
  protected $plugin;
30
 
@@ -36,24 +36,24 @@ class Manager {
36
  /**
37
  * Manager constructor.
38
  *
39
- * @param Wbcr_Factory444_Plugin $plugin
40
  * @param array $settings
41
  *
42
  * @throws Exception
43
  */
44
- public function __construct( Wbcr_Factory444_Plugin $plugin, array $settings ) {
45
  $this->plugin = $plugin;
46
  $this->settings = $settings;
47
  }
48
 
49
  /**
50
- * @param Wbcr_Factory444_Plugin $plugin
51
  * @param array $settings
52
  *
53
- * @return \WBCR\Factory_Freemius_132\Premium\Provider
54
  * @throws Exception
55
  */
56
- public static function instance( Wbcr_Factory444_Plugin $plugin, array $settings ) {
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\Factory_Freemius_132\Premium\Provider
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\Factory_444\Premium\Provider interface!" );
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\Factory_444\Premium;
4
 
5
  use Exception;
6
- use Wbcr_Factory444_Plugin;
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 Wbcr_Factory444_Plugin
25
  */
26
  protected $plugin;
27
 
@@ -38,10 +38,10 @@ abstract class Provider {
38
  /**
39
  * Provider constructor.
40
  *
41
- * @param Wbcr_Factory444_Plugin $plugin
42
  * @param array $settings
43
  */
44
- public function __construct(Wbcr_Factory444_Plugin $plugin, array $settings)
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\Factory_444\Premium\Interfaces\License
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\Factory_444\Updates;
4
 
5
  use Exception;
6
  use Plugin_Installer_Skin;
7
  use Plugin_Upgrader;
8
- use Wbcr_Factory444_Plugin;
9
- use Wbcr_FactoryPages443_ImpressiveThemplate;
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 Wbcr_Factory444_Plugin $plugin
49
  *
50
  * @throws Exception
51
  * @since 4.1.1
52
  *
53
  */
54
- public function __construct(Wbcr_Factory444_Plugin $plugin)
55
  {
56
  parent::__construct($plugin);
57
 
@@ -242,9 +242,9 @@ class Premium_Upgrader extends Upgrader {
242
  /**
243
  * Выводит уведомление внутри интерфейса плагина, на всех страницах плагина.
244
  *
245
- * @param Wbcr_FactoryPages443_ImpressiveThemplate $obj
246
  *
247
- * @param Wbcr_Factory444_Plugin $plugin
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.', 'wbcr_factory_444'),
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.', 'wbcr_factory_444'),
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.', 'wbcr_factory_444'), $upgrade_url, $cancel_license_url),
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.', 'wbcr_factory_444'), $activate_plugin_url, $cancel_license_url)
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\Factory_444\Updates;
4
 
5
  use Exception;
6
  use stdClass;
7
- use Wbcr_Factory444_Plugin;
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\Factory_Freemius_132\Updates\Freemius_Repository',
32
- * 'freemius' => '\WBCR\Factory_444\Updates\Wordpress_Repository'
33
  * ]
34
  */
35
  public static $repositories = [];
@@ -42,7 +42,7 @@ class Upgrader {
42
  protected $type = 'default';
43
 
44
  /**
45
- * @var Wbcr_Factory444_Plugin
46
  */
47
  protected $plugin;
48
 
@@ -88,7 +88,7 @@ class Upgrader {
88
  /**
89
  * Manager constructor.
90
  *
91
- * @param Wbcr_Factory444_Plugin $plugin
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(Wbcr_Factory444_Plugin $plugin)
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\Factory_444\Updates\Wordpress_Repository';
111
- self::$repositories['github'] = '\WBCR\Factory_444\Updates\Github_Repository';
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\Factory_444\Updates\Repository interface!");
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\Factory_444\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory444_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
@@ -57,11 +57,11 @@ class Github_Repository extends Repository {
57
  /**
58
  * Wordpress constructor.
59
  *
60
- * @param Wbcr_Factory444_Plugin $plugin
61
  * @param bool $is_premium
62
  * @since 4.4.1
63
  */
64
- public function __construct(Wbcr_Factory444_Plugin $plugin, array $settings = [])
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, 2);
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( false !== strpos(basename($source), $this->plugin_slug) ) {
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\Factory_444\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory444_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
@@ -23,17 +23,17 @@ abstract class Repository {
23
  protected $initialized = false;
24
 
25
  /**
26
- * @var Wbcr_Factory444_Plugin
27
  */
28
  protected $plugin;
29
 
30
  /**
31
  * Repository constructor.
32
  *
33
- * @param Wbcr_Factory444_Plugin $plugin
34
  * @param array $settings
35
  */
36
- abstract public function __construct(Wbcr_Factory444_Plugin $plugin, array $settings = []);
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\Factory_444\Updates;
4
 
5
  // Exit if accessed directly
6
- use Wbcr_Factory444_Plugin;
7
 
8
  if( !defined('ABSPATH') ) {
9
  exit;
@@ -20,10 +20,10 @@ class Wordpress_Repository extends Repository {
20
  /**
21
  * Wordpress constructor.
22
  *
23
- * @param Wbcr_Factory444_Plugin $plugin
24
  * @param array $settings
25
  */
26
- public function __construct(Wbcr_Factory444_Plugin $plugin, array $settings = [])
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 Wbcr_Factory444_Plugin $plugin
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 \Wbcr_Factory444_Plugin
32
  */
33
  private $plugin;
34
 
@@ -43,12 +43,12 @@ class Base {
43
  /**
44
  * Wbcr_Factory_Feedback constructor.
45
  *
46
- * @param \Wbcr_Factory444_Plugin $plugin
47
  *
48
  * @since 1.0.0 Added
49
  *
50
  */
51
- public function __construct( \Wbcr_Factory444_Plugin $plugin ) {
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 \Wbcr_Factory444_Plugin
49
  */
50
  private $plugin;
51
 
@@ -57,9 +57,9 @@ class Creative_Motion_API {
57
  *
58
  * @since 1.0.0 Added
59
  *
60
- * @param \Wbcr_Factory444_Plugin $plugin_name
61
  */
62
- public function __construct( \Wbcr_Factory444_Plugin $plugin ) {
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('FACTORY_FORMS_441_LOADED') ) {
26
  return;
27
  }
28
 
29
- define('FACTORY_FORMS_441_LOADED', true);
30
 
31
- define('FACTORY_FORMS_441_VERSION', '4.4.1');
32
 
33
  // absolute path and URL to the files and resources of the module.
34
- define('FACTORY_FORMS_441_DIR', dirname(__FILE__));
35
- define('FACTORY_FORMS_441_URL', plugins_url(null, __FILE__));
36
 
37
  #comp merge
38
- require_once(FACTORY_FORMS_441_DIR . '/includes/providers/value-provider.interface.php');
39
- require_once(FACTORY_FORMS_441_DIR . '/includes/providers/meta-value-provider.class.php');
40
- require_once(FACTORY_FORMS_441_DIR . '/includes/providers/options-value-provider.class.php');
41
 
42
- require_once(FACTORY_FORMS_441_DIR . '/includes/form.class.php');
43
  #endcomp
44
 
45
- load_plugin_textdomain('wbcr_factory_forms_441', 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_441_register_controls' hook
53
  *
54
  */
55
- if( !function_exists('wbcr_factory_forms_441_register_default_controls') ) {
56
 
57
  /**
58
- * @param Wbcr_Factory444_Plugin $plugin
59
  *
60
  * @throws Exception
61
  */
62
- function wbcr_factory_forms_441_register_default_controls(Wbcr_Factory444_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_441_DIR . '/includes/html-builder.class.php');
70
- require_once(FACTORY_FORMS_441_DIR . '/includes/form-element.class.php');
71
- require_once(FACTORY_FORMS_441_DIR . '/includes/control.class.php');
72
- require_once(FACTORY_FORMS_441_DIR . '/includes/complex-control.class.php');
73
- require_once(FACTORY_FORMS_441_DIR . '/includes/holder.class.php');
74
- require_once(FACTORY_FORMS_441_DIR . '/includes/control-holder.class.php');
75
- require_once(FACTORY_FORMS_441_DIR . '/includes/custom-element.class.php');
76
- require_once(FACTORY_FORMS_441_DIR . '/includes/form-layout.class.php');
77
 
78
  // registration of controls
79
  $plugin->forms->registerControls([
80
  [
81
  'type' => 'checkbox',
82
- 'class' => 'Wbcr_FactoryForms441_CheckboxControl',
83
- 'include' => FACTORY_FORMS_441_DIR . '/controls/checkbox.php'
84
  ],
85
  [
86
  'type' => 'list',
87
- 'class' => 'Wbcr_FactoryForms441_ListControl',
88
- 'include' => FACTORY_FORMS_441_DIR . '/controls/list.php'
89
  ],
90
  [
91
  'type' => 'dropdown',
92
- 'class' => 'Wbcr_FactoryForms441_DropdownControl',
93
- 'include' => FACTORY_FORMS_441_DIR . '/controls/dropdown.php'
94
  ],
95
  [
96
  'type' => 'dropdown-and-colors',
97
- 'class' => 'Wbcr_FactoryForms441_DropdownAndColorsControl',
98
- 'include' => FACTORY_FORMS_441_DIR . '/controls/dropdown-and-colors.php'
99
  ],
100
  [
101
  'type' => 'hidden',
102
- 'class' => 'Wbcr_FactoryForms441_HiddenControl',
103
- 'include' => FACTORY_FORMS_441_DIR . '/controls/hidden.php'
104
  ],
105
  [
106
  'type' => 'hidden',
107
- 'class' => 'Wbcr_FactoryForms441_HiddenControl',
108
- 'include' => FACTORY_FORMS_441_DIR . '/controls/hidden.php'
109
  ],
110
  [
111
  'type' => 'radio',
112
- 'class' => 'Wbcr_FactoryForms441_RadioControl',
113
- 'include' => FACTORY_FORMS_441_DIR . '/controls/radio.php'
114
  ],
115
  [
116
  'type' => 'radio-colors',
117
- 'class' => 'Wbcr_FactoryForms441_RadioColorsControl',
118
- 'include' => FACTORY_FORMS_441_DIR . '/controls/radio-colors.php'
119
  ],
120
  [
121
  'type' => 'textarea',
122
- 'class' => 'Wbcr_FactoryForms441_TextareaControl',
123
- 'include' => FACTORY_FORMS_441_DIR . '/controls/textarea.php'
124
  ],
125
  [
126
  'type' => 'textbox',
127
- 'class' => 'Wbcr_FactoryForms441_TextboxControl',
128
- 'include' => FACTORY_FORMS_441_DIR . '/controls/textbox.php'
129
  ],
130
  [
131
  'type' => 'multiple-textbox',
132
- 'class' => 'Wbcr_FactoryForms441_MultipleTextboxControl',
133
- 'include' => FACTORY_FORMS_441_DIR . '/controls/multiple-textbox.php'
134
  ],
135
  [
136
  'type' => 'datetimepicker-range',
137
- 'class' => 'Wbcr_FactoryForms441_DatepickerRangeControl',
138
- 'include' => FACTORY_FORMS_441_DIR . '/controls/datepicker-range.php'
139
  ],
140
  [
141
  'type' => 'url',
142
- 'class' => 'Wbcr_FactoryForms441_UrlControl',
143
- 'include' => FACTORY_FORMS_441_DIR . '/controls/url.php'
144
  ],
145
  [
146
  'type' => 'wp-editor',
147
- 'class' => 'Wbcr_FactoryForms441_WpEditorControl',
148
- 'include' => FACTORY_FORMS_441_DIR . '/controls/wp-editor.php'
149
  ],
150
  [
151
  'type' => 'color',
152
- 'class' => 'Wbcr_FactoryForms441_ColorControl',
153
- 'include' => FACTORY_FORMS_441_DIR . '/controls/color.php'
154
  ],
155
  [
156
  'type' => 'color-and-opacity',
157
- 'class' => 'Wbcr_FactoryForms441_ColorAndOpacityControl',
158
- 'include' => FACTORY_FORMS_441_DIR . '/controls/color-and-opacity.php'
159
  ],
160
  [
161
  'type' => 'gradient',
162
- 'class' => 'Wbcr_FactoryForms441_GradientControl',
163
- 'include' => FACTORY_FORMS_441_DIR . '/controls/gradient.php'
164
  ],
165
  [
166
  'type' => 'font',
167
- 'class' => 'Wbcr_FactoryForms441_FontControl',
168
- 'include' => FACTORY_FORMS_441_DIR . '/controls/font.php'
169
  ],
170
  [
171
  'type' => 'google-font',
172
- 'class' => 'Wbcr_FactoryForms441_GoogleFontControl',
173
- 'include' => FACTORY_FORMS_441_DIR . '/controls/google-font.php'
174
  ],
175
  [
176
  'type' => 'pattern',
177
- 'class' => 'Wbcr_FactoryForms441_PatternControl',
178
- 'include' => FACTORY_FORMS_441_DIR . '/controls/pattern.php'
179
  ],
180
  [
181
  'type' => 'integer',
182
- 'class' => 'Wbcr_FactoryForms441_IntegerControl',
183
- 'include' => FACTORY_FORMS_441_DIR . '/controls/integer.php'
184
  ],
185
  [
186
  'type' => 'control-group',
187
- 'class' => 'Wbcr_FactoryForms441_ControlGroupHolder',
188
- 'include' => FACTORY_FORMS_441_DIR . '/controls/holders/control-group.php'
189
  ],
190
  [
191
  'type' => 'paddings-editor',
192
- 'class' => 'Wbcr_FactoryForms441_PaddingsEditorControl',
193
- 'include' => FACTORY_FORMS_441_DIR . '/controls/paddings-editor.php'
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' => 'Wbcr_FactoryForms441_TabHolder',
202
- 'include' => FACTORY_FORMS_441_DIR . '/controls/holders/tab.php'
203
  ],
204
  [
205
  'type' => 'tab-item',
206
- 'class' => 'Wbcr_FactoryForms441_TabItemHolder',
207
- 'include' => FACTORY_FORMS_441_DIR . '/controls/holders/tab-item.php'
208
  ],
209
  [
210
  'type' => 'accordion',
211
- 'class' => 'Wbcr_FactoryForms441_AccordionHolder',
212
- 'include' => FACTORY_FORMS_441_DIR . '/controls/holders/accordion.php'
213
  ],
214
  [
215
  'type' => 'accordion-item',
216
- 'class' => 'Wbcr_FactoryForms441_AccordionItemHolder',
217
- 'include' => FACTORY_FORMS_441_DIR . '/controls/holders/accordion-item.php'
218
  ],
219
  [
220
  'type' => 'control-group',
221
- 'class' => 'Wbcr_FactoryForms441_ControlGroupHolder',
222
- 'include' => FACTORY_FORMS_441_DIR . '/controls/holders/control-group.php'
223
  ],
224
  [
225
  'type' => 'control-group-item',
226
- 'class' => 'Wbcr_FactoryForms441_ControlGroupItem',
227
- 'include' => FACTORY_FORMS_441_DIR . '/controls/holders/control-group-item.php'
228
  ],
229
  [
230
  'type' => 'form-group',
231
- 'class' => 'Wbcr_FactoryForms441_FormGroupHolder',
232
- 'include' => FACTORY_FORMS_441_DIR . '/controls/holders/form-group.php'
233
  ],
234
  [
235
  'type' => 'more-link',
236
- 'class' => 'Wbcr_FactoryForms441_MoreLinkHolder',
237
- 'include' => FACTORY_FORMS_441_DIR . '/controls/holders/more-link.php'
238
  ],
239
  [
240
  'type' => 'div',
241
- 'class' => 'Wbcr_FactoryForms441_DivHolder',
242
- 'include' => FACTORY_FORMS_441_DIR . '/controls/holders/div.php'
243
  ],
244
  [
245
  'type' => 'columns',
246
- 'class' => 'Wbcr_FactoryForms441_ColumnsHolder',
247
- 'include' => FACTORY_FORMS_441_DIR . '/controls/holders/columns.php'
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' => 'Wbcr_FactoryForms441_Html',
256
- 'include' => FACTORY_FORMS_441_DIR . '/controls/customs/html.php',
257
  ],
258
  [
259
  'type' => 'separator',
260
- 'class' => 'Wbcr_FactoryForms441_Separator',
261
- 'include' => FACTORY_FORMS_441_DIR . '/controls/customs/separator.php',
262
  ],
263
  ]);
264
 
265
  // registration of form layouts
266
  $plugin->forms->registerFormLayout([
267
  'name' => 'bootstrap-3',
268
- 'class' => 'Wbcr_FactoryForms441_Bootstrap3FormLayout',
269
- 'include' => FACTORY_FORMS_441_DIR . '/layouts/bootstrap-3/bootstrap-3.php'
270
  ]);
271
  }
272
 
273
- add_action('wbcr_factory_forms_441_register_controls', 'wbcr_factory_forms_441_register_default_controls');
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('Wbcr_FactoryForms441_CheckboxControl') ) {
24
 
25
- class Wbcr_FactoryForms441_CheckboxControl extends Wbcr_FactoryForms441_Control {
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', 'wbcr_factory_forms_441') ?></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_441') ?></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
  } ?>" />
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('Wbcr_FactoryForms441_ColorAndOpacityControl') ) {
24
  }
25
 
26
- class Wbcr_FactoryForms441_ColorAndOpacityControl extends Wbcr_FactoryForms441_ComplexControl {
27
 
28
  public $type = 'color-and-opacity';
29
 
@@ -57,8 +57,8 @@
57
  'way' => 'slider'
58
  ));
59
 
60
- $this->color = new Wbcr_FactoryForms441_ColorControl($options['color'], $form, $provider);
61
- $this->opacity = new Wbcr_FactoryForms441_IntegerControl($options['opacity'], $form, $provider);
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('Wbcr_FactoryForms441_ColorControl') ) {
24
 
25
- class Wbcr_FactoryForms441_ColorControl extends Wbcr_FactoryForms441_Control {
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('Wbcr_FactoryForms441_Html') ) {
18
 
19
- class Wbcr_FactoryForms441_Html extends Wbcr_FactoryForms441_CustomElement {
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('Wbcr_FactoryForms441_Separator') ) {
18
- class Wbcr_FactoryForms441_Separator extends Wbcr_FactoryForms441_CustomElement {
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('Wbcr_FactoryForms441_DatepickerRangeControl') ) {
33
 
34
- class Wbcr_FactoryForms441_DatepickerRangeControl extends Wbcr_FactoryForms441_ComplexControl {
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 Wbcr_FactoryForms441_TextboxControl($options['range_1'], $form, $provider);
69
- $this->range_2 = new Wbcr_FactoryForms441_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) {
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 FactoryForms441_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 FactoryForms441_RadioColorsControl
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('Wbcr_FactoryForms441_DropdownAndColorsControl') ) {
41
 
42
- class Wbcr_FactoryForms441_DropdownAndColorsControl extends Wbcr_FactoryForms441_ComplexControl {
43
 
44
  public $type = 'dropdown-and-colors';
45
 
@@ -69,8 +69,8 @@
69
  'name' => $this->options['name'] . '__colors',
70
  ));
71
 
72
- $this->dropdown = new Wbcr_FactoryForms441_DropdownControl($options['dropdown'], $form, $provider);
73
- $this->colors = new Wbcr_FactoryForms441_RadioColorsControl($options['colors'], $form, $provider);
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( 'Wbcr_FactoryForms441_DropdownControl' ) ) {
25
 
26
- class Wbcr_FactoryForms441_DropdownControl extends Wbcr_FactoryForms441_Control {
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.', 'wbcr_factory_forms_441' ) ) ?>'
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 -', 'wbcr_factory_forms_441' ) );
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 -', 'wbcr_factory_forms_441' );
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('Wbcr_FactoryForms441_FontControl') ) {
24
 
25
- class Wbcr_FactoryForms441_FontControl extends Wbcr_FactoryForms441_ComplexControl {
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 Wbcr_FactoryForms441_IntegerControl($option_font_size, $form, $provider);
58
- $this->family = new Wbcr_FactoryForms441_DropdownControl($option_font_family, $form, $provider);
59
- $this->color = new Wbcr_FactoryForms441_ColorControl($optionFontColor, $form, $provider);
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('wbcr_factory_forms_441_fonts', $fonts);
70
- $fonts = apply_filters('wbcr_factory_forms_441_fonts-' . $this->options['name'], $fonts);
71
 
72
  return $fonts;
73
  }
@@ -77,10 +77,10 @@
77
 
78
  $fonts = array(
79
 
80
- array('inherit', __('(use default website font)', 'wbcr_factory_forms_441')),
81
  array(
82
  'group',
83
- __('Sans Serif:', 'wbcr_factory_forms_441'),
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:', 'wbcr_factory_forms_441'),
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:', 'wbcr_factory_forms_441'),
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 Wbcr_FactoryForms441_GoogleFontControl extends Wbcr_FactoryForms441_FontControl {
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 Wbcr_FactoryForms441_HiddenControl($option_google_font_data, $form, $provider);
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)', 'wbcr_factory_forms_441'))
53
  );
54
 
55
  $fontsCommon = array(
56
  'group',
57
- __('Standard:', 'wbcr_factory_forms_441'),
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:', 'wbcr_factory_forms_441'), array());
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.', 'wbcr_factory_forms_441');
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.', 'wbcr_factory_forms_441');
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.', 'wbcr_factory_forms_441');
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('Wbcr_FactoryForms441_GradientControl') ) {
29
- class Wbcr_FactoryForms441_GradientControl extends Wbcr_FactoryForms441_Control {
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', 'wbcr_factory_forms_441' ) ?>';
70
- factory.res.resHorizontal = '<?php _e( 'horizontal', 'wbcr_factory_forms_441' ) ?>';
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('Wbcr_FactoryForms441_HiddenControl') ) {
24
 
25
- class Wbcr_FactoryForms441_HiddenControl extends Wbcr_FactoryForms441_Control {
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('Wbcr_FactoryForms441_AccordionItemHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms441_AccordionItemHolder extends Wbcr_FactoryForms441_Holder {
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('Wbcr_FactoryForms441_AccordionHolder') ) {
17
  /**
18
  * Tab Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
- class Wbcr_FactoryForms441_AccordionHolder extends Wbcr_FactoryForms441_Holder {
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('Wbcr_FactoryForms441_ColumnsHolder') ) {
18
  /**
19
  * Columns Holder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms441_ColumnsHolder extends Wbcr_FactoryForms441_Holder {
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('Wbcr_FactoryForms441_ControlGroupItem') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms441_ControlGroupItem extends Wbcr_FactoryForms441_Holder {
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('Wbcr_FactoryForms441_ControlGroupHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms441_ControlGroupHolder extends Wbcr_FactoryForms441_ControlHolder {
25
 
26
  /**
27
  * A holder type.
@@ -61,7 +61,7 @@
61
  continue;
62
  }
63
 
64
- $builder = new Wbcr_FactoryForms441_HtmlAttributeBuilder();
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('Wbcr_FactoryForms441_DivHolder') ) {
18
  /**
19
  * Div Control Holder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms441_DivHolder extends Wbcr_FactoryForms441_Holder {
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('Wbcr_FactoryForms441_FormGroupHolder') ) {
18
  /**
19
  * Group Holder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms441_FormGroupHolder extends Wbcr_FactoryForms441_Holder {
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('Wbcr_FactoryForms441_MoreLinkHolder') ) {
18
 
19
  /**
20
  * Collapsed Group Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms441_MoreLinkHolder extends Wbcr_FactoryForms441_Holder {
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('Wbcr_FactoryForms441_TabItemHolder') ) {
17
  /**
18
  * Tab Item Control Holder
19
  *
20
  * @since 1.0.0
21
  */
22
- class Wbcr_FactoryForms441_TabItemHolder extends Wbcr_FactoryForms441_Holder {
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('Wbcr_FactoryForms441_TabHolder') ) {
18
 
19
  /**
20
  * Tab Control Holder
21
  *
22
  * @since 1.0.0
23
  */
24
- class Wbcr_FactoryForms441_TabHolder extends Wbcr_FactoryForms441_Holder {
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 FactoryForms441_Form $form A parent form.
48
  */
49
  public function __construct($options, $form)
50
  {
@@ -88,7 +88,7 @@
88
  $tab_icon = $element->options['icon'];
89
  }
90
 
91
- $builder = new Wbcr_FactoryForms441_HtmlAttributeBuilder();
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('Wbcr_FactoryForms441_IntegerControl') ) {
36
 
37
- class Wbcr_FactoryForms441_IntegerControl extends Wbcr_FactoryForms441_Control {
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('Wbcr_FactoryForms441_ListControl') ) {
25
 
26
- class Wbcr_FactoryForms441_ListControl extends Wbcr_FactoryForms441_Control {
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.', 'wbcr_factory_forms_441') ) ?>'
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.', 'wbcr_factory_forms_441'));
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('Wbcr_FactoryForms441_MultipleTextboxControl') ) {
19
 
20
- class Wbcr_FactoryForms441_MultipleTextboxControl extends Wbcr_FactoryForms441_Control {
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', 'wbcr_factory_forms_441') ?>
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('Wbcr_FactoryForms441_PaddingsEditorControl') ) {
18
 
19
- class Wbcr_FactoryForms441_PaddingsEditorControl extends Wbcr_FactoryForms441_Control {
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:', 'wbcr_factory_forms_441') ?>
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('Wbcr_FactoryForms441_PatternControl') ) {
19
 
20
- class Wbcr_FactoryForms441_PatternControl extends Wbcr_FactoryForms441_Control {
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('wbcr_factory_forms_441_patterns', array());
56
- $this->patterns = apply_filters('wbcr_factory_forms_441_patterns-' . $name, $this->patterns);
57
 
58
  $this->custom_patterns = $this->getOption('patterns', array());
59
 
60
- $this->color = new Wbcr_FactoryForms441_ColorControl($options['color'], $form, $provider);
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', 'wbcr_factory_forms_441') ?>">
106
  <i class="fa fa-flask"></i>
107
- <span><?php _e('re-color', 'wbcr_factory_forms_441') ?></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_441') ?></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_441') ?></i>
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('Wbcr_FactoryForms441_RadioColorsControl') ) {
31
 
32
- class Wbcr_FactoryForms441_RadioColorsControl extends Wbcr_FactoryForms441_Control {
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('Wbcr_FactoryForms441_RadioControl') ) {
25
 
26
- class Wbcr_FactoryForms441_RadioControl extends Wbcr_FactoryForms441_Control {
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('Wbcr_FactoryForms441_TextareaControl') ) {
24
 
25
- class Wbcr_FactoryForms441_TextareaControl extends Wbcr_FactoryForms441_Control {
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('Wbcr_FactoryForms441_TextboxControl') ) {
33
 
34
- class Wbcr_FactoryForms441_TextboxControl extends Wbcr_FactoryForms441_Control {
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 FactoryForms441_TextboxControl
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('Wbcr_FactoryForms441_UrlControl') ) {
22
 
23
- class Wbcr_FactoryForms441_UrlControl extends Wbcr_FactoryForms441_TextboxControl {
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('Wbcr_FactoryForms441_WpEditorControl') ) {
26
 
27
- class Wbcr_FactoryForms441_WpEditorControl extends Wbcr_FactoryForms441_Control {
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'] = FACTORY_FORMS_441_URL . '/assets/css/editor.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('Wbcr_FactoryForms441_ComplexControl') ) {
17
  /**
18
  * The base class for all controls.
19
  *
20
  * @since 1.0.0
21
  */
22
- abstract class Wbcr_FactoryForms441_ComplexControl extends Wbcr_FactoryForms441_Control {
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 Wbcr_FactoryForms441_Control[]
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 Wbcr_IFactoryForms441_ValueProvider $provider
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('Wbcr_FactoryForms441_ControlHolder') ) {
18
  /**
19
  * The base class for control holders.
20
  *
21
  * @since 1.0.0
22
  */
23
- abstract class Wbcr_FactoryForms441_ControlHolder extends Wbcr_FactoryForms441_Control {
24
 
25
  /**
26
  * Holder Elements.
27
  *
28
  * @since 1.0.0
29
- * @var Wbcr_FactoryForms441_Control[]
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 Wbcr_FactoryForms441_Form $form A parent form.
47
  */
48
  public function __construct($options, $form)
49
  {
@@ -60,7 +60,7 @@
60
  * Returns holder elements.
61
  *
62
  * @since 1.0.0
63
- * @return Wbcr_FactoryForms441_FormElement[].
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('Wbcr_FactoryForms441_Control') ) {
18
 
19
  /**
20
  * The base class for all controls.
21
  *
22
  * @since 1.0.0
23
  */
24
- abstract class Wbcr_FactoryForms441_Control extends Wbcr_FactoryForms441_FormElement {
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 Wbcr_IFactoryForms441_ValueProvider
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 FactoryForms441_Form $form
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 IFactoryForms441_ValueProvider $provider
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('Wbcr_FactoryForms441_CustomElement') ) {
18
  /**
19
  * The base class for all controls.
20
  *
21
  * @since 1.0.0
22
  */
23
- abstract class Wbcr_FactoryForms441_CustomElement extends Wbcr_FactoryForms441_FormElement {
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('Wbcr_FactoryForms441_FormElement') ) {
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 Wbcr_FactoryForms441_FormElement {
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 Wbcr_FactoryForms441_HtmlAttributeBuilder
41
  */
42
  private $html_builder;
43
 
@@ -53,7 +53,7 @@
53
  * A parent form.
54
  *
55
  * @since 1.0.0
56
- * @var Wbcr_FactoryForms441_Form
57
  */
58
  protected $form;
59
 
@@ -61,7 +61,7 @@
61
  * A form layout.
62
  *
63
  * @since 1.0.0
64
- * @var Wbcr_FactoryForms441_FormLayout
65
  */
66
  protected $layout;
67
 
@@ -94,7 +94,7 @@
94
  *
95
  * @since 1.0.0
96
  * @param mixed[] $options A holder options.
97
- * @param Wbcr_FactoryForms441_Form $form A parent form.
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 Wbcr_FactoryForms441_HtmlAttributeBuilder();
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('Wbcr_FactoryForms441_FormLayout') ) {
18
 
19
  /**
20
  * The base class for all form layouts.
21
  */
22
- abstract class Wbcr_FactoryForms441_FormLayout extends Wbcr_FactoryForms441_Holder {
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 Wbcr_FactoryForms441_Form $form A parent form.
46
  */
47
  public function __construct($options, $form)
48
  {
@@ -52,8 +52,8 @@
52
 
53
  parent::__construct($options, $form);
54
 
55
- $this->addCssClass('factory-forms-441-' . $this->type);
56
- $this->addCssClass('factory-forms-441-' . $this->name);
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('wbcr_factory_forms_441_plugin_created', 'wbcr_factory_forms_441_plugin_created');
19
 
20
- function wbcr_factory_forms_441_plugin_created($plugin)
21
  {
22
- $plugin->forms = new Wbcr_FactoryForms441_Manager($plugin);
23
  }
24
 
25
- if( !class_exists('Wbcr_FactoryForms441_Manager') ) {
26
 
27
- class Wbcr_FactoryForms441_Manager {
28
 
29
  // ----------------------------------------------------
30
  // Static fields and methods
@@ -57,7 +57,7 @@
57
  /**
58
  * Registers a set of new controls.
59
  *
60
- * @see FactoryForms441_Form::registerControl()
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 FactoryForms441_Form::registerHolder()
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 FactoryForms441_Form::registerCustomElement()
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('Wbcr_FactoryForms441_Form') ) {
184
  /**
185
  * An abstraction for forms.
186
  */
187
- class Wbcr_FactoryForms441_Form {
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 Wbcr_IFactoryForms441_ValueProvider
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 Wbcr_FactoryForms441_FormLayout
249
  */
250
  public $layout;
251
 
@@ -261,20 +261,20 @@
261
  *
262
  * @since 1.0.0
263
  * @param array $options
264
- * @param Wbcr_Factory444_Plugin $plugin
265
  */
266
- public function __construct(array $options, Wbcr_Factory444_Plugin $plugin)
267
  {
268
  // register controls once, when the first form is created
269
- if( !Wbcr_FactoryForms441_Manager::$controls_registered ) {
270
 
271
- do_action('wbcr_factory_forms_441_register_controls', $plugin);
272
 
273
  //if( !empty($plugin) ) {
274
- do_action('wbcr_factory_forms_441_register_controls_' . $plugin->getPluginName(), $plugin);
275
  //}
276
 
277
- Wbcr_FactoryForms441_Manager::$controls_registered = true;
278
  }
279
 
280
  $this->scope = isset($options['scope']) ? $options['scope'] : null;
@@ -289,14 +289,14 @@
289
  $this->form_layout = 'bootstrap-3';
290
  }
291
 
292
- Wbcr_FactoryForms441_Manager::$temper = 'flat';
293
  }
294
 
295
  /**
296
  * Sets a provider for the control.
297
  *
298
  * @since 1.0.0
299
- * @param Wbcr_IFactoryForms441_ValueProvider $provider
300
  * @return void
301
  */
302
  public function setProvider($provider)
@@ -332,14 +332,14 @@
332
  */
333
  public function getItems()
334
  {
335
- return apply_filters('wbcr_factory_444_form_items', $this->items, $this->name);
336
  }
337
 
338
  /**
339
  * Returns form controls (control objects).
340
  *
341
  * @since 1.0.0
342
- * @return Wbcr_FactoryForms441_Control[]
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 Wbcr_FactoryForms441_Control[]
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 Wbcr_FactoryForms441_FormElement|null A form element.
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 Wbcr_FactoryForms441_FormElement[] Created elements.
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 Wbcr_FactoryForms441_Control A control object.
437
  */
438
  public function createControl($item)
439
  {
@@ -441,7 +441,7 @@
441
 
442
  if( is_array($item) ) {
443
 
444
- $control_data = Wbcr_FactoryForms441_Manager::$registered_controls[$item['type']];
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 Wbcr_FactoryForms441_Holder A control holder object.
469
  */
470
  public function createHolder($item)
471
  {
@@ -473,7 +473,7 @@
473
 
474
  if( is_array($item) ) {
475
 
476
- $holderData = Wbcr_FactoryForms441_Manager::$registered_holders[$item['type']];
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 Wbcr_FactoryForms441_FormElement A custom form element object.
495
  */
496
  public function createCustomElement($item)
497
  {
@@ -499,7 +499,7 @@
499
 
500
  if( is_array($item) ) {
501
 
502
- $data = Wbcr_FactoryForms441_Manager::$registered_custom_elements[$item['type']];
503
  require_once($data['include']);
504
 
505
  $options = $item;
@@ -523,12 +523,12 @@
523
  public function html($options = array())
524
  {
525
 
526
- if( !isset(Wbcr_FactoryForms441_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_FactoryForms441_Manager::$form_layouts[$this->form_layout];
532
  require_once($layout_data['include']);
533
 
534
  $this->connectAssets();
@@ -552,7 +552,7 @@
552
  {
553
 
554
  $this->connectAssetsForItems();
555
- $layout_data = Wbcr_FactoryForms441_Manager::$form_layouts[$this->form_layout];
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 = Wbcr_FactoryForms441_Manager::$registered_controls;
606
  } elseif( self::isControlHolder($type) ) {
607
- $haystack = Wbcr_FactoryForms441_Manager::$registered_holders;
608
  }
609
 
610
  if( isset($haystack[$type]) ) {
@@ -660,7 +660,7 @@
660
  */
661
  public static function isControl($item)
662
  {
663
- return isset(Wbcr_FactoryForms441_Manager::$registered_controls[$item['type']]);
664
  }
665
 
666
  /**
@@ -672,7 +672,7 @@
672
  */
673
  public static function isControlHolder($item)
674
  {
675
- return isset(Wbcr_FactoryForms441_Manager::$registered_holders[$item['type']]);
676
  }
677
 
678
  /**
@@ -684,7 +684,7 @@
684
  */
685
  public static function isCustomElement($item)
686
  {
687
- return isset(Wbcr_FactoryForms441_Manager::$registered_custom_elements[$item['type']]);
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('Wbcr_FactoryForms441_Holder') ) {
18
 
19
  /**
20
  * The base class for control holders.
21
  *
22
  * @since 1.0.0
23
  */
24
- abstract class Wbcr_FactoryForms441_Holder extends Wbcr_FactoryForms441_FormElement {
25
 
26
  /**
27
  * Holder Elements.
28
  *
29
  * @since 1.0.0
30
- * @var Wbcr_FactoryForms441_Control[]
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 Wbcr_FactoryForms441_Form $form A parent form.
48
  */
49
  public function __construct($options, $form)
50
  {
@@ -56,7 +56,7 @@
56
  * Returns holder elements.
57
  *
58
  * @since 1.0.0
59
- * @return Wbcr_FactoryForms441_Control[].
60
  */
61
  public function getElements()
62
  {
@@ -84,7 +84,7 @@
84
  $is_first_item = false;
85
  }
86
 
87
- do_action('wbcr_factory_444_form_before_element_' . $element->getOption('name'));
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('Wbcr_FactoryForms441_HtmlAttributeBuilder') ) {
18
  /**
19
  * Html Attribute Builder
20
  *
21
  * @since 1.0.0
22
  */
23
- class Wbcr_FactoryForms441_HtmlAttributeBuilder {
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('Wbcr_FactoryForms441_OptionsValueProvider') ) {
18
 
19
  /**
20
  * Factory Meta Value Provider
@@ -24,7 +24,7 @@
24
  *
25
  * @since 1.0.0
26
  */
27
- class Wbcr_FactoryForms441_MetaValueProvider implements Wbcr_IFactoryForms441_ValueProvider {
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('Wbcr_FactoryForms441_OptionsValueProvider') ) {
17
 
18
  /**
19
  * Factory Options Value Provider
@@ -22,7 +22,7 @@
22
  *
23
  * @since 1.0.0
24
  */
25
- class Wbcr_FactoryForms441_OptionsValueProvider implements Wbcr_IFactoryForms441_ValueProvider {
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(Wbcr_Factory444_Plugin $plugin)
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('Wbcr_IFactoryForms441_ValueProvider') ) {
18
  /**
19
  * The interface for all value provides.
20
  *
21
  * @since 1.0.0
22
  */
23
- interface Wbcr_IFactoryForms441_ValueProvider {
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('Wbcr_FactoryForms441_Bootstrap3FormLayout') ) {
18
  /**
19
  * A form layout based on Twitter Bootstrap 3
20
  */
21
- class Wbcr_FactoryForms441_Bootstrap3FormLayout extends Wbcr_FactoryForms441_FormLayout {
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 Wbcr_FactoryForms441_Form $form A parent form.
31
  */
32
  public function __construct($options, $form)
33
  {
@@ -68,7 +68,7 @@
68
  }
69
 
70
  /**
71
- * @param Wbcr_FactoryForms441_Control $control
72
  */
73
  public function beforeControl($control)
74
  {
@@ -116,7 +116,7 @@
116
  }
117
 
118
  /**
119
- * @param Wbcr_FactoryForms441_Control $control
120
  */
121
  public function afterControl($control)
122
  {
@@ -168,7 +168,7 @@
168
  }
169
 
170
  /**
171
- * @param Wbcr_FactoryForms441_Control $control
172
  * @param int $index
173
  * @param int $total
174
  */
@@ -193,7 +193,7 @@
193
  }
194
 
195
  /**
196
- * @param Wbcr_FactoryForms441_Control $control
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('FACTORY_FREEMIUS_132_LOADED') ) {
18
  return;
19
  }
20
 
21
- define('FACTORY_FREEMIUS_132_VERSION', '1.3.2');
22
 
23
- define('FACTORY_FREEMIUS_132_LOADED', true);
24
- define('FACTORY_FREEMIUS_132_DIR', dirname(__FILE__));
25
- define('FACTORY_FREEMIUS_132_URL', plugins_url(null, __FILE__));
26
 
27
  #comp merge
28
  // Freemius
29
- require_once(FACTORY_FREEMIUS_132_DIR . '/includes/entities/class-freemius-entity.php');
30
- require_once(FACTORY_FREEMIUS_132_DIR . '/includes/entities/class-freemius-scope.php');
31
- require_once(FACTORY_FREEMIUS_132_DIR . '/includes/entities/class-freemius-user.php');
32
- require_once(FACTORY_FREEMIUS_132_DIR . '/includes/entities/class-freemius-site.php');
33
- require_once(FACTORY_FREEMIUS_132_DIR . '/includes/entities/class-freemius-license.php');
34
- require_once(FACTORY_FREEMIUS_132_DIR . '/includes/licensing/class-freemius-provider.php');
35
- require_once(FACTORY_FREEMIUS_132_DIR . '/includes/updates/class-freemius-repository.php');
36
 
37
  if( !class_exists('Freemius_Api_WordPress') ) {
38
- require_once FACTORY_FREEMIUS_132_DIR . '/includes/sdk/FreemiusWordPress.php';
39
  }
40
 
41
- require_once(FACTORY_FREEMIUS_132_DIR . '/includes/class-freemius-api.php');
42
 
43
  /**
44
- * @param Wbcr_Factory444_Plugin $plugin
45
  */
46
- add_action('wbcr_factory_freemius_132_plugin_created', function ($plugin) {
47
  # Устанавливаем класс провайдера лицензий для премиум менеджера
48
- $plugin->set_license_provider('freemius', 'WBCR\Factory_Freemius_132\Premium\Provider');
49
  # Устанавливаем класс репозитория обновлений для менеджера обновлений
50
- $plugin->set_update_repository('freemius', 'WBCR\Factory_Freemius_132\Updates\Freemius_Repository');
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\Factory_Freemius_132;
4
 
5
  use Freemius_Api_WordPress;
6
  use Freemius_Exception;
7
- use Wbcr_Factory444_Plugin;
8
 
9
  if ( ! defined( 'ABSPATH' ) ) {
10
  exit;
@@ -33,7 +33,7 @@ final class Api {
33
  private $api;
34
 
35
  /**
36
- * @var Wbcr_Factory444_Plugin
37
  */
38
  private $plugin;
39
 
@@ -48,14 +48,14 @@ final class Api {
48
  private static $clock_diff;
49
 
50
  /**
51
- * @param Wbcr_Factory444_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_Factory444_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,7 +73,7 @@ final class Api {
73
  }
74
 
75
  /**
76
- * @param Wbcr_Factory444_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,7 +82,7 @@ final class Api {
82
  *
83
  * @return Api
84
  */
85
- public static function instance( Wbcr_Factory444_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 ] ) ) {
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\Factory_Freemius_132\Entities;
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\Factory_Freemius_132\Entities;
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\Factory_444\Premium\Interfaces\License {
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\Factory_Freemius_132\Entities;
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\Factory_Freemius_132\Entities;
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\Factory_Freemius_132\Entities;
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\Factory_Freemius_132\Entities;
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\Factory_Freemius_132\Premium;
4
-
5
- use WBCR\Factory_Freemius_132\Entities\License;
6
- use WBCR\Factory_Freemius_132\Entities\Plugin;
7
- use WBCR\Factory_Freemius_132\Entities\Site;
8
- use WBCR\Factory_Freemius_132\Entities\User;
9
- use WBCR\Factory_444\Premium\Provider as License_Provider;
10
- use Wbcr_Factory444_Plugin;
11
- use WBCR\Factory_Freemius_132\Api;
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\Factory_Freemius_132\Api
44
  */
45
  private $site_api;
46
 
47
  /**
48
- * @var \WBCR\Factory_Freemius_132\Api
49
  */
50
  private $plugin_api;
51
 
52
  /**
53
- * @var \WBCR\Factory_Freemius_132\Api
54
  */
55
  private $user_api;
56
 
@@ -82,11 +82,11 @@ final class Provider extends License_Provider {
82
  /**
83
  * Manager constructor.
84
  *
85
- * @param Wbcr_Factory444_Plugin $plugin
86
  *
87
  * @throws Exception
88
  */
89
- public function __construct(Wbcr_Factory444_Plugin $plugin, array $settings)
90
  {
91
  parent::__construct($plugin, $settings);
92
 
@@ -150,7 +150,7 @@ final class Provider extends License_Provider {
150
  }
151
 
152
  /**
153
- * @return \WBCR\Factory_Freemius_132\Entities\License|null
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\Factory_Freemius_132\Api
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\Factory_Freemius_132\Api
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\Factory_Freemius_132\Api
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\Factory_Freemius_132\Updates;
4
 
5
  // Exit if accessed directly
6
  use Exception;
7
- use Wbcr_Factory444_Plugin;
8
- use WBCR\Factory_444\Updates\Repository;
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\Factory_Freemius_132\Premium\Provider
24
  */
25
  private $premium;
26
 
27
  /**
28
  * Freemius constructor.
29
- * @param Wbcr_Factory444_Plugin $plugin
30
  *
31
  * @throws Exception
32
  * @since 4.0.0
33
  *
34
  */
35
- public function __construct(Wbcr_Factory444_Plugin $plugin, array $settings = [])
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\Factory_Freemius_132\Premium\Provider ) {
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('FACTORY_PAGES_443_LOADED') ) {
23
  return;
24
  }
25
 
26
- define('FACTORY_PAGES_443_LOADED', true);
27
 
28
- define('FACTORY_PAGES_443_VERSION', '4.4.3');
29
 
30
- define('FACTORY_PAGES_443_DIR', dirname(__FILE__));
31
- define('FACTORY_PAGES_443_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_443', false, dirname(plugin_basename(__FILE__)) . '/langs');
38
 
39
- require(FACTORY_PAGES_443_DIR . '/pages.php');
40
- require(FACTORY_PAGES_443_DIR . '/includes/page.class.php');
41
- require(FACTORY_PAGES_443_DIR . '/includes/admin-page.class.php');
42
- require(FACTORY_PAGES_443_DIR . '/templates/impressive-page.class.php');
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('Wbcr_FactoryPages443_AdminPage') ) {
18
 
19
- class Wbcr_FactoryPages443_AdminPage extends Wbcr_FactoryPages443_Page {
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(Wbcr_Factory444_Plugin $plugin)
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('wbcr_factory_444_page_is_hidden_' . $result_id, $this->hidden);
329
 
330
  if( $this->hidden ) {
331
  return;
332
  }
333
 
334
- $this->internal = apply_filters('wbcr_factory_444_page_is_internal_' . $result_id, $this->internal);
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('wbcr_factory_444_bootstrap_enqueue_scripts_' . $this->plugin->getPluginName(), [
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( 'Wbcr_FactoryPages443_Page' ) ) {
18
 
19
- class Wbcr_FactoryPages443_Page {
20
 
21
 
22
  /**
@@ -30,7 +30,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages443_Page' ) ) {
30
  * Чтобы не было конфликтов с другими плагинами, используйте префиксы.
31
  *
32
  * @since 1.0.0
33
- * @see FactoryPages443_AdminPage
34
  *
35
  * @var string
36
  */
@@ -39,7 +39,7 @@ if ( ! class_exists( 'Wbcr_FactoryPages443_Page' ) ) {
39
  /**
40
  * Current Factory Plugin.
41
  *
42
- * @var Wbcr_Factory444_Plugin
43
  */
44
  public $plugin;
45
 
@@ -51,11 +51,11 @@ if ( ! class_exists( 'Wbcr_FactoryPages443_Page' ) ) {
51
  //private $default_actions = array();
52
 
53
  /**
54
- * @param Wbcr_Factory444_Plugin $plugin
55
  *
56
  * @throws Exception
57
  */
58
- public function __construct( Wbcr_Factory444_Plugin $plugin ) {
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/factory_pages_443/custom_actions', array(), $raw_action_name);
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', 'Wbcr_FactoryPages443::actionAdminMenu');
18
- add_action('network_admin_menu', 'Wbcr_FactoryPages443::actionAdminMenu');
19
 
20
- if( !class_exists('Wbcr_FactoryPages443') ) {
21
  /**
22
  * A base class to manage pages.
23
  *
24
  * @since 1.0.0
25
  */
26
- class Wbcr_FactoryPages443 {
27
 
28
  /**
29
- * @var Wbcr_FactoryPages443_Page[]
30
  */
31
  private static $pages = array();
32
 
33
  /**
34
- * @param Wbcr_Factory444_Plugin $plugin
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(Wbcr_Factory444_Plugin $plugin, $page_id, $args = array())
63
  {
64
  if( isset(self::$pages[$plugin->getPluginName()]) ) {
65
  $pages = self::$pages[$plugin->getPluginName()];
@@ -75,7 +75,7 @@
75
  }
76
 
77
  /**
78
- * @param Wbcr_Factory444_Plugin $plugin
79
  * @return array
80
  */
81
  public static function getIds($plugin)
@@ -93,14 +93,14 @@
93
  }
94
  }
95
 
96
- if( !function_exists('wbcr_factory_pages_443_get_page_id') ) {
97
  /**
98
  *
99
- * @param Wbcr_Factory444_Plugin $plugin
100
  * @param string $page_id
101
  * @return string
102
  */
103
- function wbcr_factory_pages_443_get_page_id($plugin, $page_id)
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-443-impressive-page-template {
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-443-impressive-page-template .wbcr-factory-color-grey {
22
  color: #9a9a9a;
23
  }
24
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-orange-color {
25
  color: #ffc107;
26
  }
27
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-light-orange-color {
28
  color: #ffeb3b;
29
  }
30
- #WBCR .wbcr-factory-pages-443-impressive-page-template .form-group {
31
  padding: 0 20px;
32
  }
33
- #WBCR .wbcr-factory-pages-443-impressive-page-template .form-group label {
34
  font-weight: normal;
35
  }
36
- #WBCR .wbcr-factory-pages-443-impressive-page-template .form-horizontal .control-label {
37
  max-width: 300px;
38
  }
39
- #WBCR .wbcr-factory-pages-443-impressive-page-template .factory-control-buttons {
40
  text-align: right;
41
  padding-right: 20px;
42
  }
43
- #WBCR .wbcr-factory-pages-443-impressive-page-template .factory-from-control-list label span {
44
  display: inline-block;
45
  vertical-align: bottom;
46
  }
47
- #WBCR .wbcr-factory-pages-443-impressive-page-template .factory-from-control-list label span input[type="checkbox"],
48
- #WBCR .wbcr-factory-pages-443-impressive-page-template .factory-from-control-list label span input[type="checkbox"]:focus {
49
  outline: none;
50
  }
51
- #WBCR .wbcr-factory-pages-443-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-443-impressive-page-template .alert + .wbcr-factory-page-group-header {
59
  margin-top: 0 !important;
60
  }
61
- #WBCR .wbcr-factory-pages-443-impressive-page-template .alert.alert-warning {
62
  background: #fff3d0;
63
  }
64
- #WBCR .wbcr-factory-pages-443-impressive-page-template .alert.alert-warning:nth-child(2n+1) {
65
  background: #fffde9;
66
  }
67
- #WBCR .wbcr-factory-pages-443-impressive-page-template .alert.alert-danger {
68
  background: #de716d;
69
  }
70
- #WBCR .wbcr-factory-pages-443-impressive-page-template .alert.alert-danger:nth-child(2n+1) {
71
  background: #ec8c89;
72
  }
73
- #WBCR .wbcr-factory-pages-443-impressive-page-template .alert.alert-success {
74
  background: #d0ecc4;
75
  }
76
- #WBCR .wbcr-factory-pages-443-impressive-page-template .alert.alert-success:nth-child(2n+1) {
77
  background: #e0eadb;
78
  }
79
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-header {
80
  padding: 20px 20px 40px;
81
  }
82
- #WBCR .wbcr-factory-pages-443-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-443-impressive-page-template .wbcr-factory-options,
89
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-page {
90
  position: relative;
91
  background: #e6e6e6;
92
  overflow: hidden;
93
  }
94
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-options:after,
95
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-page:after {
96
  display: block;
97
  content: '';
98
  clear: both;
99
  }
100
- #WBCR .wbcr-factory-pages-443-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-443-impressive-page-template .wbcr-factory-page-group-header:first-child {
107
  margin-top: 0;
108
  }
109
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-page-group-header strong {
110
  font-size: 15px;
111
  }
112
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-page-group-header p {
113
  color: #8c8888;
114
  font-size: 12px;
115
  }
116
- #WBCR .wbcr-factory-pages-443-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-443-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab-wrapper,
123
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-page-inner-wrap h2.nav-tab-wrapper,
124
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-page-inner-wrap h1.nav-tab-wrapper {
125
  border: 0;
126
  }
127
- #WBCR .wbcr-factory-pages-443-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-443-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:first-child {
133
  margin: 0;
134
  }
135
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:hover {
136
  background: #f7f7f7;
137
  }
138
- #WBCR .wbcr-factory-pages-443-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-443-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:active,
144
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-page-inner-wrap .nav-tab:focus {
145
  box-shadow: none;
146
  outline: none;
147
  }
148
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-page-header {
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-443-impressive-page-template .wbcr-factory-page-header .wbcr-factory-header-logo {
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-443-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-443-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,12 +184,12 @@
184
  text-overflow: ellipsis;
185
  color: #fff;
186
  }
187
- #WBCR .wbcr-factory-pages-443-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-443-impressive-page-template .wbcr-factory-page-header .wbcr-factory-button {
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-443-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-443-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-443-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-443-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-443-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-443-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-443-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-443-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-443-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-443-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,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-443-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-443-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-443-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-443-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-443-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-443-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-443-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link,
293
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
294
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:hover,
295
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-tab__link:active,
296
- #WBCR .wbcr-factory-pages-443-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-443-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-443-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-443-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-443-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-443-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-443-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,12 +327,12 @@
327
  text-decoration: none;
328
  outline: none;
329
  }
330
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab .wbcr-factory-submenu li a:focus,
331
- #WBCR .wbcr-factory-pages-443-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-443-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,48 +343,48 @@
343
  -ms-filter: fliph;
344
  filter: fliph;
345
  }
346
- #WBCR .wbcr-factory-pages-443-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-443-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-443-impressive-page-template .wbcr-factory-content-section,
355
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-right-sidebar-section {
356
  display: inline-block;
357
  vertical-align: top;
358
  }
359
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-content-section {
360
  width: 74.6%;
361
  }
362
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-content-section.wbcr-fullwidth {
363
  width: 100%;
364
  }
365
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-content-section .nav-tab-wrapper {
366
  margin-top: 15px;
367
  }
368
- #WBCR .wbcr-factory-pages-443-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-443-impressive-page-template .wbcr-factory-content-section .wbcr-factory-content > form {
375
  padding-top: 0 !important;
376
  }
377
- #WBCR .wbcr-factory-pages-443-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-443-impressive-page-template .wbcr-factory-right-sidebar-section .wbcr-factory-sidebar-widget {
385
  margin: 0 0 20px;
386
  }
387
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-sidebar-widget {
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-443-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-hide {
397
  display: none;
398
  }
399
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-warning {
400
  background: #fff4d0;
401
  }
402
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-danger {
403
  background: #e2ffc0;
404
  }
405
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-sidebar-widget.wbcr-factory-success {
406
  background: #ffebe9;
407
  }
408
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-hint-icon-simple {
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-443-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-grey {
421
  background: #E91E63;
422
  }
423
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-red {
424
  background: #9e9e9e;
425
  }
426
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-simple-green {
427
  background: #8bc34a;
428
  }
429
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-sidebar-widget .wbcr-factory-icon-5stars {
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-443-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-443-impressive-page-template .wbcr-factory-sidebar-widget #wbcr-factory-paypal-donation-form input[type="image"] :focus,
443
- #WBCR .wbcr-factory-pages-443-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-443-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-443-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,24 +458,24 @@
458
  padding: 30px;
459
  border: 1px solid #f3f1e7;
460
  }
461
- #WBCR .wbcr-factory-pages-443-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-443-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box h3 {
469
  color: #7b6111;
470
  }
471
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-feature-box p {
472
  color: #9e9e9e;
473
  }
474
- #WBCR .wbcr-factory-pages-443-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-443-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,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-443-impressive-page-template .wbcr-factory-page-more_features .wbcr-factory-premium-button:hover {
489
  background-color: #ffce3a;
490
  }
491
- #WBCR .wbcr-factory-pages-443-impressive-page-template #wbcr-factory-confirm-dialog {
492
  padding: 20px;
493
  background: #ffffff;
494
  }
495
- #WBCR .wbcr-factory-pages-443-impressive-page-template #wbcr-factory-confirm-dialog .updated,
496
- #WBCR .wbcr-factory-pages-443-impressive-page-template #wbcr-factory-confirm-dialog .alert {
497
  display: none;
498
  }
499
- #WBCR .wbcr-factory-pages-443-impressive-page-template #wbcr-factory-confirm-dialog h2 {
500
  font-size: 18px;
501
  margin-top: 10px;
502
  }
503
- #WBCR .wbcr-factory-pages-443-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-443-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-443-impressive-page-template .wbcr-factory-content-section {
515
  width: 69.6%;
516
  }
517
- #WBCR .wbcr-factory-pages-443-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-443-impressive-page-template .wbcr-factory-content-section {
523
  width: 100%;
524
  }
525
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-right-sidebar-section {
526
  display: none !important;
527
  }
528
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-header-logo .dash {
529
  display: none !important;
530
  }
531
- #WBCR .wbcr-factory-pages-443-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-443-impressive-page-template .wbcr-factory-left-navigation-bar {
537
  width: 70px;
538
  }
539
- #WBCR .wbcr-factory-pages-443-impressive-page-template .wbcr-factory-left-navigation-bar ul .wbcr-factory-nav-tab a {
540
  font-size: 0;
541
  }
542
- #WBCR .wbcr-factory-pages-443-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-443-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-443-impressive-page-template .wbcr-factory-page-inner-wrap {
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('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
18
  /**
19
- * Class Wbcr_FactoryPages443_ImpressiveThemplate
20
  */
21
- abstract class Wbcr_FactoryPages443_ImpressiveThemplate extends Wbcr_FactoryPages443_AdminPage {
22
 
23
  /**
24
  * Тип страницы:
@@ -112,12 +112,12 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
112
  public $page_menu = [];
113
 
114
  /**
115
- * @param Wbcr_Factory444_Plugin $plugin
116
  */
117
- public function __construct(Wbcr_Factory444_Plugin $plugin)
118
  {
119
- $this->menuIcon = FACTORY_PAGES_443_URL . '/templates/assets/img/webcraftic-plugin-icon.png';
120
- //$allow_multisite = apply_filters('wbcr_factory_444_core_admin_allow_multisite', false);
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', 'wbcr_factory_pages_443');
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 FactoryPages443_AdminPage
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(FACTORY_PAGES_443_URL . '/templates/assets/css/impressive.page.template.css');
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.", 'wbcr_factory_pages_443'));
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!', 'wbcr_factory_pages_443') . (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_443') : '')
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', 'wbcr_factory_pages_443'); ?>">
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 Wbcr_FactoryForms441_Form([
699
  'scope' => rtrim($this->plugin->getPrefix(), '_'),
700
  'name' => $this->getResultId() . "-options"
701
  ], $this->plugin);
702
 
703
- $form->setProvider(new Wbcr_FactoryForms441_OptionsValueProvider($this->plugin));
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.', 'wbcr_factory_pages_443'));
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-443-impressive-page-template factory-bootstrap-444 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,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-443-impressive-page-template factory-bootstrap-444 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,7 +882,7 @@ if( !class_exists('Wbcr_FactoryPages443_ImpressiveThemplate') ) {
882
  {
883
  ?>
884
  <div id="WBCR" class="wrap">
885
- <div class="wbcr-factory-pages-443-impressive-page-template factory-bootstrap-444 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>
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 Wbcr_Factory444_Update {
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 Wbcr_Factory444_Update {
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 &amp; 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(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 +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